From a92c38e5675186d26dd68ac0d0bb48b4dfcd9e51 Mon Sep 17 00:00:00 2001 From: sehugg Date: Sun, 27 Sep 2026 21:18:06 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sehugg/8?= =?UTF-8?q?bitworkshop@533f86b1c88118ab0c39861f7e99c3894ab93037=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{apple2-HFIVSWRQ.js => apple2-HWNTKLI6.js} | 4 +- ...HFIVSWRQ.js.map => apple2-HWNTKLI6.js.map} | 0 gen/{arm32-HML7LUDU.js => arm32-2EOEPSXB.js} | 4 +- ...-HML7LUDU.js.map => arm32-2EOEPSXB.js.map} | 4 +- ...cade-BPFIWX7J.js => astrocade-DCHJM6EX.js} | 4 +- ...IWX7J.js.map => astrocade-DCHJM6EX.js.map} | 0 ...7800-7IUSBQLC.js => atari7800-YDBZZWY4.js} | 4 +- ...SBQLC.js.map => atari7800-YDBZZWY4.js.map} | 0 ...{atari8-FQ7EOZFI.js => atari8-KEK3L4F4.js} | 4 +- ...FQ7EOZFI.js.map => atari8-KEK3L4F4.js.map} | 0 gen/{basic-JWJIGIKJ.js => basic-5TP7VOPQ.js} | 4 +- ...-JWJIGIKJ.js.map => basic-5TP7VOPQ.js.map} | 0 gen/{c64-M5HIK4PX.js => c64-Z37VIZAM.js} | 4 +- ...64-M5HIK4PX.js.map => c64-Z37VIZAM.js.map} | 0 ...nnelf-QEC3XA36.js => channelf-22C5W255.js} | 4 +- ...C3XA36.js.map => channelf-22C5W255.js.map} | 0 gen/{chunk-EY5LTL52.js => chunk-2I4PZDSN.js} | 4 +- ...-EY5LTL52.js.map => chunk-2I4PZDSN.js.map} | 0 gen/{chunk-42RFSQY5.js => chunk-MSPBD7SZ.js} | 4 +- ...-42RFSQY5.js.map => chunk-MSPBD7SZ.js.map} | 0 gen/{chunk-4WX2XTAI.js => chunk-MZ43WA3W.js} | 4 +- ...-4WX2XTAI.js.map => chunk-MZ43WA3W.js.map} | 0 gen/{chunk-IK55UTNM.js => chunk-UTYUOOT2.js} | 4 +- ...-IK55UTNM.js.map => chunk-UTYUOOT2.js.map} | 0 gen/{chunk-XQKNUPDS.js => chunk-V7REAW7P.js} | 4 +- ...-XQKNUPDS.js.map => chunk-V7REAW7P.js.map} | 0 gen/{chunk-X7YXI42O.js => chunk-YD7BCC55.js} | 4 +- ...-X7YXI42O.js.map => chunk-YD7BCC55.js.map} | 0 gen/{chunk-EK7ZCXAS.js => chunk-ZTLOJICZ.js} | 4 +- ...-EK7ZCXAS.js.map => chunk-ZTLOJICZ.js.map} | 6 +- ...{coleco-5FRFBIFB.js => coleco-FZQ3SEAK.js} | 4 +- ...5FRFBIFB.js.map => coleco-FZQ3SEAK.js.map} | 0 gen/common/cpu/ARM.js | 2 +- gen/common/cpu/ARM.js.map | 2 +- gen/common/detect.js | 86 +++++- gen/common/detect.js.map | 2 +- gen/common/emu.js | 3 +- gen/common/emu.js.map | 2 +- gen/common/emucore.js | 27 +- gen/common/emucore.js.map | 2 +- gen/{cpc-WIAAKPBY.js => cpc-POCBQYUN.js} | 4 +- ...pc-WIAAKPBY.js.map => cpc-POCBQYUN.js.map} | 0 gen/{devel-BGTXLCQH.js => devel-DGSIRRCB.js} | 4 +- ...-BGTXLCQH.js.map => devel-DGSIRRCB.js.map} | 0 gen/embedui.js | 2 +- gen/{exidy-7W6HSMGU.js => exidy-5ESAAHB5.js} | 4 +- ...-7W6HSMGU.js.map => exidy-5ESAAHB5.js.map} | 0 ...axian-T4CARUIR.js => galaxian-5K5GYCNO.js} | 4 +- ...CARUIR.js.map => galaxian-5K5GYCNO.js.map} | 0 gen/{gb-AK7YB3TT.js => gb-EL7XYT3L.js} | 4 +- ...{gb-AK7YB3TT.js.map => gb-EL7XYT3L.js.map} | 0 gen/{kim1-5SXSABGS.js => kim1-BNT3J6F5.js} | 4 +- ...1-5SXSABGS.js.map => kim1-BNT3J6F5.js.map} | 0 gen/{mcr-PQD5XEKY.js => mcr-6Z647VBV.js} | 4 +- ...cr-PQD5XEKY.js.map => mcr-6Z647VBV.js.map} | 0 gen/{msx-WYHUXEX2.js => msx-MZ645RSK.js} | 4 +- ...sx-WYHUXEX2.js.map => msx-MZ645RSK.js.map} | 0 ...080bw-6MHN2WND.js => mw8080bw-LD2NTPKR.js} | 4 +- ...HN2WND.js.map => mw8080bw-LD2NTPKR.js.map} | 0 gen/{nes-PSU5C2HR.js => nes-NKFIUNMU.js} | 4 +- ...es-PSU5C2HR.js.map => nes-NKFIUNMU.js.map} | 0 ...{pacman-JPNW7KMG.js => pacman-MJBPZJBV.js} | 4 +- ...JPNW7KMG.js.map => pacman-MJBPZJBV.js.map} | 0 gen/pce-ED7Y5QEG.js | 2 + gen/pce-ED7Y5QEG.js.map | 7 + gen/pce-TKEXWG4K.js | 2 - gen/pce-TKEXWG4K.js.map | 7 - gen/platform/pce.js | 6 + gen/platform/pce.js.map | 2 +- gen/{sms-B4PKFPAM.js => sms-HCHAUJEX.js} | 4 +- ...ms-B4PKFPAM.js.map => sms-HCHAUJEX.js.map} | 0 ...i-PL5IXBMA.js => sound_konami-LOYLXE65.js} | 4 +- ...MA.js.map => sound_konami-LOYLXE65.js.map} | 0 ...JETC4QDO.js => sound_williams-HKXF5LD7.js} | 4 +- ....js.map => sound_williams-HKXF5LD7.js.map} | 0 gen/src/common/cpu/ARM.js | 2 +- gen/src/common/cpu/ARM.js.map | 2 +- gen/src/common/detect.js | 86 +++++- gen/src/common/detect.js.map | 2 +- gen/src/common/emu.js | 3 +- gen/src/common/emu.js.map | 2 +- gen/src/common/emucore.js | 27 +- gen/src/common/emucore.js.map | 2 +- gen/src/platform/pce.js | 6 + gen/src/platform/pce.js.map | 2 +- gen/src/tools/8bws.js | 46 ++-- gen/src/tools/8bws.js.map | 2 +- gen/src/tools/buildpresets.js | 217 ++++++++++++++- gen/src/tools/buildpresets.js.map | 2 +- gen/src/tools/emutarget.js | 34 +++ gen/src/tools/emutarget.js.map | 2 +- gen/src/tools/nodemock.js | 34 ++- gen/src/tools/nodemock.js.map | 2 +- gen/src/tools/testlib.js | 22 +- gen/src/tools/testlib.js.map | 2 +- gen/src/worker/tools/cc65.js | 4 +- gen/src/worker/tools/cc65.js.map | 2 +- gen/src/worker/workerlib.js | 33 +++ gen/src/worker/workerlib.js.map | 2 +- gen/test/tsconfig.tsbuildinfo | 2 +- gen/test/unit/testbuildpresetrun.js | 49 ++++ gen/test/unit/testbuildpresetrun.js.map | 1 + gen/test/unit/testdetect.js | 54 +++- gen/test/unit/testdetect.js.map | 2 +- gen/test/unit/testwasmlisteners.js | 42 +++ gen/test/unit/testwasmlisteners.js.map | 1 + gen/tools/8bws.js | 46 ++-- gen/tools/8bws.js.map | 2 +- gen/tools/buildpresets.js | 217 ++++++++++++++- gen/tools/buildpresets.js.map | 2 +- gen/tools/emutarget.js | 34 +++ gen/tools/emutarget.js.map | 2 +- gen/tools/nodemock.js | 34 ++- gen/tools/nodemock.js.map | 2 +- gen/tools/testlib.js | 22 +- gen/tools/testlib.js.map | 2 +- gen/ui.js | 2 +- gen/{vcs-AX3ISR54.js => vcs-7FAHOI7X.js} | 4 +- ...cs-AX3ISR54.js.map => vcs-7FAHOI7X.js.map} | 0 ...{vector-IYRMLG67.js => vector-ETOUYCYJ.js} | 4 +- ...IYRMLG67.js.map => vector-ETOUYCYJ.js.map} | 0 ...ectrex-GQ3A7HRR.js => vectrex-WOLU3HO4.js} | 4 +- ...Q3A7HRR.js.map => vectrex-WOLU3HO4.js.map} | 0 ...erilog-5B7TKAOQ.js => verilog-LJOR32QT.js} | 4 +- ...B7TKAOQ.js.map => verilog-LJOR32QT.js.map} | 0 gen/{vic20-EEYQJAOB.js => vic20-Z3GEEX64.js} | 4 +- ...-EEYQJAOB.js.map => vic20-Z3GEEX64.js.map} | 0 ...icdual-HUORYJA6.js => vicdual-DZ6SME6I.js} | 4 +- ...UORYJA6.js.map => vicdual-DZ6SME6I.js.map} | 0 ...liams-AERWWXPK.js => williams-BYBVQW7G.js} | 4 +- ...RWWXPK.js.map => williams-BYBVQW7G.js.map} | 0 gen/worker/bundle.js | 2 +- gen/worker/bundle.js.map | 4 +- gen/worker/tools/cc65.js | 4 +- gen/worker/tools/cc65.js.map | 2 +- gen/worker/workerlib.js | 33 +++ gen/worker/workerlib.js.map | 2 +- gen/{x86-XQBEF33M.js => x86-VQ4UASUY.js} | 4 +- ...86-XQBEF33M.js.map => x86-VQ4UASUY.js.map} | 0 ...chine-NB5DIPHU.js => zmachine-ODU3CZWV.js} | 4 +- ...5DIPHU.js.map => zmachine-ODU3CZWV.js.map} | 0 gen/{zx-5C43TU6F.js => zx-3LQK3HXR.js} | 4 +- ...{zx-5C43TU6F.js.map => zx-3LQK3HXR.js.map} | 0 presets/coleco/skeleton.sdcc | 39 ++- src/common/cpu/ARM.ts | 2 +- src/common/detect.ts | 97 ++++++- src/common/emu.ts | 9 +- src/common/emucore.ts | 27 +- src/platform/pce.ts | 6 + src/tools/8bws.ts | 45 ++-- src/tools/buildpresets.ts | 250 +++++++++++++++++- src/tools/emutarget.ts | 35 ++- src/tools/nodemock.ts | 31 ++- src/tools/testlib.ts | 19 +- src/worker/tools/cc65.ts | 4 +- src/worker/workerlib.ts | 31 +++ 156 files changed, 1740 insertions(+), 280 deletions(-) rename gen/{apple2-HFIVSWRQ.js => apple2-HWNTKLI6.js} (99%) rename gen/{apple2-HFIVSWRQ.js.map => apple2-HWNTKLI6.js.map} (100%) rename gen/{arm32-HML7LUDU.js => arm32-2EOEPSXB.js} (78%) rename gen/{arm32-HML7LUDU.js.map => arm32-2EOEPSXB.js.map} (74%) rename gen/{astrocade-BPFIWX7J.js => astrocade-DCHJM6EX.js} (99%) rename gen/{astrocade-BPFIWX7J.js.map => astrocade-DCHJM6EX.js.map} (100%) rename gen/{atari7800-7IUSBQLC.js => atari7800-YDBZZWY4.js} (97%) rename gen/{atari7800-7IUSBQLC.js.map => atari7800-YDBZZWY4.js.map} (100%) rename gen/{atari8-FQ7EOZFI.js => atari8-KEK3L4F4.js} (98%) rename gen/{atari8-FQ7EOZFI.js.map => atari8-KEK3L4F4.js.map} (100%) rename gen/{basic-JWJIGIKJ.js => basic-5TP7VOPQ.js} (99%) rename gen/{basic-JWJIGIKJ.js.map => basic-5TP7VOPQ.js.map} (100%) rename gen/{c64-M5HIK4PX.js => c64-Z37VIZAM.js} (96%) rename gen/{c64-M5HIK4PX.js.map => c64-Z37VIZAM.js.map} (100%) rename gen/{channelf-QEC3XA36.js => channelf-22C5W255.js} (98%) rename gen/{channelf-QEC3XA36.js.map => channelf-22C5W255.js.map} (100%) rename gen/{chunk-EY5LTL52.js => chunk-2I4PZDSN.js} (72%) rename gen/{chunk-EY5LTL52.js.map => chunk-2I4PZDSN.js.map} (100%) rename gen/{chunk-42RFSQY5.js => chunk-MSPBD7SZ.js} (96%) rename gen/{chunk-42RFSQY5.js.map => chunk-MSPBD7SZ.js.map} (100%) rename gen/{chunk-4WX2XTAI.js => chunk-MZ43WA3W.js} (99%) rename gen/{chunk-4WX2XTAI.js.map => chunk-MZ43WA3W.js.map} (100%) rename gen/{chunk-IK55UTNM.js => chunk-UTYUOOT2.js} (96%) rename gen/{chunk-IK55UTNM.js.map => chunk-UTYUOOT2.js.map} (100%) rename gen/{chunk-XQKNUPDS.js => chunk-V7REAW7P.js} (97%) rename gen/{chunk-XQKNUPDS.js.map => chunk-V7REAW7P.js.map} (100%) rename gen/{chunk-X7YXI42O.js => chunk-YD7BCC55.js} (98%) rename gen/{chunk-X7YXI42O.js.map => chunk-YD7BCC55.js.map} (100%) rename gen/{chunk-EK7ZCXAS.js => chunk-ZTLOJICZ.js} (92%) rename gen/{chunk-EK7ZCXAS.js.map => chunk-ZTLOJICZ.js.map} (58%) rename gen/{coleco-5FRFBIFB.js => coleco-FZQ3SEAK.js} (94%) rename gen/{coleco-5FRFBIFB.js.map => coleco-FZQ3SEAK.js.map} (100%) rename gen/{cpc-WIAAKPBY.js => cpc-POCBQYUN.js} (94%) rename gen/{cpc-WIAAKPBY.js.map => cpc-POCBQYUN.js.map} (100%) rename gen/{devel-BGTXLCQH.js => devel-DGSIRRCB.js} (95%) rename gen/{devel-BGTXLCQH.js.map => devel-DGSIRRCB.js.map} (100%) rename gen/{exidy-7W6HSMGU.js => exidy-5ESAAHB5.js} (97%) rename gen/{exidy-7W6HSMGU.js.map => exidy-5ESAAHB5.js.map} (100%) rename gen/{galaxian-T4CARUIR.js => galaxian-5K5GYCNO.js} (96%) rename gen/{galaxian-T4CARUIR.js.map => galaxian-5K5GYCNO.js.map} (100%) rename gen/{gb-AK7YB3TT.js => gb-EL7XYT3L.js} (99%) rename gen/{gb-AK7YB3TT.js.map => gb-EL7XYT3L.js.map} (100%) rename gen/{kim1-5SXSABGS.js => kim1-BNT3J6F5.js} (96%) rename gen/{kim1-5SXSABGS.js.map => kim1-BNT3J6F5.js.map} (100%) rename gen/{mcr-PQD5XEKY.js => mcr-6Z647VBV.js} (95%) rename gen/{mcr-PQD5XEKY.js.map => mcr-6Z647VBV.js.map} (100%) rename gen/{msx-WYHUXEX2.js => msx-MZ645RSK.js} (98%) rename gen/{msx-WYHUXEX2.js.map => msx-MZ645RSK.js.map} (100%) rename gen/{mw8080bw-6MHN2WND.js => mw8080bw-LD2NTPKR.js} (93%) rename gen/{mw8080bw-6MHN2WND.js.map => mw8080bw-LD2NTPKR.js.map} (100%) rename gen/{nes-PSU5C2HR.js => nes-NKFIUNMU.js} (99%) rename gen/{nes-PSU5C2HR.js.map => nes-NKFIUNMU.js.map} (100%) rename gen/{pacman-JPNW7KMG.js => pacman-MJBPZJBV.js} (98%) rename gen/{pacman-JPNW7KMG.js.map => pacman-MJBPZJBV.js.map} (100%) create mode 100644 gen/pce-ED7Y5QEG.js create mode 100644 gen/pce-ED7Y5QEG.js.map delete mode 100644 gen/pce-TKEXWG4K.js delete mode 100644 gen/pce-TKEXWG4K.js.map rename gen/{sms-B4PKFPAM.js => sms-HCHAUJEX.js} (95%) rename gen/{sms-B4PKFPAM.js.map => sms-HCHAUJEX.js.map} (100%) rename gen/{sound_konami-PL5IXBMA.js => sound_konami-LOYLXE65.js} (90%) rename gen/{sound_konami-PL5IXBMA.js.map => sound_konami-LOYLXE65.js.map} (100%) rename gen/{sound_williams-JETC4QDO.js => sound_williams-HKXF5LD7.js} (88%) rename gen/{sound_williams-JETC4QDO.js.map => sound_williams-HKXF5LD7.js.map} (100%) create mode 100644 gen/test/unit/testbuildpresetrun.js create mode 100644 gen/test/unit/testbuildpresetrun.js.map create mode 100644 gen/test/unit/testwasmlisteners.js create mode 100644 gen/test/unit/testwasmlisteners.js.map rename gen/{vcs-AX3ISR54.js => vcs-7FAHOI7X.js} (97%) rename gen/{vcs-AX3ISR54.js.map => vcs-7FAHOI7X.js.map} (100%) rename gen/{vector-IYRMLG67.js => vector-ETOUYCYJ.js} (98%) rename gen/{vector-IYRMLG67.js.map => vector-ETOUYCYJ.js.map} (100%) rename gen/{vectrex-GQ3A7HRR.js => vectrex-WOLU3HO4.js} (99%) rename gen/{vectrex-GQ3A7HRR.js.map => vectrex-WOLU3HO4.js.map} (100%) rename gen/{verilog-5B7TKAOQ.js => verilog-LJOR32QT.js} (99%) rename gen/{verilog-5B7TKAOQ.js.map => verilog-LJOR32QT.js.map} (100%) rename gen/{vic20-EEYQJAOB.js => vic20-Z3GEEX64.js} (95%) rename gen/{vic20-EEYQJAOB.js.map => vic20-Z3GEEX64.js.map} (100%) rename gen/{vicdual-HUORYJA6.js => vicdual-DZ6SME6I.js} (92%) rename gen/{vicdual-HUORYJA6.js.map => vicdual-DZ6SME6I.js.map} (100%) rename gen/{williams-AERWWXPK.js => williams-BYBVQW7G.js} (98%) rename gen/{williams-AERWWXPK.js.map => williams-BYBVQW7G.js.map} (100%) rename gen/{x86-XQBEF33M.js => x86-VQ4UASUY.js} (95%) rename gen/{x86-XQBEF33M.js.map => x86-VQ4UASUY.js.map} (100%) rename gen/{zmachine-NB5DIPHU.js => zmachine-ODU3CZWV.js} (98%) rename gen/{zmachine-NB5DIPHU.js.map => zmachine-ODU3CZWV.js.map} (100%) rename gen/{zx-5C43TU6F.js => zx-3LQK3HXR.js} (93%) rename gen/{zx-5C43TU6F.js.map => zx-3LQK3HXR.js.map} (100%) diff --git a/gen/apple2-HFIVSWRQ.js b/gen/apple2-HWNTKLI6.js similarity index 99% rename from gen/apple2-HFIVSWRQ.js rename to gen/apple2-HWNTKLI6.js index e40bf9b2..c13f57af 100644 --- a/gen/apple2-HFIVSWRQ.js +++ b/gen/apple2-HWNTKLI6.js @@ -1,4 +1,4 @@ -import{a as i0}from"./chunk-XQKNUPDS.js";import{G as s0,m as e0,r as t0,z as r0}from"./chunk-4WX2XTAI.js";import{h as O}from"./chunk-UACHXWHT.js";import{K as U,g as W,i as X,l as $,m as x0,s as a0,u as d}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var P=class extends t0{constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.cpuCyclesPaddleUnit=11;this.cpuCyclesPaddleMax=255*this.cpuCyclesPaddleUnit;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new e0;this.grdirty=new Array(384);this.grparams={dirty:this.grdirty,grswitch:E,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.paddleValues=[0,0,0,0];this.paddleButtons=[!1,!1,!1];this.paddleLastTriggered=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new $().decode(x0(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var r=(x&7)-1;return this.paddleButtons[r]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,c=this.frameCycles-this.paddleLastTriggered;return c=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readROM(x&255))|0}return this.floatbus()}write(x,a){if(x&=65535,a&=255,x<49152)this.ram[x]=a,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var r=x>>4&15;this.slots[r-8]&&this.slots[r-8].write(x&15,a),this.probe.logIOWrite(x,a)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=a:this.ram[x+this.bank2wroffset]=a)}floatbus(){var x=this.frameCycles,a=Math.floor(x/65),r=Math.floor(x%65),t=this.ap2disp.getAddressForScanline(a);return this.readConst(t+r)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new l0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var a=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),a}postFrame(){this.paddleLastTriggered-=this.frameCycles,this.paddleLastTriggered<-this.cpuCyclesPaddleMax&&(this.paddleLastTriggered=-this.cpuCyclesPaddleMax)}advanceCPU(){return this.audio.feedSample(this.soundstate,1),super.advanceCPU()}setKeyInput(x,a,r){if(console.log(`setKeyInput: ${x} ${a} ${r}`),r&1){switch(a=0,x){case 16:case 17:case 18:case 91:return;case 8:if(a=8,r&2){this.cpu.reset();return}break;case 13:a=13;break;case 27:a=27;break;case 37:a=8;break;case 39:a=21;break;case 38:a=11;break;case 40:a=10;break;case 48:a=r&2?41:48;break;case 49:a=r&2?33:49;break;case 50:a=r&2?64:50;break;case 51:a=r&2?35:51;break;case 52:a=r&2?36:52;break;case 53:a=r&2?37:53;break;case 54:a=r&2?94:54;break;case 55:a=r&2?38:55;break;case 56:a=r&2?42:56;break;case 57:a=r&2?40:57;break;case 61:a=r&2?95:45;break;case 173:a=r&2?43:61;break;case 59:a=r&2?58:59;break;case 186:a=r&2?58:59;break;case 187:a=r&2?43:61;break;case 188:a=r&2?60:44;break;case 189:a=r&2?95:45;break;case 190:a=r&2?62:46;break;case 191:a=r&2?63:47;break;case 222:a=r&2?34:39;break;default:a=x,a>=97&&a<=122&&(a-=32),a>=65&&a<91&&r&4&&(a-=64)}a&&(this.kbdlatch=(a|128)&255)}}setPaddleInput(x,a){x>=0&&x=0&&x{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new $().decode(x0(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var r=(x&7)-1;return this.paddleButtons[r]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,c=this.frameCycles-this.paddleLastTriggered;return c=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readROM(x&255))|0}return this.floatbus()}write(x,a){if(x&=65535,a&=255,x<49152)this.ram[x]=a,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var r=x>>4&15;this.slots[r-8]&&this.slots[r-8].write(x&15,a),this.probe.logIOWrite(x,a)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=a:this.ram[x+this.bank2wroffset]=a)}floatbus(){var x=this.frameCycles,a=Math.floor(x/65),r=Math.floor(x%65),t=this.ap2disp.getAddressForScanline(a);return this.readConst(t+r)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new l0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var a=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),a}postFrame(){this.paddleLastTriggered-=this.frameCycles,this.paddleLastTriggered<-this.cpuCyclesPaddleMax&&(this.paddleLastTriggered=-this.cpuCyclesPaddleMax)}advanceCPU(){return this.audio.feedSample(this.soundstate,1),super.advanceCPU()}setKeyInput(x,a,r){if(console.log(`setKeyInput: ${x} ${a} ${r}`),r&1){switch(a=0,x){case 16:case 17:case 18:case 91:return;case 8:if(a=8,r&2){this.cpu.reset();return}break;case 13:a=13;break;case 27:a=27;break;case 37:a=8;break;case 39:a=21;break;case 38:a=11;break;case 40:a=10;break;case 48:a=r&2?41:48;break;case 49:a=r&2?33:49;break;case 50:a=r&2?64:50;break;case 51:a=r&2?35:51;break;case 52:a=r&2?36:52;break;case 53:a=r&2?37:53;break;case 54:a=r&2?94:54;break;case 55:a=r&2?38:55;break;case 56:a=r&2?42:56;break;case 57:a=r&2?40:57;break;case 61:a=r&2?95:45;break;case 173:a=r&2?43:61;break;case 59:a=r&2?58:59;break;case 186:a=r&2?58:59;break;case 187:a=r&2?43:61;break;case 188:a=r&2?60:44;break;case 189:a=r&2?95:45;break;case 190:a=r&2?62:46;break;case 191:a=r&2?63:47;break;case 222:a=r&2?34:39;break;default:a=x,a>=97&&a<=122&&(a-=32),a>=65&&a<91&&r&4&&(a-=64)}a&&(this.kbdlatch=(a|128)&255)}}setPaddleInput(x,a){x>=0&&x=0&&x>1&3,a==(t-1&3)?t>0&&t--:a==(t+1&3)&&t>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return x>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(x),this.write_protect?128:0}return this.emu.floatbus()}},G=[150,151,154,155,157,158,159,166,167,171,172,173,174,175,178,179,180,181,182,183,185,186,187,188,189,190,191,203,205,206,207,211,214,215,217,218,219,220,221,222,223,229,230,231,233,234,235,236,237,238,239,242,243,244,245,246,247,249,250,251,252,253,254,255],m0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function g0(n,e,x,a,r,t,c){var f,g,C,u,m=new Uint8Array(258);for(u=0,f=0;f<14;f++)t[c++]=255;for(t[c++]=213,t[c++]=170,t[c++]=150,t[c++]=n>>1|170,t[c++]=n|170,g=n,t[c++]=e>>1|170,t[c++]=e|170,g^=e,t[c++]=x>>1|170,t[c++]=x|170,g^=x,t[c++]=g>>1|170,t[c++]=g|170,t[c++]=222,t[c++]=170,t[c++]=235,f=0;f<6;f++)t[c++]=255;for(t[c++]=213,t[c++]=170,t[c++]=173,f=0;f<256;f++)m[f]=a[f+r]&255;for(m[256]=0,m[257]=0,C=0,f=0;f<86;f++)u=(m[f]&1)<<1,u|=(m[f]&2)>>1,u|=(m[f+86]&1)<<3,u|=(m[f+86]&2)<<1,u|=(m[f+172]&1)<<5,u|=(m[f+172]&2)<<3,t[c++]=G[u^C],C=u;for(f=0;f<256;f++)u=m[f]>>2,t[c++]=G[u^C],C=u;t[c++]=G[u],t[c++]=222,t[c++]=170,t[c++]=235}function p0(n,e,x){for(var a=new Uint8Array(F),r=0,t=0;t<16;t++)g0(n,e,t,x,m0[t]<<8,a,r),r+=A0;for(;r>e,i.shifterCarryOut=a&1<>31?(i.shifterOperand=4294967295,i.shifterCarryOut=2147483648):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1Immediate=function(r){var t=this.cpu;return function(){t.shifterOperand=r,t.shifterCarryOut=t.cpsrC}};n.prototype.constructAddressingMode1ImmediateRotate=function(r,t){var i=this.cpu;return function(){i.shifterOperand=r>>>t|r<<32-t,i.shifterCarryOut=i.shifterOperand>>31}};n.prototype.constructAddressingMode1LSL=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a<>>e,i.shifterCarryOut=a&1<>31):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1ROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4);var c=e&31;e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):c?(i.shifterOperand=s[t]>>>c|s[t]<<32-c,i.shifterCarryOut=a&1<>31)}};n.prototype.constructAddressingMode23Immediate=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Immediate[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode23Register=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Register[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode2RegisterShifted=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode2RegisterShifted[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode4=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[t]+r;return e}};n.prototype.constructAddressingMode4Writeback=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(c){var u=a[i]+r;return c&&s&&e.mmu.store32(a[i]+r-4,a[i]),a[i]+=t,u}};n.prototype.constructNOP=function(){return this.writesPC=!1,function(){}};n.prototype.constructADC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0);a[r]=(a[t]>>>0)+c}}};n.prototype.constructADCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0),u=(a[t]>>>0)+c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=u>4294967295,e.cpsrV=a[t]>>31==c>>31&&a[t]>>31!=u>>31&&c>>31!=u>>31),a[r]=u}}};n.prototype.constructADD=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=(a[t]>>>0)+(e.shifterOperand>>>0))}};n.prototype.constructADDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructAND=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand)}};n.prototype.constructANDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructB=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[15]+=r}};n.prototype.constructBIC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand)}};n.prototype.constructBICS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructBL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[14]=s[15]-4,s[15]+=r}};n.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),i.switchExecMode(s[r]&1),s[15]=s[r]&4294967294}};n.prototype.constructCMN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31}}};n.prototype.constructCMP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31}}};n.prototype.constructEOR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand)}};n.prototype.constructEORS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructLDM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(e[F]=a.load32(c&4294967292),c+=4,++u);a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p=s.mode;s.switchMode(31);var F,R;for(F=r,R=0;F;F>>=1,++R)F&1&&(e[R]=a.load32(c&4294967292),c+=4,++u);s.switchMode(p),a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load32(a),s.mmu.wait32(a),++s.cycles}}};n.prototype.constructLDRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructMLA=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e()))if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t]}};n.prototype.constructMLAS=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t];a.cpsrN=c[r]>>31,a.cpsrZ=!(c[r]&4294967295)}}};n.prototype.constructMOV=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand)}};n.prototype.constructMOVS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructMRS=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch32(e[15]),!(i&&!i())&&(t?e[r]=s.spsr:e[r]=s.packCPSR())}};n.prototype.constructMSR=function(r,t,i,s,e){var a=this.cpu,c=a.gprs,u=i&65536,p=i&524288;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){var F;i&33554432?F=s:F=c[r];var R=(u?255:0)|(p?4278190080:0);t?(R&=Cr|lr|Tr,a.spsr=a.spsr&~R|F&R):(R&Cr&&(a.cpsrN=F>>31,a.cpsrZ=F&1073741824,a.cpsrC=F&536870912,a.cpsrV=F&268435456),a.mode!=16&&R&lr&&(a.switchMode(F&15|16),a.cpsrI=F&128,a.cpsrF=F&64))}}};n.prototype.constructMUL=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s()))if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t]}};n.prototype.constructMULS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t];e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295)}}};n.prototype.constructMVN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand)}};n.prototype.constructMVNS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructORR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand)}};n.prototype.constructORRS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructRSB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand-a[t])}};n.prototype.constructRSBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=e.shifterOperand-a[t];r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterOperand>>>0>=a[t]>>>0,e.cpsrV=e.shifterOperand>>31!=a[t]>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructRSC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1);a[r]=(e.shifterOperand>>>0)-c}}};n.prototype.constructRSCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1),u=(e.shifterOperand>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=e.shifterOperand>>>0>=u>>>0,e.cpsrV=e.shifterOperand>>31!=c>>31&&e.shifterOperand>>31!=u>>31),a[r]=u}}};n.prototype.constructSBC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1);a[r]=(a[t]>>>0)-c}}};n.prototype.constructSBCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1),u=(a[t]>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=a[t]>>>0>=u>>>0,e.cpsrV=a[t]>>31!=c>>31&&a[t]>>31!=u>>31),a[r]=u}}};n.prototype.constructSMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c)}}};n.prototype.constructSMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c)}}};n.prototype.constructSMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSTM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=t(!0),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(a.store32(c,e[F]),c+=4,++u);a.waitMulti32(c,u)}};n.prototype.constructSTMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=s.mode,u=t(!0),p=0,F,R;for(s.switchMode(31),F=r,R=0;F;F>>=1,++R)F&1&&(a.store32(u,e[R]),u+=4,++p);s.switchMode(c),a.waitMulti32(u,p)}};n.prototype.constructSTR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store32(a,e[r]),s.mmu.wait32(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store8(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store16(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSUB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]-e.shifterOperand)}};n.prototype.constructSUBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31),a[r]=c}}};n.prototype.constructSWI=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.irq.swi32(r),i.mmu.waitPrefetch32(s[15])}};n.prototype.constructSWP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait32(a[t]),e.mmu.wait32(a[t]);var c=e.mmu.load32(a[t]);e.mmu.store32(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructSWPB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait(a[t]),e.mmu.wait(a[t]);var c=e.mmu.loadU8(a[t]);e.mmu.store8(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructTEQ=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]^e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructTST=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]&e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructUMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c}}};n.prototype.constructUMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructUMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0}}};n.prototype.constructUMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructVFP3Register=function(r,t,i,s,e,a,c){var u=this.cpu,p=e?u.dfprs:u.sfprs;return function(){if(u.mmu.waitPrefetch32(u.gprs[15]),!(r&&!r())){switch(t){case 2:if(a===0){p[s]=p[i]*p[c];return}break;case 3:switch(a){case 0:p[s]=p[i]+p[c];return;case 2:p[s]=p[i]-p[c];return}break;case 8:if(a===0){p[s]=p[i]/p[c];return}break}console.log("Unsupported instruction: "+E(t)+" "+E(a))}}};n.prototype.constructVCVT=function(r,t,i,s,e,a,c,u){var p=this.cpu,F=p.sfprs,R=p.dfprs,m=p.ifprs;return function(){if(p.mmu.waitPrefetch32(p.gprs[15]),!(r&&!r())){var v,o;s&&e?v=R[i]:s?v=F[i]:v=m[i],s?o=c?Math.floor(v):Math.round(v):o=v,s?m[t]=o:e?R[t]=o:F[t]=o}}};n.prototype.constructVCVTF=function(r,t,i,s){var e=this.cpu,a=e.sfprs,c=e.dfprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),!(r&&!r())){var u=s?c[i]:a[i];s?a[t]=u:c[t]=u}}};n.prototype.constructVLDR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?a[t]=e.mmu.load32(c):(a[t]=e.mmu.load32(c),a[t+1]=e.mmu.load32(c+4)),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVSTR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?e.mmu.store32(c,a[t]):(e.mmu.store32(c,a[t]),e.mmu.store32(c+4,a[t+1])),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVPUSH=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=e.gprs[13]-i*4;e.gprs[13]=c;for(let u=0;u>>0)+(i.cpsrC?1:0),a=s[r],c=(a>>>0)+e,u=a>>31,p=c>>31,F=e>>31;i.cpsrN=p,i.cpsrZ=!(c&4294967295),i.cpsrC=c>4294967295,i.cpsrV=u==F&&u!=p&&F!=p,s[r]=c}};h.prototype.constructADD1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!(e[t]>>31)&&(e[t]>>31^a)>>31&&a>>31,e[r]=a}};h.prototype.constructADD2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=!(s[r]>>31)&&(s[r]^e)>>31&&(t^e)>>31,s[r]=e}};h.prototype.constructADD3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+(e[i]>>>0);s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!((e[t]^e[i])>>31)&&(e[t]^a)>>31&&(e[i]^a)>>31,e[r]=a}};h.prototype.constructADD4=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]+=s[t]}};h.prototype.constructADD5=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=(s[15]&4294967292)+t}};h.prototype.constructADD6=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[13]+t}};h.prototype.constructADD7=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[13]+=r}};h.prototype.constructAND=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructASR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,s.cpsrC?e[r]=4294967295:e[r]=0):(s.cpsrC=e[t]&1<>i),s.cpsrN=e[r]>>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructASR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>=e):(i.cpsrC=s[r]>>31,i.cpsrC?s[r]=4294967295:s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructB1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),t()&&(s[15]+=r)}};h.prototype.constructB2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[15]+=r}};h.prototype.constructBIC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructBL1=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[14]=i[15]+r}};h.prototype.constructBL2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]);var s=i[15];i[15]=i[14]+(r<<1),i[14]=s-1}};h.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),i.switchExecMode(s[t]&1);var e=0;t==15&&(e=s[t]&2),s[15]=s[t]&4294967294-e}};h.prototype.constructCMN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+(s[t]>>>0);i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=s[r]>>31==s[t]>>31&&s[r]>>31!=e>>31&&s[t]>>31!=e>>31}};h.prototype.constructCMP1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31}};h.prototype.constructCMP2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=s[t],c=e-a,u=c>>31,p=e>>31;i.cpsrN=u,i.cpsrZ=!(c&4294967295),i.cpsrC=e>>>0>=a>>>0,i.cpsrV=p!=a>>31&&p!=u}};h.prototype.constructCMP3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=s[t]>>>0,i.cpsrV=(s[r]^s[t])>>31&&(s[r]^e)>>31}};h.prototype.constructEOR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]^s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLDMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)t&c&&(s[u]=i.mmu.load32(e),e+=4,++a);i.mmu.waitMulti32(e,a),1<>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSL2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<<32-e,s[r]<<=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]&1,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLSR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,e[r]=0):(s.cpsrC=e[t]&1<>>i),s.cpsrN=0,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>>=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]>>31,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMOV1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=t,i.cpsrN=t>>31,i.cpsrZ=!(t&4294967295)}};h.prototype.constructMOV2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=0,s.cpsrV=0,e[r]=a}};h.prototype.constructMOV3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[t]}};h.prototype.constructMUL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(i.mmu.waitPrefetch(s[15]),i.mmu.waitMul(s[t]),s[t]&4294901760&&s[r]&4294901760){var e=(s[r]&4294901760)*s[t]&4294967295,a=(s[r]&65535)*s[t]&4294967295;s[r]=e+a&4294967295}else s[r]*=s[t];i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMVN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructNEG=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=0>=e>>>0,i.cpsrV=s[t]>>31&&e>>31,s[r]=e}};h.prototype.constructORR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]|s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructPOP=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),++i.cycles;var e=s[13],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)r&c&&(i.mmu.waitSeq32(e),s[u]=i.mmu.load32(e),e+=4,++a);t&&(s[15]=i.mmu.load32(e)&4294967294,e+=4,++a),i.mmu.waitMulti32(e,a),s[13]=e}};h.prototype.constructPUSH=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[13]-4,a=0;i.mmu.waitPrefetch(s[15]),t&&(i.mmu.store32(e,s[14]),e-=4,++a);var c,u;for(c=128,u=7;c;c>>=1,--u)if(r&c){i.mmu.store32(e,s[u]),e-=4,++a;break}for(c>>=1,--u;c;c>>=1,--u)r&c&&(i.mmu.store32(e,s[u]),e-=4,++a);i.mmu.waitMulti32(e,a),s[13]=e+4}};h.prototype.constructROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;if(e){var a=e&31;a>0?(i.cpsrC=s[r]&1<>>a|s[r]<<32-a):i.cpsrC=s[r]>>31}i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructSBC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[t]>>>0)+(i.cpsrC?0:1),a=(s[r]>>>0)-e;i.cpsrN=a>>31,i.cpsrZ=!(a&4294967295),i.cpsrC=s[r]>>>0>=a>>>0,i.cpsrV=(s[r]^e)>>31&&(s[r]^a)>>31,s[r]=a}};h.prototype.constructSTMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.wait(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)if(t&c){i.mmu.store32(e,s[u]),e+=4,++a;break}for(c<<=1,++u;u<8;c<<=1,++u)t&c&&(i.mmu.store32(e,s[u]),e+=4,++a);i.mmu.waitMulti32(e,a),s[r]=e}};h.prototype.constructSTR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store32(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait32(a)}};h.prototype.constructSTR2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store32(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait32(e[t]+e[i])}};h.prototype.constructSTR3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.store32(s[13]+t,s[r]),i.mmu.wait(s[15]),i.mmu.wait32(s[13]+t)}};h.prototype.constructSTRB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store8(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRB2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store8(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSTRH1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store16(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRH2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store16(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSUB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=i,s.cpsrV=e[t]>>31&&(e[t]^a)>>31,e[r]=a}};h.prototype.constructSUB2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31,s[r]=e}};h.prototype.constructSUB3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-e[i];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=e[i]>>>0,s.cpsrV=e[t]>>31!=e[i]>>31&&e[t]>>31!=a>>31,e[r]=a}};h.prototype.constructSWI=function(r){var t=this.cpu,i=t.gprs;return function(){t.irq.swi(r),t.mmu.waitPrefetch(i[15])}};h.prototype.constructTST=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]&s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295)}};function A(){this.SP=13,this.LR=14,this.PC=15,this.MODE_ARM=0,this.MODE_THUMB=1,this.MODE_USER=16,this.MODE_FIQ=17,this.MODE_IRQ=18,this.MODE_SUPERVISOR=19,this.MODE_ABORT=23,this.MODE_UNDEFINED=27,this.MODE_SYSTEM=31,this.BANK_NONE=0,this.BANK_FIQ=1,this.BANK_IRQ=2,this.BANK_SUPERVISOR=3,this.BANK_ABORT=4,this.BANK_UNDEFINED=5,this.WORD_SIZE_ARM=4,this.WORD_SIZE_THUMB=2,this.BASE_RESET=0,this.BASE_UNDEF=4,this.BASE_SWI=8,this.BASE_PABT=12,this.BASE_DABT=16,this.BASE_IRQ=24,this.BASE_FIQ=28,this.armCompiler=new n(this),this.thumbCompiler=new h(this),this.generateConds(),this.gprs=new Int32Array(16),this.dfprs=new Float64Array(16),this.sfprs=new Float32Array(this.dfprs.buffer),this.ifprs=new Int32Array(this.dfprs.buffer)}A.prototype.resetCPU=function(r){for(var t=0;t<15;++t)this.gprs[t]=0;this.gprs[15]=r+4,this.dfprs.set(0),this.loadInstruction=this.loadInstructionArm,this.execMode=0,this.instructionWidth=4,this.mode=31,this.cpsrI=!1,this.cpsrF=!1,this.cpsrV=!1,this.cpsrC=!1,this.cpsrZ=!1,this.cpsrN=!1,this.bankedRegisters=[new Int32Array(7),new Int32Array(7),new Int32Array(2),new Int32Array(2),new Int32Array(2),new Int32Array(2)],this.spsr=0,this.bankedSPSRs=new Int32Array(6),this.cycles=0,this.shifterOperand=0,this.shifterCarryOut=0,this.page=null,this.pageId=0,this.pageRegion=-1,this.instruction=null,this.irq.clear();var i=this.gprs,s=this.mmu;this.step=function(){var e=this.instruction||(this.instruction=this.loadInstruction(i[15]-this.instructionWidth));if(i[15]+=this.instructionWidth,this.conditionPassed=!0,e(),!e.writesPC)this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next);else if(this.conditionPassed){var a=i[15]&=4294967294;this.execMode==0?(s.wait32(a),s.waitPrefetch32(a)):(s.wait(a),s.waitPrefetch(a)),i[15]+=this.instructionWidth,e.fixedJump?this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next):this.instruction=null}else this.instruction=null;this.irq.updateTimers()}};A.prototype.freeze=function(){return{PC:this.gprs[15]-this.instructionWidth,SP:this.gprs[13],gprs:[this.gprs[0],this.gprs[1],this.gprs[2],this.gprs[3],this.gprs[4],this.gprs[5],this.gprs[6],this.gprs[7],this.gprs[8],this.gprs[9],this.gprs[10],this.gprs[11],this.gprs[12],this.gprs[13],this.gprs[14],this.gprs[15]],sfprs:this.sfprs.slice(),dfprs:this.dfprs.slice(),ifprs:this.ifprs.slice(),mode:this.mode,cpsrI:this.cpsrI,cpsrF:this.cpsrF,cpsrV:this.cpsrV,cpsrC:this.cpsrC,cpsrZ:this.cpsrZ,cpsrN:this.cpsrN,bankedRegisters:[[this.bankedRegisters[0][0],this.bankedRegisters[0][1],this.bankedRegisters[0][2],this.bankedRegisters[0][3],this.bankedRegisters[0][4],this.bankedRegisters[0][5],this.bankedRegisters[0][6]],[this.bankedRegisters[1][0],this.bankedRegisters[1][1],this.bankedRegisters[1][2],this.bankedRegisters[1][3],this.bankedRegisters[1][4],this.bankedRegisters[1][5],this.bankedRegisters[1][6]],[this.bankedRegisters[2][0],this.bankedRegisters[2][1]],[this.bankedRegisters[3][0],this.bankedRegisters[3][1]],[this.bankedRegisters[4][0],this.bankedRegisters[4][1]],[this.bankedRegisters[5][0],this.bankedRegisters[5][1]]],spsr:this.spsr,bankedSPSRs:[this.bankedSPSRs[0],this.bankedSPSRs[1],this.bankedSPSRs[2],this.bankedSPSRs[3],this.bankedSPSRs[4],this.bankedSPSRs[5]],cycles:this.cycles,instructionWidth:this.instructionWidth}};A.prototype.defrost=function(r){this.instruction=null,this.page=null,this.pageId=0,this.pageRegion=-1,this.gprs[0]=r.gprs[0],this.gprs[1]=r.gprs[1],this.gprs[2]=r.gprs[2],this.gprs[3]=r.gprs[3],this.gprs[4]=r.gprs[4],this.gprs[5]=r.gprs[5],this.gprs[6]=r.gprs[6],this.gprs[7]=r.gprs[7],this.gprs[8]=r.gprs[8],this.gprs[9]=r.gprs[9],this.gprs[10]=r.gprs[10],this.gprs[11]=r.gprs[11],this.gprs[12]=r.gprs[12],this.gprs[13]=r.gprs[13],this.gprs[14]=r.gprs[14],this.gprs[15]=r.gprs[15],this.ifprs.set(r.ifprs),this.mode=r.mode,this.cpsrI=r.cpsrI,this.cpsrF=r.cpsrF,this.cpsrV=r.cpsrV,this.cpsrC=r.cpsrC,this.cpsrZ=r.cpsrZ,this.cpsrN=r.cpsrN,this.bankedRegisters[0][0]=r.bankedRegisters[0][0],this.bankedRegisters[0][1]=r.bankedRegisters[0][1],this.bankedRegisters[0][2]=r.bankedRegisters[0][2],this.bankedRegisters[0][3]=r.bankedRegisters[0][3],this.bankedRegisters[0][4]=r.bankedRegisters[0][4],this.bankedRegisters[0][5]=r.bankedRegisters[0][5],this.bankedRegisters[0][6]=r.bankedRegisters[0][6],this.bankedRegisters[1][0]=r.bankedRegisters[1][0],this.bankedRegisters[1][1]=r.bankedRegisters[1][1],this.bankedRegisters[1][2]=r.bankedRegisters[1][2],this.bankedRegisters[1][3]=r.bankedRegisters[1][3],this.bankedRegisters[1][4]=r.bankedRegisters[1][4],this.bankedRegisters[1][5]=r.bankedRegisters[1][5],this.bankedRegisters[1][6]=r.bankedRegisters[1][6],this.bankedRegisters[2][0]=r.bankedRegisters[2][0],this.bankedRegisters[2][1]=r.bankedRegisters[2][1],this.bankedRegisters[3][0]=r.bankedRegisters[3][0],this.bankedRegisters[3][1]=r.bankedRegisters[3][1],this.bankedRegisters[4][0]=r.bankedRegisters[4][0],this.bankedRegisters[4][1]=r.bankedRegisters[4][1],this.bankedRegisters[5][0]=r.bankedRegisters[5][0],this.bankedRegisters[5][1]=r.bankedRegisters[5][1],this.spsr=r.spsr,this.bankedSPSRs[0]=r.bankedSPSRs[0],this.bankedSPSRs[1]=r.bankedSPSRs[1],this.bankedSPSRs[2]=r.bankedSPSRs[2],this.bankedSPSRs[3]=r.bankedSPSRs[3],this.bankedSPSRs[4]=r.bankedSPSRs[4],this.bankedSPSRs[5]=r.bankedSPSRs[5],this.cycles=r.cycles,this.instructionWidth=r.instructionWidth,this.loadInstruction=r.instructionWidth==2?this.loadInstructionThumb:this.loadInstructionArm,this.execMode=r.instructionWidth==2?1:0};A.prototype.fetchPage=function(r){var t=this.mmu,i=r>>>t.BASE_OFFSET,s=t.addressToPage(i,r&t.OFFSET_MASK);if(i==this.pageRegion){if(s==this.pageId&&!this.page.invalid)return;this.pageId=s}else this.pageMask=t.memory[i].PAGE_MASK,this.pageRegion=i,this.pageId=s;this.page=t.accessPage(i,s)};A.prototype.loadInstructionArm=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>2;if(t=this.page.arm[i],t)return t;var s=this.mmu.load32(r)>>>0;return t=this.compileArm(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.arm[i]=t,t};A.prototype.loadInstructionThumb=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>1;if(t=this.page.thumb[i],t)return t;var s=this.mmu.load16(r);return t=this.compileThumb(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.thumb[i]=t,t};A.prototype.selectBank=function(r){switch(r){case 16:case 31:return 0;case 17:return 1;case 18:return 2;case 19:return 3;case 23:return 4;case 27:return 5;default:throw new N("Invalid user mode "+r+" passed to selectBank")}};A.prototype.switchExecMode=function(r){this.execMode!=r&&(this.execMode=r,r==0?(this.instructionWidth=4,this.loadInstruction=this.loadInstructionArm):(this.instructionWidth=2,this.loadInstruction=this.loadInstructionThumb))};A.prototype.switchMode=function(r){if(r!=this.mode){if(r!=16||r!=31){var t=this.selectBank(r),i=this.selectBank(this.mode);if(t!=i){if(r==17||this.mode==17){var s=i==1?1:0,e=t==1?1:0;this.bankedRegisters[s][2]=this.gprs[8],this.bankedRegisters[s][3]=this.gprs[9],this.bankedRegisters[s][4]=this.gprs[10],this.bankedRegisters[s][5]=this.gprs[11],this.bankedRegisters[s][6]=this.gprs[12],this.gprs[8]=this.bankedRegisters[e][2],this.gprs[9]=this.bankedRegisters[e][3],this.gprs[10]=this.bankedRegisters[e][4],this.gprs[11]=this.bankedRegisters[e][5],this.gprs[12]=this.bankedRegisters[e][6]}this.bankedRegisters[i][0]=this.gprs[13],this.bankedRegisters[i][1]=this.gprs[14],this.gprs[13]=this.bankedRegisters[t][0],this.gprs[14]=this.bankedRegisters[t][1],this.bankedSPSRs[i]=this.spsr,this.spsr=this.bankedSPSRs[t]}}this.mode=r}};A.prototype.packCPSR=function(){return this.mode|this.execMode<<5|this.cpsrF<<6|this.cpsrI<<7|this.cpsrN<<31|this.cpsrZ<<30|this.cpsrC<<29|this.cpsrV<<28};A.prototype.unpackCPSR=function(r){this.switchMode(r&31),this.switchExecMode(!!(r&32)),this.cpsrF=r&64,this.cpsrI=r&128,this.cpsrN=r&2147483648,this.cpsrZ=r&1073741824,this.cpsrC=r&536870912,this.cpsrV=r&268435456,this.irq.testIRQ()};A.prototype.hasSPSR=function(){return this.mode!=31&&this.mode!=16};A.prototype.raiseIRQ=function(){if(!this.cpsrI){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(18),this.spsr=r,this.gprs[14]=this.gprs[15]-t+4,this.gprs[15]=this.BASE_IRQ+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0}};A.prototype.raiseTrap=function(){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(19),this.spsr=r,this.gprs[14]=this.gprs[15]-t,this.gprs[15]=this.BASE_SWI+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0};A.prototype.badOp=function(r){var t=function(){throw new N("Illegal instruction: 0x"+r.toString(16))};return t.writesPC=!0,t.fixedJump=!1,t};A.prototype.generateConds=function(){var r=this;this.conds=[function(){return r.conditionPassed=r.cpsrZ},function(){return r.conditionPassed=!r.cpsrZ},function(){return r.conditionPassed=r.cpsrC},function(){return r.conditionPassed=!r.cpsrC},function(){return r.conditionPassed=r.cpsrN},function(){return r.conditionPassed=!r.cpsrN},function(){return r.conditionPassed=r.cpsrV},function(){return r.conditionPassed=!r.cpsrV},function(){return r.conditionPassed=r.cpsrC&&!r.cpsrZ},function(){return r.conditionPassed=!r.cpsrC||r.cpsrZ},function(){return r.conditionPassed=!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=!r.cpsrN!=!r.cpsrV},function(){return r.conditionPassed=!r.cpsrZ&&!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=r.cpsrZ||!r.cpsrN!=!r.cpsrV},null,null]};A.prototype.barrelShiftImmediate=function(r,t,i){var s=this,e=this.gprs,a=this.badOp;switch(r){case 0:t?a=function(){s.shifterOperand=e[i]<>>t,s.shifterCarryOut=e[i]&1<>t,s.shifterCarryOut=e[i]&1<>>t|e[i]<<32-t,s.shifterCarryOut=e[i]&1<>>1,s.shifterCarryOut=e[i]&1};break}return a};A.prototype.compileArm=function(r){var t=this.badOp(r),i=r&234881024,s=this,e=this.gprs,a=this.conds[(r&4026531840)>>>28];if((r&268435440)==19922704){var c=r&15;t=this.armCompiler.constructBX(c,a),t.writesPC=!0,t.fixedJump=!1}else if(!(r&201326592)&&(i==33554432||(r&144)!=144)){var u=r&31457280,p=r&1048576,F=!1;if((u&25165824)==16777216&&!p){var R=r&4194304;if((r&11595776)==2158592){var c=r&15,m=r&255,v=(r&3840)>>7;m=m>>>v|m<<32-v,t=this.armCompiler.constructMSR(c,R,r,m,a),t.writesPC=!1}else if((r&12517376)==983040){var o=(r&61440)>>12;t=this.armCompiler.constructMRS(o,R,a),t.writesPC=o==15}}else{var f=(r&983040)>>16,o=(r&61440)>>12,U=r&96,c=r&15,g=function(){throw new N("BUG: invalid barrel shifter")};if(r&33554432){var m=r&255,ir=(r&3840)>>7;ir?g=this.armCompiler.constructAddressingMode1ImmediateRotate(m,ir):g=this.armCompiler.constructAddressingMode1Immediate(m)}else if(r&16){var l=(r&3840)>>8;switch(F=!0,U){case 0:g=this.armCompiler.constructAddressingMode1LSL(l,c);break;case 32:g=this.armCompiler.constructAddressingMode1LSR(l,c);break;case 64:g=this.armCompiler.constructAddressingMode1ASR(l,c);break;case 96:g=this.armCompiler.constructAddressingMode1ROR(l,c);break}}else{var m=(r&3968)>>7;g=this.barrelShiftImmediate(U,m,c)}switch(u){case 0:p?t=this.armCompiler.constructANDS(o,f,g,a):t=this.armCompiler.constructAND(o,f,g,a);break;case 2097152:p?t=this.armCompiler.constructEORS(o,f,g,a):t=this.armCompiler.constructEOR(o,f,g,a);break;case 4194304:p?t=this.armCompiler.constructSUBS(o,f,g,a):t=this.armCompiler.constructSUB(o,f,g,a);break;case 6291456:p?t=this.armCompiler.constructRSBS(o,f,g,a):t=this.armCompiler.constructRSB(o,f,g,a);break;case 8388608:p?t=this.armCompiler.constructADDS(o,f,g,a):t=this.armCompiler.constructADD(o,f,g,a);break;case 10485760:p?t=this.armCompiler.constructADCS(o,f,g,a):t=this.armCompiler.constructADC(o,f,g,a);break;case 12582912:p?t=this.armCompiler.constructSBCS(o,f,g,a):t=this.armCompiler.constructSBC(o,f,g,a);break;case 14680064:p?t=this.armCompiler.constructRSCS(o,f,g,a):t=this.armCompiler.constructRSC(o,f,g,a);break;case 16777216:t=this.armCompiler.constructTST(o,f,g,a);break;case 18874368:t=this.armCompiler.constructTEQ(o,f,g,a);break;case 20971520:t=this.armCompiler.constructCMP(o,f,g,a);break;case 23068672:t=this.armCompiler.constructCMN(o,f,g,a);break;case 25165824:p?t=this.armCompiler.constructORRS(o,f,g,a):t=this.armCompiler.constructORR(o,f,g,a);break;case 27262976:p?t=this.armCompiler.constructMOVS(o,f,g,a):t=this.armCompiler.constructMOV(o,f,g,a);break;case 29360128:p?t=this.armCompiler.constructBICS(o,f,g,a):t=this.armCompiler.constructBIC(o,f,g,a);break;case 31457280:p?t=this.armCompiler.constructMVNS(o,f,g,a):t=this.armCompiler.constructMVN(o,f,g,a);break}t.writesPC=o==15}}else if((r&263196656)==16777360){var c=r&15,o=r>>12&15,f=r>>16&15;r&4194304?t=this.armCompiler.constructSWPB(o,f,c,a):t=this.armCompiler.constructSWP(o,f,c,a),t.writesPC=o==15}else switch(i){case 0:if((r&16777456)==144){var o=(r&983040)>>16,f=(r&61440)>>12,l=(r&3840)>>8,c=r&15;switch(r&15728640){case 0:t=this.armCompiler.constructMUL(o,l,c,a);break;case 1048576:t=this.armCompiler.constructMULS(o,l,c,a);break;case 2097152:t=this.armCompiler.constructMLA(o,f,l,c,a);break;case 3145728:t=this.armCompiler.constructMLAS(o,f,l,c,a);break;case 8388608:t=this.armCompiler.constructUMULL(o,f,l,c,a);break;case 9437184:t=this.armCompiler.constructUMULLS(o,f,l,c,a);break;case 10485760:t=this.armCompiler.constructUMLAL(o,f,l,c,a);break;case 11534336:t=this.armCompiler.constructUMLALS(o,f,l,c,a);break;case 12582912:t=this.armCompiler.constructSMULL(o,f,l,c,a);break;case 13631488:t=this.armCompiler.constructSMULLS(o,f,l,c,a);break;case 14680064:t=this.armCompiler.constructSMLAL(o,f,l,c,a);break;case 15728640:t=this.armCompiler.constructSMLALS(o,f,l,c,a);break}t.writesPC=o==15}else{var _=r&1048576,o=(r&61440)>>12,dr=(r&3840)>>4,Pr=c=r&15,ar=r&32,p=r&64,L=r&2097152,i=r&4194304,C;if(i){var m=Pr|dr;C=this.armCompiler.constructAddressingMode23Immediate(r,m,a)}else C=this.armCompiler.constructAddressingMode23Register(r,c,a);C.writesPC=!!L&&f==15,(r&144)==144&&(_?ar?p?t=this.armCompiler.constructLDRSH(o,C,a):t=this.armCompiler.constructLDRH(o,C,a):p&&(t=this.armCompiler.constructLDRSB(o,C,a)):!p&&ar&&(t=this.armCompiler.constructSTRH(o,C,a))),t.writesPC=o==15||C.writesPC}break;case 67108864:case 100663296:var o=(r&61440)>>12,_=r&1048576,cr=r&4194304,i=r&33554432;if((r&4293918960)==-403701520){var m=r&15;throw new N("Program exited ("+m+")")}var C=function(){throw new N("Unimplemented memory access: 0x"+r.toString(16))};if(~r&16777216&&(r&=4292870143),i){var c=r&15,U=r&96,ur=(r&3968)>>7;U||ur?(g=this.barrelShiftImmediate(U,ur,c),C=this.armCompiler.constructAddressingMode2RegisterShifted(r,g,a)):C=this.armCompiler.constructAddressingMode23Register(r,c,a)}else{var O=r&4095;C=this.armCompiler.constructAddressingMode23Immediate(r,O,a)}_?cr?t=this.armCompiler.constructLDRB(o,C,a):t=this.armCompiler.constructLDR(o,C,a):cr?t=this.armCompiler.constructSTRB(o,C,a):t=this.armCompiler.constructSTR(o,C,a),t.writesPC=_&&(o==15||C.writesPC);break;case 134217728:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,l=r&65535,f=(r&983040)>>16,C,m=0,O=0,Z=!1;if(J){j&&(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),O+=4)}else{j||(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),m-=4,O-=4)}L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?(B?t=this.armCompiler.constructLDMS(l,C,a):t=this.armCompiler.constructLDM(l,C,a),t.writesPC=!!(l&32768)):(B?t=this.armCompiler.constructSTMS(l,C,a):t=this.armCompiler.constructSTM(l,C,a),t.writesPC=!1);break;case 167772160:var m=r&16777215;m&8388608&&(m|=4278190080),m<<=2;var br=r&16777216;br?t=this.armCompiler.constructBL(m,a):t=this.armCompiler.constructB(m,a),t.writesPC=!0,t.fixedJump=!0;break;case 201326592:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,f=(r&983040)>>16,W=(r&61440)>>12,Or=(r&3840)>>8,m=r&255,yr=r>>28&15,a=this.conds[yr];if((r&264179456)==221055488)t=this.armCompiler.constructVPUSH(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==221055744)t=this.armCompiler.constructVPUSH(a,((B?16:0)|W)*2,m,!1);else if((r&264179456)==213715456)t=this.armCompiler.constructVPOP(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==213715712)t=this.armCompiler.constructVPOP(a,((B?16:0)|W)*2,m,!1);else if((r&253759232)==218106368){m*=4,J||(m=-m);var Z=!1,K=W<<1|(B?1:0),C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!0):t=this.armCompiler.constructVSTR(a,K,C,!0)}else if((r&253759232)==218106624){m*=4,J||(m=-m);var Z=!1,K=((B?16:0)|W)*2,C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!1):t=this.armCompiler.constructVSTR(a,K,C,!1)}break;case 234881024:if((r&251658240)==251658240){var m=r&16777215;t=this.armCompiler.constructSWI(m,a),t.writesPC=!1}else if((r&263720528)==246942272){let k=r>>28&15,d=r>>22&1,x=r>>16&7,M=r>>12&15,P=r>>8&1,y=r>>7&1,b=r>>5&1,S=r&15,w=x&4,V=P!=0,G=w?x&1:0,$=y!=0,rr=!1,Sr=P?(d?16:0)|M:M<<1|(d?1:0),wr=P?(b?16:0)|S:S<<1|(b?1:0);t=this.armCompiler.constructVCVT(a,Sr,wr,w,V,G,$,rr),t.writesPC=!1}else if((r&264179408)==246876864){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>5&1,y=r&15,b=M!=0,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(P?16:0)|y:y<<1|(P?1:0);t=this.armCompiler.constructVCVTF(a,S,w,b),t.writesPC=!1}else if((r&262147600)==236980736){let k=r>>28&15,d=r>>22&1,x=r>>7&1,M=r>>5&1,P=(r&15728640)>>20,y=(r&983040)>>16,b=(r&61440)>>12,S=(r&224)>>5,w=r&15,V=r>>8&1,G=V?(d?16:0)|b:b<<1|(d?1:0),$=V?(M?16:0)|w:w<<1|(M?1:0),rr=V?(x?16:0)|y:y<<1|(x?1:0);var a=this.conds[k];t=this.armCompiler.constructVFP3Register(a,P,rr,G,V,S,$),t.writesPC=!1}else if((r&263195728)==243271680){let k=r>>28&15,d=r>>22&1,x=r>>16&15,M=r>>12&15,P=r>>8&3,y=r>>7&1,b=r>>5&1,S=r&15,w=P==3?(d?16:0)|M:M<<1|(d?1:0),V=P==3?(b?16:0)|S:S<<1|(b?1:0),G=P==3?(y?16:0)|x:x<<1|(y?1:0);t=this.armCompiler.constructVFP3Register(a,8,G,w,P==3,0,V),t.writesPC=!1}else if((r&264179280)==246680128){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP(a,S,x,M,P,w,b),t.writesPC=!1}else if((r&264179455)==246745664){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP0(a,S,x,M,P,w,b),t.writesPC=!1}else if(r==4008835600)t=this.armCompiler.constructNOP();else if((r&266342160)==234883600){let k=r>>28&15,d=r>>20&1,x=r>>16&15,M=r>>12&15,P=r>>7&1;var a=this.conds[k];t=this.armCompiler.constructVMOV(a,d,x<<1|(P?1:0),M)}else r==3992980240?t=this.armCompiler.constructVMOV(a,!1,0,0):r==3995081488&&(t=this.armCompiler.constructVMOV(a,!1,1,1));break;default:throw new N("Bad opcode: 0x"+r.toString(16))}return t.execMode=0,t.fixedJump=t.fixedJump||!1,t};A.prototype.compileThumb=function(r){var t=this.badOp(r&65535),i=this,s=this.gprs;if((r&64512)==16384){var e=(r&56)>>3,a=r&7;switch(r&960){case 0:t=this.thumbCompiler.constructAND(a,e);break;case 64:t=this.thumbCompiler.constructEOR(a,e);break;case 128:t=this.thumbCompiler.constructLSL2(a,e);break;case 192:t=this.thumbCompiler.constructLSR2(a,e);break;case 256:t=this.thumbCompiler.constructASR2(a,e);break;case 320:t=this.thumbCompiler.constructADC(a,e);break;case 384:t=this.thumbCompiler.constructSBC(a,e);break;case 448:t=this.thumbCompiler.constructROR(a,e);break;case 512:t=this.thumbCompiler.constructTST(a,e);break;case 576:t=this.thumbCompiler.constructNEG(a,e);break;case 640:t=this.thumbCompiler.constructCMP2(a,e);break;case 704:t=this.thumbCompiler.constructCMN(a,e);break;case 768:t=this.thumbCompiler.constructORR(a,e);break;case 832:t=this.thumbCompiler.constructMUL(a,e);break;case 896:t=this.thumbCompiler.constructBIC(a,e);break;case 960:t=this.thumbCompiler.constructMVN(a,e);break}t.writesPC=!1}else if((r&64512)==17408){var e=(r&120)>>3,c=r&7,u=r&128,a=c|u>>4;switch(r&768){case 0:t=this.thumbCompiler.constructADD4(a,e),t.writesPC=a==15;break;case 256:t=this.thumbCompiler.constructCMP3(a,e),t.writesPC=!1;break;case 512:t=this.thumbCompiler.constructMOV3(a,e),t.writesPC=a==15;break;case 768:t=this.thumbCompiler.constructBX(a,e),t.writesPC=!0,t.fixedJump=!1;break}}else if((r&63488)==6144){var e=(r&448)>>6,c=(r&56)>>3,a=r&7;switch(r&1536){case 0:t=this.thumbCompiler.constructADD3(a,c,e);break;case 512:t=this.thumbCompiler.constructSUB3(a,c,e);break;case 1024:var p=(r&448)>>6;p?t=this.thumbCompiler.constructADD1(a,c,p):t=this.thumbCompiler.constructMOV2(a,c,e);break;case 1536:var p=(r&448)>>6;t=this.thumbCompiler.constructSUB1(a,c,p);break}t.writesPC=!1}else if(r&57344)if((r&57344)==8192){var p=r&255,c=(r&1792)>>8;switch(r&6144){case 0:t=this.thumbCompiler.constructMOV1(c,p);break;case 2048:t=this.thumbCompiler.constructCMP1(c,p);break;case 4096:t=this.thumbCompiler.constructADD2(c,p);break;case 6144:t=this.thumbCompiler.constructSUB2(c,p);break}t.writesPC=!1}else if((r&63488)==18432){var a=(r&1792)>>8,p=(r&255)<<2;t=this.thumbCompiler.constructLDR3(a,p),t.writesPC=!1}else if((r&61440)==20480){var a=r&7,c=(r&56)>>3,e=(r&448)>>6,F=r&3584;switch(F){case 0:t=this.thumbCompiler.constructSTR2(a,c,e);break;case 512:t=this.thumbCompiler.constructSTRH2(a,c,e);break;case 1024:t=this.thumbCompiler.constructSTRB2(a,c,e);break;case 1536:t=this.thumbCompiler.constructLDRSB(a,c,e);break;case 2048:t=this.thumbCompiler.constructLDR2(a,c,e);break;case 2560:t=this.thumbCompiler.constructLDRH2(a,c,e);break;case 3072:t=this.thumbCompiler.constructLDRB2(a,c,e);break;case 3584:t=this.thumbCompiler.constructLDRSH(a,c,e);break}t.writesPC=!1}else if((r&57344)==24576){var a=r&7,c=(r&56)>>3,p=(r&1984)>>4,R=r&4096;R&&(p>>=2);var m=r&2048;m?R?t=this.thumbCompiler.constructLDRB1(a,c,p):t=this.thumbCompiler.constructLDR1(a,c,p):R?t=this.thumbCompiler.constructSTRB1(a,c,p):t=this.thumbCompiler.constructSTR1(a,c,p),t.writesPC=!1}else if((r&62976)==46080){var v=!!(r&256),o=r&255;r&2048?(t=this.thumbCompiler.constructPOP(o,v),t.writesPC=v,t.fixedJump=!1):(t=this.thumbCompiler.constructPUSH(o,v),t.writesPC=!1)}else if(r&32768)switch(r&28672){case 0:var a=r&7,c=(r&56)>>3,p=(r&1984)>>5;r&2048?t=this.thumbCompiler.constructLDRH1(a,c,p):t=this.thumbCompiler.constructSTRH1(a,c,p),t.writesPC=!1;break;case 4096:var a=(r&1792)>>8,p=(r&255)<<2,m=r&2048;m?t=this.thumbCompiler.constructLDR4(a,p):t=this.thumbCompiler.constructSTR3(a,p),t.writesPC=!1;break;case 8192:var a=(r&1792)>>8,p=(r&255)<<2;r&2048?t=this.thumbCompiler.constructADD6(a,p):t=this.thumbCompiler.constructADD5(a,p),t.writesPC=!1;break;case 12288:if(!(r&3840)){var R=r&128,p=(r&127)<<2;R&&(p=-p),t=this.thumbCompiler.constructADD7(p),t.writesPC=!1}break;case 16384:var c=(r&1792)>>8,o=r&255;r&2048?t=this.thumbCompiler.constructLDMIA(c,o):t=this.thumbCompiler.constructSTMIA(c,o),t.writesPC=!1;break;case 20480:var f=(r&3840)>>8,p=r&255;if(f==15)t=this.thumbCompiler.constructSWI(p),t.writesPC=!1;else{r&128&&(p|=4294967040),p<<=1;var U=this.conds[f];t=this.thumbCompiler.constructB1(p,U),t.writesPC=!0,t.fixedJump=!0}break;case 24576:case 28672:var p=r&2047,g=r&6144;switch(g){case 0:p&1024&&(p|=4294965248),p<<=1,t=this.thumbCompiler.constructB2(p),t.writesPC=!0,t.fixedJump=!0;break;case 2048:break;case 4096:p&1024&&(p|=4294966272),p<<=12,t=this.thumbCompiler.constructBL1(p),t.writesPC=!1;break;case 6144:t=this.thumbCompiler.constructBL2(p),t.writesPC=!0,t.fixedJump=!1;break}break;default:throw new N("Undefined instruction: 0x"+r.toString(16))}else throw new N("Bad opcode: 0x"+r.toString(16));else{var a=r&7,e=(r&56)>>3,p=(r&1984)>>6;switch(r&6144){case 0:t=this.thumbCompiler.constructLSL1(a,e,p);break;case 2048:t=this.thumbCompiler.constructLSR1(a,e,p);break;case 4096:t=this.thumbCompiler.constructASR1(a,e,p);break;case 6144:break}t.writesPC=!1}return t.execMode=1,t.fixedJump=t.fixedJump||!1,t};var Y=class{constructor(){this.f64arr=new Float64Array(1);this.f32arr=new Float32Array(this.f64arr.buffer);this.i32arr=new Int32Array(this.f64arr.buffer);this.BASE_OFFSET=24;this.OFFSET_MASK=16777215;this.core=new A,this.core.irq=this,this.core.mmu=this,this.resetMemory()}resetMemory(){this.memory=[];for(var t=0;t<256;t++)this.memory[t]={PAGE_MASK:2047,ICACHE_PAGE_BITS:10,icache:new Array}}advanceInsn(){var t=this.core.cycles;return this.core.step(),t-=this.core.cycles,t>0?t:1}getPC(){return this.core.gprs[15]-this.core.instructionWidth}getSP(){return this.core.gprs[13]}isStable(){return!0}connectMemoryBus(t){this.bus=t}reset(){this.resetMemory();let t=this.load32(0);this.core.resetCPU(t)}saveState(){return this.core.freeze()}loadState(t){this.core.defrost(t)}load8(t){return this.bus.read(t)<<24>>24}loadU8(t){return this.bus.read(t)&255}load16(t){return this.loadU16(t)<<16>>16}loadU16(t){return this.bus.read(t)|this.bus.read(t+1)<<8}load32(t){var i=this.bus.read32(t);return i}store8(t,i){this.bus.write(t,i&255)}store16(t,i){this.bus.write(t,i&255),this.bus.write(t+1,i>>8&255)}store32(t,i){this.bus.write32(t,i)}wait(t){++this.core.cycles}wait32(t){++this.core.cycles}waitSeq32(t){++this.core.cycles}waitMul(t){(t&4294967040)==4294967040||!(t&4294967040)?this.core.cycles+=1:(t&4294901760)==4294901760||!(t&4294901760)?this.core.cycles+=2:(t&4278190080)==4278190080||!(t&4278190080)?this.core.cycles+=3:this.core.cycles+=4}waitMulti32(t,i){this.core.cycles+=2}waitPrefetch(t){++this.core.cycles}waitPrefetch32(t){++this.core.cycles}addressToPage(t,i){return i>>this.memory[t].ICACHE_PAGE_BITS}accessPage(t,i){var s=this.memory[t],e=s.icache[i];return(!e||e.invalid)&&(e={thumb:new Array(1<>16)}clear(){}updateTimers(){}testIRQ(){}isThumb(){return this.core.instructionWidth==2}getDebugTree(){return{state:this.saveState(),mmu:this.core.mmu}}};var kr=fr([[T.A,0,1],[T.B,0,2],[T.GP_A,0,1],[T.GP_B,0,2],[T.SELECT,0,4],[T.START,0,8],[T.RIGHT,0,16],[T.LEFT,0,32],[T.UP,0,64],[T.DOWN,0,128]]),D=0,I=1048576,Mr=0,X=67108864,z=256,Er=1e6,xr=4e6,Ar=3991793133,q=class extends Rr{constructor(){super();this.cpuFrequency=xr;this.canvasWidth=160;this.numTotalScanlines=256;this.numVisibleScanlines=128;this.cpuCyclesPerLine=Math.floor(xr/(256*60));this.defaultROMSize=I-Mr;this.sampleRate=1;this.cpu=new Y;this.ram=new Uint8Array(I);this.ram16=new Uint16Array(this.ram.buffer);this.ram32=new Uint32Array(this.ram.buffer);this.rombase=Mr;this.brightness=255;this.ioregs=new Uint8Array(z);this.ioregs32=new Uint32Array(this.ioregs.buffer);this.read=er([[D,D+I-1,I-1,i=>this.ram[i]],[X,X+z-1,z-1,(i,s)=>this.readIO(i)]],{defaultval:Ar&255});this.write=er([[D,D+I-1,I-1,(i,s)=>{this.ram[i]=s}],[X,X+z-1,z-1,(i,s)=>{this.writeIO(i,s)}]]);this.read32=i=>i>=D&&i>2]:this.read(i)|this.read(i+1)<<8|this.read(i+2)<<16|this.read(i+3)<<24;this.write32=(i,s)=>{i>=D&&i>2]=s:(this.write(i,s&255),this.write(i+1,s>>8&255),this.write(i+2,s>>16&255),this.write(i+3,s>>24&255))};this.connectCPUMemoryBus(this),this.handler=hr(this.inputs,kr)}connectVideo(i){super.connectVideo(i),this.pixels32=i,this.pixels8=new Uint8Array(i.buffer)}connectSerialIO(i){this.serial=i}loadROM(i){super.loadROM(i)}reset(){this.ram.fill(0),this.rom&&this.ram.set(this.rom,this.rombase),super.reset(),this.serialOut=[],this.serialIn=[]}readAddress(i){return i>=D&&i>8;case 36:return this.getRasterX();case 37:return this.getRasterX()>>8;case 64:return(this.serial.byteAvailable()?128:0)|(this.serial.clearToSend()?64:0);case 68:let s=this.serialIn.shift();return s!=null?(this.serialOut.push(s),s.value):0;default:return 0}}writeIO(i,s){this.ioregs[i]=s,i===72&&this.serialOut.length>1&1048575,a=this.brightness<<24,c=0;c>5&31)<<11|(u>>10&31)<<19}}getDebugCategories(){return["CPU","Stack","FPU"]}getDebugInfo(i,s){switch(i){case"Stack":for(var u="",p=s.c,e=p.gprs[13],a=p.gprs[11],c=0;c<16&&(u+=E(e,8)+" "+E(this.ram32[e-D>>2],8),e==a&&(u+=" FP"),u+=` +import{F as gr,r as Rr}from"./chunk-MZ43WA3W.js";import{d as mr}from"./chunk-UACHXWHT.js";import{$ as fr,E as or,K as Fr,T as N,Y as T,Z as hr,a as Q,ca as er,g as E}from"./chunk-ZTLOJICZ.js";import{a as pr,b as nr}from"./chunk-VSC4MAII.js";var Cr=4026531840,lr=223,Tr=32;function n(r){this.cpu=r,this.addressingMode23Immediate=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]+i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode23Register=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-e[i]};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return c};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode2RegisterShifted=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]-=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]+=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]-r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]-r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]+r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]+r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null]}n.prototype.constructAddressingMode1ASR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a>>e,i.shifterCarryOut=a&1<>31?(i.shifterOperand=4294967295,i.shifterCarryOut=2147483648):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1Immediate=function(r){var t=this.cpu;return function(){t.shifterOperand=r,t.shifterCarryOut=t.cpsrC}};n.prototype.constructAddressingMode1ImmediateRotate=function(r,t){var i=this.cpu;return function(){i.shifterOperand=r>>>t|r<<32-t,i.shifterCarryOut=i.shifterOperand>>31}};n.prototype.constructAddressingMode1LSL=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a<>>e,i.shifterCarryOut=a&1<>31):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1ROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4);var c=e&31;e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):c?(i.shifterOperand=s[t]>>>c|s[t]<<32-c,i.shifterCarryOut=a&1<>31)}};n.prototype.constructAddressingMode23Immediate=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Immediate[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode23Register=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Register[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode2RegisterShifted=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode2RegisterShifted[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode4=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[t]+r;return e}};n.prototype.constructAddressingMode4Writeback=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(c){var u=a[i]+r;return c&&s&&e.mmu.store32(a[i]+r-4,a[i]),a[i]+=t,u}};n.prototype.constructNOP=function(){return this.writesPC=!1,function(){}};n.prototype.constructADC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0);a[r]=(a[t]>>>0)+c}}};n.prototype.constructADCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0),u=(a[t]>>>0)+c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=u>4294967295,e.cpsrV=a[t]>>31==c>>31&&a[t]>>31!=u>>31&&c>>31!=u>>31),a[r]=u}}};n.prototype.constructADD=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=(a[t]>>>0)+(e.shifterOperand>>>0))}};n.prototype.constructADDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructAND=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand)}};n.prototype.constructANDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructB=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[15]+=r}};n.prototype.constructBIC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand)}};n.prototype.constructBICS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructBL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[14]=s[15]-4,s[15]+=r}};n.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),i.switchExecMode(s[r]&1),s[15]=s[r]&4294967294}};n.prototype.constructCMN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31}}};n.prototype.constructCMP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31}}};n.prototype.constructEOR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand)}};n.prototype.constructEORS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructLDM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(e[F]=a.load32(c&4294967292),c+=4,++u);a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p=s.mode;s.switchMode(31);var F,R;for(F=r,R=0;F;F>>=1,++R)F&1&&(e[R]=a.load32(c&4294967292),c+=4,++u);s.switchMode(p),a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load32(a),s.mmu.wait32(a),++s.cycles}}};n.prototype.constructLDRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructMLA=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e()))if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t]}};n.prototype.constructMLAS=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t];a.cpsrN=c[r]>>31,a.cpsrZ=!(c[r]&4294967295)}}};n.prototype.constructMOV=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand)}};n.prototype.constructMOVS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructMRS=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch32(e[15]),!(i&&!i())&&(t?e[r]=s.spsr:e[r]=s.packCPSR())}};n.prototype.constructMSR=function(r,t,i,s,e){var a=this.cpu,c=a.gprs,u=i&65536,p=i&524288;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){var F;i&33554432?F=s:F=c[r];var R=(u?255:0)|(p?4278190080:0);t?(R&=Cr|lr|Tr,a.spsr=a.spsr&~R|F&R):(R&Cr&&(a.cpsrN=F>>31,a.cpsrZ=F&1073741824,a.cpsrC=F&536870912,a.cpsrV=F&268435456),a.mode!=16&&R&lr&&(a.switchMode(F&15|16),a.cpsrI=F&128,a.cpsrF=F&64))}}};n.prototype.constructMUL=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s()))if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t]}};n.prototype.constructMULS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t];e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295)}}};n.prototype.constructMVN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand)}};n.prototype.constructMVNS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructORR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand)}};n.prototype.constructORRS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructRSB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand-a[t])}};n.prototype.constructRSBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=e.shifterOperand-a[t];r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterOperand>>>0>=a[t]>>>0,e.cpsrV=e.shifterOperand>>31!=a[t]>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructRSC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1);a[r]=(e.shifterOperand>>>0)-c}}};n.prototype.constructRSCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1),u=(e.shifterOperand>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=e.shifterOperand>>>0>=u>>>0,e.cpsrV=e.shifterOperand>>31!=c>>31&&e.shifterOperand>>31!=u>>31),a[r]=u}}};n.prototype.constructSBC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1);a[r]=(a[t]>>>0)-c}}};n.prototype.constructSBCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1),u=(a[t]>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=a[t]>>>0>=u>>>0,e.cpsrV=a[t]>>31!=c>>31&&a[t]>>31!=u>>31),a[r]=u}}};n.prototype.constructSMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c)}}};n.prototype.constructSMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c)}}};n.prototype.constructSMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSTM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=t(!0),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(a.store32(c,e[F]),c+=4,++u);a.waitMulti32(c,u)}};n.prototype.constructSTMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=s.mode,u=t(!0),p=0,F,R;for(s.switchMode(31),F=r,R=0;F;F>>=1,++R)F&1&&(a.store32(u,e[R]),u+=4,++p);s.switchMode(c),a.waitMulti32(u,p)}};n.prototype.constructSTR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store32(a,e[r]),s.mmu.wait32(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store8(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store16(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSUB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]-e.shifterOperand)}};n.prototype.constructSUBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31),a[r]=c}}};n.prototype.constructSWI=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.irq.swi32(r),i.mmu.waitPrefetch32(s[15])}};n.prototype.constructSWP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait32(a[t]),e.mmu.wait32(a[t]);var c=e.mmu.load32(a[t]);e.mmu.store32(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructSWPB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait(a[t]),e.mmu.wait(a[t]);var c=e.mmu.loadU8(a[t]);e.mmu.store8(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructTEQ=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]^e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructTST=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]&e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructUMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c}}};n.prototype.constructUMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructUMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0}}};n.prototype.constructUMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructVFP3Register=function(r,t,i,s,e,a,c){var u=this.cpu,p=e?u.dfprs:u.sfprs;return function(){if(u.mmu.waitPrefetch32(u.gprs[15]),!(r&&!r())){switch(t){case 2:if(a===0){p[s]=p[i]*p[c];return}break;case 3:switch(a){case 0:p[s]=p[i]+p[c];return;case 2:p[s]=p[i]-p[c];return}break;case 8:if(a===0){p[s]=p[i]/p[c];return}break}console.log("Unsupported instruction: "+E(t)+" "+E(a))}}};n.prototype.constructVCVT=function(r,t,i,s,e,a,c,u){var p=this.cpu,F=p.sfprs,R=p.dfprs,m=p.ifprs;return function(){if(p.mmu.waitPrefetch32(p.gprs[15]),!(r&&!r())){var v,o;s&&e?v=R[i]:s?v=F[i]:v=m[i],s?o=c?Math.floor(v):Math.round(v):o=v,s?m[t]=o:e?R[t]=o:F[t]=o}}};n.prototype.constructVCVTF=function(r,t,i,s){var e=this.cpu,a=e.sfprs,c=e.dfprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),!(r&&!r())){var u=s?c[i]:a[i];s?a[t]=u:c[t]=u}}};n.prototype.constructVLDR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?a[t]=e.mmu.load32(c):(a[t]=e.mmu.load32(c),a[t+1]=e.mmu.load32(c+4)),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVSTR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?e.mmu.store32(c,a[t]):(e.mmu.store32(c,a[t]),e.mmu.store32(c+4,a[t+1])),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVPUSH=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=e.gprs[13]-i*4;e.gprs[13]=c;for(let u=0;u>>0)+(i.cpsrC?1:0),a=s[r],c=(a>>>0)+e,u=a>>31,p=c>>31,F=e>>31;i.cpsrN=p,i.cpsrZ=!(c&4294967295),i.cpsrC=c>4294967295,i.cpsrV=u==F&&u!=p&&F!=p,s[r]=c}};h.prototype.constructADD1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!(e[t]>>31)&&(e[t]>>31^a)>>31&&a>>31,e[r]=a}};h.prototype.constructADD2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=!(s[r]>>31)&&(s[r]^e)>>31&&(t^e)>>31,s[r]=e}};h.prototype.constructADD3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+(e[i]>>>0);s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!((e[t]^e[i])>>31)&&(e[t]^a)>>31&&(e[i]^a)>>31,e[r]=a}};h.prototype.constructADD4=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]+=s[t]}};h.prototype.constructADD5=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=(s[15]&4294967292)+t}};h.prototype.constructADD6=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[13]+t}};h.prototype.constructADD7=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[13]+=r}};h.prototype.constructAND=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructASR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,s.cpsrC?e[r]=4294967295:e[r]=0):(s.cpsrC=e[t]&1<>i),s.cpsrN=e[r]>>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructASR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>=e):(i.cpsrC=s[r]>>31,i.cpsrC?s[r]=4294967295:s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructB1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),t()&&(s[15]+=r)}};h.prototype.constructB2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[15]+=r}};h.prototype.constructBIC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructBL1=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[14]=i[15]+r}};h.prototype.constructBL2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]);var s=i[15];i[15]=i[14]+(r<<1),i[14]=s-1}};h.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),i.switchExecMode(s[t]&1);var e=0;t==15&&(e=s[t]&2),s[15]=s[t]&4294967294-e}};h.prototype.constructCMN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+(s[t]>>>0);i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=s[r]>>31==s[t]>>31&&s[r]>>31!=e>>31&&s[t]>>31!=e>>31}};h.prototype.constructCMP1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31}};h.prototype.constructCMP2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=s[t],c=e-a,u=c>>31,p=e>>31;i.cpsrN=u,i.cpsrZ=!(c&4294967295),i.cpsrC=e>>>0>=a>>>0,i.cpsrV=p!=a>>31&&p!=u}};h.prototype.constructCMP3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=s[t]>>>0,i.cpsrV=(s[r]^s[t])>>31&&(s[r]^e)>>31}};h.prototype.constructEOR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]^s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLDMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)t&c&&(s[u]=i.mmu.load32(e),e+=4,++a);i.mmu.waitMulti32(e,a),1<>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSL2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<<32-e,s[r]<<=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]&1,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLSR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,e[r]=0):(s.cpsrC=e[t]&1<>>i),s.cpsrN=0,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>>=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]>>31,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMOV1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=t,i.cpsrN=t>>31,i.cpsrZ=!(t&4294967295)}};h.prototype.constructMOV2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=0,s.cpsrV=0,e[r]=a}};h.prototype.constructMOV3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[t]}};h.prototype.constructMUL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(i.mmu.waitPrefetch(s[15]),i.mmu.waitMul(s[t]),s[t]&4294901760&&s[r]&4294901760){var e=(s[r]&4294901760)*s[t]&4294967295,a=(s[r]&65535)*s[t]&4294967295;s[r]=e+a&4294967295}else s[r]*=s[t];i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMVN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructNEG=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=0>=e>>>0,i.cpsrV=s[t]>>31&&e>>31,s[r]=e}};h.prototype.constructORR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]|s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructPOP=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),++i.cycles;var e=s[13],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)r&c&&(i.mmu.waitSeq32(e),s[u]=i.mmu.load32(e),e+=4,++a);t&&(s[15]=i.mmu.load32(e)&4294967294,e+=4,++a),i.mmu.waitMulti32(e,a),s[13]=e}};h.prototype.constructPUSH=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[13]-4,a=0;i.mmu.waitPrefetch(s[15]),t&&(i.mmu.store32(e,s[14]),e-=4,++a);var c,u;for(c=128,u=7;c;c>>=1,--u)if(r&c){i.mmu.store32(e,s[u]),e-=4,++a;break}for(c>>=1,--u;c;c>>=1,--u)r&c&&(i.mmu.store32(e,s[u]),e-=4,++a);i.mmu.waitMulti32(e,a),s[13]=e+4}};h.prototype.constructROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;if(e){var a=e&31;a>0?(i.cpsrC=s[r]&1<>>a|s[r]<<32-a):i.cpsrC=s[r]>>31}i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructSBC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[t]>>>0)+(i.cpsrC?0:1),a=(s[r]>>>0)-e;i.cpsrN=a>>31,i.cpsrZ=!(a&4294967295),i.cpsrC=s[r]>>>0>=a>>>0,i.cpsrV=(s[r]^e)>>31&&(s[r]^a)>>31,s[r]=a}};h.prototype.constructSTMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.wait(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)if(t&c){i.mmu.store32(e,s[u]),e+=4,++a;break}for(c<<=1,++u;u<8;c<<=1,++u)t&c&&(i.mmu.store32(e,s[u]),e+=4,++a);i.mmu.waitMulti32(e,a),s[r]=e}};h.prototype.constructSTR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store32(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait32(a)}};h.prototype.constructSTR2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store32(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait32(e[t]+e[i])}};h.prototype.constructSTR3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.store32(s[13]+t,s[r]),i.mmu.wait(s[15]),i.mmu.wait32(s[13]+t)}};h.prototype.constructSTRB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store8(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRB2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store8(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSTRH1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store16(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRH2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store16(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSUB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=i,s.cpsrV=e[t]>>31&&(e[t]^a)>>31,e[r]=a}};h.prototype.constructSUB2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31,s[r]=e}};h.prototype.constructSUB3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-e[i];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=e[i]>>>0,s.cpsrV=e[t]>>31!=e[i]>>31&&e[t]>>31!=a>>31,e[r]=a}};h.prototype.constructSWI=function(r){var t=this.cpu,i=t.gprs;return function(){t.irq.swi(r),t.mmu.waitPrefetch(i[15])}};h.prototype.constructTST=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]&s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295)}};function A(){this.SP=13,this.LR=14,this.PC=15,this.MODE_ARM=0,this.MODE_THUMB=1,this.MODE_USER=16,this.MODE_FIQ=17,this.MODE_IRQ=18,this.MODE_SUPERVISOR=19,this.MODE_ABORT=23,this.MODE_UNDEFINED=27,this.MODE_SYSTEM=31,this.BANK_NONE=0,this.BANK_FIQ=1,this.BANK_IRQ=2,this.BANK_SUPERVISOR=3,this.BANK_ABORT=4,this.BANK_UNDEFINED=5,this.WORD_SIZE_ARM=4,this.WORD_SIZE_THUMB=2,this.BASE_RESET=0,this.BASE_UNDEF=4,this.BASE_SWI=8,this.BASE_PABT=12,this.BASE_DABT=16,this.BASE_IRQ=24,this.BASE_FIQ=28,this.armCompiler=new n(this),this.thumbCompiler=new h(this),this.generateConds(),this.gprs=new Int32Array(16),this.dfprs=new Float64Array(16),this.sfprs=new Float32Array(this.dfprs.buffer),this.ifprs=new Int32Array(this.dfprs.buffer)}A.prototype.resetCPU=function(r){for(var t=0;t<15;++t)this.gprs[t]=0;this.gprs[15]=r+4,this.dfprs.set(0),this.loadInstruction=this.loadInstructionArm,this.execMode=0,this.instructionWidth=4,this.mode=31,this.cpsrI=!1,this.cpsrF=!1,this.cpsrV=!1,this.cpsrC=!1,this.cpsrZ=!1,this.cpsrN=!1,this.bankedRegisters=[new Int32Array(7),new Int32Array(7),new Int32Array(2),new Int32Array(2),new Int32Array(2),new Int32Array(2)],this.spsr=0,this.bankedSPSRs=new Int32Array(6),this.cycles=0,this.shifterOperand=0,this.shifterCarryOut=0,this.page=null,this.pageId=0,this.pageRegion=-1,this.instruction=null,this.irq.clear();var i=this.gprs,s=this.mmu;this.step=function(){var e=this.instruction||(this.instruction=this.loadInstruction(i[15]-this.instructionWidth));if(i[15]+=this.instructionWidth,this.conditionPassed=!0,e(),!e.writesPC)this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next);else if(this.conditionPassed){var a=i[15]&=4294967294;this.execMode==0?(s.wait32(a),s.waitPrefetch32(a)):(s.wait(a),s.waitPrefetch(a)),i[15]+=this.instructionWidth,e.fixedJump?this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next):this.instruction=null}else this.instruction=null;this.irq.updateTimers()}};A.prototype.freeze=function(){return{PC:this.gprs[15]-this.instructionWidth,SP:this.gprs[13],gprs:[this.gprs[0],this.gprs[1],this.gprs[2],this.gprs[3],this.gprs[4],this.gprs[5],this.gprs[6],this.gprs[7],this.gprs[8],this.gprs[9],this.gprs[10],this.gprs[11],this.gprs[12],this.gprs[13],this.gprs[14],this.gprs[15]],sfprs:this.sfprs.slice(),dfprs:this.dfprs.slice(),ifprs:this.ifprs.slice(),mode:this.mode,cpsrI:this.cpsrI,cpsrF:this.cpsrF,cpsrV:this.cpsrV,cpsrC:this.cpsrC,cpsrZ:this.cpsrZ,cpsrN:this.cpsrN,bankedRegisters:[[this.bankedRegisters[0][0],this.bankedRegisters[0][1],this.bankedRegisters[0][2],this.bankedRegisters[0][3],this.bankedRegisters[0][4],this.bankedRegisters[0][5],this.bankedRegisters[0][6]],[this.bankedRegisters[1][0],this.bankedRegisters[1][1],this.bankedRegisters[1][2],this.bankedRegisters[1][3],this.bankedRegisters[1][4],this.bankedRegisters[1][5],this.bankedRegisters[1][6]],[this.bankedRegisters[2][0],this.bankedRegisters[2][1]],[this.bankedRegisters[3][0],this.bankedRegisters[3][1]],[this.bankedRegisters[4][0],this.bankedRegisters[4][1]],[this.bankedRegisters[5][0],this.bankedRegisters[5][1]]],spsr:this.spsr,bankedSPSRs:[this.bankedSPSRs[0],this.bankedSPSRs[1],this.bankedSPSRs[2],this.bankedSPSRs[3],this.bankedSPSRs[4],this.bankedSPSRs[5]],cycles:this.cycles,instructionWidth:this.instructionWidth}};A.prototype.defrost=function(r){this.instruction=null,this.page=null,this.pageId=0,this.pageRegion=-1,this.gprs[0]=r.gprs[0],this.gprs[1]=r.gprs[1],this.gprs[2]=r.gprs[2],this.gprs[3]=r.gprs[3],this.gprs[4]=r.gprs[4],this.gprs[5]=r.gprs[5],this.gprs[6]=r.gprs[6],this.gprs[7]=r.gprs[7],this.gprs[8]=r.gprs[8],this.gprs[9]=r.gprs[9],this.gprs[10]=r.gprs[10],this.gprs[11]=r.gprs[11],this.gprs[12]=r.gprs[12],this.gprs[13]=r.gprs[13],this.gprs[14]=r.gprs[14],this.gprs[15]=r.gprs[15],this.ifprs.set(r.ifprs),this.mode=r.mode,this.cpsrI=r.cpsrI,this.cpsrF=r.cpsrF,this.cpsrV=r.cpsrV,this.cpsrC=r.cpsrC,this.cpsrZ=r.cpsrZ,this.cpsrN=r.cpsrN,this.bankedRegisters[0][0]=r.bankedRegisters[0][0],this.bankedRegisters[0][1]=r.bankedRegisters[0][1],this.bankedRegisters[0][2]=r.bankedRegisters[0][2],this.bankedRegisters[0][3]=r.bankedRegisters[0][3],this.bankedRegisters[0][4]=r.bankedRegisters[0][4],this.bankedRegisters[0][5]=r.bankedRegisters[0][5],this.bankedRegisters[0][6]=r.bankedRegisters[0][6],this.bankedRegisters[1][0]=r.bankedRegisters[1][0],this.bankedRegisters[1][1]=r.bankedRegisters[1][1],this.bankedRegisters[1][2]=r.bankedRegisters[1][2],this.bankedRegisters[1][3]=r.bankedRegisters[1][3],this.bankedRegisters[1][4]=r.bankedRegisters[1][4],this.bankedRegisters[1][5]=r.bankedRegisters[1][5],this.bankedRegisters[1][6]=r.bankedRegisters[1][6],this.bankedRegisters[2][0]=r.bankedRegisters[2][0],this.bankedRegisters[2][1]=r.bankedRegisters[2][1],this.bankedRegisters[3][0]=r.bankedRegisters[3][0],this.bankedRegisters[3][1]=r.bankedRegisters[3][1],this.bankedRegisters[4][0]=r.bankedRegisters[4][0],this.bankedRegisters[4][1]=r.bankedRegisters[4][1],this.bankedRegisters[5][0]=r.bankedRegisters[5][0],this.bankedRegisters[5][1]=r.bankedRegisters[5][1],this.spsr=r.spsr,this.bankedSPSRs[0]=r.bankedSPSRs[0],this.bankedSPSRs[1]=r.bankedSPSRs[1],this.bankedSPSRs[2]=r.bankedSPSRs[2],this.bankedSPSRs[3]=r.bankedSPSRs[3],this.bankedSPSRs[4]=r.bankedSPSRs[4],this.bankedSPSRs[5]=r.bankedSPSRs[5],this.cycles=r.cycles,this.instructionWidth=r.instructionWidth,this.loadInstruction=r.instructionWidth==2?this.loadInstructionThumb:this.loadInstructionArm,this.execMode=r.instructionWidth==2?1:0};A.prototype.fetchPage=function(r){var t=this.mmu,i=r>>>t.BASE_OFFSET,s=t.addressToPage(i,r&t.OFFSET_MASK);if(i==this.pageRegion){if(s==this.pageId&&!this.page.invalid)return;this.pageId=s}else this.pageMask=t.memory[i].PAGE_MASK,this.pageRegion=i,this.pageId=s;this.page=t.accessPage(i,s)};A.prototype.loadInstructionArm=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>2;if(t=this.page.arm[i],t)return t;var s=this.mmu.load32(r)>>>0;return t=this.compileArm(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.arm[i]=t,t};A.prototype.loadInstructionThumb=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>1;if(t=this.page.thumb[i],t)return t;var s=this.mmu.load16(r);return t=this.compileThumb(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.thumb[i]=t,t};A.prototype.selectBank=function(r){switch(r){case 16:case 31:return 0;case 17:return 1;case 18:return 2;case 19:return 3;case 23:return 4;case 27:return 5;default:throw new N("Invalid user mode "+r+" passed to selectBank")}};A.prototype.switchExecMode=function(r){this.execMode!=r&&(this.execMode=r,r==0?(this.instructionWidth=4,this.loadInstruction=this.loadInstructionArm):(this.instructionWidth=2,this.loadInstruction=this.loadInstructionThumb))};A.prototype.switchMode=function(r){if(r!=this.mode){if(r!=16||r!=31){var t=this.selectBank(r),i=this.selectBank(this.mode);if(t!=i){if(r==17||this.mode==17){var s=i==1?1:0,e=t==1?1:0;this.bankedRegisters[s][2]=this.gprs[8],this.bankedRegisters[s][3]=this.gprs[9],this.bankedRegisters[s][4]=this.gprs[10],this.bankedRegisters[s][5]=this.gprs[11],this.bankedRegisters[s][6]=this.gprs[12],this.gprs[8]=this.bankedRegisters[e][2],this.gprs[9]=this.bankedRegisters[e][3],this.gprs[10]=this.bankedRegisters[e][4],this.gprs[11]=this.bankedRegisters[e][5],this.gprs[12]=this.bankedRegisters[e][6]}this.bankedRegisters[i][0]=this.gprs[13],this.bankedRegisters[i][1]=this.gprs[14],this.gprs[13]=this.bankedRegisters[t][0],this.gprs[14]=this.bankedRegisters[t][1],this.bankedSPSRs[i]=this.spsr,this.spsr=this.bankedSPSRs[t]}}this.mode=r}};A.prototype.packCPSR=function(){return this.mode|this.execMode<<5|this.cpsrF<<6|this.cpsrI<<7|this.cpsrN<<31|this.cpsrZ<<30|this.cpsrC<<29|this.cpsrV<<28};A.prototype.unpackCPSR=function(r){this.switchMode(r&31),this.switchExecMode(!!(r&32)),this.cpsrF=r&64,this.cpsrI=r&128,this.cpsrN=r&2147483648,this.cpsrZ=r&1073741824,this.cpsrC=r&536870912,this.cpsrV=r&268435456,this.irq.testIRQ()};A.prototype.hasSPSR=function(){return this.mode!=31&&this.mode!=16};A.prototype.raiseIRQ=function(){if(!this.cpsrI){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(18),this.spsr=r,this.gprs[14]=this.gprs[15]-t+4,this.gprs[15]=this.BASE_IRQ+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0}};A.prototype.raiseTrap=function(){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(19),this.spsr=r,this.gprs[14]=this.gprs[15]-t,this.gprs[15]=this.BASE_SWI+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0};A.prototype.badOp=function(r){var t=function(){throw new N("Illegal instruction: 0x"+r.toString(16))};return t.writesPC=!0,t.fixedJump=!1,t};A.prototype.generateConds=function(){var r=this;this.conds=[function(){return r.conditionPassed=r.cpsrZ},function(){return r.conditionPassed=!r.cpsrZ},function(){return r.conditionPassed=r.cpsrC},function(){return r.conditionPassed=!r.cpsrC},function(){return r.conditionPassed=r.cpsrN},function(){return r.conditionPassed=!r.cpsrN},function(){return r.conditionPassed=r.cpsrV},function(){return r.conditionPassed=!r.cpsrV},function(){return r.conditionPassed=r.cpsrC&&!r.cpsrZ},function(){return r.conditionPassed=!r.cpsrC||r.cpsrZ},function(){return r.conditionPassed=!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=!r.cpsrN!=!r.cpsrV},function(){return r.conditionPassed=!r.cpsrZ&&!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=r.cpsrZ||!r.cpsrN!=!r.cpsrV},null,null]};A.prototype.barrelShiftImmediate=function(r,t,i){var s=this,e=this.gprs,a=this.badOp;switch(r){case 0:t?a=function(){s.shifterOperand=e[i]<>>t,s.shifterCarryOut=e[i]&1<>t,s.shifterCarryOut=e[i]&1<>>t|e[i]<<32-t,s.shifterCarryOut=e[i]&1<>>1,s.shifterCarryOut=e[i]&1};break}return a};A.prototype.compileArm=function(r){var t=this.badOp(r),i=r&234881024,s=this,e=this.gprs,a=this.conds[(r&4026531840)>>>28];if((r&268435440)==19922704){var c=r&15;t=this.armCompiler.constructBX(c,a),t.writesPC=!0,t.fixedJump=!1}else if(!(r&201326592)&&(i==33554432||(r&144)!=144)){var u=r&31457280,p=r&1048576,F=!1;if((u&25165824)==16777216&&!p){var R=r&4194304;if((r&11595776)==2158592){var c=r&15,m=r&255,v=(r&3840)>>7;m=m>>>v|m<<32-v,t=this.armCompiler.constructMSR(c,R,r,m,a),t.writesPC=!1}else if((r&12517376)==983040){var o=(r&61440)>>12;t=this.armCompiler.constructMRS(o,R,a),t.writesPC=o==15}}else{var f=(r&983040)>>16,o=(r&61440)>>12,U=r&96,c=r&15,g=function(){throw new N("BUG: invalid barrel shifter")};if(r&33554432){var m=r&255,ir=(r&3840)>>7;ir?g=this.armCompiler.constructAddressingMode1ImmediateRotate(m,ir):g=this.armCompiler.constructAddressingMode1Immediate(m)}else if(r&16){var l=(r&3840)>>8;switch(F=!0,U){case 0:g=this.armCompiler.constructAddressingMode1LSL(l,c);break;case 32:g=this.armCompiler.constructAddressingMode1LSR(l,c);break;case 64:g=this.armCompiler.constructAddressingMode1ASR(l,c);break;case 96:g=this.armCompiler.constructAddressingMode1ROR(l,c);break}}else{var m=(r&3968)>>7;g=this.barrelShiftImmediate(U,m,c)}switch(u){case 0:p?t=this.armCompiler.constructANDS(o,f,g,a):t=this.armCompiler.constructAND(o,f,g,a);break;case 2097152:p?t=this.armCompiler.constructEORS(o,f,g,a):t=this.armCompiler.constructEOR(o,f,g,a);break;case 4194304:p?t=this.armCompiler.constructSUBS(o,f,g,a):t=this.armCompiler.constructSUB(o,f,g,a);break;case 6291456:p?t=this.armCompiler.constructRSBS(o,f,g,a):t=this.armCompiler.constructRSB(o,f,g,a);break;case 8388608:p?t=this.armCompiler.constructADDS(o,f,g,a):t=this.armCompiler.constructADD(o,f,g,a);break;case 10485760:p?t=this.armCompiler.constructADCS(o,f,g,a):t=this.armCompiler.constructADC(o,f,g,a);break;case 12582912:p?t=this.armCompiler.constructSBCS(o,f,g,a):t=this.armCompiler.constructSBC(o,f,g,a);break;case 14680064:p?t=this.armCompiler.constructRSCS(o,f,g,a):t=this.armCompiler.constructRSC(o,f,g,a);break;case 16777216:t=this.armCompiler.constructTST(o,f,g,a);break;case 18874368:t=this.armCompiler.constructTEQ(o,f,g,a);break;case 20971520:t=this.armCompiler.constructCMP(o,f,g,a);break;case 23068672:t=this.armCompiler.constructCMN(o,f,g,a);break;case 25165824:p?t=this.armCompiler.constructORRS(o,f,g,a):t=this.armCompiler.constructORR(o,f,g,a);break;case 27262976:p?t=this.armCompiler.constructMOVS(o,f,g,a):t=this.armCompiler.constructMOV(o,f,g,a);break;case 29360128:p?t=this.armCompiler.constructBICS(o,f,g,a):t=this.armCompiler.constructBIC(o,f,g,a);break;case 31457280:p?t=this.armCompiler.constructMVNS(o,f,g,a):t=this.armCompiler.constructMVN(o,f,g,a);break}t.writesPC=o==15}}else if((r&263196656)==16777360){var c=r&15,o=r>>12&15,f=r>>16&15;r&4194304?t=this.armCompiler.constructSWPB(o,f,c,a):t=this.armCompiler.constructSWP(o,f,c,a),t.writesPC=o==15}else switch(i){case 0:if((r&16777456)==144){var o=(r&983040)>>16,f=(r&61440)>>12,l=(r&3840)>>8,c=r&15;switch(r&15728640){case 0:t=this.armCompiler.constructMUL(o,l,c,a);break;case 1048576:t=this.armCompiler.constructMULS(o,l,c,a);break;case 2097152:t=this.armCompiler.constructMLA(o,f,l,c,a);break;case 3145728:t=this.armCompiler.constructMLAS(o,f,l,c,a);break;case 8388608:t=this.armCompiler.constructUMULL(o,f,l,c,a);break;case 9437184:t=this.armCompiler.constructUMULLS(o,f,l,c,a);break;case 10485760:t=this.armCompiler.constructUMLAL(o,f,l,c,a);break;case 11534336:t=this.armCompiler.constructUMLALS(o,f,l,c,a);break;case 12582912:t=this.armCompiler.constructSMULL(o,f,l,c,a);break;case 13631488:t=this.armCompiler.constructSMULLS(o,f,l,c,a);break;case 14680064:t=this.armCompiler.constructSMLAL(o,f,l,c,a);break;case 15728640:t=this.armCompiler.constructSMLALS(o,f,l,c,a);break}t.writesPC=o==15}else{var _=r&1048576,o=(r&61440)>>12,dr=(r&3840)>>4,Pr=c=r&15,ar=r&32,p=r&64,L=r&2097152,i=r&4194304,C;if(i){var m=Pr|dr;C=this.armCompiler.constructAddressingMode23Immediate(r,m,a)}else C=this.armCompiler.constructAddressingMode23Register(r,c,a);C.writesPC=!!L&&f==15,(r&144)==144&&(_?ar?p?t=this.armCompiler.constructLDRSH(o,C,a):t=this.armCompiler.constructLDRH(o,C,a):p&&(t=this.armCompiler.constructLDRSB(o,C,a)):!p&&ar&&(t=this.armCompiler.constructSTRH(o,C,a))),t.writesPC=o==15||C.writesPC}break;case 67108864:case 100663296:var o=(r&61440)>>12,_=r&1048576,cr=r&4194304,i=r&33554432;if((r&4293918960)==-403701520){var m=r&15;throw new N("Program exited ("+m+")",void 0,!0)}var C=function(){throw new N("Unimplemented memory access: 0x"+r.toString(16))};if(~r&16777216&&(r&=4292870143),i){var c=r&15,U=r&96,ur=(r&3968)>>7;U||ur?(g=this.barrelShiftImmediate(U,ur,c),C=this.armCompiler.constructAddressingMode2RegisterShifted(r,g,a)):C=this.armCompiler.constructAddressingMode23Register(r,c,a)}else{var O=r&4095;C=this.armCompiler.constructAddressingMode23Immediate(r,O,a)}_?cr?t=this.armCompiler.constructLDRB(o,C,a):t=this.armCompiler.constructLDR(o,C,a):cr?t=this.armCompiler.constructSTRB(o,C,a):t=this.armCompiler.constructSTR(o,C,a),t.writesPC=_&&(o==15||C.writesPC);break;case 134217728:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,l=r&65535,f=(r&983040)>>16,C,m=0,O=0,Z=!1;if(J){j&&(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),O+=4)}else{j||(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),m-=4,O-=4)}L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?(B?t=this.armCompiler.constructLDMS(l,C,a):t=this.armCompiler.constructLDM(l,C,a),t.writesPC=!!(l&32768)):(B?t=this.armCompiler.constructSTMS(l,C,a):t=this.armCompiler.constructSTM(l,C,a),t.writesPC=!1);break;case 167772160:var m=r&16777215;m&8388608&&(m|=4278190080),m<<=2;var br=r&16777216;br?t=this.armCompiler.constructBL(m,a):t=this.armCompiler.constructB(m,a),t.writesPC=!0,t.fixedJump=!0;break;case 201326592:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,f=(r&983040)>>16,W=(r&61440)>>12,Or=(r&3840)>>8,m=r&255,yr=r>>28&15,a=this.conds[yr];if((r&264179456)==221055488)t=this.armCompiler.constructVPUSH(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==221055744)t=this.armCompiler.constructVPUSH(a,((B?16:0)|W)*2,m,!1);else if((r&264179456)==213715456)t=this.armCompiler.constructVPOP(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==213715712)t=this.armCompiler.constructVPOP(a,((B?16:0)|W)*2,m,!1);else if((r&253759232)==218106368){m*=4,J||(m=-m);var Z=!1,K=W<<1|(B?1:0),C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!0):t=this.armCompiler.constructVSTR(a,K,C,!0)}else if((r&253759232)==218106624){m*=4,J||(m=-m);var Z=!1,K=((B?16:0)|W)*2,C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!1):t=this.armCompiler.constructVSTR(a,K,C,!1)}break;case 234881024:if((r&251658240)==251658240){var m=r&16777215;t=this.armCompiler.constructSWI(m,a),t.writesPC=!1}else if((r&263720528)==246942272){let k=r>>28&15,d=r>>22&1,x=r>>16&7,M=r>>12&15,P=r>>8&1,y=r>>7&1,b=r>>5&1,S=r&15,w=x&4,V=P!=0,G=w?x&1:0,$=y!=0,rr=!1,Sr=P?(d?16:0)|M:M<<1|(d?1:0),wr=P?(b?16:0)|S:S<<1|(b?1:0);t=this.armCompiler.constructVCVT(a,Sr,wr,w,V,G,$,rr),t.writesPC=!1}else if((r&264179408)==246876864){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>5&1,y=r&15,b=M!=0,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(P?16:0)|y:y<<1|(P?1:0);t=this.armCompiler.constructVCVTF(a,S,w,b),t.writesPC=!1}else if((r&262147600)==236980736){let k=r>>28&15,d=r>>22&1,x=r>>7&1,M=r>>5&1,P=(r&15728640)>>20,y=(r&983040)>>16,b=(r&61440)>>12,S=(r&224)>>5,w=r&15,V=r>>8&1,G=V?(d?16:0)|b:b<<1|(d?1:0),$=V?(M?16:0)|w:w<<1|(M?1:0),rr=V?(x?16:0)|y:y<<1|(x?1:0);var a=this.conds[k];t=this.armCompiler.constructVFP3Register(a,P,rr,G,V,S,$),t.writesPC=!1}else if((r&263195728)==243271680){let k=r>>28&15,d=r>>22&1,x=r>>16&15,M=r>>12&15,P=r>>8&3,y=r>>7&1,b=r>>5&1,S=r&15,w=P==3?(d?16:0)|M:M<<1|(d?1:0),V=P==3?(b?16:0)|S:S<<1|(b?1:0),G=P==3?(y?16:0)|x:x<<1|(y?1:0);t=this.armCompiler.constructVFP3Register(a,8,G,w,P==3,0,V),t.writesPC=!1}else if((r&264179280)==246680128){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP(a,S,x,M,P,w,b),t.writesPC=!1}else if((r&264179455)==246745664){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP0(a,S,x,M,P,w,b),t.writesPC=!1}else if(r==4008835600)t=this.armCompiler.constructNOP();else if((r&266342160)==234883600){let k=r>>28&15,d=r>>20&1,x=r>>16&15,M=r>>12&15,P=r>>7&1;var a=this.conds[k];t=this.armCompiler.constructVMOV(a,d,x<<1|(P?1:0),M)}else r==3992980240?t=this.armCompiler.constructVMOV(a,!1,0,0):r==3995081488&&(t=this.armCompiler.constructVMOV(a,!1,1,1));break;default:throw new N("Bad opcode: 0x"+r.toString(16))}return t.execMode=0,t.fixedJump=t.fixedJump||!1,t};A.prototype.compileThumb=function(r){var t=this.badOp(r&65535),i=this,s=this.gprs;if((r&64512)==16384){var e=(r&56)>>3,a=r&7;switch(r&960){case 0:t=this.thumbCompiler.constructAND(a,e);break;case 64:t=this.thumbCompiler.constructEOR(a,e);break;case 128:t=this.thumbCompiler.constructLSL2(a,e);break;case 192:t=this.thumbCompiler.constructLSR2(a,e);break;case 256:t=this.thumbCompiler.constructASR2(a,e);break;case 320:t=this.thumbCompiler.constructADC(a,e);break;case 384:t=this.thumbCompiler.constructSBC(a,e);break;case 448:t=this.thumbCompiler.constructROR(a,e);break;case 512:t=this.thumbCompiler.constructTST(a,e);break;case 576:t=this.thumbCompiler.constructNEG(a,e);break;case 640:t=this.thumbCompiler.constructCMP2(a,e);break;case 704:t=this.thumbCompiler.constructCMN(a,e);break;case 768:t=this.thumbCompiler.constructORR(a,e);break;case 832:t=this.thumbCompiler.constructMUL(a,e);break;case 896:t=this.thumbCompiler.constructBIC(a,e);break;case 960:t=this.thumbCompiler.constructMVN(a,e);break}t.writesPC=!1}else if((r&64512)==17408){var e=(r&120)>>3,c=r&7,u=r&128,a=c|u>>4;switch(r&768){case 0:t=this.thumbCompiler.constructADD4(a,e),t.writesPC=a==15;break;case 256:t=this.thumbCompiler.constructCMP3(a,e),t.writesPC=!1;break;case 512:t=this.thumbCompiler.constructMOV3(a,e),t.writesPC=a==15;break;case 768:t=this.thumbCompiler.constructBX(a,e),t.writesPC=!0,t.fixedJump=!1;break}}else if((r&63488)==6144){var e=(r&448)>>6,c=(r&56)>>3,a=r&7;switch(r&1536){case 0:t=this.thumbCompiler.constructADD3(a,c,e);break;case 512:t=this.thumbCompiler.constructSUB3(a,c,e);break;case 1024:var p=(r&448)>>6;p?t=this.thumbCompiler.constructADD1(a,c,p):t=this.thumbCompiler.constructMOV2(a,c,e);break;case 1536:var p=(r&448)>>6;t=this.thumbCompiler.constructSUB1(a,c,p);break}t.writesPC=!1}else if(r&57344)if((r&57344)==8192){var p=r&255,c=(r&1792)>>8;switch(r&6144){case 0:t=this.thumbCompiler.constructMOV1(c,p);break;case 2048:t=this.thumbCompiler.constructCMP1(c,p);break;case 4096:t=this.thumbCompiler.constructADD2(c,p);break;case 6144:t=this.thumbCompiler.constructSUB2(c,p);break}t.writesPC=!1}else if((r&63488)==18432){var a=(r&1792)>>8,p=(r&255)<<2;t=this.thumbCompiler.constructLDR3(a,p),t.writesPC=!1}else if((r&61440)==20480){var a=r&7,c=(r&56)>>3,e=(r&448)>>6,F=r&3584;switch(F){case 0:t=this.thumbCompiler.constructSTR2(a,c,e);break;case 512:t=this.thumbCompiler.constructSTRH2(a,c,e);break;case 1024:t=this.thumbCompiler.constructSTRB2(a,c,e);break;case 1536:t=this.thumbCompiler.constructLDRSB(a,c,e);break;case 2048:t=this.thumbCompiler.constructLDR2(a,c,e);break;case 2560:t=this.thumbCompiler.constructLDRH2(a,c,e);break;case 3072:t=this.thumbCompiler.constructLDRB2(a,c,e);break;case 3584:t=this.thumbCompiler.constructLDRSH(a,c,e);break}t.writesPC=!1}else if((r&57344)==24576){var a=r&7,c=(r&56)>>3,p=(r&1984)>>4,R=r&4096;R&&(p>>=2);var m=r&2048;m?R?t=this.thumbCompiler.constructLDRB1(a,c,p):t=this.thumbCompiler.constructLDR1(a,c,p):R?t=this.thumbCompiler.constructSTRB1(a,c,p):t=this.thumbCompiler.constructSTR1(a,c,p),t.writesPC=!1}else if((r&62976)==46080){var v=!!(r&256),o=r&255;r&2048?(t=this.thumbCompiler.constructPOP(o,v),t.writesPC=v,t.fixedJump=!1):(t=this.thumbCompiler.constructPUSH(o,v),t.writesPC=!1)}else if(r&32768)switch(r&28672){case 0:var a=r&7,c=(r&56)>>3,p=(r&1984)>>5;r&2048?t=this.thumbCompiler.constructLDRH1(a,c,p):t=this.thumbCompiler.constructSTRH1(a,c,p),t.writesPC=!1;break;case 4096:var a=(r&1792)>>8,p=(r&255)<<2,m=r&2048;m?t=this.thumbCompiler.constructLDR4(a,p):t=this.thumbCompiler.constructSTR3(a,p),t.writesPC=!1;break;case 8192:var a=(r&1792)>>8,p=(r&255)<<2;r&2048?t=this.thumbCompiler.constructADD6(a,p):t=this.thumbCompiler.constructADD5(a,p),t.writesPC=!1;break;case 12288:if(!(r&3840)){var R=r&128,p=(r&127)<<2;R&&(p=-p),t=this.thumbCompiler.constructADD7(p),t.writesPC=!1}break;case 16384:var c=(r&1792)>>8,o=r&255;r&2048?t=this.thumbCompiler.constructLDMIA(c,o):t=this.thumbCompiler.constructSTMIA(c,o),t.writesPC=!1;break;case 20480:var f=(r&3840)>>8,p=r&255;if(f==15)t=this.thumbCompiler.constructSWI(p),t.writesPC=!1;else{r&128&&(p|=4294967040),p<<=1;var U=this.conds[f];t=this.thumbCompiler.constructB1(p,U),t.writesPC=!0,t.fixedJump=!0}break;case 24576:case 28672:var p=r&2047,g=r&6144;switch(g){case 0:p&1024&&(p|=4294965248),p<<=1,t=this.thumbCompiler.constructB2(p),t.writesPC=!0,t.fixedJump=!0;break;case 2048:break;case 4096:p&1024&&(p|=4294966272),p<<=12,t=this.thumbCompiler.constructBL1(p),t.writesPC=!1;break;case 6144:t=this.thumbCompiler.constructBL2(p),t.writesPC=!0,t.fixedJump=!1;break}break;default:throw new N("Undefined instruction: 0x"+r.toString(16))}else throw new N("Bad opcode: 0x"+r.toString(16));else{var a=r&7,e=(r&56)>>3,p=(r&1984)>>6;switch(r&6144){case 0:t=this.thumbCompiler.constructLSL1(a,e,p);break;case 2048:t=this.thumbCompiler.constructLSR1(a,e,p);break;case 4096:t=this.thumbCompiler.constructASR1(a,e,p);break;case 6144:break}t.writesPC=!1}return t.execMode=1,t.fixedJump=t.fixedJump||!1,t};var Y=class{constructor(){this.f64arr=new Float64Array(1);this.f32arr=new Float32Array(this.f64arr.buffer);this.i32arr=new Int32Array(this.f64arr.buffer);this.BASE_OFFSET=24;this.OFFSET_MASK=16777215;this.core=new A,this.core.irq=this,this.core.mmu=this,this.resetMemory()}resetMemory(){this.memory=[];for(var t=0;t<256;t++)this.memory[t]={PAGE_MASK:2047,ICACHE_PAGE_BITS:10,icache:new Array}}advanceInsn(){var t=this.core.cycles;return this.core.step(),t-=this.core.cycles,t>0?t:1}getPC(){return this.core.gprs[15]-this.core.instructionWidth}getSP(){return this.core.gprs[13]}isStable(){return!0}connectMemoryBus(t){this.bus=t}reset(){this.resetMemory();let t=this.load32(0);this.core.resetCPU(t)}saveState(){return this.core.freeze()}loadState(t){this.core.defrost(t)}load8(t){return this.bus.read(t)<<24>>24}loadU8(t){return this.bus.read(t)&255}load16(t){return this.loadU16(t)<<16>>16}loadU16(t){return this.bus.read(t)|this.bus.read(t+1)<<8}load32(t){var i=this.bus.read32(t);return i}store8(t,i){this.bus.write(t,i&255)}store16(t,i){this.bus.write(t,i&255),this.bus.write(t+1,i>>8&255)}store32(t,i){this.bus.write32(t,i)}wait(t){++this.core.cycles}wait32(t){++this.core.cycles}waitSeq32(t){++this.core.cycles}waitMul(t){(t&4294967040)==4294967040||!(t&4294967040)?this.core.cycles+=1:(t&4294901760)==4294901760||!(t&4294901760)?this.core.cycles+=2:(t&4278190080)==4278190080||!(t&4278190080)?this.core.cycles+=3:this.core.cycles+=4}waitMulti32(t,i){this.core.cycles+=2}waitPrefetch(t){++this.core.cycles}waitPrefetch32(t){++this.core.cycles}addressToPage(t,i){return i>>this.memory[t].ICACHE_PAGE_BITS}accessPage(t,i){var s=this.memory[t],e=s.icache[i];return(!e||e.invalid)&&(e={thumb:new Array(1<>16)}clear(){}updateTimers(){}testIRQ(){}isThumb(){return this.core.instructionWidth==2}getDebugTree(){return{state:this.saveState(),mmu:this.core.mmu}}};var kr=fr([[T.A,0,1],[T.B,0,2],[T.GP_A,0,1],[T.GP_B,0,2],[T.SELECT,0,4],[T.START,0,8],[T.RIGHT,0,16],[T.LEFT,0,32],[T.UP,0,64],[T.DOWN,0,128]]),D=0,I=1048576,Mr=0,X=67108864,z=256,Er=1e6,xr=4e6,Ar=3991793133,q=class extends Rr{constructor(){super();this.cpuFrequency=xr;this.canvasWidth=160;this.numTotalScanlines=256;this.numVisibleScanlines=128;this.cpuCyclesPerLine=Math.floor(xr/(256*60));this.defaultROMSize=I-Mr;this.sampleRate=1;this.cpu=new Y;this.ram=new Uint8Array(I);this.ram16=new Uint16Array(this.ram.buffer);this.ram32=new Uint32Array(this.ram.buffer);this.rombase=Mr;this.brightness=255;this.ioregs=new Uint8Array(z);this.ioregs32=new Uint32Array(this.ioregs.buffer);this.read=er([[D,D+I-1,I-1,i=>this.ram[i]],[X,X+z-1,z-1,(i,s)=>this.readIO(i)]],{defaultval:Ar&255});this.write=er([[D,D+I-1,I-1,(i,s)=>{this.ram[i]=s}],[X,X+z-1,z-1,(i,s)=>{this.writeIO(i,s)}]]);this.read32=i=>i>=D&&i>2]:this.read(i)|this.read(i+1)<<8|this.read(i+2)<<16|this.read(i+3)<<24;this.write32=(i,s)=>{i>=D&&i>2]=s:(this.write(i,s&255),this.write(i+1,s>>8&255),this.write(i+2,s>>16&255),this.write(i+3,s>>24&255))};this.connectCPUMemoryBus(this),this.handler=hr(this.inputs,kr)}connectVideo(i){super.connectVideo(i),this.pixels32=i,this.pixels8=new Uint8Array(i.buffer)}connectSerialIO(i){this.serial=i}loadROM(i){super.loadROM(i)}reset(){this.ram.fill(0),this.rom&&this.ram.set(this.rom,this.rombase),super.reset(),this.serialOut=[],this.serialIn=[]}readAddress(i){return i>=D&&i>8;case 36:return this.getRasterX();case 37:return this.getRasterX()>>8;case 64:return(this.serial.byteAvailable()?128:0)|(this.serial.clearToSend()?64:0);case 68:let s=this.serialIn.shift();return s!=null?(this.serialOut.push(s),s.value):0;default:return 0}}writeIO(i,s){this.ioregs[i]=s,i===72&&this.serialOut.length>1&1048575,a=this.brightness<<24,c=0;c>5&31)<<11|(u>>10&31)<<19}}getDebugCategories(){return["CPU","Stack","FPU"]}getDebugInfo(i,s){switch(i){case"Stack":for(var u="",p=s.c,e=p.gprs[13],a=p.gprs[11],c=0;c<16&&(u+=E(e,8)+" "+E(this.ram32[e-D>>2],8),e==a&&(u+=" FP"),u+=` `,e+=4,!(e>=D+I));c++);return u;case"CPU":var u="",p=s.c;let F={2:"Thumb",4:"ARM"},R={15:"PC",14:"LR",13:"SP",12:"IP",11:"FP",9:"SB"};for(var c=0;c<8;c++){let v=c+8;u+=Q("r"+c,5)+" "+E(p.gprs[c],8)+" ",u+=Q("r"+v,5)+" "+E(p.gprs[v],8)+Q(R[v]||"",3)+` `}return u+="Flags ",u+=p.cpsrN?" N":" -",u+=p.cpsrV?" V":" -",u+=p.cpsrF?" F":" -",u+=p.cpsrZ?" Z":" -",u+=p.cpsrC?" C":" -",u+=p.cpsrI?" I":" -",u+=` `,u+="MODE "+F[p.instructionWidth]+" "+Dr[p.mode]+` @@ -6,4 +6,4 @@ import{F as gr,r as Rr}from"./chunk-4WX2XTAI.js";import{d as mr}from"./chunk-UAC `,u+="cycl "+p.cycles+` `,u;case"FPU":for(var u="",p=s.c,c=0;c<16;c++)u+=Q("s"+c,5)+" "+E(p.ifprs[c],8)+" "+p.sfprs[c].toPrecision(6),c&1&&(u+=Q("d"+(c>>1),5)+" "+p.dfprs[c>>1].toPrecision(12)),u+=` `;return u}}saveState(){var i=super.saveState();return i.serial={sin:this.serialIn.slice(0),sout:this.serialOut.slice(0)},i}loadState(i){super.loadState(i),this.serialIn=i.serial.sin,this.serialOut=i.serial.sout}},Dr={16:"USER",17:"FIQ",18:"IRQ",19:"SUPERVISOR",23:"ABORT",27:"UNDEFINED",31:"SYSTEM"};var Ir=[{id:"vidfill.c",name:"Video Memory Fill"}],tr=class extends gr{constructor(){super(...arguments);this.getToolForFilename=mr}getPresets(){return Ir}getDefaultExtensions(){return[".c",".armips",".vasm"]}},sr=class extends tr{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"ROM",start:0,size:1048576,type:"ram"},{name:"I/O",start:67108864,size:256,type:"io"}]}}}async start(){super.start(),console.log("Loading Capstone"),await or("./lib/capstone-arm.min.js"),this.capstone_arm=new cs.Capstone(cs.ARCH_ARM,cs.MODE_ARM),this.capstone_thumb=new cs.Capstone(cs.ARCH_ARM,cs.MODE_THUMB)}newMachine(){return new q}readAddress(i){return this.machine.read(i)}getPlatformName(){return"ARM7"}getDebugTree(){return nr(pr({},this.machine.cpu.getDebugTree()),{dwarf:this.debugSymbols.debuginfo})}disassemble(i,s){for(var e=this.machine.cpu.isThumb(),a=e?this.capstone_thumb:this.capstone_arm,c=[],u=0;u<4;u++)c[u]=s(i+u);var p=a.disasm(c,i,4),F=p&&p[0];return F?{nbytes:F.size,line:F.mnemonic+" "+F.op_str,isaddr:F.address>0,iscall:F.mnemonic=="bl"||F.mnemonic=="blx"}:{nbytes:4,line:"???",isaddr:!1}}};Fr.arm32=sr;export{tr as BaseARMMachinePlatform}; -//# sourceMappingURL=arm32-HML7LUDU.js.map +//# sourceMappingURL=arm32-2EOEPSXB.js.map diff --git a/gen/arm32-HML7LUDU.js.map b/gen/arm32-2EOEPSXB.js.map similarity index 74% rename from gen/arm32-HML7LUDU.js.map rename to gen/arm32-2EOEPSXB.js.map index 4dcf730e..2d768a2c 100644 --- a/gen/arm32-HML7LUDU.js.map +++ b/gen/arm32-2EOEPSXB.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/common/cpu/ARM.ts", "../src/machine/arm32.ts", "../src/platform/arm32.ts"], - "sourcesContent": ["/*\nFrom: https://github.com/endrift/gbajs\n\nCopyright \u00A9 2012 \u2013 2013, Jeffrey Pfau\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGE.\n*/\n\nimport { Bus, Bus32, CPU, InstructionBased, SavesState } from \"../devices\";\nimport { EmuHalt } from \"../emu\";\nimport { hex } from \"../util\";\n\ninterface AddressFunction extends Function {\n writesPC? : boolean;\n fixedJump? : boolean;\n}\n\ninterface ARMIRQInterface {\n\tclear() : void;\n\tswi(opcode : number) : void;\n\tswi32(opcode : number) : void;\n\tupdateTimers() : void;\n\ttestIRQ() : void;\n}\n\ninterface ARMMemoryRegion {\n\tPAGE_MASK : number;\n\tICACHE_PAGE_BITS : number;\n\ticache : ARMMemoryPage[];\n}\n\ninterface ARMOperation {\n\tnext : ARMOperation;\n\tpage : ARMMemoryPage;\n\taddress : number;\n\topcode : number;\n}\n\ninterface ARMMemoryPage {\n\tarm : ARMOperation[];\n\tthumb : ARMOperation[];\n\tinvalid : boolean;\n}\n\ninterface ARMMMUInterface {\n\tmemory : ARMMemoryRegion[];\n\tBASE_OFFSET : number;\n\tOFFSET_MASK : number;\n\n\tload8(a: number) : number;\n\tloadU8(a: number) : number;\n\tload16(a: number) : number;\n\tloadU16(a: number) : number;\n\tload32(a: number) : number;\n\tstore8(a: number, v: number) : void;\n\tstore16(a: number, v: number) : void;\n\tstore32(a: number, v: number) : void;\n\n\twait(a: number) : void;\n\twait32(a: number) : void;\n\twaitSeq32(a: number) : void;\n\twaitMul(a: number) : void;\n\twaitMulti32(a: number, total: number) : void;\n\twaitPrefetch(a: number) : void;\n\twaitPrefetch32(a: number) : void;\n\n\taddressToPage(region: number, address: number) : number;\n\taccessPage(region: number, pageId: number) : ARMMemoryPage;\n}\n\nexport interface ARMCoreState {\n\tPC: number,\n\tSP: number,\n\tgprs: number[],\n\tmode: number,\n\tcpsrI: boolean,\n\tcpsrF: boolean,\n\tcpsrV: boolean,\n\tcpsrC: boolean,\n\tcpsrZ: boolean,\n\tcpsrN: boolean,\n\tbankedRegisters: number[][],\n\tspsr: number,\n\tbankedSPSRs: number[],\n\tsfprs: number[],\n\tdfprs: number[],\n\tifprs: number[],\n\tcycles: number,\n\tinstructionWidth: 2 | 4\n}\n\ninterface ARMCoreType {\n\tgprs: Int32Array;\n\tsfprs: Float32Array;\n\tdfprs: Float64Array;\n\tifprs: Int32Array;\n\tPC: number;\n\tSP: number;\n\tLR: number;\n\tcycles: number;\n\tmode: number;\n\tshifterOperand: number;\n\tshifterCarryOut: number|boolean;\n\tcpsrN: number|boolean;\n\tcpsrC: number|boolean;\n\tcpsrZ: number|boolean;\n\tcpsrV: number|boolean;\n\tcpsrI: number|boolean;\n\tcpsrF: number|boolean;\n\tspsr: number;\n\tmmu: ARMMMUInterface;\n\tirq : ARMIRQInterface;\n\tinstructionWidth: 2 | 4;\n\n\thasSPSR() : boolean;\n\tunpackCPSR(v : number) : void;\n\tswitchMode(mode : number) : void;\n\tswitchExecMode(mode : number) : void;\n\tpackCPSR() : number;\n\n\tstep() : void;\n\tresetCPU(startOffset : number) : void;\n\tfreeze() : ARMCoreState;\n\tdefrost(state: ARMCoreState) : void;\n\n\traiseIRQ() : void;\n\traiseTrap(irqType? : number) : void;\n}\n\nexport enum ARMMode {\n\tMODE_ARM = 0,\n\tMODE_THUMB = 1,\n\t\n\tMODE_USER = 0x10,\n\tMODE_FIQ = 0x11,\n\tMODE_IRQ = 0x12,\n\tMODE_SUPERVISOR = 0x13,\n\tMODE_ABORT = 0x17,\n\tMODE_UNDEFINED = 0x1B,\n\tMODE_SYSTEM = 0x1F\n}\n\nexport enum ARMRegs {\n\tSP = 13,\n\tLR = 14,\n\tPC = 15,\n}\n\nexport enum ARMConstants {\n\n\tBANK_NONE = 0,\n\tBANK_FIQ = 1,\n\tBANK_IRQ = 2,\n\tBANK_SUPERVISOR = 3,\n\tBANK_ABORT = 4,\n\tBANK_UNDEFINED = 5,\n\n\tWORD_SIZE_ARM = 4,\n\tWORD_SIZE_THUMB = 2,\n\n\tBASE_RESET = 0x00000000,\n\tBASE_UNDEF = 0x00000004,\n\tBASE_SWI = 0x00000008,\n\tBASE_PABT = 0x0000000C,\n\tBASE_DABT = 0x00000010,\n\tBASE_IRQ = 0x00000018,\n\tBASE_FIQ = 0x0000001C,\n}\n\nconst UNALLOC_MASK = 0x0FFFFF00;\nconst USER_MASK = 0xF0000000;\nconst PRIV_MASK = 0x000000DF; // This is out of spec? (SEH)\nconst STATE_MASK = 0x00000020;\n\n\n///////////////////////////////////////////////////////////////////////////\n\nfunction ARMCoreArm(cpu: ARMCoreType) {\n\tthis.cpu = cpu;\n\n\tthis.addressingMode23Immediate = [\n\t\t// 000x0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] -= offset;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 000xW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// 00Ux0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] += offset;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 00UxW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// 0P0x0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\treturn /* addr = */ gprs[rn] - offset;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 0P0xW\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] - offset;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\n\t\t// 0PUx0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\treturn /* addr = */ gprs[rn] + offset;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 0PUxW\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] + offset;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\t];\n\n\tthis.addressingMode23Register = [\n\t\t// I00x0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] -= gprs[rm];\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// I00xW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// I0Ux0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] += gprs[rm];\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// I0UxW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IP0x0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\treturn gprs[rn] - gprs[rm];\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IP0xW\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] - gprs[rm];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IPUx0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] + gprs[rm];\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IPUxW\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] + gprs[rm];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull\n\t];\n\n\tthis.addressingMode2RegisterShifted = [\n\t\t// I00x0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tshiftOp();\n\t\t\t\t\tgprs[rn] -= cpu.shifterOperand;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// I00xW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// I0Ux0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tshiftOp();\n\t\t\t\t\tgprs[rn] += cpu.shifterOperand;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\t\t// I0UxW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IP0x0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\treturn gprs[rn] - cpu.shifterOperand;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IP0xW\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\tvar addr = gprs[rn] - cpu.shifterOperand;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IPUx0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\treturn gprs[rn] + cpu.shifterOperand;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IPUxW\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\tvar addr = gprs[rn] + cpu.shifterOperand;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\t];\n}\n\nARMCoreArm.prototype.constructAddressingMode1ASR = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (shift < 32) {\n\t\t\tcpu.shifterOperand = shiftVal >> shift;\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (shift - 1));\n\t\t} else if (gprs[rm] >> 31) {\n\t\t\tcpu.shifterOperand = 0xFFFFFFFF;\n\t\t\tcpu.shifterCarryOut = 0x80000000;\n\t\t} else {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = 0;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1Immediate = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\treturn function() {\n\t\tcpu.shifterOperand = immediate;\n\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1ImmediateRotate = function(immediate, rotate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\treturn function() {\n\t\tcpu.shifterOperand = (immediate >>> rotate) | (immediate << (32 - rotate));\n\t\tcpu.shifterCarryOut = cpu.shifterOperand >> 31;\n\t}\n};\n\nARMCoreArm.prototype.constructAddressingMode1LSL = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (shift < 32) {\n\t\t\tcpu.shifterOperand = shiftVal << shift;\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (32 - shift));\n\t\t} else if (shift == 32) {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = shiftVal & 1;\n\t\t} else {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = 0;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1LSR = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (shift < 32) {\n\t\t\tcpu.shifterOperand = shiftVal >>> shift;\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (shift - 1));\n\t\t} else if (shift == 32) {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = shiftVal >> 31;\n\t\t} else {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = 0;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1ROR = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tvar rotate = shift & 0x1F;\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (rotate) {\n\t\t\tcpu.shifterOperand = (gprs[rm] >>> rotate) | (gprs[rm] << (32 - rotate));\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (rotate - 1));\n\t\t} else {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = shiftVal >> 31;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode23Immediate = function(instruction, immediate, condOp) {\n\tvar rn = (instruction & 0x000F0000) >> 16;\n\treturn this.addressingMode23Immediate[(instruction & 0x01A00000) >> 21](rn, immediate, condOp);\n};\n\nARMCoreArm.prototype.constructAddressingMode23Register = function(instruction, rm, condOp) {\n\tvar rn = (instruction & 0x000F0000) >> 16;\n\treturn this.addressingMode23Register[(instruction & 0x01A00000) >> 21](rn, rm, condOp);\n};\n\nARMCoreArm.prototype.constructAddressingMode2RegisterShifted = function(instruction, shiftOp, condOp) {\n\tvar rn = (instruction & 0x000F0000) >> 16;\n\treturn this.addressingMode2RegisterShifted[(instruction & 0x01A00000) >> 21](rn, shiftOp, condOp);\n};\n\nARMCoreArm.prototype.constructAddressingMode4 = function(immediate, rn) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar addr = gprs[rn] + immediate;\n\t\treturn addr;\n\t}\n};\n\nARMCoreArm.prototype.constructAddressingMode4Writeback = function(immediate, offset, rn, overlap) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function(writeInitial) {\n\t\tvar addr = gprs[rn] + immediate;\n\t\tif (writeInitial && overlap) {\n\t\t\tcpu.mmu.store32(gprs[rn] + immediate - 4, gprs[rn]);\n\t\t}\n\t\tgprs[rn] += offset;\n\t\treturn addr;\n\t}\n};\n\nARMCoreArm.prototype.constructNOP = function() {\n\tthis.writesPC = false;\n\treturn function() { };\n}\n\nARMCoreArm.prototype.constructADC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 1 : 0);\n\t\tgprs[rd] = (gprs[rn] >>> 0) + shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructADCS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 1 : 0);\n\t\tvar d = (gprs[rn] >>> 0) + shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) == (shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31) &&\n\t\t\t\t\t\t(shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructADD = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = (gprs[rn] >>> 0) + (cpu.shifterOperand >>> 0);\n\t};\n};\n\nARMCoreArm.prototype.constructADDS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar d = (gprs[rn] >>> 0) + (cpu.shifterOperand >>> 0);\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) == (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31) &&\n\t\t\t\t\t\t(cpu.shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructAND = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructANDS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructB = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.PC] += immediate;\n\t};\n};\n\nARMCoreArm.prototype.constructBIC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & ~cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructBICS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & ~cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructBL = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.LR] = gprs[ARMRegs.PC] - 4;\n\t\tgprs[ARMRegs.PC] += immediate;\n\t};\n};\n\nARMCoreArm.prototype.constructBX = function(rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tcpu.switchExecMode(gprs[rm] & 0x00000001);\n\t\tgprs[ARMRegs.PC] = gprs[rm] & 0xFFFFFFFE;\n\t};\n};\n\nARMCoreArm.prototype.constructCMN = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = (gprs[rn] >>> 0) + (cpu.shifterOperand >>> 0);\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = aluOut > 0xFFFFFFFF;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) == (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t(gprs[rn] >> 31) != (aluOut >> 31) &&\n\t\t\t\t\t(cpu.shifterOperand >> 31) != (aluOut >> 31);\n\t};\n};\n\nARMCoreArm.prototype.constructCMP = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = gprs[rn] - cpu.shifterOperand;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (cpu.shifterOperand >>> 0);\n\t\tcpu.cpsrV = (gprs[rn] >> 31) != (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t(gprs[rn] >> 31) != (aluOut >> 31);\n\t};\n};\n\nARMCoreArm.prototype.constructEOR = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] ^ cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructEORS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] ^ cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructLDM = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address(false);\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tgprs[i] = mmu.load32(addr & 0xFFFFFFFC);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tmmu.waitMulti32(addr, total);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDMS = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address(false);\n\t\tvar total = 0;\n\t\tvar mode = cpu.mode;\n\t\tcpu.switchMode(ARMMode.MODE_SYSTEM);\n\t\tvar m, i;\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tgprs[i] = mmu.load32(addr & 0xFFFFFFFC);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.switchMode(mode);\n\t\tmmu.waitMulti32(addr, total);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDR = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.load32(addr);\n\t\tcpu.mmu.wait32(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRB = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.loadU8(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRH = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.loadU16(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRSB = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.load8(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRSH = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.load16(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructMLA = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(rs);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tgprs[rd] = (hi + lo + gprs[rn]) & 0xFFFFFFFF;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs] + gprs[rn];\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMLAS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(rs);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tgprs[rd] = (hi + lo + gprs[rn]) & 0xFFFFFFFF;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs] + gprs[rn];\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreArm.prototype.constructMOV = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructMOVS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMRS = function(rd, r, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tif (r) {\n\t\t\tgprs[rd] = cpu.spsr;\n\t\t} else {\n\t\t\tgprs[rd] = cpu.packCPSR();\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMSR = function(rm, r, instruction, immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar c = instruction & 0x00010000;\n\t//var x = instruction & 0x00020000;\n\t//var s = instruction & 0x00040000;\n\tvar f = instruction & 0x00080000;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar operand;\n\t\tif (instruction & 0x02000000) {\n\t\t\toperand = immediate;\n\t\t} else {\n\t\t\toperand = gprs[rm];\n\t\t}\n\t\tvar mask = (c ? 0x000000FF : 0x00000000) |\n\t\t\t\t //(x ? 0x0000FF00 : 0x00000000) | // Irrelevant on ARMv4T\n\t\t\t\t //(s ? 0x00FF0000 : 0x00000000) | // Irrelevant on ARMv4T\n\t\t\t\t (f ? 0xFF000000 : 0x00000000);\n\t\tif (r) {\n\t\t\tmask &= USER_MASK | PRIV_MASK | STATE_MASK;\n\t\t\t//console.log(hex(r), hex(mask & 0x7fffffff), hex(cpu.spsr), hex(operand));\n\t\t\tcpu.spsr = (cpu.spsr & ~mask) | (operand & mask);\n\t\t} else {\n\t\t\tif (mask & USER_MASK) {\n\t\t\t\tcpu.cpsrN = operand >> 31;\n\t\t\t\tcpu.cpsrZ = operand & 0x40000000;\n\t\t\t\tcpu.cpsrC = operand & 0x20000000;\n\t\t\t\tcpu.cpsrV = operand & 0x10000000;\n\t\t\t}\n\t\t\tif (cpu.mode != ARMMode.MODE_USER && (mask & PRIV_MASK)) {\n\t\t\t\tcpu.switchMode((operand & 0x0000000F) | 0x00000010);\n\t\t\t\tcpu.cpsrI = operand & 0x00000080;\n\t\t\t\tcpu.cpsrF = operand & 0x00000040;\n\t\t\t}\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMUL = function(rd, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) | 0;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) | 0;\n\t\t\tgprs[rd] = hi + lo;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs];\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMULS = function(rd, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) | 0;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) | 0;\n\t\t\tgprs[rd] = hi + lo;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs];\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreArm.prototype.constructMVN = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = ~cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructMVNS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = ~cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructORR = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] | cpu.shifterOperand;\n\t}\n};\n\nARMCoreArm.prototype.constructORRS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] | cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructRSB = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = cpu.shifterOperand - gprs[rn];\n\t};\n};\n\nARMCoreArm.prototype.constructRSBS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar d = cpu.shifterOperand - gprs[rn];\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (cpu.shifterOperand >>> 0) >= (gprs[rn] >>> 0);\n\t\t\tcpu.cpsrV = (cpu.shifterOperand >> 31) != (gprs[rn] >> 31) &&\n\t\t\t\t\t\t(cpu.shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructRSC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar n = (gprs[rn] >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tgprs[rd] = (cpu.shifterOperand >>> 0) - n;\n\t};\n};\n\nARMCoreArm.prototype.constructRSCS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar n = (gprs[rn] >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tvar d = (cpu.shifterOperand >>> 0) - n;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (cpu.shifterOperand >>> 0) >= (d >>> 0);\n\t\t\tcpu.cpsrV = (cpu.shifterOperand >> 31) != (n >> 31) &&\n\t\t\t\t\t\t(cpu.shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructSBC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tgprs[rd] = (gprs[rn] >>> 0) - shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructSBCS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tvar d = (gprs[rn] >>> 0) - shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (d >>> 0);\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) != (shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructSMLAL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = (gprs[rm] & 0xFFFF0000) * gprs[rs];\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * gprs[rs];\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += Math.floor(carry * SHIFT_32);\n\t};\n};\n\nARMCoreArm.prototype.constructSMLALS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = (gprs[rm] & 0xFFFF0000) * gprs[rs];\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * gprs[rs];\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += Math.floor(carry * SHIFT_32);\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructSMULL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >> 0) * (gprs[rs] >> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >> 0) * (gprs[rs] >> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = Math.floor(hi * SHIFT_32 + lo * SHIFT_32);\n\t};\n};\n\nARMCoreArm.prototype.constructSMULLS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >> 0) * (gprs[rs] >> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >> 0) * (gprs[rs] >> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = Math.floor(hi * SHIFT_32 + lo * SHIFT_32);\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructSTM = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tmmu.wait32(gprs[ARMRegs.PC]);\n\t\tvar addr = address(true);\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tmmu.store32(addr, gprs[i]);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tmmu.waitMulti32(addr, total);\n\t};\n};\n\nARMCoreArm.prototype.constructSTMS = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tmmu.wait32(gprs[ARMRegs.PC]);\n\t\tvar mode = cpu.mode;\n\t\tvar addr = address(true);\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tcpu.switchMode(ARMMode.MODE_SYSTEM);\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tmmu.store32(addr, gprs[i]);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.switchMode(mode);\n\t\tmmu.waitMulti32(addr, total);\n\t};\n};\n\nARMCoreArm.prototype.constructSTR = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tcpu.mmu.store32(addr, gprs[rd]);\n\t\tcpu.mmu.wait32(addr);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSTRB = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tcpu.mmu.store8(addr, gprs[rd]);\n\t\tcpu.mmu.wait(addr);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSTRH = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tcpu.mmu.store16(addr, gprs[rd]);\n\t\tcpu.mmu.wait(addr);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSUB = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] - cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructSUBS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar d = gprs[rn] - cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (cpu.shifterOperand >>> 0);\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) != (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructSWI = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.irq.swi32(immediate);\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSWP = function(rd, rn, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.wait32(gprs[rn]);\n\t\tcpu.mmu.wait32(gprs[rn]);\n\t\tvar d = cpu.mmu.load32(gprs[rn]);\n\t\tcpu.mmu.store32(gprs[rn], gprs[rm]);\n\t\tgprs[rd] = d;\n\t\t++cpu.cycles;\n\t}\n};\n\nARMCoreArm.prototype.constructSWPB = function(rd, rn, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.wait(gprs[rn]);\n\t\tcpu.mmu.wait(gprs[rn]);\n\t\tvar d = cpu.mmu.loadU8(gprs[rn]);\n\t\tcpu.mmu.store8(gprs[rn], gprs[rm]);\n\t\tgprs[rd] = d;\n\t\t++cpu.cycles;\n\t}\n};\n\nARMCoreArm.prototype.constructTEQ = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = gprs[rn] ^ cpu.shifterOperand;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t};\n};\n\nARMCoreArm.prototype.constructTST = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = gprs[rn] & cpu.shifterOperand;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t};\n};\n\nARMCoreArm.prototype.constructUMLAL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * (gprs[rs] >>> 0);\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += carry * SHIFT_32;\n\t};\n};\n\nARMCoreArm.prototype.constructUMLALS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * (gprs[rs] >>> 0);\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += carry * SHIFT_32;\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructUMULL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >>> 0) * (gprs[rs] >>> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = (hi * SHIFT_32 + lo * SHIFT_32) >>> 0;\n\t};\n};\n\nARMCoreArm.prototype.constructUMULLS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >>> 0) * (gprs[rs] >>> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = (hi * SHIFT_32 + lo * SHIFT_32) >>> 0;\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructVFP3Register = function(condOp, opcode, nOperandReg, destReg, sz, opcode2, mOperandReg) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar fpregs = sz ? cpu.dfprs : cpu.sfprs;\n\t//console.log(\"VFP3Register: \" + hex(opcode) + \" \" + hex(nOperandReg) + \" \" + hex(destReg) + \" \" + hex(number) + \" \" + hex(opcode2) + \" \" + hex(mOperandReg));\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tswitch (opcode) {\n\t\tcase 2: // VMUL\n\t\t\tswitch (opcode2) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] * fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 3: // VADD/VSUB\n\t\t\tswitch (opcode2) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] + fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t\tcase 2:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] - fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 8: // VDIV\n\t\t\tswitch (opcode2) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] / fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tconsole.log(\"Unsupported instruction: \" + hex(opcode) + \" \" + hex(opcode2));\n\t};\n};\n\n/*\nif ConditionPassed() then\n EncodingSpecificOperations(); CheckVFPEnabled(TRUE);\n if to_integer then\n if dp_operation then\n S[d] = FPToFixed(D[m], 32, 0, unsigned, round_zero, TRUE);\n else\n S[d] = FPToFixed(S[m], 32, 0, unsigned, round_zero, TRUE);\n else\n if dp_operation then\n D[d] = FixedToFP(S[m], 64, 0, unsigned, round_nearest, TRUE);\n else\n S[d] = FixedToFP(S[m], 32, 0, unsigned, round_nearest, TRUE);\n*/\nARMCoreArm.prototype.constructVCVT = function(condOp, d, m, to_integer, dp_operation, unsigned, round_zero, round_nearest) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar src : number;\n\t\tvar dest : number;\n\t\t// get source\n\t\tif (to_integer && dp_operation) {\n\t\t\tsrc = dregs[m];\n\t\t} else if (to_integer) {\n\t\t\tsrc = sregs[m];\n\t\t} else {\n\t\t\tsrc = iregs[m];\n\t\t}\n\t\t// convert\n\t\tif (to_integer) {\n\t\t\tdest = round_zero ? Math.floor(src) : Math.round(src);\n\t\t} else {\n\t\t\tdest = src;\n\t\t}\n\t\t// store result\n\t\tif (to_integer) {\n\t\t\tiregs[d] = dest;\n\t\t} else if (dp_operation) {\n\t\t\tdregs[d] = dest;\n\t\t} else {\n\t\t\tsregs[d] = dest;\n\t\t}\n\t};\n}\n\nARMCoreArm.prototype.constructVCVTF = function(condOp, d, m, double_to_single) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar n = double_to_single ? dregs[m] : sregs[m];\n\t\t// store result\n\t\tif (double_to_single) {\n\t\t\tsregs[d] = n;\n\t\t} else {\n\t\t\tdregs[d] = n;\n\t\t}\n\t};\n\n}\n\nARMCoreArm.prototype.constructVLDR = function(condOp, destReg, address, single_reg) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = address();\n\t\tif (single_reg) {\n\t\t\tiregs[destReg] = cpu.mmu.load32(addr);\n\t\t} else {\n\t\t\tiregs[destReg] = cpu.mmu.load32(addr);\n\t\t\tiregs[destReg+1] = cpu.mmu.load32(addr+4);\n\t\t}\n\t\tcpu.mmu.wait32(addr);\n\t\tcpu.mmu.wait32(cpu.gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructVSTR = function(condOp, srcReg, address, single_reg) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = address();\n\t\tif (single_reg) {\n\t\t\tcpu.mmu.store32(addr, iregs[srcReg]);\n\t\t} else {\n\t\t\tcpu.mmu.store32(addr, iregs[srcReg]);\n\t\t\tcpu.mmu.store32(addr+4, iregs[srcReg+1]);\n\t\t}\n\t\tcpu.mmu.wait32(addr);\n\t\tcpu.mmu.wait32(cpu.gprs[ARMRegs.PC]);\n\t};\n}\n\nARMCoreArm.prototype.constructVPUSH = function(condOp, d, regs, single_regs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = cpu.gprs[ARMRegs.SP] - regs * 4;\n\t\tcpu.gprs[ARMRegs.SP] = addr;\n\t\tfor (let i = 0; i < regs; ++i) {\n\t\t\tcpu.mmu.store32(addr, iregs[d+i]);\n\t\t\taddr += 4;\n\t\t}\n\t};\n}\n\nARMCoreArm.prototype.constructVPOP = function(condOp, d, regs, single_regs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = cpu.gprs[ARMRegs.SP];\n\t\tcpu.gprs[ARMRegs.SP] += regs * 4;\n\t\tfor (let i = 0; i < regs; ++i) {\n\t\t\tiregs[d+i] = cpu.mmu.load32(addr);\n\t\t\taddr += 4;\n\t\t}\n\t};\n}\n\nfunction FPCompare(op1: number, op2: number) {\n\t/* assert N IN {32,64};\n fpscr_val = if fpscr_controlled then FPSCR else StandardFPSCRValue();\n (type1,sign1,value1) = FPUnpack(op1, fpscr_val);\n (type2,sign2,value2) = FPUnpack(op2, fpscr_val); */\n\tif (isNaN(op1) || isNaN(op2)) {\n\t\treturn 0b0011;\n\t}\n\tif (op1 == op2) return 0b0110;\n\tif (op1 < op2) return 0b1000;\n\telse return 0b0010;\n}\n\nARMCoreArm.prototype.constructVCMP = function(condOp, d, Vd, sz, E, m, Vm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet op1, op2;\n\t\tif (sz) {\n\t\t\top1 = dregs[d];\n\t\t\top2 = dregs[m];\n\t\t} else {\n\t\t\top1 = sregs[d];\n\t\t\top2 = sregs[m];\n\t\t}\n\t\tlet result = FPCompare(op1, op2);\n\t\tcpu.cpsrN = (result & 8) != 0;\n\t\tcpu.cpsrZ = (result & 4) != 0;\n\t\tcpu.cpsrC = (result & 2) != 0;\n\t\tcpu.cpsrV = (result & 1) != 0;\n\t}\n}\n\nARMCoreArm.prototype.constructVCMP0 = function(condOp, d, Vd, sz, E) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet op1, op2=0;\n\t\tif (sz) {\n\t\t\top1 = dregs[d];\n\t\t} else {\n\t\t\top1 = sregs[d];\n\t\t}\n\t\tlet result = FPCompare(op1, op2);\n\t\tcpu.cpsrN = (result & 8) != 0;\n\t\tcpu.cpsrZ = (result & 4) != 0;\n\t\tcpu.cpsrC = (result & 2) != 0;\n\t\tcpu.cpsrV = (result & 1) != 0;\n\t}\n}\nARMCoreArm.prototype.constructVMOV = function(condOp, to_arm_reg, n, t) {\n\tvar cpu : ARMCoreType = this.cpu;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tif (to_arm_reg) {\n\t\t\tcpu.gprs[t] = cpu.ifprs[n];\n\t\t} else {\n\t\t\tcpu.ifprs[n] = cpu.gprs[t];\n\t\t}\n\t}\n}\n\n///////////////////////////////////////////////////////////////////////////\n\nfunction ARMCoreThumb(cpu) {\n\tthis.cpu = cpu;\n};\n\nARMCoreThumb.prototype.constructADC = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar m = (gprs[rm] >>> 0) + (cpu.cpsrC ? 1 : 0);\n\t\tvar oldD = gprs[rd];\n\t\tvar d = (oldD >>> 0) + m;\n\t\tvar oldDn = oldD >> 31;\n\t\tvar dn = d >> 31;\n\t\tvar mn = m >> 31;\n\t\tcpu.cpsrN = dn;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = oldDn == mn && oldDn != dn && mn != dn;\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = (gprs[rn] >>> 0) + immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = !(gprs[rn] >> 31) && ((gprs[rn] >> 31 ^ d) >> 31) && (d >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD2 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = (gprs[rn] >>> 0) + immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = !(gprs[rn] >> 31) && ((gprs[rn] ^ d) >> 31) && ((immediate ^ d) >> 31);\n\t\tgprs[rn] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD3 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = (gprs[rn] >>> 0) + (gprs[rm] >>> 0);\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = !((gprs[rn] ^ gprs[rm]) >> 31) && ((gprs[rn] ^ d) >> 31) && ((gprs[rm] ^ d) >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD4 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] += gprs[rm];\n\t};\n};\n\nARMCoreThumb.prototype.constructADD5 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = (gprs[ARMRegs.PC] & 0xFFFFFFFC) + immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD6 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[ARMRegs.SP] + immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD7 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.SP] += immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructAND = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] & gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructASR1 = function(rd, rm, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (immediate == 0) {\n\t\t\tcpu.cpsrC = gprs[rm] >> 31;\n\t\t\tif (cpu.cpsrC) {\n\t\t\t\tgprs[rd] = 0xFFFFFFFF;\n\t\t\t} else {\n\t\t\t\tgprs[rd] = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tcpu.cpsrC = gprs[rm] & (1 << (immediate - 1));\n\t\t\tgprs[rd] = gprs[rm] >> immediate;\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructASR2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tif (rs < 32) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (rs - 1));\n\t\t\t\tgprs[rd] >>= rs;\n\t\t\t} else {\n\t\t\t\tcpu.cpsrC = gprs[rd] >> 31;\n\t\t\t\tif (cpu.cpsrC) {\n\t\t\t\t\tgprs[rd] = 0xFFFFFFFF;\n\t\t\t\t} else {\n\t\t\t\t\tgprs[rd] = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructB1 = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (condOp()) {\n\t\t\tgprs[ARMRegs.PC] += immediate;\n\t\t}\n\t};\n};\n\nARMCoreThumb.prototype.constructB2 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.PC] += immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructBIC = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] & ~gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructBL1 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.LR] = gprs[ARMRegs.PC] + immediate;\n\t}\n};\n\nARMCoreThumb.prototype.constructBL2 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar pc = gprs[ARMRegs.PC];\n\t\tgprs[ARMRegs.PC] = gprs[ARMRegs.LR] + (immediate << 1);\n\t\tgprs[ARMRegs.LR] = pc - 1;\n\t}\n};\n\nARMCoreThumb.prototype.constructBX = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tcpu.switchExecMode(gprs[rm] & 0x00000001);\n\t\tvar misalign = 0;\n\t\tif (rm == 15) {\n\t\t\tmisalign = gprs[rm] & 0x00000002;\n\t\t}\n\t\tgprs[ARMRegs.PC] = gprs[rm] & 0xFFFFFFFE - misalign;\n\t};\n};\n\nARMCoreThumb.prototype.constructCMN = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = (gprs[rd] >>> 0) + (gprs[rm] >>> 0);\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = aluOut > 0xFFFFFFFF;\n\t\tcpu.cpsrV = (gprs[rd] >> 31) == (gprs[rm] >> 31) &&\n\t\t\t\t\t(gprs[rd] >> 31) != (aluOut >> 31) &&\n\t\t\t\t\t(gprs[rm] >> 31) != (aluOut >> 31);\n\t};\n};\n\nARMCoreThumb.prototype.constructCMP1 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = gprs[rn] - immediate;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= immediate;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) && ((gprs[rn] ^ aluOut) >> 31);\n\t};\n}\n\nARMCoreThumb.prototype.constructCMP2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rd];\n\t\tvar m = gprs[rm];\n\t\tvar aluOut = d - m;\n\t\tvar an = aluOut >> 31;\n\t\tvar dn = d >> 31;\n\t\tcpu.cpsrN = an;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (d >>> 0) >= (m >>> 0);\n\t\tcpu.cpsrV = dn != (m >> 31) && dn != an;\n\t};\n};\n\nARMCoreThumb.prototype.constructCMP3 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = gprs[rd] - gprs[rm];\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rd] >>> 0) >= (gprs[rm] >>> 0);\n\t\tcpu.cpsrV = ((gprs[rd] ^ gprs[rm]) >> 31) && ((gprs[rd] ^ aluOut) >> 31);\n\t};\n};\n\nARMCoreThumb.prototype.constructEOR = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] ^ gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructLDMIA = function(rn, rs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar address = gprs[rn];\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = 0x01, i = 0; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tgprs[i] = cpu.mmu.load32(address);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tif (!((1 << rn) & rs)) {\n\t\t\tgprs[rn] = address;\n\t\t}\n\t};\n};\n\nARMCoreThumb.prototype.constructLDR1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar n = gprs[rn] + immediate;\n\t\tgprs[rd] = cpu.mmu.load32(n);\n\t\tcpu.mmu.wait32(n);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDR2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load32(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait32(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t}\n};\n\nARMCoreThumb.prototype.constructLDR3 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load32((gprs[ARMRegs.PC] & 0xFFFFFFFC) + immediate);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDR4 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load32(gprs[ARMRegs.SP] + immediate);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.SP] + immediate);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRB1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU8(n);\n\t\tcpu.mmu.wait(n);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRB2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU8(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRH1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU16(n);\n\t\tcpu.mmu.wait(n);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRH2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU16(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRSB = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load8(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRSH = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load16(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLSL1 = function(rd, rm, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (immediate == 0) {\n\t\t\tgprs[rd] = gprs[rm];\n\t\t} else {\n\t\t\tcpu.cpsrC = gprs[rm] & (1 << (32 - immediate));\n\t\t\tgprs[rd] = gprs[rm] << immediate;\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructLSL2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tif (rs < 32) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (32 - rs));\n\t\t\t\tgprs[rd] <<= rs;\n\t\t\t} else {\n\t\t\t\tif (rs > 32) {\n\t\t\t\t\tcpu.cpsrC = 0;\n\t\t\t\t} else {\n\t\t\t\t\tcpu.cpsrC = gprs[rd] & 0x00000001;\n\t\t\t\t}\n\t\t\t\tgprs[rd] = 0;\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructLSR1 = function(rd, rm, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (immediate == 0) {\n\t\t\tcpu.cpsrC = gprs[rm] >> 31;\n\t\t\tgprs[rd] = 0;\n\t\t} else {\n\t\t\tcpu.cpsrC = gprs[rm] & (1 << (immediate - 1));\n\t\t\tgprs[rd] = gprs[rm] >>> immediate;\n\t\t}\n\t\tcpu.cpsrN = 0;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n}\n\nARMCoreThumb.prototype.constructLSR2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tif (rs < 32) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (rs - 1));\n\t\t\t\tgprs[rd] >>>= rs;\n\t\t\t} else {\n\t\t\t\tif (rs > 32) {\n\t\t\t\t\tcpu.cpsrC = 0;\n\t\t\t\t} else {\n\t\t\t\t\tcpu.cpsrC = gprs[rd] >> 31;\n\t\t\t\t}\n\t\t\t\tgprs[rd] = 0;\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructMOV1 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rn] = immediate;\n\t\tcpu.cpsrN = immediate >> 31;\n\t\tcpu.cpsrZ = !(immediate & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructMOV2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn];\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = 0;\n\t\tcpu.cpsrV = 0;\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructMOV3 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rm];\n\t};\n};\n\nARMCoreThumb.prototype.constructMUL = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.waitMul(gprs[rm]);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rd] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rd] & 0xFFFF0000) * gprs[rm]) & 0xFFFFFFFF;\n\t\t\tvar lo = ((gprs[rd] & 0x0000FFFF) * gprs[rm]) & 0xFFFFFFFF;\n\t\t\tgprs[rd] = (hi + lo) & 0xFFFFFFFF;\n\t\t} else {\n\t\t\tgprs[rd] *= gprs[rm];\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructMVN = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = ~gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructNEG = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = -gprs[rm];\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = 0 >= (d >>> 0);\n\t\tcpu.cpsrV = (gprs[rm] >> 31) && (d >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructORR = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] | gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructPOP = function(rs, r) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\t++cpu.cycles;\n\t\tvar address = gprs[ARMRegs.SP];\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = 0x01, i = 0; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.waitSeq32(address);\n\t\t\t\tgprs[i] = cpu.mmu.load32(address);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tif (r) {\n\t\t\tgprs[ARMRegs.PC] = cpu.mmu.load32(address) & 0xFFFFFFFE;\n\t\t\taddress += 4;\n\t\t\t++total;\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tgprs[ARMRegs.SP] = address;\n\t};\n};\n\nARMCoreThumb.prototype.constructPUSH = function(rs, r) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar address = gprs[ARMRegs.SP] - 4;\n\t\tvar total = 0;\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (r) {\n\t\t\tcpu.mmu.store32(address, gprs[ARMRegs.LR]);\n\t\t\taddress -= 4;\n\t\t\t++total;\n\t\t}\n\t\tvar m, i;\n\t\tfor (m = 0x80, i = 7; m; m >>= 1, --i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress -= 4;\n\t\t\t\t++total;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (m >>= 1, --i; m; m >>= 1, --i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress -= 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tgprs[ARMRegs.SP] = address + 4;\n\t};\n};\n\nARMCoreThumb.prototype.constructROR = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tvar r4 = rs & 0x1F;\n\t\t\tif (r4 > 0) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (r4 - 1));\n\t\t\t\tgprs[rd] = (gprs[rd] >>> r4) | (gprs[rd] << (32 - r4));\n\t\t\t} else {\n\t\t\t\tcpu.cpsrC = gprs[rd] >> 31;\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructSBC = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar m = (gprs[rm] >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tvar d = (gprs[rd] >>> 0) - m;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rd] >>> 0) >= (d >>> 0);\n\t\tcpu.cpsrV = ((gprs[rd] ^ m) >> 31) && ((gprs[rd] ^ d) >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructSTMIA = function(rn, rs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tvar address = gprs[rn];\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = 0x01, i = 0; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (m <<= 1, ++i; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tgprs[rn] = address;\n\t};\n};\n\nARMCoreThumb.prototype.constructSTR1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.store32(n, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait32(n);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTR2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store32(gprs[rn] + gprs[rm], gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait32(gprs[rn] + gprs[rm]);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTR3 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store32(gprs[ARMRegs.SP] + immediate, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.SP] + immediate);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTRB1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.store8(n, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(n);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTRB2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store8(gprs[rn] + gprs[rm], gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t}\n};\n\nARMCoreThumb.prototype.constructSTRH1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.store16(n, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(n);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTRH2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store16(gprs[rn] + gprs[rm], gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t}\n};\n\nARMCoreThumb.prototype.constructSUB1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn] - immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= immediate;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) && ((gprs[rn] ^ d) >> 31);\n\t\tgprs[rd] = d;\n\t};\n}\n\nARMCoreThumb.prototype.constructSUB2 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn] - immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= immediate;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) && ((gprs[rn] ^ d) >> 31);\n\t\tgprs[rn] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructSUB3 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn] - gprs[rm];\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (gprs[rm] >>> 0);\n\t\tcpu.cpsrV = (gprs[rn] >> 31) != (gprs[rm] >> 31) &&\n\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructSWI = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.irq.swi(immediate);\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t}\n};\n\nARMCoreThumb.prototype.constructTST = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = gprs[rd] & gprs[rm];\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t};\n};\n\n///////////////////////////////////////////////////////////////////////////\n\nfunction ARMCore() {\n\tthis.SP = 13;\n\tthis.LR = 14;\n\tthis.PC = 15;\n\n\tthis.MODE_ARM = 0;\n\tthis.MODE_THUMB = 1;\n\n\tthis.MODE_USER = 0x10;\n\tthis.MODE_FIQ = 0x11;\n\tthis.MODE_IRQ = 0x12;\n\tthis.MODE_SUPERVISOR = 0x13;\n\tthis.MODE_ABORT = 0x17;\n\tthis.MODE_UNDEFINED = 0x1B;\n\tthis.MODE_SYSTEM = 0x1F;\n\n\tthis.BANK_NONE = 0\n\tthis.BANK_FIQ = 1;\n\tthis.BANK_IRQ = 2;\n\tthis.BANK_SUPERVISOR = 3;\n\tthis.BANK_ABORT = 4;\n\tthis.BANK_UNDEFINED = 5;\n\n\tthis.WORD_SIZE_ARM = 4;\n\tthis.WORD_SIZE_THUMB = 2;\n\n\tthis.BASE_RESET = 0x00000000;\n\tthis.BASE_UNDEF = 0x00000004;\n\tthis.BASE_SWI = 0x00000008;\n\tthis.BASE_PABT = 0x0000000C;\n\tthis.BASE_DABT = 0x00000010;\n\tthis.BASE_IRQ = 0x00000018;\n\tthis.BASE_FIQ = 0x0000001C;\n\n\tthis.armCompiler = new ARMCoreArm(this);\n\tthis.thumbCompiler = new ARMCoreThumb(this);\n\tthis.generateConds();\n\n\tthis.gprs = new Int32Array(16);\n\tthis.dfprs = new Float64Array(16);\n\tthis.sfprs = new Float32Array(this.dfprs.buffer); // regs shared with dfprs\n\tthis.ifprs = new Int32Array(this.dfprs.buffer); // regs shared with dfprs\n};\n\nARMCore.prototype.resetCPU = function(startOffset) {\n\tfor (var i = 0; i < ARMRegs.PC; ++i) {\n\t\tthis.gprs[i] = 0;\n\t}\n\tthis.gprs[ARMRegs.PC] = startOffset + ARMConstants.WORD_SIZE_ARM;\n\tthis.dfprs.set(0); // no need to zero the sfprs, since they share the same buffer\n\n\tthis.loadInstruction = this.loadInstructionArm;\n\tthis.execMode = ARMMode.MODE_ARM;\n\tthis.instructionWidth = ARMConstants.WORD_SIZE_ARM;\n\n\tthis.mode = ARMMode.MODE_SYSTEM;\n\n\tthis.cpsrI = false;\n\tthis.cpsrF = false;\n\n\tthis.cpsrV = false;\n\tthis.cpsrC = false;\n\tthis.cpsrZ = false;\n\tthis.cpsrN = false;\n\n\tthis.bankedRegisters = [\n\t\tnew Int32Array(7),\n\t\tnew Int32Array(7),\n\t\tnew Int32Array(2),\n\t\tnew Int32Array(2),\n\t\tnew Int32Array(2),\n\t\tnew Int32Array(2)\n\t];\n\tthis.spsr = 0;\n\tthis.bankedSPSRs = new Int32Array(6);\n\n\tthis.cycles = 0;\n\n\tthis.shifterOperand = 0;\n\tthis.shifterCarryOut = 0;\n\n\tthis.page = null;\n\tthis.pageId = 0;\n\tthis.pageRegion = -1;\n\n\tthis.instruction = null;\n\n\tthis.irq.clear();\n\n\tvar gprs = this.gprs;\n\tvar mmu = this.mmu as ARMMMUInterface;\n\n\tthis.step = function() {\n\t\tvar instruction = this.instruction || (this.instruction = this.loadInstruction(gprs[ARMRegs.PC] - this.instructionWidth));\n\t\tgprs[ARMRegs.PC] += this.instructionWidth;\n\t\tthis.conditionPassed = true;\n\t\tinstruction();\n\n\t\tif (!instruction.writesPC) {\n\t\t\tif (this.instruction != null) { // We might have gotten an interrupt from the instruction\n\t\t\t\tif (instruction.next == null || instruction.next.page.invalid) {\n\t\t\t\t\tinstruction.next = this.loadInstruction(gprs[ARMRegs.PC] - this.instructionWidth);\n\t\t\t\t}\n\t\t\t\tthis.instruction = instruction.next;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.conditionPassed) {\n\t\t\t\tvar pc = gprs[ARMRegs.PC] &= 0xFFFFFFFE;\n\t\t\t\tif (this.execMode == ARMMode.MODE_ARM) {\n\t\t\t\t\tmmu.wait32(pc);\n\t\t\t\t\tmmu.waitPrefetch32(pc);\n\t\t\t\t} else {\n\t\t\t\t\tmmu.wait(pc);\n\t\t\t\t\tmmu.waitPrefetch(pc);\n\t\t\t\t}\n\t\t\t\tgprs[ARMRegs.PC] += this.instructionWidth;\n\t\t\t\tif (!instruction.fixedJump) {\n\t\t\t\t\tthis.instruction = null;\n\t\t\t\t} else if (this.instruction != null) {\n\t\t\t\t\tif (instruction.next == null || instruction.next.page.invalid) {\n\t\t\t\t\t\tinstruction.next = this.loadInstruction(gprs[ARMRegs.PC] - this.instructionWidth);\n\t\t\t\t\t}\n\t\t\t\t\tthis.instruction = instruction.next;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.instruction = null;\n\t\t\t}\n\t\t}\n\t\tthis.irq.updateTimers();\n\t};\n};\n\nARMCore.prototype.freeze = function() : ARMCoreState {\n\treturn {\n\t\tPC: this.gprs[15] - this.instructionWidth,\n\t\tSP: this.gprs[13],\n\t\t'gprs': [\n\t\t\tthis.gprs[0],\n\t\t\tthis.gprs[1],\n\t\t\tthis.gprs[2],\n\t\t\tthis.gprs[3],\n\t\t\tthis.gprs[4],\n\t\t\tthis.gprs[5],\n\t\t\tthis.gprs[6],\n\t\t\tthis.gprs[7],\n\t\t\tthis.gprs[8],\n\t\t\tthis.gprs[9],\n\t\t\tthis.gprs[10],\n\t\t\tthis.gprs[11],\n\t\t\tthis.gprs[12],\n\t\t\tthis.gprs[13],\n\t\t\tthis.gprs[14],\n\t\t\tthis.gprs[15],\n\t\t],\n\t\t'sfprs': this.sfprs.slice(),\n\t\t'dfprs': this.dfprs.slice(),\n\t\t'ifprs': this.ifprs.slice(),\n\t\t'mode': this.mode,\n\t\t'cpsrI': this.cpsrI,\n\t\t'cpsrF': this.cpsrF,\n\t\t'cpsrV': this.cpsrV,\n\t\t'cpsrC': this.cpsrC,\n\t\t'cpsrZ': this.cpsrZ,\n\t\t'cpsrN': this.cpsrN,\n\t\t'bankedRegisters': [\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[0][0],\n\t\t\t\tthis.bankedRegisters[0][1],\n\t\t\t\tthis.bankedRegisters[0][2],\n\t\t\t\tthis.bankedRegisters[0][3],\n\t\t\t\tthis.bankedRegisters[0][4],\n\t\t\t\tthis.bankedRegisters[0][5],\n\t\t\t\tthis.bankedRegisters[0][6]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[1][0],\n\t\t\t\tthis.bankedRegisters[1][1],\n\t\t\t\tthis.bankedRegisters[1][2],\n\t\t\t\tthis.bankedRegisters[1][3],\n\t\t\t\tthis.bankedRegisters[1][4],\n\t\t\t\tthis.bankedRegisters[1][5],\n\t\t\t\tthis.bankedRegisters[1][6]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[2][0],\n\t\t\t\tthis.bankedRegisters[2][1]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[3][0],\n\t\t\t\tthis.bankedRegisters[3][1]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[4][0],\n\t\t\t\tthis.bankedRegisters[4][1]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[5][0],\n\t\t\t\tthis.bankedRegisters[5][1]\n\t\t\t]\n\t\t],\n\t\t'spsr': this.spsr,\n\t\t'bankedSPSRs': [\n\t\t\tthis.bankedSPSRs[0],\n\t\t\tthis.bankedSPSRs[1],\n\t\t\tthis.bankedSPSRs[2],\n\t\t\tthis.bankedSPSRs[3],\n\t\t\tthis.bankedSPSRs[4],\n\t\t\tthis.bankedSPSRs[5]\n\t\t],\n\t\t'cycles': this.cycles,\n\t\t'instructionWidth': this.instructionWidth,\n\t};\n};\n\nARMCore.prototype.defrost = function(frost: ARMCoreState) {\n\tthis.instruction = null;\n\n\tthis.page = null;\n\tthis.pageId = 0;\n\tthis.pageRegion = -1;\n\n\tthis.gprs[0] = frost.gprs[0];\n\tthis.gprs[1] = frost.gprs[1];\n\tthis.gprs[2] = frost.gprs[2];\n\tthis.gprs[3] = frost.gprs[3];\n\tthis.gprs[4] = frost.gprs[4];\n\tthis.gprs[5] = frost.gprs[5];\n\tthis.gprs[6] = frost.gprs[6];\n\tthis.gprs[7] = frost.gprs[7];\n\tthis.gprs[8] = frost.gprs[8];\n\tthis.gprs[9] = frost.gprs[9];\n\tthis.gprs[10] = frost.gprs[10];\n\tthis.gprs[11] = frost.gprs[11];\n\tthis.gprs[12] = frost.gprs[12];\n\tthis.gprs[13] = frost.gprs[13];\n\tthis.gprs[14] = frost.gprs[14];\n\tthis.gprs[15] = frost.gprs[15];\n\n\tthis.ifprs.set(frost.ifprs); // regs shared with sfprs\n\n\tthis.mode = frost.mode;\n\tthis.cpsrI = frost.cpsrI;\n\tthis.cpsrF = frost.cpsrF;\n\tthis.cpsrV = frost.cpsrV;\n\tthis.cpsrC = frost.cpsrC;\n\tthis.cpsrZ = frost.cpsrZ;\n\tthis.cpsrN = frost.cpsrN;\n\n\tthis.bankedRegisters[0][0] = frost.bankedRegisters[0][0];\n\tthis.bankedRegisters[0][1] = frost.bankedRegisters[0][1];\n\tthis.bankedRegisters[0][2] = frost.bankedRegisters[0][2];\n\tthis.bankedRegisters[0][3] = frost.bankedRegisters[0][3];\n\tthis.bankedRegisters[0][4] = frost.bankedRegisters[0][4];\n\tthis.bankedRegisters[0][5] = frost.bankedRegisters[0][5];\n\tthis.bankedRegisters[0][6] = frost.bankedRegisters[0][6];\n\n\tthis.bankedRegisters[1][0] = frost.bankedRegisters[1][0];\n\tthis.bankedRegisters[1][1] = frost.bankedRegisters[1][1];\n\tthis.bankedRegisters[1][2] = frost.bankedRegisters[1][2];\n\tthis.bankedRegisters[1][3] = frost.bankedRegisters[1][3];\n\tthis.bankedRegisters[1][4] = frost.bankedRegisters[1][4];\n\tthis.bankedRegisters[1][5] = frost.bankedRegisters[1][5];\n\tthis.bankedRegisters[1][6] = frost.bankedRegisters[1][6];\n\n\tthis.bankedRegisters[2][0] = frost.bankedRegisters[2][0];\n\tthis.bankedRegisters[2][1] = frost.bankedRegisters[2][1];\n\n\tthis.bankedRegisters[3][0] = frost.bankedRegisters[3][0];\n\tthis.bankedRegisters[3][1] = frost.bankedRegisters[3][1];\n\n\tthis.bankedRegisters[4][0] = frost.bankedRegisters[4][0];\n\tthis.bankedRegisters[4][1] = frost.bankedRegisters[4][1];\n\n\tthis.bankedRegisters[5][0] = frost.bankedRegisters[5][0];\n\tthis.bankedRegisters[5][1] = frost.bankedRegisters[5][1];\n\n\tthis.spsr = frost.spsr;\n\tthis.bankedSPSRs[0] = frost.bankedSPSRs[0];\n\tthis.bankedSPSRs[1] = frost.bankedSPSRs[1];\n\tthis.bankedSPSRs[2] = frost.bankedSPSRs[2];\n\tthis.bankedSPSRs[3] = frost.bankedSPSRs[3];\n\tthis.bankedSPSRs[4] = frost.bankedSPSRs[4];\n\tthis.bankedSPSRs[5] = frost.bankedSPSRs[5];\n\n\tthis.cycles = frost.cycles;\n\n\tthis.instructionWidth = frost.instructionWidth;\n\tthis.loadInstruction = frost.instructionWidth == 2 ? this.loadInstructionThumb : this.loadInstructionArm;\n\tthis.execMode = frost.instructionWidth == 2 ? ARMMode.MODE_THUMB : ARMMode.MODE_ARM;\n};\n\nARMCore.prototype.fetchPage = function(address : number) {\n\tvar mmu = this.mmu;\n\tvar region = address >>> mmu.BASE_OFFSET;\n\tvar pageId = mmu.addressToPage(region, address & mmu.OFFSET_MASK);\n\tif (region == this.pageRegion) {\n\t\tif (pageId == this.pageId && !(this.page as ARMMemoryPage).invalid) {\n\t\t\treturn;\n\t\t}\n\t\tthis.pageId = pageId;\n\t} else {\n\t\tthis.pageMask = mmu.memory[region].PAGE_MASK;\n\t\tthis.pageRegion = region;\n\t\tthis.pageId = pageId;\n\t}\n\n\tthis.page = mmu.accessPage(region, pageId);\n};\n\nARMCore.prototype.loadInstructionArm = function(address : number) {\n\tvar next : ARMOperation = null;\n\tthis.fetchPage(address);\n\tvar offset = (address & this.pageMask) >> 2;\n\tnext = (this.page as ARMMemoryPage).arm[offset];\n\tif (next) {\n\t\treturn next;\n\t}\n\tvar instruction = this.mmu.load32(address) >>> 0;\n\tnext = this.compileArm(instruction);\n\tnext.next = null;\n\tnext.page = this.page;\n\tnext.address = address;\n\tnext.opcode = instruction;\n\t(this.page as ARMMemoryPage).arm[offset] = next;\n\treturn next;\n};\n\nARMCore.prototype.loadInstructionThumb = function(address : number) {\n\tvar next : ARMOperation = null;\n\tthis.fetchPage(address);\n\tvar offset = (address & this.pageMask) >> 1;\n\tnext = (this.page as ARMMemoryPage).thumb[offset];\n\tif (next) {\n\t\treturn next;\n\t}\n\tvar instruction = this.mmu.load16(address);\n\tnext = this.compileThumb(instruction);\n\tnext.next = null;\n\tnext.page = this.page;\n\tnext.address = address;\n\tnext.opcode = instruction;\n\t(this.page as ARMMemoryPage).thumb[offset] = next;\n\treturn next;\n};\n\nARMCore.prototype.selectBank = function(mode : ARMMode) {\n\tswitch (mode) {\n\tcase ARMMode.MODE_USER:\n\tcase ARMMode.MODE_SYSTEM:\n\t\t// No banked registers\n\t\treturn ARMConstants.BANK_NONE;\n\tcase ARMMode.MODE_FIQ:\n\t\treturn ARMConstants.BANK_FIQ;\n\tcase ARMMode.MODE_IRQ:\n\t\treturn ARMConstants.BANK_IRQ;\n\tcase ARMMode.MODE_SUPERVISOR:\n\t\treturn ARMConstants.BANK_SUPERVISOR;\n\tcase ARMMode.MODE_ABORT:\n\t\treturn ARMConstants.BANK_ABORT;\n\tcase ARMMode.MODE_UNDEFINED:\n\t\treturn ARMConstants.BANK_UNDEFINED;\n\tdefault:\n\t\tthrow new EmuHalt(\"Invalid user mode \" + mode + \" passed to selectBank\");\n\t}\n};\n\nARMCore.prototype.switchExecMode = function(newMode) {\n\tif (this.execMode != newMode) {\n\t\tthis.execMode = newMode;\n\t\tif (newMode == ARMMode.MODE_ARM) {\n\t\t\tthis.instructionWidth = ARMConstants.WORD_SIZE_ARM;\n\t\t\tthis.loadInstruction = this.loadInstructionArm;\n\t\t} else {\n\t\t\tthis.instructionWidth = ARMConstants.WORD_SIZE_THUMB;\n\t\t\tthis.loadInstruction = this.loadInstructionThumb;\n\t\t}\n\t}\n\t\n};\n\nARMCore.prototype.switchMode = function(newMode) {\n\tif (newMode == this.mode) {\n\t\t// Not switching modes after all\n\t\treturn;\n\t}\n\tif (newMode != ARMMode.MODE_USER || newMode != ARMMode.MODE_SYSTEM) {\n\t\t// Switch banked registers\n\t\tvar newBank = this.selectBank(newMode);\n\t\tvar oldBank = this.selectBank(this.mode);\n\t\tif (newBank != oldBank) {\n\t\t\t// TODO: support FIQ\n\t\t\tif (newMode == ARMMode.MODE_FIQ || this.mode == ARMMode.MODE_FIQ) {\n\t\t\t\tvar oldFiqBank = (oldBank == ARMConstants.BANK_FIQ) ? 1 : 0;\n\t\t\t\tvar newFiqBank = (newBank == ARMConstants.BANK_FIQ) ? 1 : 0;\n\t\t\t\tthis.bankedRegisters[oldFiqBank][2] = this.gprs[8];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][3] = this.gprs[9];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][4] = this.gprs[10];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][5] = this.gprs[11];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][6] = this.gprs[12];\n\t\t\t\tthis.gprs[8] = this.bankedRegisters[newFiqBank][2];\n\t\t\t\tthis.gprs[9] = this.bankedRegisters[newFiqBank][3];\n\t\t\t\tthis.gprs[10] = this.bankedRegisters[newFiqBank][4];\n\t\t\t\tthis.gprs[11] = this.bankedRegisters[newFiqBank][5];\n\t\t\t\tthis.gprs[12] = this.bankedRegisters[newFiqBank][6];\n\t\t\t}\n\t\t\tthis.bankedRegisters[oldBank][0] = this.gprs[ARMRegs.SP];\n\t\t\tthis.bankedRegisters[oldBank][1] = this.gprs[ARMRegs.LR];\n\t\t\tthis.gprs[ARMRegs.SP] = this.bankedRegisters[newBank][0];\n\t\t\tthis.gprs[ARMRegs.LR] = this.bankedRegisters[newBank][1];\n\n\t\t\tthis.bankedSPSRs[oldBank] = this.spsr;\n\t\t\tthis.spsr = this.bankedSPSRs[newBank];\n\t\t}\n\t}\n\tthis.mode = newMode;\n};\n\nARMCore.prototype.packCPSR = function() {\n\treturn this.mode | (this.execMode << 5) | (this.cpsrF << 6) | (this.cpsrI << 7) |\n\t (this.cpsrN << 31) | (this.cpsrZ << 30) | (this.cpsrC << 29) | (this.cpsrV << 28);\n};\n\nARMCore.prototype.unpackCPSR = function(spsr) {\n\tthis.switchMode(spsr & 0x0000001F);\n\tthis.switchExecMode(!!(spsr & 0x00000020));\n\tthis.cpsrF = spsr & 0x00000040;\n\tthis.cpsrI = spsr & 0x00000080;\n\tthis.cpsrN = spsr & 0x80000000;\n\tthis.cpsrZ = spsr & 0x40000000;\n\tthis.cpsrC = spsr & 0x20000000;\n\tthis.cpsrV = spsr & 0x10000000;\n\n\tthis.irq.testIRQ();\n};\n\nARMCore.prototype.hasSPSR = function() {\n\treturn this.mode != ARMMode.MODE_SYSTEM && this.mode != ARMMode.MODE_USER;\n};\n\nARMCore.prototype.raiseIRQ = function() {\n\tif (this.cpsrI) {\n\t\treturn;\n\t}\n\tvar cpsr = this.packCPSR();\n\tvar instructionWidth = this.instructionWidth;\n\tthis.switchMode(ARMMode.MODE_IRQ);\n\tthis.spsr = cpsr;\n\tthis.gprs[ARMRegs.LR] = this.gprs[ARMRegs.PC] - instructionWidth + 4;\n\tthis.gprs[ARMRegs.PC] = this.BASE_IRQ + ARMConstants.WORD_SIZE_ARM;\n\tthis.instruction = null;\n\tthis.switchExecMode(ARMMode.MODE_ARM);\n\tthis.cpsrI = true;\n};\n\nARMCore.prototype.raiseTrap = function() {\n\tvar cpsr = this.packCPSR();\n\tvar instructionWidth = this.instructionWidth;\n\tthis.switchMode(ARMMode.MODE_SUPERVISOR);\n\tthis.spsr = cpsr;\n\tthis.gprs[ARMRegs.LR] = this.gprs[ARMRegs.PC] - instructionWidth;\n\tthis.gprs[ARMRegs.PC] = this.BASE_SWI + ARMConstants.WORD_SIZE_ARM;\n\tthis.instruction = null;\n\tthis.switchExecMode(ARMMode.MODE_ARM);\n\tthis.cpsrI = true;\n};\n\nARMCore.prototype.badOp = function(instruction) {\n\tvar func : AddressFunction = function() {\n\t\tthrow new EmuHalt(\"Illegal instruction: 0x\" + instruction.toString(16));\n\t};\n\tfunc.writesPC = true;\n\tfunc.fixedJump = false;\n\treturn func;\n};\n\nARMCore.prototype.generateConds = function() {\n\tvar cpu = this;\n\tthis.conds = [\n\t\t// EQ\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrZ;\n\t\t},\n\t\t// NE\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrZ;\n\t\t},\n\t\t// CS\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrC;\n\t\t},\n\t\t// CC\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrC;\n\t\t},\n\t\t// MI\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrN;\n\t\t},\n\t\t// PL\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrN;\n\t\t},\n\t\t// VS\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrV;\n\t\t},\n\t\t// VC\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrV;\n\t\t},\n\t\t// HI\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrC && !cpu.cpsrZ;\n\t\t},\n\t\t// LS\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrC || cpu.cpsrZ;\n\t\t},\n\t\t// GE\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrN == !cpu.cpsrV;\n\t\t},\n\t\t// LT\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrN != !cpu.cpsrV;\n\t\t},\n\t\t// GT\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrZ && !cpu.cpsrN == !cpu.cpsrV;\n\t\t},\n\t\t// LE\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrZ || !cpu.cpsrN != !cpu.cpsrV;\n\t\t},\n\t\t// AL\n\t\tnull,\n\t\tnull\n\t]\n}\n\nARMCore.prototype.barrelShiftImmediate = function(shiftType, immediate, rm) {\n\tvar cpu = this;\n\tvar gprs = this.gprs;\n\tvar shiftOp = this.badOp;\n\tswitch (shiftType) {\n\tcase 0x00000000:\n\t\t// LSL\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm] << immediate;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (32 - immediate));\n\t\t\t};\n\t\t} else {\n\t\t\t// This boils down to no shift\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm];\n\t\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t\t};\n\t\t}\n\t\tbreak;\n\tcase 0x00000020:\n\t\t// LSR\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm] >>> immediate;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (immediate - 1));\n\t\t\t};\n\t\t} else {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = 0;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & 0x80000000;\n\t\t\t};\n\t\t}\n\t\tbreak;\n\tcase 0x00000040:\n\t\t// ASR\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm] >> immediate;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (immediate - 1));\n\t\t\t};\n\t\t} else {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & 0x80000000;\n\t\t\t\tif (cpu.shifterCarryOut) {\n\t\t\t\t\tcpu.shifterOperand = 0xFFFFFFFF;\n\t\t\t\t} else {\n\t\t\t\t\tcpu.shifterOperand = 0;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tbreak;\n\tcase 0x00000060:\n\t\t// ROR\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = (gprs[rm] >>> immediate) | (gprs[rm] << (32 - immediate));\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (immediate - 1));\n\t\t\t};\n\t\t} else {\n\t\t\t// RRX\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = ((cpu.cpsrC ? 1 : 0) << 31) | (gprs[rm] >>> 1);\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & 0x00000001;\n\t\t\t};\n\t\t}\n\t\tbreak;\n\t}\n\treturn shiftOp;\n}\n\nARMCore.prototype.compileArm = function(instruction) {\n\tvar op = this.badOp(instruction);\n\tvar i = instruction & 0x0E000000;\n\tvar cpu = this;\n\tvar gprs = this.gprs;\n\n\tvar condOp = this.conds[(instruction & 0xF0000000) >>> 28];\n\tif ((instruction & 0x0FFFFFF0) == 0x012FFF10) {\n\t\t// BX\n\t\tvar rm = instruction & 0xF;\n\t\top = this.armCompiler.constructBX(rm, condOp);\n\t\top.writesPC = true;\n\t\top.fixedJump = false;\n\t} else if (!(instruction & 0x0C000000) && (i == 0x02000000 || (instruction & 0x00000090) != 0x00000090)) {\n\t\tvar opcode = instruction & 0x01E00000;\n\t\tvar s = instruction & 0x00100000;\n\t\tvar shiftsRs = false;\n\t\tif ((opcode & 0x01800000) == 0x01000000 && !s) {\n\t\t\tvar r = instruction & 0x00400000;\n\t\t\tif ((instruction & 0x00B0F000) == 0x0020F000) {\n\t\t\t\t// MSR\n\t\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\t\tvar immediate = instruction & 0x000000FF;\n\t\t\t\tvar rotateImm = (instruction & 0x00000F00) >> 7;\n\t\t\t\timmediate = (immediate >>> rotateImm) | (immediate << (32 - rotateImm));\n\t\t\t\top = this.armCompiler.constructMSR(rm, r, instruction, immediate, condOp);\n\t\t\t\top.writesPC = false;\n\t\t\t} else if ((instruction & 0x00BF0000) == 0x000F0000) {\n\t\t\t\t// MRS\n\t\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\t\t\t\top = this.armCompiler.constructMRS(rd, r, condOp);\n\t\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\t}\n\t\t} else {\n\t\t\t// Data processing/FSR transfer\n\t\t\tvar rn = (instruction & 0x000F0000) >> 16;\n\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\n\t\t\t// Parse shifter operand\n\t\t\tvar shiftType = instruction & 0x00000060;\n\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\tvar shiftOp = function() {\n\t\t\t\tthrow new EmuHalt('BUG: invalid barrel shifter');\n\t\t\t};\n\t\t\tif (instruction & 0x02000000) {\n\t\t\t\tvar immediate = instruction & 0x000000FF;\n\t\t\t\tvar rotate = (instruction & 0x00000F00) >> 7;\n\t\t\t\tif (!rotate) {\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1Immediate(immediate);\n\t\t\t\t} else {\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1ImmediateRotate(immediate, rotate);\n\t\t\t\t}\n\t\t\t} else if (instruction & 0x00000010) {\n\t\t\t\tvar rs = (instruction & 0x00000F00) >> 8;\n\t\t\t\tshiftsRs = true;\n\t\t\t\tswitch (shiftType) {\n\t\t\t\tcase 0x00000000:\n\t\t\t\t\t// LSL\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1LSL(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00000020:\n\t\t\t\t\t// LSR\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1LSR(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00000040:\n\t\t\t\t\t// ASR\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1ASR(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00000060:\n\t\t\t\t\t// ROR\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1ROR(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar immediate = (instruction & 0x00000F80) >> 7;\n\t\t\t\tshiftOp = this.barrelShiftImmediate(shiftType, immediate, rm);\n\t\t\t}\n\n\t\t\tswitch (opcode) {\n\t\t\tcase 0x00000000:\n\t\t\t\t// AND\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructANDS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructAND(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00200000:\n\t\t\t\t// EOR\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructEORS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructEOR(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00400000:\n\t\t\t\t// SUB\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructSUBS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructSUB(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00600000:\n\t\t\t\t// RSB\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructRSBS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructRSB(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00800000:\n\t\t\t\t// ADD\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructADDS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructADD(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00A00000:\n\t\t\t\t// ADC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructADCS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructADC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00C00000:\n\t\t\t\t// SBC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructSBCS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructSBC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00E00000:\n\t\t\t\t// RSC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructRSCS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructRSC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01000000:\n\t\t\t\t// TST\n\t\t\t\top = this.armCompiler.constructTST(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01200000:\n\t\t\t\t// TEQ\n\t\t\t\top = this.armCompiler.constructTEQ(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01400000:\n\t\t\t\t// CMP\n\t\t\t\top = this.armCompiler.constructCMP(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01600000:\n\t\t\t\t// CMN\n\t\t\t\top = this.armCompiler.constructCMN(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01800000:\n\t\t\t\t// ORR\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructORRS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructORR(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01A00000:\n\t\t\t\t// MOV\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructMOVS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructMOV(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01C00000:\n\t\t\t\t// BIC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructBICS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructBIC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01E00000:\n\t\t\t\t// MVN\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructMVNS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructMVN(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t}\n\t} else if ((instruction & 0x0FB00FF0) == 0x01000090) {\n\t\t// Single data swap\n\t\tvar rm = instruction & 0x0000000F;\n\t\tvar rd = (instruction >> 12) & 0x0000000F;\n\t\tvar rn = (instruction >> 16) & 0x0000000F;\n\t\tif (instruction & 0x00400000) {\n\t\t\top = this.armCompiler.constructSWPB(rd, rn, rm, condOp);\n\t\t} else {\n\t\t\top = this.armCompiler.constructSWP(rd, rn, rm, condOp);\n\t\t}\n\t\top.writesPC = rd == ARMRegs.PC;\n\t} else {\n\t\tswitch (i) {\n\t\tcase 0x00000000:\n\t\t\tif ((instruction & 0x010000F0) == 0x00000090) {\n\t\t\t\t// Multiplies\n\t\t\t\tvar rd = (instruction & 0x000F0000) >> 16;\n\t\t\t\tvar rn = (instruction & 0x0000F000) >> 12;\n\t\t\t\tvar rs = (instruction & 0x00000F00) >> 8;\n\t\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\t\tswitch (instruction & 0x00F00000) {\n\t\t\t\tcase 0x00000000:\n\t\t\t\t\t// MUL\n\t\t\t\t\top = this.armCompiler.constructMUL(rd, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00100000:\n\t\t\t\t\t// MULS\n\t\t\t\t\top = this.armCompiler.constructMULS(rd, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00200000:\n\t\t\t\t\t// MLA\n\t\t\t\t\top = this.armCompiler.constructMLA(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak\n\t\t\t\tcase 0x00300000:\n\t\t\t\t\t// MLAS\n\t\t\t\t\top = this.armCompiler.constructMLAS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00800000:\n\t\t\t\t\t// UMULL\n\t\t\t\t\top = this.armCompiler.constructUMULL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00900000:\n\t\t\t\t\t// UMULLS\n\t\t\t\t\top = this.armCompiler.constructUMULLS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00A00000:\n\t\t\t\t\t// UMLAL\n\t\t\t\t\top = this.armCompiler.constructUMLAL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00B00000:\n\t\t\t\t\t// UMLALS\n\t\t\t\t\top = this.armCompiler.constructUMLALS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00C00000:\n\t\t\t\t\t// SMULL\n\t\t\t\t\top = this.armCompiler.constructSMULL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00D00000:\n\t\t\t\t\t// SMULLS\n\t\t\t\t\top = this.armCompiler.constructSMULLS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00E00000:\n\t\t\t\t\t// SMLAL\n\t\t\t\t\top = this.armCompiler.constructSMLAL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00F00000:\n\t\t\t\t\t// SMLALS\n\t\t\t\t\top = this.armCompiler.constructSMLALS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\t} else {\n\t\t\t\t// Halfword and signed byte data transfer\n\t\t\t\tvar load = instruction & 0x00100000;\n\t\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\t\t\t\tvar hiOffset = (instruction & 0x00000F00) >> 4;\n\t\t\t\tvar loOffset = rm = instruction & 0x0000000F;\n\t\t\t\tvar h = instruction & 0x00000020;\n\t\t\t\tvar s = instruction & 0x00000040;\n\t\t\t\tvar w = instruction & 0x00200000;\n\t\t\t\tvar i = instruction & 0x00400000;\n\n\t\t\t\tvar address : AddressFunction;\n\t\t\t\tif (i) {\n\t\t\t\t\tvar immediate = loOffset | hiOffset;\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode23Immediate(instruction, immediate, condOp);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode23Register(instruction, rm, condOp);\n\t\t\t\t}\n\t\t\t\taddress.writesPC = !!w && rn == ARMRegs.PC;\n\n\t\t\t\tif ((instruction & 0x00000090) == 0x00000090) {\n\t\t\t\t\tif (load) {\n\t\t\t\t\t\t// Load [signed] halfword/byte\n\t\t\t\t\t\tif (h) {\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\t// LDRSH\n\t\t\t\t\t\t\t\top = this.armCompiler.constructLDRSH(rd, address, condOp);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// LDRH\n\t\t\t\t\t\t\t\top = this.armCompiler.constructLDRH(rd, address, condOp);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\t// LDRSB\n\t\t\t\t\t\t\t\top = this.armCompiler.constructLDRSB(rd, address, condOp);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!s && h) {\n\t\t\t\t\t\t// STRH\n\t\t\t\t\t\top = this.armCompiler.constructSTRH(rd, address, condOp);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\top.writesPC = rd == ARMRegs.PC || address.writesPC;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x04000000:\n\t\tcase 0x06000000:\n\t\t\t// LDR/STR\n\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\t\t\tvar load = instruction & 0x00100000;\n\t\t\tvar b = instruction & 0x00400000;\n\t\t\tvar i = instruction & 0x02000000;\n\t\t\t// test for UDF instruction\n\t\t\tif ((instruction & 0xfff000f0) == (0xe7f000f0|0)) {\n\t\t\t\tvar immediate = instruction & 0x0000000f; // TODO: full range\n\t\t\t\tthrow new EmuHalt(\"Program exited (\" + immediate + \")\");\n\t\t\t}\n\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tthrow new EmuHalt(\"Unimplemented memory access: 0x\" + instruction.toString(16));\n\t\t\t};\n\t\t\tif (~instruction & 0x01000000) {\n\t\t\t\t// Clear the W bit if the P bit is clear--we don't support memory translation, so these turn into regular accesses\n\t\t\t\tinstruction &= 0xFFDFFFFF;\n\t\t\t}\n\t\t\tif (i) {\n\t\t\t\t// Register offset\n\t\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\t\tvar shiftType = instruction & 0x00000060;\n\t\t\t\tvar shiftImmediate = (instruction & 0x00000F80) >> 7;\n\t\t\t\t\n\t\t\t\tif (shiftType || shiftImmediate) {\n\t\t\t\t\tshiftOp = this.barrelShiftImmediate(shiftType, shiftImmediate, rm);\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode2RegisterShifted(instruction, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode23Register(instruction, rm, condOp);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Immediate\n\t\t\t\tvar offset = instruction & 0x00000FFF;\n\t\t\t\taddress = this.armCompiler.constructAddressingMode23Immediate(instruction, offset, condOp);\n\t\t\t}\n\t\t\tif (load) {\n\t\t\t\tif (b) {\n\t\t\t\t\t// LDRB\n\t\t\t\t\top = this.armCompiler.constructLDRB(rd, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\t// LDR\n\t\t\t\t\top = this.armCompiler.constructLDR(rd, address, condOp);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (b) {\n\t\t\t\t\t// STRB\n\t\t\t\t\top = this.armCompiler.constructSTRB(rd, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\t// STR\n\t\t\t\t\top = this.armCompiler.constructSTR(rd, address, condOp);\n\t\t\t\t}\n\t\t\t}\n\t\t\top.writesPC = load && (rd == ARMRegs.PC || address.writesPC); // SEH\n\t\t\tbreak;\n\t\tcase 0x08000000:\n\t\t\t// Block data transfer\n\t\t\tvar load = instruction & 0x00100000;\n\t\t\tvar w = instruction & 0x00200000;\n\t\t\tvar user = instruction & 0x00400000;\n\t\t\tvar u = instruction & 0x00800000;\n\t\t\tvar p = instruction & 0x01000000;\n\t\t\tvar rs = instruction & 0x0000FFFF;\n\t\t\tvar rn = (instruction & 0x000F0000) >> 16;\n\n\t\t\tvar address : AddressFunction;\n\t\t\tvar immediate = 0;\n\t\t\tvar offset = 0;\n\t\t\tvar overlap = false;\n\t\t\tif (u) {\n\t\t\t\tif (p) {\n\t\t\t\t\timmediate = 4;\n\t\t\t\t}\n\t\t\t\tfor (var m = 0x01, i = 0; i < 16; m <<= 1, ++i) {\n\t\t\t\t\tif (rs & m) {\n\t\t\t\t\t\tif (w && i == rn && !offset) {\n\t\t\t\t\t\t\trs &= ~m;\n\t\t\t\t\t\t\timmediate += 4;\n\t\t\t\t\t\t\toverlap = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset += 4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!p) {\n\t\t\t\t\timmediate = 4;\n\t\t\t\t}\n\t\t\t\tfor (var m = 0x01, i = 0; i < 16; m <<= 1, ++i) {\n\t\t\t\t\tif (rs & m) {\n\t\t\t\t\t\tif (w && i == rn && !offset) {\n\t\t\t\t\t\t\trs &= ~m;\n\t\t\t\t\t\t\timmediate += 4;\n\t\t\t\t\t\t\toverlap = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\timmediate -= 4;\n\t\t\t\t\t\toffset -= 4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (w) {\n\t\t\t\taddress = this.armCompiler.constructAddressingMode4Writeback(immediate, offset, rn, overlap);\n\t\t\t} else {\n\t\t\t\taddress = this.armCompiler.constructAddressingMode4(immediate, rn);\n\t\t\t}\n\t\t\tif (load) {\n\t\t\t\t// LDM\n\t\t\t\tif (user) {\n\t\t\t\t\top = this.armCompiler.constructLDMS(rs, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructLDM(rs, address, condOp);\n\t\t\t\t}\n\t\t\t\top.writesPC = !!(rs & (1 << 15));\n\t\t\t} else {\n\t\t\t\t// STM\n\t\t\t\tif (user) {\n\t\t\t\t\top = this.armCompiler.constructSTMS(rs, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructSTM(rs, address, condOp);\n\t\t\t\t}\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0A000000:\n\t\t\t// Branch\n\t\t\tvar immediate = instruction & 0x00FFFFFF;\n\t\t\tif (immediate & 0x00800000) {\n\t\t\t\timmediate |= 0xFF000000;\n\t\t\t}\n\t\t\timmediate <<= 2;\n\t\t\tvar link = instruction & 0x01000000;\n\t\t\tif (link) {\n\t\t\t\top = this.armCompiler.constructBL(immediate, condOp);\n\t\t\t} else {\n\t\t\t\top = this.armCompiler.constructB(immediate, condOp);\n\t\t\t}\n\t\t\top.writesPC = true;\n\t\t\top.fixedJump = true;\n\t\t\tbreak;\n\t\tcase 0x0C000000:\n\t\t\t// Coprocessor data transfer\n\t\t\tvar load = instruction & 0x00100000;\n\t\t\tvar w = instruction & 0x00200000;\n\t\t\tvar user = instruction & 0x00400000;\n\t\t\tvar u = instruction & 0x00800000;\n\t\t\tvar p = instruction & 0x01000000;\n\t\t\tvar rn = (instruction & 0x000F0000) >> 16;\n\t\t\tvar crd = (instruction & 0x0000F000) >> 12;\n\t\t\tvar cpnum = (instruction & 0x00000F00) >> 8;\n\t\t\tvar immediate = instruction & 0x000000FF;\n\t\t\tvar cond = (instruction >> 28) & 0xf;\n\t\t\tvar condOp = this.conds[cond];\n\n\t\t\t// VPUSH, VPOP\n\t\t\tif ((instruction & 0x0fbf0f00) == 0x0d2d0a00) {\n\t\t\t\top = this.armCompiler.constructVPUSH(condOp, (crd<<1)|(user?1:0), immediate, true);\n\t\t\t}\n\t\t\telse if ((instruction & 0x0fbf0f00) == 0x0d2d0b00) {\n\t\t\t\top = this.armCompiler.constructVPUSH(condOp, ((user?16:0)|crd)*2, immediate, false);\n\t\t\t}\n\t\t\telse if ((instruction & 0x0fbf0f00) == 0x0cbd0a00) {\n\t\t\t\top = this.armCompiler.constructVPOP(condOp, (crd<<1)|(user?1:0), immediate, true);\n\t\t\t}\n\t\t\telse if ((instruction & 0x0fbf0f00) == 0x0cbd0b00) {\n\t\t\t\top = this.armCompiler.constructVPOP(condOp, ((user?16:0)|crd)*2, immediate, false);\n\t\t\t}\n\t\t\t// VLDR, VSTR\n\t\t\t// https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/VSTR?lang=en\n\t\t\telse if ((instruction & 0x0f200f00) == 0x0d000a00) {\n\t\t\t\timmediate *= 4;\n\t\t\t\tif (!u) immediate = -immediate;\n\t\t\t\tvar overlap = false;\n\t\t\t\tvar d = (crd<<1)|(user?1:0);\n\t\n\t\t\t\tvar address : AddressFunction;\n\t\t\t\tif (w) {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4Writeback(immediate, offset, rn, overlap);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4(immediate, rn);\n\t\t\t\t}\n\t\t\t\tif (load) {\n\t\t\t\t\top = this.armCompiler.constructVLDR(condOp, d, address, true);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructVSTR(condOp, d, address, true);\n\t\t\t\t}\n\t\t\t} else if ((instruction & 0x0f200f00) == 0x0d000b00) {\n\t\t\t\timmediate *= 4;\n\t\t\t\tif (!u) immediate = -immediate;\n\t\t\t\tvar overlap = false;\n\t\t\t\tvar d = ((user?16:0)|crd)*2;\n\t\n\t\t\t\tvar address : AddressFunction;\n\t\t\t\tif (w) {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4Writeback(immediate, offset, rn, overlap);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4(immediate, rn);\n\t\t\t\t}\n\t\t\t\tif (load) {\n\t\t\t\t\top = this.armCompiler.constructVLDR(condOp, d, address, false);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructVSTR(condOp, d, address, false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0E000000:\n\t\t\t// Coprocessor data operation/SWI\n\t\t\tif ((instruction & 0x0F000000) == 0x0F000000) {\n\t\t\t\t// SWI\n\t\t\t\tvar immediate = (instruction & 0x00FFFFFF);\n\t\t\t\top = this.armCompiler.constructSWI(immediate, condOp);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VCVT, VCVTR, VCVT\n\t\t\t// https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/VCVT--VCVTR--between-floating-point-and-integer--Floating-point-\n\t\t\t/*\n\t\t\tif opc2 != '000' && !(opc2 IN \"10x\") then SEE \"Related encodings\";\n\t\t\tto_integer = (opc2<2> == '1'); dp_operation = (sz == 1);\n\t\t\tif to_integer then\n\t\t\t\tunsigned = (opc2<0> == '0'); round_zero = (op == '1');\n\t\t\t\td = UInt(Vd:D); m = if dp_operation then UInt(M:Vm) else UInt(Vm:M);\n\t\t\telse\n\t\t\t\tunsigned = (op == '0'); round_nearest = FALSE; // FALSE selects FPSCR rounding\n\t\t\t\tm = UInt(Vm:M); d = if dp_operation then UInt(D:Vd) else UInt(Vd:D);\n\t\t\t*/\n\t\t\telse if ((instruction & 0x0FB80E50) == 0x0EB80A40) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst opc2 = (instruction >> 16) & 0x7;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst op0 = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0xf;\n\t\t\t\tconst to_integer = opc2 & 0x4;\n\t\t\t\tconst dp_operation = sz != 0;\n\t\t\t\tconst unsigned = to_integer ? opc2 & 0x1 : 0;\n\t\t\t\tconst round_zero = op0 != 0;\n\t\t\t\tconst round_nearest = false;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\t//console.log(\"VCVT\", d, m, opc2, to_integer, dp_operation, unsigned, round_zero, round_nearest);\n\t\t\t\top = this.armCompiler.constructVCVT(condOp, d, m, to_integer, dp_operation, unsigned, round_zero, round_nearest);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VCVT f64/f32\n\t\t\telse if ((instruction & 0x0FBF0ED0) == 0x0EB70AC0) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0xf;\n\t\t\t\tconst double_to_single = sz != 0;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\top = this.armCompiler.constructVCVTF(condOp, d, m, double_to_single);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// 3-op floating point vector instructions (VADD, etc)\n\t\t\telse if ((instruction & 0x0FA00E10) == 0x0E200A00) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst N = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst opcode = (instruction & 0x0F00000) >> 20;\n\t\t\t\tconst Vn = (instruction & 0x000F0000) >> 16;\n\t\t\t\tconst Vd = (instruction & 0x0000F000) >> 12;\n\t\t\t\tconst opcode2 = (instruction & 0b11100000) >> 5;\n\t\t\t\tconst Vm = instruction & 0x0000000F;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\tconst n = sz ? (N?16:0)|Vn : (Vn<<1)|(N?1:0);\n\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.armCompiler.constructVFP3Register(condOp, opcode, n, d, sz, opcode2, m);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VDIV - https://developer.arm.com/documentation/ddi0597/2023-12/SIMD-FP-Instructions/VDIV--Divide-?lang=en\n\t\t\telse if ((instruction & 0x0FB00C50) == 0x0E800800) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vn = (instruction >> 16) & 0xf;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst size = (instruction >> 8) & 0x3;\n\t\t\t\tconst N = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0xf;\n\t\t\t\t/*\n\t\t\t\tcase size of\n\t\t\t\twhen '01' esize = 16; d = UInt(Vd:D); n = UInt(Vn:N); m = UInt(Vm:M);\n\t\t\t\twhen '10' esize = 32; d = UInt(Vd:D); n = UInt(Vn:N); m = UInt(Vm:M);\n\t\t\t\twhen '11' esize = 64; d = UInt(D:Vd); n = UInt(N:Vn); m = UInt(M:Vm);\n\t\t\t\t*/\n\t\t\t\tconst d = size==3 ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = size==3 ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\tconst n = size==3 ? (N?16:0)|Vn : (Vn<<1)|(N?1:0);\n\t\t\t\top = this.armCompiler.constructVFP3Register(condOp, 8, n, d, size==3, 0, m);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// 2-op floating point vector instructions (VCMP, etc)\n\t\t\telse if ((instruction & 0x0FBF0E50) == 0x0EB40A40) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst E = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0x0000000F;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\t\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.armCompiler.constructVCMP(condOp, d, Vd, sz, E, m, Vm);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VCMP #0\n\t\t\telse if ((instruction & 0x0FBF0EFF) == 0x0EB50A40) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst E = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0x0000000F;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\t\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.armCompiler.constructVCMP0(condOp, d, Vd, sz, E, m, Vm);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// vmrs apsr_nzcv, fpscr (ignore, we always call this after CMP)\n\t\t\telse if (instruction == 0xeef1fa10) {\n\t\t\t\top = this.armCompiler.constructNOP();\n\t\t\t}\n\t\t\t// VMOV - https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/VMOV--between-ARM-core-register-and-single-precision-register-\n\t\t\telse if ((instruction & 0x0FE00F10) == 0x0E000A10) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst opc1 = (instruction >> 20) & 0x1;\n\t\t\t\tconst Vn = (instruction >> 16) & 0xf;\n\t\t\t\tconst Rt = (instruction >> 12) & 0xf;\n\t\t\t\tconst N = (instruction >> 7) & 0x1;\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\t//console.log(\"VMOV\", instruction.toString(16), opc1, Vn, Rt, N);\n\t\t\t\top = this.armCompiler.constructVMOV(condOp, opc1, (Vn<<1)|(N?1:0), Rt);\n\t\t\t}\n\t\t\t// vmov.32 dn[i], rn\n\t\t\telse if (instruction == 0xee000b10) {\n\t\t\t\top = this.armCompiler.constructVMOV(condOp, false, 0, 0);\n\t\t\t}\n\t\t\telse if (instruction == 0xee201b10) {\n\t\t\t\top = this.armCompiler.constructVMOV(condOp, false, 1, 1);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new EmuHalt('Bad opcode: 0x' + instruction.toString(16));\n\t\t}\n\t}\n\n\top.execMode = ARMMode.MODE_ARM;\n\top.fixedJump = op.fixedJump || false;\n\treturn op;\n};\n\nARMCore.prototype.compileThumb = function(instruction) {\n\tvar op = this.badOp(instruction & 0xFFFF);\n\tvar cpu = this;\n\tvar gprs = this.gprs;\n\tif ((instruction & 0xFC00) == 0x4000) {\n\t\t// Data-processing register\n\t\tvar rm = (instruction & 0x0038) >> 3;\n\t\tvar rd = instruction & 0x0007;\n\t\tswitch (instruction & 0x03C0) {\n\t\tcase 0x0000:\n\t\t\t// AND\n\t\t\top = this.thumbCompiler.constructAND(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0040:\n\t\t\t// EOR\n\t\t\top = this.thumbCompiler.constructEOR(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0080:\n\t\t\t// LSL(2)\n\t\t\top = this.thumbCompiler.constructLSL2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x00C0:\n\t\t\t// LSR(2)\n\t\t\top = this.thumbCompiler.constructLSR2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0100:\n\t\t\t// ASR(2)\n\t\t\top = this.thumbCompiler.constructASR2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0140:\n\t\t\t// ADC\n\t\t\top = this.thumbCompiler.constructADC(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0180:\n\t\t\t// SBC\n\t\t\top = this.thumbCompiler.constructSBC(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x01C0:\n\t\t\t// ROR\n\t\t\top = this.thumbCompiler.constructROR(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// TST\n\t\t\top = this.thumbCompiler.constructTST(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0240:\n\t\t\t// NEG\n\t\t\top = this.thumbCompiler.constructNEG(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0280:\n\t\t\t// CMP(2)\n\t\t\top = this.thumbCompiler.constructCMP2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x02C0:\n\t\t\t// CMN\n\t\t\top = this.thumbCompiler.constructCMN(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0300:\n\t\t\t// ORR\n\t\t\top = this.thumbCompiler.constructORR(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0340:\n\t\t\t// MUL\n\t\t\top = this.thumbCompiler.constructMUL(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0380:\n\t\t\t// BIC\n\t\t\top = this.thumbCompiler.constructBIC(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x03C0:\n\t\t\t// MVN\n\t\t\top = this.thumbCompiler.constructMVN(rd, rm);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xFC00) == 0x4400) {\n\t\t// Special data processing / branch/exchange instruction set\n\t\tvar rm = (instruction & 0x0078) >> 3;\n\t\tvar rn = instruction & 0x0007;\n\t\tvar h1 = instruction & 0x0080;\n\t\tvar rd = rn | (h1 >> 4);\n\t\tswitch (instruction & 0x0300) {\n\t\tcase 0x0000:\n\t\t\t// ADD(4)\n\t\t\top = this.thumbCompiler.constructADD4(rd, rm)\n\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\tbreak;\n\t\tcase 0x0100:\n\t\t\t// CMP(3)\n\t\t\top = this.thumbCompiler.constructCMP3(rd, rm);\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// MOV(3)\n\t\t\top = this.thumbCompiler.constructMOV3(rd, rm);\n\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\tbreak;\n\t\tcase 0x0300:\n\t\t\t// BX\n\t\t\top = this.thumbCompiler.constructBX(rd, rm);\n\t\t\top.writesPC = true;\n\t\t\top.fixedJump = false;\n\t\t\tbreak;\n\t\t}\n\t} else if ((instruction & 0xF800) == 0x1800) {\n\t\t// Add/subtract\n\t\tvar rm = (instruction & 0x01C0) >> 6;\n\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\tvar rd = instruction & 0x0007;\n\t\tswitch (instruction & 0x0600) {\n\t\tcase 0x0000:\n\t\t\t// ADD(3)\n\t\t\top = this.thumbCompiler.constructADD3(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// SUB(3)\n\t\t\top = this.thumbCompiler.constructSUB3(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0400:\n\t\t\tvar immediate = (instruction & 0x01C0) >> 6;\n\t\t\tif (immediate) {\n\t\t\t\t// ADD(1)\n\t\t\t\top = this.thumbCompiler.constructADD1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// MOV(2)\n\t\t\t\top = this.thumbCompiler.constructMOV2(rd, rn, rm);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0600:\n\t\t\t// SUB(1)\n\t\t\tvar immediate = (instruction & 0x01C0) >> 6;\n\t\t\top = this.thumbCompiler.constructSUB1(rd, rn, immediate);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if (!(instruction & 0xE000)) {\n\t\t// Shift by immediate\n\t\tvar rd = instruction & 0x0007;\n\t\tvar rm = (instruction & 0x0038) >> 3;\n\t\tvar immediate = (instruction & 0x07C0) >> 6;\n\t\tswitch (instruction & 0x1800) {\n\t\tcase 0x0000:\n\t\t\t// LSL(1)\n\t\t\top = this.thumbCompiler.constructLSL1(rd, rm, immediate);\n\t\t\tbreak;\n\t\tcase 0x0800:\n\t\t\t// LSR(1)\n\t\t\top = this.thumbCompiler.constructLSR1(rd, rm, immediate);\n\t\t\tbreak;\n\t\tcase 0x1000:\n\t\t\t// ASR(1)\n\t\t\top = this.thumbCompiler.constructASR1(rd, rm, immediate);\n\t\t\tbreak;\n\t\tcase 0x1800:\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xE000) == 0x2000) {\n\t\t// Add/subtract/compare/move immediate\n\t\tvar immediate = instruction & 0x00FF;\n\t\tvar rn = (instruction & 0x0700) >> 8;\n\t\tswitch (instruction & 0x1800) {\n\t\tcase 0x0000:\n\t\t\t// MOV(1)\n\t\t\top = this.thumbCompiler.constructMOV1(rn, immediate);\n\t\t\tbreak;\n\t\tcase 0x0800:\n\t\t\t// CMP(1)\n\t\t\top = this.thumbCompiler.constructCMP1(rn, immediate);\n\t\t\tbreak;\n\t\tcase 0x1000:\n\t\t\t// ADD(2)\n\t\t\top = this.thumbCompiler.constructADD2(rn, immediate);\n\t\t\tbreak;\n\t\tcase 0x1800:\n\t\t\t// SUB(2)\n\t\t\top = this.thumbCompiler.constructSUB2(rn, immediate);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xF800) == 0x4800) {\n\t\t// LDR(3)\n\t\tvar rd = (instruction & 0x0700) >> 8;\n\t\tvar immediate = (instruction & 0x00FF) << 2;\n\t\top = this.thumbCompiler.constructLDR3(rd, immediate);\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xF000) == 0x5000) {\n\t\t// Load and store with relative offset\n\t\tvar rd = instruction & 0x0007;\n\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\tvar rm = (instruction & 0x01C0) >> 6;\n\t\tvar opcode = instruction & 0x0E00;\n\t\tswitch (opcode) {\n\t\tcase 0x0000:\n\t\t\t// STR(2)\n\t\t\top = this.thumbCompiler.constructSTR2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// STRH(2)\n\t\t\top = this.thumbCompiler.constructSTRH2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0400:\n\t\t\t// STRB(2)\n\t\t\top = this.thumbCompiler.constructSTRB2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0600:\n\t\t\t// LDRSB\n\t\t\top = this.thumbCompiler.constructLDRSB(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0800:\n\t\t\t// LDR(2)\n\t\t\top = this.thumbCompiler.constructLDR2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0A00:\n\t\t\t// LDRH(2)\n\t\t\top = this.thumbCompiler.constructLDRH2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0C00:\n\t\t\t// LDRB(2)\n\t\t\top = this.thumbCompiler.constructLDRB2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0E00:\n\t\t\t// LDRSH\n\t\t\top = this.thumbCompiler.constructLDRSH(rd, rn, rm);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xE000) == 0x6000) {\n\t\t// Load and store with immediate offset\n\t\tvar rd = instruction & 0x0007;\n\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\tvar immediate = (instruction & 0x07C0) >> 4;\n\t\tvar b = instruction & 0x1000;\n\t\tif (b) {\n\t\t\timmediate >>= 2;\n\t\t}\n\t\tvar load = instruction & 0x0800;\n\t\tif (load) {\n\t\t\tif (b) {\n\t\t\t\t// LDRB(1)\n\t\t\t\top = this.thumbCompiler.constructLDRB1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// LDR(1)\n\t\t\t\top = this.thumbCompiler.constructLDR1(rd, rn, immediate);\n\t\t\t}\n\t\t} else {\n\t\t\tif (b) {\n\t\t\t\t// STRB(1)\n\t\t\t\top = this.thumbCompiler.constructSTRB1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// STR(1)\n\t\t\t\top = this.thumbCompiler.constructSTR1(rd, rn, immediate);\n\t\t\t}\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xF600) == 0xB400) {\n\t\t// Push and pop registers\n\t\tvar r = !!(instruction & 0x0100);\n\t\tvar rs = instruction & 0x00FF;\n\t\tif (instruction & 0x0800) {\n\t\t\t// POP\n\t\t\top = this.thumbCompiler.constructPOP(rs, r);\n\t\t\top.writesPC = r;\n\t\t\top.fixedJump = false;\n\t\t} else {\n\t\t\t// PUSH\n\t\t\top = this.thumbCompiler.constructPUSH(rs, r);\n\t\t\top.writesPC = false;\n\t\t}\n\t} else if (instruction & 0x8000) {\n\t\tswitch (instruction & 0x7000) {\n\t\tcase 0x0000:\n\t\t\t// Load and store halfword\n\t\t\tvar rd = instruction & 0x0007;\n\t\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\t\tvar immediate = (instruction & 0x07C0) >> 5;\n\t\t\tif (instruction & 0x0800) {\n\t\t\t\t// LDRH(1)\n\t\t\t\top = this.thumbCompiler.constructLDRH1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// STRH(1)\n\t\t\t\top = this.thumbCompiler.constructSTRH1(rd, rn, immediate);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x1000:\n\t\t\t// SP-relative load and store\n\t\t\tvar rd = (instruction & 0x0700) >> 8;\n\t\t\tvar immediate = (instruction & 0x00FF) << 2;\n\t\t\tvar load = instruction & 0x0800;\n\t\t\tif (load) {\n\t\t\t\t// LDR(4)\n\t\t\t\top = this.thumbCompiler.constructLDR4(rd, immediate);\n\t\t\t} else {\n\t\t\t\t// STR(3)\n\t\t\t\top = this.thumbCompiler.constructSTR3(rd, immediate);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x2000:\n\t\t\t// Load address\n\t\t\tvar rd = (instruction & 0x0700) >> 8;\n\t\t\tvar immediate = (instruction & 0x00FF) << 2;\n\t\t\tif (instruction & 0x0800) {\n\t\t\t\t// ADD(6)\n\t\t\t\top = this.thumbCompiler.constructADD6(rd, immediate);\n\t\t\t} else {\n\t\t\t\t// ADD(5)\n\t\t\t\top = this.thumbCompiler.constructADD5(rd, immediate);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x3000:\n\t\t\t// Miscellaneous\n\t\t\tif (!(instruction & 0x0F00)) {\n\t\t\t\t// Adjust stack pointer\n\t\t\t\t// ADD(7)/SUB(4)\n\t\t\t\tvar b = instruction & 0x0080;\n\t\t\t\tvar immediate = (instruction & 0x7F) << 2;\n\t\t\t\tif (b) {\n\t\t\t\t\timmediate = -immediate;\n\t\t\t\t}\n\t\t\t\top = this.thumbCompiler.constructADD7(immediate)\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x4000:\n\t\t\t// Multiple load and store\n\t\t\tvar rn = (instruction & 0x0700) >> 8;\n\t\t\tvar rs = instruction & 0x00FF;\n\t\t\tif (instruction & 0x0800) {\n\t\t\t\t// LDMIA\n\t\t\t\top = this.thumbCompiler.constructLDMIA(rn, rs);\n\t\t\t} else {\n\t\t\t\t// STMIA\n\t\t\t\top = this.thumbCompiler.constructSTMIA(rn, rs);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x5000:\n\t\t\t// Conditional branch\n\t\t\tvar cond = (instruction & 0x0F00) >> 8;\n\t\t\tvar immediate = (instruction & 0x00FF);\n\t\t\tif (cond == 0xF) {\n\t\t\t\t// SWI\n\t\t\t\top = this.thumbCompiler.constructSWI(immediate);\n\t\t\t\top.writesPC = false;\n\t\t\t} else {\n\t\t\t\t// B(1)\n\t\t\t\tif (instruction & 0x0080) {\n\t\t\t\t\timmediate |= 0xFFFFFF00;\n\t\t\t\t}\n\t\t\t\timmediate <<= 1;\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.thumbCompiler.constructB1(immediate, condOp);\n\t\t\t\top.writesPC = true;\n\t\t\t\top.fixedJump = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x6000:\n\t\tcase 0x7000:\n\t\t\t// BL(X)\n\t\t\tvar immediate = instruction & 0x07FF;\n\t\t\tvar h = instruction & 0x1800;\n\t\t\tswitch (h) {\n\t\t\tcase 0x0000:\n\t\t\t\t// B(2)\n\t\t\t\tif (immediate & 0x0400) {\n\t\t\t\t\timmediate |= 0xFFFFF800;\n\t\t\t\t}\n\t\t\t\timmediate <<= 1;\n\t\t\t\top = this.thumbCompiler.constructB2(immediate);\n\t\t\t\top.writesPC = true;\n\t\t\t\top.fixedJump = true;\n\t\t\t\tbreak;\n\t\t\tcase 0x0800:\n\t\t\t\t// BLX (ARMv5T)\n\t\t\t\t/*op = function() {\n\t\t\t\t\tvar pc = gprs[ARMRegs.PC];\n\t\t\t\t\tgprs[ARMRegs.PC] = (gprs[ARMRegs.LR] + (immediate << 1)) & 0xFFFFFFFC;\n\t\t\t\t\tgprs[ARMRegs.LR] = pc - 1;\n\t\t\t\t\tcpu.switchExecMode(cpu.MODE_ARM);\n\t\t\t\t}*/\n\t\t\t\tbreak;\n\t\t\tcase 0x1000:\n\t\t\t\t// BL(1)\n\t\t\t\tif (immediate & 0x0400) {\n\t\t\t\t\timmediate |= 0xFFFFFC00;\n\t\t\t\t}\n\t\t\t\timmediate <<= 12;\n\t\t\t\top = this.thumbCompiler.constructBL1(immediate);\n\t\t\t\top.writesPC = false;\n\t\t\t\tbreak;\n\t\t\tcase 0x1800:\n\t\t\t\t// BL(2)\n\t\t\t\top = this.thumbCompiler.constructBL2(immediate);\n\t\t\t\top.writesPC = true;\n\t\t\t\top.fixedJump = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new EmuHalt(\"Undefined instruction: 0x\" + instruction.toString(16));\n\t\t}\n\t} else {\n\t\tthrow new EmuHalt('Bad opcode: 0x' + instruction.toString(16));\n\t}\n\n\top.execMode = ARMMode.MODE_THUMB;\n\top.fixedJump = op.fixedJump || false;\n\t//console.log(hex(instruction), op);\n\treturn op;\n};\n\n///////////////////////////////////////////////////////////////////////////\n\ntype ARMBus = Bus & Bus32;\n\nexport class ARM32CPU implements CPU, InstructionBased, ARMMMUInterface, ARMIRQInterface, SavesState {\n\n\tcore : ARMCoreType;\n\tbus : ARMBus;\n\tmemory : ARMMemoryRegion[];\n\tf64arr = new Float64Array(1);\n\tf32arr = new Float32Array(this.f64arr.buffer);\n\ti32arr = new Int32Array(this.f64arr.buffer);\n\n\tBASE_OFFSET = 24;\n\tOFFSET_MASK = 0x00FFFFFF;\n\n\tconstructor() {\n\t\tthis.core = new ARMCore();\n\t\tthis.core.irq = this;\n\t\tthis.core.mmu = this;\n\t\tthis.resetMemory();\n\t}\n\tresetMemory() {\n\t\tthis.memory = []; // TODO\n\t\tfor (var i=0; i<256; i++) {\n\t\t\t// TODO: constant\n\t\t\tconst bits = 10;\n\t\t\tthis.memory[i] = {\n\t\t\t\tPAGE_MASK: (2 << bits) - 1,\n\t\t\t\tICACHE_PAGE_BITS: bits,\n\t\t\t\ticache: new Array() // size >> (bits + 1))\n\t\t\t }; // TODO?\n\t\t}\n\t}\n\tadvanceInsn() : number {\n\t\tvar n = this.core.cycles;\n\t\tthis.core.step();\n\t\tn -= this.core.cycles;\n\t\treturn n > 0 ? n : 1;\n\t}\n\tgetPC(): number {\n\t\treturn this.core.gprs[15] - this.core.instructionWidth;\n\t}\n\tgetSP(): number {\n\t\treturn this.core.gprs[13];\n\t}\n\tisStable(): boolean {\n\t\treturn true; // TODO?\n\t}\n\tconnectMemoryBus(bus: ARMBus): void {\n\t\tthis.bus = bus;\n\t}\n\treset(): void {\n\t\tthis.resetMemory();\n\t\tconst resetVector = this.load32(0);\n\t\tthis.core.resetCPU(resetVector);\n\t}\n\tsaveState() : ARMCoreState {\n\t\treturn this.core.freeze();\n\t}\n\tloadState(state: ARMCoreState): void {\n\t\tthis.core.defrost(state);\n\t}\n\n\tload8(a: number): number {\n\t\treturn (this.bus.read(a) << 24) >> 24;\n\t}\n\tloadU8(a: number): number {\n\t\treturn this.bus.read(a) & 0xff;\n\t}\n\tload16(a: number): number {\n\t\treturn (this.loadU16(a) << 16) >> 16;\n\t}\n\tloadU16(a: number): number {\n\t\treturn this.bus.read(a) | (this.bus.read(a+1) << 8);\n\t}\n\tload32(a: number): number {\n\t\tvar v = this.bus.read32(a);\n\t\treturn v;\n\t}\n\t// TODO: memory.invalidatePage(maskedOffset);\n\tstore8(a: number, v: number): void {\n\t\tthis.bus.write(a, v & 0xff);\n\t}\n\tstore16(a: number, v: number): void {\n\t\tthis.bus.write(a, v & 0xff);\n\t\tthis.bus.write(a+1, (v >> 8) & 0xff);\n\t}\n\tstore32(a: number, v: number): void {\n\t\tthis.bus.write32(a, v);\n\t}\n\t// TODO\n\twait(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twait32(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twaitSeq32(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twaitMul(rs: number): void {\n if (((rs & 0xFFFFFF00) == 0xFFFFFF00) || !(rs & 0xFFFFFF00)) {\n\t\t\tthis.core.cycles += 1;\n\t\t} else if (((rs & 0xFFFF0000) == 0xFFFF0000) || !(rs & 0xFFFF0000)) {\n\t\t\t\tthis.core.cycles += 2;\n\t\t} else if (((rs & 0xFF000000) == 0xFF000000) || !(rs & 0xFF000000)) {\n\t\t\t\tthis.core.cycles += 3;\n\t\t} else {\n\t\t\t\tthis.core.cycles += 4;\n\t\t}\n\t}\n\twaitMulti32(a: number, total: number): void {\n\t\tthis.core.cycles += 2;\n\t}\n\twaitPrefetch(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twaitPrefetch32(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\taddressToPage(region: number, address: number) : number {\n return address >> this.memory[region].ICACHE_PAGE_BITS;\n\t}\n\taccessPage(region: number, pageId: number): ARMMemoryPage {\n\t\tvar memory = this.memory[region];\n\t\tvar page = memory.icache[pageId];\n\t\tif (!page || page.invalid) {\n\t\t\t\tpage = {\n\t\t\t\t\t\tthumb: new Array(1 << (memory.ICACHE_PAGE_BITS)),\n\t\t\t\t\t\tarm: new Array(1 << memory.ICACHE_PAGE_BITS - 1),\n\t\t\t\t\t\tinvalid: false\n\t\t\t\t}\n\t\t\t\tmemory.icache[pageId] = page;\n\t\t}\n\t\treturn page;\n\t}\n\n\tswi(opcode: number): void {\n\t\tthis.core.raiseTrap();\n\t}\n\tswi32(opcode: number): void {\n this.swi(opcode >> 16);\n\t}\n\tclear() : void {\n\t}\n\tupdateTimers() : void {\n\t}\n\ttestIRQ() : void {\n\t}\n\n\tisThumb() : boolean {\n\t\treturn this.core.instructionWidth == 2;\n\t}\n\tgetDebugTree() {\n\t\treturn {\n\t\t\tstate: this.saveState(),\n\t\t\tmmu: this.core.mmu\n\t\t};\n\t}\n}\n", "/*\n * Copyright (c) 2024 Steven E. Hugg\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { ARM32CPU, ARMCoreState } from \"../common/cpu/ARM\";\nimport { BasicScanlineMachine, Bus32, HasSerialIO, SerialEvent, SerialIOInterface } from \"../common/devices\";\nimport { newAddressDecoder, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt } from \"../common/emu\";\nimport { Debuggable, EmuState } from \"../common/baseplatform\";\nimport { hex, lpad } from \"../common/util\";\n\nvar GBA_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 0, 0x1],\n [Keys.B, 0, 0x2],\n [Keys.GP_A, 0, 0x1],\n [Keys.GP_B, 0, 0x2],\n [Keys.SELECT,0, 0x4],\n [Keys.START ,0, 0x8],\n [Keys.RIGHT, 0, 0x10],\n [Keys.LEFT, 0, 0x20],\n [Keys.UP, 0, 0x40],\n [Keys.DOWN, 0, 0x80],\n]);\n\nconst RAM_START = 0x0;\nconst RAM_SIZE = 0x100000;\nconst ROM_BASE = 0x0;\nconst IO_START = 0x4000000;\nconst IO_SIZE = 0x100;\nconst MAX_SERIAL_CHARS = 1000000;\n\nconst CPU_FREQ = 4000000; // 4 MHz\n\nconst ILLEGAL_OPCODE = 0xedededed;\n\nexport class ARM32Machine extends BasicScanlineMachine\n implements Debuggable, HasSerialIO, Bus32 {\n\n cpuFrequency = CPU_FREQ; // MHz\n canvasWidth = 160;\n numTotalScanlines = 256;\n numVisibleScanlines = 128;\n cpuCyclesPerLine = Math.floor(CPU_FREQ / (256*60));\n defaultROMSize = RAM_SIZE - ROM_BASE;\n sampleRate = 1;\n \n cpu: ARM32CPU = new ARM32CPU();\n ram = new Uint8Array(RAM_SIZE);\n ram16 = new Uint16Array(this.ram.buffer);\n ram32 = new Uint32Array(this.ram.buffer);\n pixels32 : Uint32Array;\n pixels8 : Uint8Array;\n rombase : number = ROM_BASE;\n brightness : number = 255;\n serial : SerialIOInterface;\n serialOut : SerialEvent[];\n serialIn : SerialEvent[];\n ioregs = new Uint8Array(IO_SIZE);\n ioregs32 = new Uint32Array(this.ioregs.buffer);\n\n constructor() {\n super();\n this.connectCPUMemoryBus(this);\n this.handler = newKeyboardHandler(this.inputs, GBA_KEYCODE_MAP);\n }\n\n connectVideo(pixels:Uint32Array) : void {\n super.connectVideo(pixels);\n this.pixels32 = pixels;\n this.pixels8 = new Uint8Array(pixels.buffer);\n }\n\n connectSerialIO(serial: SerialIOInterface) {\n this.serial = serial;\n }\n\n loadROM(rom: Uint8Array) {\n super.loadROM(rom);\n }\n\n reset() {\n this.ram.fill(0);\n if (this.rom) {\n this.ram.set(this.rom, this.rombase);\n }\n super.reset();\n this.serialOut = [];\n this.serialIn = [];\n }\n\n // TODO: 32-bit bus?\n\n read = newAddressDecoder([\n [RAM_START, RAM_START+RAM_SIZE-1, RAM_SIZE-1, (a) => {\n return this.ram[a];\n }],\n [IO_START, IO_START+IO_SIZE-1, IO_SIZE-1, (a, v) => {\n return this.readIO(a);\n }],\n ], {defaultval: ILLEGAL_OPCODE & 0xff});\n\n write = newAddressDecoder([\n [RAM_START, RAM_START+RAM_SIZE-1, RAM_SIZE-1, (a, v) => {\n this.ram[a] = v;\n }],\n [IO_START, IO_START+IO_SIZE-1, IO_SIZE-1, (a, v) => {\n this.writeIO(a, v);\n }],\n ]);\n\n read32 = (a) => {\n if (a >= RAM_START && a < RAM_SIZE && (a & 3) == 0) {\n return this.ram32[a >> 2];\n } else {\n return this.read(a) | (this.read(a+1)<<8) | (this.read(a+2)<<16) | (this.read(a+3)<<24);\n }\n };\n\n write32 = (a, v) => {\n if (a >= RAM_START && a < RAM_SIZE && (a & 3) == 0) {\n this.ram32[a >> 2] = v;\n } else {\n this.write(a, v & 0xff);\n this.write(a+1, (v>>8) & 0xff);\n this.write(a+2, (v>>16) & 0xff);\n this.write(a+3, (v>>24) & 0xff);\n }\n }\n\n readAddress(a : number) : number {\n if (a >= RAM_START && a < RAM_START+RAM_SIZE) return this.read(a);\n else return ILLEGAL_OPCODE;\n }\n\n readIO(a : number) : number {\n switch (a) {\n case 0x0:\n return this.inputs[0];\n case 0x20:\n return this.getRasterY() & 0xff;\n case 0x21:\n return this.getRasterY() >> 8;\n case 0x24:\n return this.getRasterX();\n case 0x25:\n return this.getRasterX() >> 8;\n case 0x40:\n return (this.serial.byteAvailable() ? 0x80 : 0) | (this.serial.clearToSend() ? 0x40 : 0);\n case 0x44:\n let evin = this.serialIn.shift();\n if (evin != null) {\n this.serialOut.push(evin);\n return evin.value;\n } else\n return 0;\n default:\n return 0;\n }\n }\n\n writeIO(a : number, v : number) : void {\n this.ioregs[a] = v;\n switch (a) {\n case 0x48:\n if (this.serialOut.length < MAX_SERIAL_CHARS) {\n this.serialOut.push({op:'write', value:v, nbits:8});\n }\n break;\n }\n }\n\n startScanline() {\n }\n\n drawScanline() {\n }\n \n postFrame() {\n var p32 = this.pixels32;\n const vidbase = this.ioregs32[0x80 >> 2];\n var vbase = (vidbase >> 1) & 0xfffff;\n var mask = this.brightness << 24;\n for (var i=0; i\n // 000rrrrr000ggggg000bbbbb00011111111\n p32[i] = mask | ((col&31)<<3) | (((col>>5)&31)<<11) | (((col>>10)&31)<<19);\n }\n }\n\n getDebugCategories() {\n return ['CPU', 'Stack', 'FPU'];\n }\n\n getDebugInfo?(category: string, state: EmuState) : string {\n switch (category) {\n case 'Stack':\n var s = '';\n var c = state.c as ARMCoreState;\n var sp = c.gprs[13];\n var fp = c.gprs[11];\n // dump stack using ram32\n for (var i=0; i<16; i++) {\n s += hex(sp,8) + ' ' + hex(this.ram32[(sp-RAM_START)>>2],8);\n if (sp == fp) s += ' FP';\n s += '\\n';\n sp += 4;\n if (sp >= RAM_START+RAM_SIZE) break;\n }\n return s;\n case 'CPU':\n var s = '';\n var c = state.c as ARMCoreState;\n const EXEC_MODE = {2:'Thumb',4:'ARM'};\n const REGNAMES = {15:'PC',14:'LR',13:'SP',12:'IP',11:'FP',9:'SB'};\n for (var i=0; i<8; i++) {\n let j = i+8;\n s += lpad('r'+i, 5) + ' ' + hex(c.gprs[i],8) + ' ';\n s += lpad('r'+j, 5) + ' ' + hex(c.gprs[j],8) + lpad(REGNAMES[j]||'',3) + '\\n';\n }\n s += 'Flags ';\n s += c.cpsrN ? \" N\" : \" -\";\n s += c.cpsrV ? \" V\" : \" -\";\n s += c.cpsrF ? \" F\" : \" -\";\n s += c.cpsrZ ? \" Z\" : \" -\";\n s += c.cpsrC ? \" C\" : \" -\";\n s += c.cpsrI ? \" I\" : \" -\";\n s += '\\n';\n s += 'MODE ' + EXEC_MODE[c.instructionWidth] + ' ' + MODE_NAMES[c.mode] + '\\n';\n s += 'SPSR ' + hex(c.spsr,8) + '\\n';\n s += 'cycl ' + c.cycles + '\\n';\n return s;\n case 'FPU':\n var s = '';\n var c = state.c as ARMCoreState;\n for (var i=0; i<16; i++) {\n //let j = i+16;\n s += lpad('s'+i, 5) + ' ' + hex(c.ifprs[i],8) + ' ' + c.sfprs[i].toPrecision(6);\n if (i & 1) {\n s += lpad('d'+(i>>1), 5) + ' ' + c.dfprs[i>>1].toPrecision(12);\n }\n s += '\\n';\n //s += lpad('s'+j, 5) + ' ' + lpad(c.sfprs[j]+'',8) + '\\n';\n }\n return s;\n }\n }\n\n saveState() {\n var state = super.saveState() as any;\n state.serial = {\n sin: this.serialIn.slice(0),\n sout : this.serialOut.slice(0)\n }\n return state;\n }\n loadState(state) {\n super.loadState(state);\n this.serialIn = state.serial.sin;\n this.serialOut = state.serial.sout;\n }\n}\n\nconst MODE_NAMES = {\n\t0x10: \"USER\",\n 0x11: \"FIQ\",\n 0x12: \"IRQ\",\n 0x13: \"SUPERVISOR\",\n 0x17: \"ABORT\",\n 0x1b: \"UNDEFINED\",\n 0x1f: \"SYSTEM\",\n};\n", "/*\n * Copyright (c) 2024 Steven E. Hugg\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { Platform, DisasmLine, Machine, BaseMachinePlatform, getToolForFilename_arm32 } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\nimport { loadScript } from \"../common/util\";\nimport { ARM32Machine } from \"../machine/arm32\";\n\ndeclare var cs : any; // Unicorn module\n\nconst ARM32_PRESETS = [\n { id: 'vidfill.c', name: 'Video Memory Fill' },\n];\n\nexport abstract class BaseARMMachinePlatform extends BaseMachinePlatform {\n\n //getOpcodeMetadata = getOpcodeMetadata_z80;\n getToolForFilename = getToolForFilename_arm32;\n getPresets() { return ARM32_PRESETS; }\n getDefaultExtensions() { return [\".c\", \".armips\", \".vasm\"]; }\n }\n \nclass ARM32Platform extends BaseARMMachinePlatform implements Platform {\n\n capstone_arm : any;\n capstone_thumb : any;\n\n async start() {\n super.start();\n console.log(\"Loading Capstone\");\n await loadScript('./lib/capstone-arm.min.js');\n this.capstone_arm = new cs.Capstone(cs.ARCH_ARM, cs.MODE_ARM);\n this.capstone_thumb = new cs.Capstone(cs.ARCH_ARM, cs.MODE_THUMB);\n }\n\n newMachine() { return new ARM32Machine(); }\n readAddress(a) { return this.machine.read(a); }\n getMemoryMap = function() { return { main:[\n {name:'ROM',start:0x0000000,size:0x100000,type:'ram'},\n {name:'I/O',start:0x4000000,size:0x100,type:'io'},\n ] } };\n getPlatformName() { return \"ARM7\"; }\n getDebugTree() {\n return {\n ...this.machine.cpu.getDebugTree(),\n dwarf: this.debugSymbols.debuginfo\n }\n }\n disassemble(pc:number, read:(addr:number)=>number) : DisasmLine {\n var is_thumb = this.machine.cpu.isThumb();\n var capstone = is_thumb ? this.capstone_thumb : this.capstone_arm;\n var buf = [];\n for (var i=0; i<4; i++) {\n buf[i] = read(pc+i);\n }\n var insns = capstone.disasm(buf, pc, 4);\n var i0 = insns && insns[0];\n if (i0) {\n return {\n nbytes: i0.size,\n line: i0.mnemonic + \" \" + i0.op_str,\n isaddr: i0.address > 0,\n iscall: i0.mnemonic == \"bl\" || i0.mnemonic == \"blx\"\n };\n } else {\n return {\n nbytes: 4,\n line: \"???\",\n isaddr: false\n };\n }\n }\n}\n\n////\n\nPLATFORMS['arm32'] = ARM32Platform;\n"], - "mappings": "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", + "sourcesContent": ["/*\nFrom: https://github.com/endrift/gbajs\n\nCopyright \u00A9 2012 \u2013 2013, Jeffrey Pfau\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGE.\n*/\n\nimport { Bus, Bus32, CPU, InstructionBased, SavesState } from \"../devices\";\nimport { EmuHalt } from \"../emu\";\nimport { hex } from \"../util\";\n\ninterface AddressFunction extends Function {\n writesPC? : boolean;\n fixedJump? : boolean;\n}\n\ninterface ARMIRQInterface {\n\tclear() : void;\n\tswi(opcode : number) : void;\n\tswi32(opcode : number) : void;\n\tupdateTimers() : void;\n\ttestIRQ() : void;\n}\n\ninterface ARMMemoryRegion {\n\tPAGE_MASK : number;\n\tICACHE_PAGE_BITS : number;\n\ticache : ARMMemoryPage[];\n}\n\ninterface ARMOperation {\n\tnext : ARMOperation;\n\tpage : ARMMemoryPage;\n\taddress : number;\n\topcode : number;\n}\n\ninterface ARMMemoryPage {\n\tarm : ARMOperation[];\n\tthumb : ARMOperation[];\n\tinvalid : boolean;\n}\n\ninterface ARMMMUInterface {\n\tmemory : ARMMemoryRegion[];\n\tBASE_OFFSET : number;\n\tOFFSET_MASK : number;\n\n\tload8(a: number) : number;\n\tloadU8(a: number) : number;\n\tload16(a: number) : number;\n\tloadU16(a: number) : number;\n\tload32(a: number) : number;\n\tstore8(a: number, v: number) : void;\n\tstore16(a: number, v: number) : void;\n\tstore32(a: number, v: number) : void;\n\n\twait(a: number) : void;\n\twait32(a: number) : void;\n\twaitSeq32(a: number) : void;\n\twaitMul(a: number) : void;\n\twaitMulti32(a: number, total: number) : void;\n\twaitPrefetch(a: number) : void;\n\twaitPrefetch32(a: number) : void;\n\n\taddressToPage(region: number, address: number) : number;\n\taccessPage(region: number, pageId: number) : ARMMemoryPage;\n}\n\nexport interface ARMCoreState {\n\tPC: number,\n\tSP: number,\n\tgprs: number[],\n\tmode: number,\n\tcpsrI: boolean,\n\tcpsrF: boolean,\n\tcpsrV: boolean,\n\tcpsrC: boolean,\n\tcpsrZ: boolean,\n\tcpsrN: boolean,\n\tbankedRegisters: number[][],\n\tspsr: number,\n\tbankedSPSRs: number[],\n\tsfprs: number[],\n\tdfprs: number[],\n\tifprs: number[],\n\tcycles: number,\n\tinstructionWidth: 2 | 4\n}\n\ninterface ARMCoreType {\n\tgprs: Int32Array;\n\tsfprs: Float32Array;\n\tdfprs: Float64Array;\n\tifprs: Int32Array;\n\tPC: number;\n\tSP: number;\n\tLR: number;\n\tcycles: number;\n\tmode: number;\n\tshifterOperand: number;\n\tshifterCarryOut: number|boolean;\n\tcpsrN: number|boolean;\n\tcpsrC: number|boolean;\n\tcpsrZ: number|boolean;\n\tcpsrV: number|boolean;\n\tcpsrI: number|boolean;\n\tcpsrF: number|boolean;\n\tspsr: number;\n\tmmu: ARMMMUInterface;\n\tirq : ARMIRQInterface;\n\tinstructionWidth: 2 | 4;\n\n\thasSPSR() : boolean;\n\tunpackCPSR(v : number) : void;\n\tswitchMode(mode : number) : void;\n\tswitchExecMode(mode : number) : void;\n\tpackCPSR() : number;\n\n\tstep() : void;\n\tresetCPU(startOffset : number) : void;\n\tfreeze() : ARMCoreState;\n\tdefrost(state: ARMCoreState) : void;\n\n\traiseIRQ() : void;\n\traiseTrap(irqType? : number) : void;\n}\n\nexport enum ARMMode {\n\tMODE_ARM = 0,\n\tMODE_THUMB = 1,\n\t\n\tMODE_USER = 0x10,\n\tMODE_FIQ = 0x11,\n\tMODE_IRQ = 0x12,\n\tMODE_SUPERVISOR = 0x13,\n\tMODE_ABORT = 0x17,\n\tMODE_UNDEFINED = 0x1B,\n\tMODE_SYSTEM = 0x1F\n}\n\nexport enum ARMRegs {\n\tSP = 13,\n\tLR = 14,\n\tPC = 15,\n}\n\nexport enum ARMConstants {\n\n\tBANK_NONE = 0,\n\tBANK_FIQ = 1,\n\tBANK_IRQ = 2,\n\tBANK_SUPERVISOR = 3,\n\tBANK_ABORT = 4,\n\tBANK_UNDEFINED = 5,\n\n\tWORD_SIZE_ARM = 4,\n\tWORD_SIZE_THUMB = 2,\n\n\tBASE_RESET = 0x00000000,\n\tBASE_UNDEF = 0x00000004,\n\tBASE_SWI = 0x00000008,\n\tBASE_PABT = 0x0000000C,\n\tBASE_DABT = 0x00000010,\n\tBASE_IRQ = 0x00000018,\n\tBASE_FIQ = 0x0000001C,\n}\n\nconst UNALLOC_MASK = 0x0FFFFF00;\nconst USER_MASK = 0xF0000000;\nconst PRIV_MASK = 0x000000DF; // This is out of spec? (SEH)\nconst STATE_MASK = 0x00000020;\n\n\n///////////////////////////////////////////////////////////////////////////\n\nfunction ARMCoreArm(cpu: ARMCoreType) {\n\tthis.cpu = cpu;\n\n\tthis.addressingMode23Immediate = [\n\t\t// 000x0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] -= offset;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 000xW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// 00Ux0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] += offset;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 00UxW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// 0P0x0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\treturn /* addr = */ gprs[rn] - offset;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 0P0xW\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] - offset;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\n\t\t// 0PUx0\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\treturn /* addr = */ gprs[rn] + offset;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// 0PUxW\n\t\tfunction(rn, offset, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] + offset;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\t];\n\n\tthis.addressingMode23Register = [\n\t\t// I00x0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] -= gprs[rm];\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// I00xW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// I0Ux0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] += gprs[rm];\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// I0UxW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IP0x0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\treturn gprs[rn] - gprs[rm];\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IP0xW\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] - gprs[rm];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IPUx0\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] + gprs[rm];\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IPUxW\n\t\tfunction(rn, rm, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn] + gprs[rm];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull\n\t];\n\n\tthis.addressingMode2RegisterShifted = [\n\t\t// I00x0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tshiftOp();\n\t\t\t\t\tgprs[rn] -= cpu.shifterOperand;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\t// I00xW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// I0Ux0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tvar addr = gprs[rn];\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tshiftOp();\n\t\t\t\t\tgprs[rn] += cpu.shifterOperand;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\t\t// I0UxW\n\t\tnull,\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IP0x0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\treturn gprs[rn] - cpu.shifterOperand;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IP0xW\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\tvar addr = gprs[rn] - cpu.shifterOperand;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\n\t\t// IPUx0\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\treturn gprs[rn] + cpu.shifterOperand;\n\t\t\t};\n\t\t\taddress.writesPC = false;\n\t\t\treturn address;\n\t\t},\n\n\t\t// IPUxW\n\t\tfunction(rn, shiftOp, condOp) {\n\t\t\tvar gprs = cpu.gprs;\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tshiftOp();\n\t\t\t\tvar addr = gprs[rn] + cpu.shifterOperand;\n\t\t\t\tif (!condOp || condOp()) {\n\t\t\t\t\tgprs[rn] = addr;\n\t\t\t\t}\n\t\t\t\treturn addr;\n\t\t\t};\n\t\t\taddress.writesPC = rn == ARMRegs.PC;\n\t\t\treturn address;\n\t\t},\n\n\t\tnull,\n\t\tnull,\n\t];\n}\n\nARMCoreArm.prototype.constructAddressingMode1ASR = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (shift < 32) {\n\t\t\tcpu.shifterOperand = shiftVal >> shift;\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (shift - 1));\n\t\t} else if (gprs[rm] >> 31) {\n\t\t\tcpu.shifterOperand = 0xFFFFFFFF;\n\t\t\tcpu.shifterCarryOut = 0x80000000;\n\t\t} else {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = 0;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1Immediate = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\treturn function() {\n\t\tcpu.shifterOperand = immediate;\n\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1ImmediateRotate = function(immediate, rotate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\treturn function() {\n\t\tcpu.shifterOperand = (immediate >>> rotate) | (immediate << (32 - rotate));\n\t\tcpu.shifterCarryOut = cpu.shifterOperand >> 31;\n\t}\n};\n\nARMCoreArm.prototype.constructAddressingMode1LSL = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (shift < 32) {\n\t\t\tcpu.shifterOperand = shiftVal << shift;\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (32 - shift));\n\t\t} else if (shift == 32) {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = shiftVal & 1;\n\t\t} else {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = 0;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1LSR = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (shift < 32) {\n\t\t\tcpu.shifterOperand = shiftVal >>> shift;\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (shift - 1));\n\t\t} else if (shift == 32) {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = shiftVal >> 31;\n\t\t} else {\n\t\t\tcpu.shifterOperand = 0;\n\t\t\tcpu.shifterCarryOut = 0;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode1ROR = function(rs, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\t++cpu.cycles;\n\t\tvar shift = gprs[rs];\n\t\tif (rs == ARMRegs.PC) {\n\t\t\tshift += 4;\n\t\t}\n\t\tshift &= 0xFF;\n\t\tvar shiftVal = gprs[rm];\n\t\tif (rm == ARMRegs.PC) {\n\t\t\tshiftVal += 4;\n\t\t}\n\t\tvar rotate = shift & 0x1F;\n\t\tif (shift == 0) {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t} else if (rotate) {\n\t\t\tcpu.shifterOperand = (gprs[rm] >>> rotate) | (gprs[rm] << (32 - rotate));\n\t\t\tcpu.shifterCarryOut = shiftVal & (1 << (rotate - 1));\n\t\t} else {\n\t\t\tcpu.shifterOperand = shiftVal;\n\t\t\tcpu.shifterCarryOut = shiftVal >> 31;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructAddressingMode23Immediate = function(instruction, immediate, condOp) {\n\tvar rn = (instruction & 0x000F0000) >> 16;\n\treturn this.addressingMode23Immediate[(instruction & 0x01A00000) >> 21](rn, immediate, condOp);\n};\n\nARMCoreArm.prototype.constructAddressingMode23Register = function(instruction, rm, condOp) {\n\tvar rn = (instruction & 0x000F0000) >> 16;\n\treturn this.addressingMode23Register[(instruction & 0x01A00000) >> 21](rn, rm, condOp);\n};\n\nARMCoreArm.prototype.constructAddressingMode2RegisterShifted = function(instruction, shiftOp, condOp) {\n\tvar rn = (instruction & 0x000F0000) >> 16;\n\treturn this.addressingMode2RegisterShifted[(instruction & 0x01A00000) >> 21](rn, shiftOp, condOp);\n};\n\nARMCoreArm.prototype.constructAddressingMode4 = function(immediate, rn) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar addr = gprs[rn] + immediate;\n\t\treturn addr;\n\t}\n};\n\nARMCoreArm.prototype.constructAddressingMode4Writeback = function(immediate, offset, rn, overlap) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function(writeInitial) {\n\t\tvar addr = gprs[rn] + immediate;\n\t\tif (writeInitial && overlap) {\n\t\t\tcpu.mmu.store32(gprs[rn] + immediate - 4, gprs[rn]);\n\t\t}\n\t\tgprs[rn] += offset;\n\t\treturn addr;\n\t}\n};\n\nARMCoreArm.prototype.constructNOP = function() {\n\tthis.writesPC = false;\n\treturn function() { };\n}\n\nARMCoreArm.prototype.constructADC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 1 : 0);\n\t\tgprs[rd] = (gprs[rn] >>> 0) + shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructADCS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 1 : 0);\n\t\tvar d = (gprs[rn] >>> 0) + shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) == (shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31) &&\n\t\t\t\t\t\t(shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructADD = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = (gprs[rn] >>> 0) + (cpu.shifterOperand >>> 0);\n\t};\n};\n\nARMCoreArm.prototype.constructADDS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar d = (gprs[rn] >>> 0) + (cpu.shifterOperand >>> 0);\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) == (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31) &&\n\t\t\t\t\t\t(cpu.shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructAND = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructANDS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructB = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.PC] += immediate;\n\t};\n};\n\nARMCoreArm.prototype.constructBIC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & ~cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructBICS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] & ~cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructBL = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.LR] = gprs[ARMRegs.PC] - 4;\n\t\tgprs[ARMRegs.PC] += immediate;\n\t};\n};\n\nARMCoreArm.prototype.constructBX = function(rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tcpu.switchExecMode(gprs[rm] & 0x00000001);\n\t\tgprs[ARMRegs.PC] = gprs[rm] & 0xFFFFFFFE;\n\t};\n};\n\nARMCoreArm.prototype.constructCMN = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = (gprs[rn] >>> 0) + (cpu.shifterOperand >>> 0);\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = aluOut > 0xFFFFFFFF;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) == (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t(gprs[rn] >> 31) != (aluOut >> 31) &&\n\t\t\t\t\t(cpu.shifterOperand >> 31) != (aluOut >> 31);\n\t};\n};\n\nARMCoreArm.prototype.constructCMP = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = gprs[rn] - cpu.shifterOperand;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (cpu.shifterOperand >>> 0);\n\t\tcpu.cpsrV = (gprs[rn] >> 31) != (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t(gprs[rn] >> 31) != (aluOut >> 31);\n\t};\n};\n\nARMCoreArm.prototype.constructEOR = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] ^ cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructEORS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] ^ cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructLDM = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address(false);\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tgprs[i] = mmu.load32(addr & 0xFFFFFFFC);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tmmu.waitMulti32(addr, total);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDMS = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address(false);\n\t\tvar total = 0;\n\t\tvar mode = cpu.mode;\n\t\tcpu.switchMode(ARMMode.MODE_SYSTEM);\n\t\tvar m, i;\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tgprs[i] = mmu.load32(addr & 0xFFFFFFFC);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.switchMode(mode);\n\t\tmmu.waitMulti32(addr, total);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDR = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.load32(addr);\n\t\tcpu.mmu.wait32(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRB = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.loadU8(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRH = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.loadU16(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRSB = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.load8(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructLDRSH = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tgprs[rd] = cpu.mmu.load16(addr);\n\t\tcpu.mmu.wait(addr);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreArm.prototype.constructMLA = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(rs);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tgprs[rd] = (hi + lo + gprs[rn]) & 0xFFFFFFFF;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs] + gprs[rn];\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMLAS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(rs);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) & 0xFFFFFFFF;\n\t\t\tgprs[rd] = (hi + lo + gprs[rn]) & 0xFFFFFFFF;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs] + gprs[rn];\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreArm.prototype.constructMOV = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructMOVS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMRS = function(rd, r, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tif (r) {\n\t\t\tgprs[rd] = cpu.spsr;\n\t\t} else {\n\t\t\tgprs[rd] = cpu.packCPSR();\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMSR = function(rm, r, instruction, immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar c = instruction & 0x00010000;\n\t//var x = instruction & 0x00020000;\n\t//var s = instruction & 0x00040000;\n\tvar f = instruction & 0x00080000;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar operand;\n\t\tif (instruction & 0x02000000) {\n\t\t\toperand = immediate;\n\t\t} else {\n\t\t\toperand = gprs[rm];\n\t\t}\n\t\tvar mask = (c ? 0x000000FF : 0x00000000) |\n\t\t\t\t //(x ? 0x0000FF00 : 0x00000000) | // Irrelevant on ARMv4T\n\t\t\t\t //(s ? 0x00FF0000 : 0x00000000) | // Irrelevant on ARMv4T\n\t\t\t\t (f ? 0xFF000000 : 0x00000000);\n\t\tif (r) {\n\t\t\tmask &= USER_MASK | PRIV_MASK | STATE_MASK;\n\t\t\t//console.log(hex(r), hex(mask & 0x7fffffff), hex(cpu.spsr), hex(operand));\n\t\t\tcpu.spsr = (cpu.spsr & ~mask) | (operand & mask);\n\t\t} else {\n\t\t\tif (mask & USER_MASK) {\n\t\t\t\tcpu.cpsrN = operand >> 31;\n\t\t\t\tcpu.cpsrZ = operand & 0x40000000;\n\t\t\t\tcpu.cpsrC = operand & 0x20000000;\n\t\t\t\tcpu.cpsrV = operand & 0x10000000;\n\t\t\t}\n\t\t\tif (cpu.mode != ARMMode.MODE_USER && (mask & PRIV_MASK)) {\n\t\t\t\tcpu.switchMode((operand & 0x0000000F) | 0x00000010);\n\t\t\t\tcpu.cpsrI = operand & 0x00000080;\n\t\t\t\tcpu.cpsrF = operand & 0x00000040;\n\t\t\t}\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMUL = function(rd, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) | 0;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) | 0;\n\t\t\tgprs[rd] = hi + lo;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs];\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructMULS = function(rd, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rs] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rm] & 0xFFFF0000) * gprs[rs]) | 0;\n\t\t\tvar lo = ((gprs[rm] & 0x0000FFFF) * gprs[rs]) | 0;\n\t\t\tgprs[rd] = hi + lo;\n\t\t} else {\n\t\t\tgprs[rd] = gprs[rm] * gprs[rs];\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreArm.prototype.constructMVN = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = ~cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructMVNS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = ~cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructORR = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] | cpu.shifterOperand;\n\t}\n};\n\nARMCoreArm.prototype.constructORRS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] | cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t\t}\n\t};\n};\n\nARMCoreArm.prototype.constructRSB = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = cpu.shifterOperand - gprs[rn];\n\t};\n};\n\nARMCoreArm.prototype.constructRSBS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar d = cpu.shifterOperand - gprs[rn];\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (cpu.shifterOperand >>> 0) >= (gprs[rn] >>> 0);\n\t\t\tcpu.cpsrV = (cpu.shifterOperand >> 31) != (gprs[rn] >> 31) &&\n\t\t\t\t\t\t(cpu.shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructRSC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar n = (gprs[rn] >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tgprs[rd] = (cpu.shifterOperand >>> 0) - n;\n\t};\n};\n\nARMCoreArm.prototype.constructRSCS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar n = (gprs[rn] >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tvar d = (cpu.shifterOperand >>> 0) - n;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (cpu.shifterOperand >>> 0) >= (d >>> 0);\n\t\t\tcpu.cpsrV = (cpu.shifterOperand >> 31) != (n >> 31) &&\n\t\t\t\t\t\t(cpu.shifterOperand >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructSBC = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tgprs[rd] = (gprs[rn] >>> 0) - shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructSBCS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar shifterOperand = (cpu.shifterOperand >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tvar d = (gprs[rn] >>> 0) - shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (d >>> 0);\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) != (shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructSMLAL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = (gprs[rm] & 0xFFFF0000) * gprs[rs];\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * gprs[rs];\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += Math.floor(carry * SHIFT_32);\n\t};\n};\n\nARMCoreArm.prototype.constructSMLALS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = (gprs[rm] & 0xFFFF0000) * gprs[rs];\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * gprs[rs];\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += Math.floor(carry * SHIFT_32);\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructSMULL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >> 0) * (gprs[rs] >> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >> 0) * (gprs[rs] >> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = Math.floor(hi * SHIFT_32 + lo * SHIFT_32);\n\t};\n};\n\nARMCoreArm.prototype.constructSMULLS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >> 0) * (gprs[rs] >> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >> 0) * (gprs[rs] >> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = Math.floor(hi * SHIFT_32 + lo * SHIFT_32);\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructSTM = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tmmu.wait32(gprs[ARMRegs.PC]);\n\t\tvar addr = address(true);\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tmmu.store32(addr, gprs[i]);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tmmu.waitMulti32(addr, total);\n\t};\n};\n\nARMCoreArm.prototype.constructSTMS = function(rs, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\tvar mmu = cpu.mmu;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tmmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tmmu.wait32(gprs[ARMRegs.PC]);\n\t\tvar mode = cpu.mode;\n\t\tvar addr = address(true);\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tcpu.switchMode(ARMMode.MODE_SYSTEM);\n\t\tfor (m = rs, i = 0; m; m >>= 1, ++i) {\n\t\t\tif (m & 1) {\n\t\t\t\tmmu.store32(addr, gprs[i]);\n\t\t\t\taddr += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.switchMode(mode);\n\t\tmmu.waitMulti32(addr, total);\n\t};\n};\n\nARMCoreArm.prototype.constructSTR = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tcpu.mmu.store32(addr, gprs[rd]);\n\t\tcpu.mmu.wait32(addr);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSTRB = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tcpu.mmu.store8(addr, gprs[rd]);\n\t\tcpu.mmu.wait(addr);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSTRH = function(rd, address, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tvar addr = address();\n\t\tcpu.mmu.store16(addr, gprs[rd]);\n\t\tcpu.mmu.wait(addr);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSUB = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tgprs[rd] = gprs[rn] - cpu.shifterOperand;\n\t};\n};\n\nARMCoreArm.prototype.constructSUBS = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar d = gprs[rn] - cpu.shifterOperand;\n\t\tif (rd == ARMRegs.PC && cpu.hasSPSR()) {\n\t\t\tcpu.unpackCPSR(cpu.spsr);\n\t\t} else {\n\t\t\tcpu.cpsrN = d >> 31;\n\t\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (cpu.shifterOperand >>> 0);\n\t\t\tcpu.cpsrV = (gprs[rn] >> 31) != (cpu.shifterOperand >> 31) &&\n\t\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31);\n\t\t}\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreArm.prototype.constructSWI = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tif (condOp && !condOp()) {\n\t\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\t\treturn;\n\t\t}\n\t\tcpu.irq.swi32(immediate);\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructSWP = function(rd, rn, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.wait32(gprs[rn]);\n\t\tcpu.mmu.wait32(gprs[rn]);\n\t\tvar d = cpu.mmu.load32(gprs[rn]);\n\t\tcpu.mmu.store32(gprs[rn], gprs[rm]);\n\t\tgprs[rd] = d;\n\t\t++cpu.cycles;\n\t}\n};\n\nARMCoreArm.prototype.constructSWPB = function(rd, rn, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.mmu.wait(gprs[rn]);\n\t\tcpu.mmu.wait(gprs[rn]);\n\t\tvar d = cpu.mmu.loadU8(gprs[rn]);\n\t\tcpu.mmu.store8(gprs[rn], gprs[rm]);\n\t\tgprs[rd] = d;\n\t\t++cpu.cycles;\n\t}\n};\n\nARMCoreArm.prototype.constructTEQ = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = gprs[rn] ^ cpu.shifterOperand;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t};\n};\n\nARMCoreArm.prototype.constructTST = function(rd, rn, shiftOp, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tshiftOp();\n\t\tvar aluOut = gprs[rn] & cpu.shifterOperand;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = cpu.shifterCarryOut;\n\t};\n};\n\nARMCoreArm.prototype.constructUMLAL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * (gprs[rs] >>> 0);\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += carry * SHIFT_32;\n\t};\n};\n\nARMCoreArm.prototype.constructUMLALS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tcpu.cycles += 2;\n\t\tcpu.mmu.waitMul(rs);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = (gprs[rm] & 0x0000FFFF) * (gprs[rs] >>> 0);\n\t\tvar carry = (gprs[rn] >>> 0) + hi + lo;\n\t\tgprs[rn] = carry;\n\t\tgprs[rd] += carry * SHIFT_32;\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructUMULL = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >>> 0) * (gprs[rs] >>> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = (hi * SHIFT_32 + lo * SHIFT_32) >>> 0;\n\t};\n};\n\nARMCoreArm.prototype.constructUMULLS = function(rd, rn, rs, rm, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar SHIFT_32 = 1/0x100000000;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\t++cpu.cycles;\n\t\tcpu.mmu.waitMul(gprs[rs]);\n\t\tvar hi = ((gprs[rm] & 0xFFFF0000) >>> 0) * (gprs[rs] >>> 0);\n\t\tvar lo = ((gprs[rm] & 0x0000FFFF) >>> 0) * (gprs[rs] >>> 0);\n\t\tgprs[rn] = ((hi & 0xFFFFFFFF) + (lo & 0xFFFFFFFF)) & 0xFFFFFFFF;\n\t\tgprs[rd] = (hi * SHIFT_32 + lo * SHIFT_32) >>> 0;\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !((gprs[rd] & 0xFFFFFFFF) || (gprs[rn] & 0xFFFFFFFF));\n\t};\n};\n\nARMCoreArm.prototype.constructVFP3Register = function(condOp, opcode, nOperandReg, destReg, sz, opcode2, mOperandReg) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar fpregs = sz ? cpu.dfprs : cpu.sfprs;\n\t//console.log(\"VFP3Register: \" + hex(opcode) + \" \" + hex(nOperandReg) + \" \" + hex(destReg) + \" \" + hex(number) + \" \" + hex(opcode2) + \" \" + hex(mOperandReg));\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tswitch (opcode) {\n\t\tcase 2: // VMUL\n\t\t\tswitch (opcode2) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] * fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 3: // VADD/VSUB\n\t\t\tswitch (opcode2) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] + fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t\tcase 2:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] - fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 8: // VDIV\n\t\t\tswitch (opcode2) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfpregs[destReg] = fpregs[nOperandReg] / fpregs[mOperandReg];\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tconsole.log(\"Unsupported instruction: \" + hex(opcode) + \" \" + hex(opcode2));\n\t};\n};\n\n/*\nif ConditionPassed() then\n EncodingSpecificOperations(); CheckVFPEnabled(TRUE);\n if to_integer then\n if dp_operation then\n S[d] = FPToFixed(D[m], 32, 0, unsigned, round_zero, TRUE);\n else\n S[d] = FPToFixed(S[m], 32, 0, unsigned, round_zero, TRUE);\n else\n if dp_operation then\n D[d] = FixedToFP(S[m], 64, 0, unsigned, round_nearest, TRUE);\n else\n S[d] = FixedToFP(S[m], 32, 0, unsigned, round_nearest, TRUE);\n*/\nARMCoreArm.prototype.constructVCVT = function(condOp, d, m, to_integer, dp_operation, unsigned, round_zero, round_nearest) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar src : number;\n\t\tvar dest : number;\n\t\t// get source\n\t\tif (to_integer && dp_operation) {\n\t\t\tsrc = dregs[m];\n\t\t} else if (to_integer) {\n\t\t\tsrc = sregs[m];\n\t\t} else {\n\t\t\tsrc = iregs[m];\n\t\t}\n\t\t// convert\n\t\tif (to_integer) {\n\t\t\tdest = round_zero ? Math.floor(src) : Math.round(src);\n\t\t} else {\n\t\t\tdest = src;\n\t\t}\n\t\t// store result\n\t\tif (to_integer) {\n\t\t\tiregs[d] = dest;\n\t\t} else if (dp_operation) {\n\t\t\tdregs[d] = dest;\n\t\t} else {\n\t\t\tsregs[d] = dest;\n\t\t}\n\t};\n}\n\nARMCoreArm.prototype.constructVCVTF = function(condOp, d, m, double_to_single) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tvar n = double_to_single ? dregs[m] : sregs[m];\n\t\t// store result\n\t\tif (double_to_single) {\n\t\t\tsregs[d] = n;\n\t\t} else {\n\t\t\tdregs[d] = n;\n\t\t}\n\t};\n\n}\n\nARMCoreArm.prototype.constructVLDR = function(condOp, destReg, address, single_reg) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = address();\n\t\tif (single_reg) {\n\t\t\tiregs[destReg] = cpu.mmu.load32(addr);\n\t\t} else {\n\t\t\tiregs[destReg] = cpu.mmu.load32(addr);\n\t\t\tiregs[destReg+1] = cpu.mmu.load32(addr+4);\n\t\t}\n\t\tcpu.mmu.wait32(addr);\n\t\tcpu.mmu.wait32(cpu.gprs[ARMRegs.PC]);\n\t};\n};\n\nARMCoreArm.prototype.constructVSTR = function(condOp, srcReg, address, single_reg) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = address();\n\t\tif (single_reg) {\n\t\t\tcpu.mmu.store32(addr, iregs[srcReg]);\n\t\t} else {\n\t\t\tcpu.mmu.store32(addr, iregs[srcReg]);\n\t\t\tcpu.mmu.store32(addr+4, iregs[srcReg+1]);\n\t\t}\n\t\tcpu.mmu.wait32(addr);\n\t\tcpu.mmu.wait32(cpu.gprs[ARMRegs.PC]);\n\t};\n}\n\nARMCoreArm.prototype.constructVPUSH = function(condOp, d, regs, single_regs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = cpu.gprs[ARMRegs.SP] - regs * 4;\n\t\tcpu.gprs[ARMRegs.SP] = addr;\n\t\tfor (let i = 0; i < regs; ++i) {\n\t\t\tcpu.mmu.store32(addr, iregs[d+i]);\n\t\t\taddr += 4;\n\t\t}\n\t};\n}\n\nARMCoreArm.prototype.constructVPOP = function(condOp, d, regs, single_regs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar iregs = cpu.ifprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet addr = cpu.gprs[ARMRegs.SP];\n\t\tcpu.gprs[ARMRegs.SP] += regs * 4;\n\t\tfor (let i = 0; i < regs; ++i) {\n\t\t\tiregs[d+i] = cpu.mmu.load32(addr);\n\t\t\taddr += 4;\n\t\t}\n\t};\n}\n\nfunction FPCompare(op1: number, op2: number) {\n\t/* assert N IN {32,64};\n fpscr_val = if fpscr_controlled then FPSCR else StandardFPSCRValue();\n (type1,sign1,value1) = FPUnpack(op1, fpscr_val);\n (type2,sign2,value2) = FPUnpack(op2, fpscr_val); */\n\tif (isNaN(op1) || isNaN(op2)) {\n\t\treturn 0b0011;\n\t}\n\tif (op1 == op2) return 0b0110;\n\tif (op1 < op2) return 0b1000;\n\telse return 0b0010;\n}\n\nARMCoreArm.prototype.constructVCMP = function(condOp, d, Vd, sz, E, m, Vm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet op1, op2;\n\t\tif (sz) {\n\t\t\top1 = dregs[d];\n\t\t\top2 = dregs[m];\n\t\t} else {\n\t\t\top1 = sregs[d];\n\t\t\top2 = sregs[m];\n\t\t}\n\t\tlet result = FPCompare(op1, op2);\n\t\tcpu.cpsrN = (result & 8) != 0;\n\t\tcpu.cpsrZ = (result & 4) != 0;\n\t\tcpu.cpsrC = (result & 2) != 0;\n\t\tcpu.cpsrV = (result & 1) != 0;\n\t}\n}\n\nARMCoreArm.prototype.constructVCMP0 = function(condOp, d, Vd, sz, E) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar sregs = cpu.sfprs;\n\tvar dregs = cpu.dfprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tlet op1, op2=0;\n\t\tif (sz) {\n\t\t\top1 = dregs[d];\n\t\t} else {\n\t\t\top1 = sregs[d];\n\t\t}\n\t\tlet result = FPCompare(op1, op2);\n\t\tcpu.cpsrN = (result & 8) != 0;\n\t\tcpu.cpsrZ = (result & 4) != 0;\n\t\tcpu.cpsrC = (result & 2) != 0;\n\t\tcpu.cpsrV = (result & 1) != 0;\n\t}\n}\nARMCoreArm.prototype.constructVMOV = function(condOp, to_arm_reg, n, t) {\n\tvar cpu : ARMCoreType = this.cpu;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch32(cpu.gprs[ARMRegs.PC]);\n\t\tif (condOp && !condOp()) {\n\t\t\treturn;\n\t\t}\n\t\tif (to_arm_reg) {\n\t\t\tcpu.gprs[t] = cpu.ifprs[n];\n\t\t} else {\n\t\t\tcpu.ifprs[n] = cpu.gprs[t];\n\t\t}\n\t}\n}\n\n///////////////////////////////////////////////////////////////////////////\n\nfunction ARMCoreThumb(cpu) {\n\tthis.cpu = cpu;\n};\n\nARMCoreThumb.prototype.constructADC = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar m = (gprs[rm] >>> 0) + (cpu.cpsrC ? 1 : 0);\n\t\tvar oldD = gprs[rd];\n\t\tvar d = (oldD >>> 0) + m;\n\t\tvar oldDn = oldD >> 31;\n\t\tvar dn = d >> 31;\n\t\tvar mn = m >> 31;\n\t\tcpu.cpsrN = dn;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = oldDn == mn && oldDn != dn && mn != dn;\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = (gprs[rn] >>> 0) + immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = !(gprs[rn] >> 31) && ((gprs[rn] >> 31 ^ d) >> 31) && (d >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD2 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = (gprs[rn] >>> 0) + immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = !(gprs[rn] >> 31) && ((gprs[rn] ^ d) >> 31) && ((immediate ^ d) >> 31);\n\t\tgprs[rn] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD3 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = (gprs[rn] >>> 0) + (gprs[rm] >>> 0);\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = d > 0xFFFFFFFF;\n\t\tcpu.cpsrV = !((gprs[rn] ^ gprs[rm]) >> 31) && ((gprs[rn] ^ d) >> 31) && ((gprs[rm] ^ d) >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD4 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] += gprs[rm];\n\t};\n};\n\nARMCoreThumb.prototype.constructADD5 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = (gprs[ARMRegs.PC] & 0xFFFFFFFC) + immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD6 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[ARMRegs.SP] + immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructADD7 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.SP] += immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructAND = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] & gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructASR1 = function(rd, rm, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (immediate == 0) {\n\t\t\tcpu.cpsrC = gprs[rm] >> 31;\n\t\t\tif (cpu.cpsrC) {\n\t\t\t\tgprs[rd] = 0xFFFFFFFF;\n\t\t\t} else {\n\t\t\t\tgprs[rd] = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tcpu.cpsrC = gprs[rm] & (1 << (immediate - 1));\n\t\t\tgprs[rd] = gprs[rm] >> immediate;\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructASR2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tif (rs < 32) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (rs - 1));\n\t\t\t\tgprs[rd] >>= rs;\n\t\t\t} else {\n\t\t\t\tcpu.cpsrC = gprs[rd] >> 31;\n\t\t\t\tif (cpu.cpsrC) {\n\t\t\t\t\tgprs[rd] = 0xFFFFFFFF;\n\t\t\t\t} else {\n\t\t\t\t\tgprs[rd] = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructB1 = function(immediate, condOp) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (condOp()) {\n\t\t\tgprs[ARMRegs.PC] += immediate;\n\t\t}\n\t};\n};\n\nARMCoreThumb.prototype.constructB2 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.PC] += immediate;\n\t};\n};\n\nARMCoreThumb.prototype.constructBIC = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] & ~gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructBL1 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[ARMRegs.LR] = gprs[ARMRegs.PC] + immediate;\n\t}\n};\n\nARMCoreThumb.prototype.constructBL2 = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar pc = gprs[ARMRegs.PC];\n\t\tgprs[ARMRegs.PC] = gprs[ARMRegs.LR] + (immediate << 1);\n\t\tgprs[ARMRegs.LR] = pc - 1;\n\t}\n};\n\nARMCoreThumb.prototype.constructBX = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tcpu.switchExecMode(gprs[rm] & 0x00000001);\n\t\tvar misalign = 0;\n\t\tif (rm == 15) {\n\t\t\tmisalign = gprs[rm] & 0x00000002;\n\t\t}\n\t\tgprs[ARMRegs.PC] = gprs[rm] & 0xFFFFFFFE - misalign;\n\t};\n};\n\nARMCoreThumb.prototype.constructCMN = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = (gprs[rd] >>> 0) + (gprs[rm] >>> 0);\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = aluOut > 0xFFFFFFFF;\n\t\tcpu.cpsrV = (gprs[rd] >> 31) == (gprs[rm] >> 31) &&\n\t\t\t\t\t(gprs[rd] >> 31) != (aluOut >> 31) &&\n\t\t\t\t\t(gprs[rm] >> 31) != (aluOut >> 31);\n\t};\n};\n\nARMCoreThumb.prototype.constructCMP1 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = gprs[rn] - immediate;\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= immediate;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) && ((gprs[rn] ^ aluOut) >> 31);\n\t};\n}\n\nARMCoreThumb.prototype.constructCMP2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rd];\n\t\tvar m = gprs[rm];\n\t\tvar aluOut = d - m;\n\t\tvar an = aluOut >> 31;\n\t\tvar dn = d >> 31;\n\t\tcpu.cpsrN = an;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (d >>> 0) >= (m >>> 0);\n\t\tcpu.cpsrV = dn != (m >> 31) && dn != an;\n\t};\n};\n\nARMCoreThumb.prototype.constructCMP3 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = gprs[rd] - gprs[rm];\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rd] >>> 0) >= (gprs[rm] >>> 0);\n\t\tcpu.cpsrV = ((gprs[rd] ^ gprs[rm]) >> 31) && ((gprs[rd] ^ aluOut) >> 31);\n\t};\n};\n\nARMCoreThumb.prototype.constructEOR = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] ^ gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructLDMIA = function(rn, rs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar address = gprs[rn];\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = 0x01, i = 0; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tgprs[i] = cpu.mmu.load32(address);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tif (!((1 << rn) & rs)) {\n\t\t\tgprs[rn] = address;\n\t\t}\n\t};\n};\n\nARMCoreThumb.prototype.constructLDR1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar n = gprs[rn] + immediate;\n\t\tgprs[rd] = cpu.mmu.load32(n);\n\t\tcpu.mmu.wait32(n);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDR2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load32(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait32(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t}\n};\n\nARMCoreThumb.prototype.constructLDR3 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load32((gprs[ARMRegs.PC] & 0xFFFFFFFC) + immediate);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.PC]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDR4 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load32(gprs[ARMRegs.SP] + immediate);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.SP] + immediate);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRB1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU8(n);\n\t\tcpu.mmu.wait(n);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRB2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU8(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRH1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU16(n);\n\t\tcpu.mmu.wait(n);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRH2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.loadU16(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRSB = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load8(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLDRSH = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = cpu.mmu.load16(gprs[rn] + gprs[rm]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t\t++cpu.cycles;\n\t};\n};\n\nARMCoreThumb.prototype.constructLSL1 = function(rd, rm, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (immediate == 0) {\n\t\t\tgprs[rd] = gprs[rm];\n\t\t} else {\n\t\t\tcpu.cpsrC = gprs[rm] & (1 << (32 - immediate));\n\t\t\tgprs[rd] = gprs[rm] << immediate;\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructLSL2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tif (rs < 32) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (32 - rs));\n\t\t\t\tgprs[rd] <<= rs;\n\t\t\t} else {\n\t\t\t\tif (rs > 32) {\n\t\t\t\t\tcpu.cpsrC = 0;\n\t\t\t\t} else {\n\t\t\t\t\tcpu.cpsrC = gprs[rd] & 0x00000001;\n\t\t\t\t}\n\t\t\t\tgprs[rd] = 0;\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructLSR1 = function(rd, rm, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (immediate == 0) {\n\t\t\tcpu.cpsrC = gprs[rm] >> 31;\n\t\t\tgprs[rd] = 0;\n\t\t} else {\n\t\t\tcpu.cpsrC = gprs[rm] & (1 << (immediate - 1));\n\t\t\tgprs[rd] = gprs[rm] >>> immediate;\n\t\t}\n\t\tcpu.cpsrN = 0;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n}\n\nARMCoreThumb.prototype.constructLSR2 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tif (rs < 32) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (rs - 1));\n\t\t\t\tgprs[rd] >>>= rs;\n\t\t\t} else {\n\t\t\t\tif (rs > 32) {\n\t\t\t\t\tcpu.cpsrC = 0;\n\t\t\t\t} else {\n\t\t\t\t\tcpu.cpsrC = gprs[rd] >> 31;\n\t\t\t\t}\n\t\t\t\tgprs[rd] = 0;\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructMOV1 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rn] = immediate;\n\t\tcpu.cpsrN = immediate >> 31;\n\t\tcpu.cpsrZ = !(immediate & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructMOV2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn];\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = 0;\n\t\tcpu.cpsrV = 0;\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructMOV3 = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rm];\n\t};\n};\n\nARMCoreThumb.prototype.constructMUL = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.waitMul(gprs[rm]);\n\t\tif ((gprs[rm] & 0xFFFF0000) && (gprs[rd] & 0xFFFF0000)) {\n\t\t\t// Our data type is a double--we'll lose bits if we do it all at once!\n\t\t\tvar hi = ((gprs[rd] & 0xFFFF0000) * gprs[rm]) & 0xFFFFFFFF;\n\t\t\tvar lo = ((gprs[rd] & 0x0000FFFF) * gprs[rm]) & 0xFFFFFFFF;\n\t\t\tgprs[rd] = (hi + lo) & 0xFFFFFFFF;\n\t\t} else {\n\t\t\tgprs[rd] *= gprs[rm];\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructMVN = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = ~gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructNEG = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = -gprs[rm];\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = 0 >= (d >>> 0);\n\t\tcpu.cpsrV = (gprs[rm] >> 31) && (d >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructORR = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tgprs[rd] = gprs[rd] | gprs[rm];\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructPOP = function(rs, r) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\t++cpu.cycles;\n\t\tvar address = gprs[ARMRegs.SP];\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = 0x01, i = 0; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.waitSeq32(address);\n\t\t\t\tgprs[i] = cpu.mmu.load32(address);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tif (r) {\n\t\t\tgprs[ARMRegs.PC] = cpu.mmu.load32(address) & 0xFFFFFFFE;\n\t\t\taddress += 4;\n\t\t\t++total;\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tgprs[ARMRegs.SP] = address;\n\t};\n};\n\nARMCoreThumb.prototype.constructPUSH = function(rs, r) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar address = gprs[ARMRegs.SP] - 4;\n\t\tvar total = 0;\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tif (r) {\n\t\t\tcpu.mmu.store32(address, gprs[ARMRegs.LR]);\n\t\t\taddress -= 4;\n\t\t\t++total;\n\t\t}\n\t\tvar m, i;\n\t\tfor (m = 0x80, i = 7; m; m >>= 1, --i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress -= 4;\n\t\t\t\t++total;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (m >>= 1, --i; m; m >>= 1, --i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress -= 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tgprs[ARMRegs.SP] = address + 4;\n\t};\n};\n\nARMCoreThumb.prototype.constructROR = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar rs = gprs[rm] & 0xFF;\n\t\tif (rs) {\n\t\t\tvar r4 = rs & 0x1F;\n\t\t\tif (r4 > 0) {\n\t\t\t\tcpu.cpsrC = gprs[rd] & (1 << (r4 - 1));\n\t\t\t\tgprs[rd] = (gprs[rd] >>> r4) | (gprs[rd] << (32 - r4));\n\t\t\t} else {\n\t\t\t\tcpu.cpsrC = gprs[rd] >> 31;\n\t\t\t}\n\t\t}\n\t\tcpu.cpsrN = gprs[rd] >> 31;\n\t\tcpu.cpsrZ = !(gprs[rd] & 0xFFFFFFFF);\n\t};\n};\n\nARMCoreThumb.prototype.constructSBC = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar m = (gprs[rm] >>> 0) + (cpu.cpsrC ? 0 : 1);\n\t\tvar d = (gprs[rd] >>> 0) - m;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rd] >>> 0) >= (d >>> 0);\n\t\tcpu.cpsrV = ((gprs[rd] ^ m) >> 31) && ((gprs[rd] ^ d) >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructSTMIA = function(rn, rs) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tvar address = gprs[rn];\n\t\tvar total = 0;\n\t\tvar m, i;\n\t\tfor (m = 0x01, i = 0; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (m <<= 1, ++i; i < 8; m <<= 1, ++i) {\n\t\t\tif (rs & m) {\n\t\t\t\tcpu.mmu.store32(address, gprs[i]);\n\t\t\t\taddress += 4;\n\t\t\t\t++total;\n\t\t\t}\n\t\t}\n\t\tcpu.mmu.waitMulti32(address, total);\n\t\tgprs[rn] = address;\n\t};\n};\n\nARMCoreThumb.prototype.constructSTR1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.store32(n, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait32(n);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTR2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store32(gprs[rn] + gprs[rm], gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait32(gprs[rn] + gprs[rm]);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTR3 = function(rd, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store32(gprs[ARMRegs.SP] + immediate, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait32(gprs[ARMRegs.SP] + immediate);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTRB1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.store8(n, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(n);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTRB2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store8(gprs[rn] + gprs[rm], gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t}\n};\n\nARMCoreThumb.prototype.constructSTRH1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tvar n = gprs[rn] + immediate;\n\t\tcpu.mmu.store16(n, gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(n);\n\t};\n};\n\nARMCoreThumb.prototype.constructSTRH2 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.store16(gprs[rn] + gprs[rm], gprs[rd]);\n\t\tcpu.mmu.wait(gprs[ARMRegs.PC]);\n\t\tcpu.mmu.wait(gprs[rn] + gprs[rm]);\n\t}\n};\n\nARMCoreThumb.prototype.constructSUB1 = function(rd, rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn] - immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= immediate;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) && ((gprs[rn] ^ d) >> 31);\n\t\tgprs[rd] = d;\n\t};\n}\n\nARMCoreThumb.prototype.constructSUB2 = function(rn, immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn] - immediate;\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= immediate;\n\t\tcpu.cpsrV = (gprs[rn] >> 31) && ((gprs[rn] ^ d) >> 31);\n\t\tgprs[rn] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructSUB3 = function(rd, rn, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar d = gprs[rn] - gprs[rm];\n\t\tcpu.cpsrN = d >> 31;\n\t\tcpu.cpsrZ = !(d & 0xFFFFFFFF);\n\t\tcpu.cpsrC = (gprs[rn] >>> 0) >= (gprs[rm] >>> 0);\n\t\tcpu.cpsrV = (gprs[rn] >> 31) != (gprs[rm] >> 31) &&\n\t\t\t\t\t(gprs[rn] >> 31) != (d >> 31);\n\t\tgprs[rd] = d;\n\t};\n};\n\nARMCoreThumb.prototype.constructSWI = function(immediate) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.irq.swi(immediate);\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t}\n};\n\nARMCoreThumb.prototype.constructTST = function(rd, rm) {\n\tvar cpu : ARMCoreType = this.cpu;\n\tvar gprs = cpu.gprs;\n\treturn function() {\n\t\tcpu.mmu.waitPrefetch(gprs[ARMRegs.PC]);\n\t\tvar aluOut = gprs[rd] & gprs[rm];\n\t\tcpu.cpsrN = aluOut >> 31;\n\t\tcpu.cpsrZ = !(aluOut & 0xFFFFFFFF);\n\t};\n};\n\n///////////////////////////////////////////////////////////////////////////\n\nfunction ARMCore() {\n\tthis.SP = 13;\n\tthis.LR = 14;\n\tthis.PC = 15;\n\n\tthis.MODE_ARM = 0;\n\tthis.MODE_THUMB = 1;\n\n\tthis.MODE_USER = 0x10;\n\tthis.MODE_FIQ = 0x11;\n\tthis.MODE_IRQ = 0x12;\n\tthis.MODE_SUPERVISOR = 0x13;\n\tthis.MODE_ABORT = 0x17;\n\tthis.MODE_UNDEFINED = 0x1B;\n\tthis.MODE_SYSTEM = 0x1F;\n\n\tthis.BANK_NONE = 0\n\tthis.BANK_FIQ = 1;\n\tthis.BANK_IRQ = 2;\n\tthis.BANK_SUPERVISOR = 3;\n\tthis.BANK_ABORT = 4;\n\tthis.BANK_UNDEFINED = 5;\n\n\tthis.WORD_SIZE_ARM = 4;\n\tthis.WORD_SIZE_THUMB = 2;\n\n\tthis.BASE_RESET = 0x00000000;\n\tthis.BASE_UNDEF = 0x00000004;\n\tthis.BASE_SWI = 0x00000008;\n\tthis.BASE_PABT = 0x0000000C;\n\tthis.BASE_DABT = 0x00000010;\n\tthis.BASE_IRQ = 0x00000018;\n\tthis.BASE_FIQ = 0x0000001C;\n\n\tthis.armCompiler = new ARMCoreArm(this);\n\tthis.thumbCompiler = new ARMCoreThumb(this);\n\tthis.generateConds();\n\n\tthis.gprs = new Int32Array(16);\n\tthis.dfprs = new Float64Array(16);\n\tthis.sfprs = new Float32Array(this.dfprs.buffer); // regs shared with dfprs\n\tthis.ifprs = new Int32Array(this.dfprs.buffer); // regs shared with dfprs\n};\n\nARMCore.prototype.resetCPU = function(startOffset) {\n\tfor (var i = 0; i < ARMRegs.PC; ++i) {\n\t\tthis.gprs[i] = 0;\n\t}\n\tthis.gprs[ARMRegs.PC] = startOffset + ARMConstants.WORD_SIZE_ARM;\n\tthis.dfprs.set(0); // no need to zero the sfprs, since they share the same buffer\n\n\tthis.loadInstruction = this.loadInstructionArm;\n\tthis.execMode = ARMMode.MODE_ARM;\n\tthis.instructionWidth = ARMConstants.WORD_SIZE_ARM;\n\n\tthis.mode = ARMMode.MODE_SYSTEM;\n\n\tthis.cpsrI = false;\n\tthis.cpsrF = false;\n\n\tthis.cpsrV = false;\n\tthis.cpsrC = false;\n\tthis.cpsrZ = false;\n\tthis.cpsrN = false;\n\n\tthis.bankedRegisters = [\n\t\tnew Int32Array(7),\n\t\tnew Int32Array(7),\n\t\tnew Int32Array(2),\n\t\tnew Int32Array(2),\n\t\tnew Int32Array(2),\n\t\tnew Int32Array(2)\n\t];\n\tthis.spsr = 0;\n\tthis.bankedSPSRs = new Int32Array(6);\n\n\tthis.cycles = 0;\n\n\tthis.shifterOperand = 0;\n\tthis.shifterCarryOut = 0;\n\n\tthis.page = null;\n\tthis.pageId = 0;\n\tthis.pageRegion = -1;\n\n\tthis.instruction = null;\n\n\tthis.irq.clear();\n\n\tvar gprs = this.gprs;\n\tvar mmu = this.mmu as ARMMMUInterface;\n\n\tthis.step = function() {\n\t\tvar instruction = this.instruction || (this.instruction = this.loadInstruction(gprs[ARMRegs.PC] - this.instructionWidth));\n\t\tgprs[ARMRegs.PC] += this.instructionWidth;\n\t\tthis.conditionPassed = true;\n\t\tinstruction();\n\n\t\tif (!instruction.writesPC) {\n\t\t\tif (this.instruction != null) { // We might have gotten an interrupt from the instruction\n\t\t\t\tif (instruction.next == null || instruction.next.page.invalid) {\n\t\t\t\t\tinstruction.next = this.loadInstruction(gprs[ARMRegs.PC] - this.instructionWidth);\n\t\t\t\t}\n\t\t\t\tthis.instruction = instruction.next;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.conditionPassed) {\n\t\t\t\tvar pc = gprs[ARMRegs.PC] &= 0xFFFFFFFE;\n\t\t\t\tif (this.execMode == ARMMode.MODE_ARM) {\n\t\t\t\t\tmmu.wait32(pc);\n\t\t\t\t\tmmu.waitPrefetch32(pc);\n\t\t\t\t} else {\n\t\t\t\t\tmmu.wait(pc);\n\t\t\t\t\tmmu.waitPrefetch(pc);\n\t\t\t\t}\n\t\t\t\tgprs[ARMRegs.PC] += this.instructionWidth;\n\t\t\t\tif (!instruction.fixedJump) {\n\t\t\t\t\tthis.instruction = null;\n\t\t\t\t} else if (this.instruction != null) {\n\t\t\t\t\tif (instruction.next == null || instruction.next.page.invalid) {\n\t\t\t\t\t\tinstruction.next = this.loadInstruction(gprs[ARMRegs.PC] - this.instructionWidth);\n\t\t\t\t\t}\n\t\t\t\t\tthis.instruction = instruction.next;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.instruction = null;\n\t\t\t}\n\t\t}\n\t\tthis.irq.updateTimers();\n\t};\n};\n\nARMCore.prototype.freeze = function() : ARMCoreState {\n\treturn {\n\t\tPC: this.gprs[15] - this.instructionWidth,\n\t\tSP: this.gprs[13],\n\t\t'gprs': [\n\t\t\tthis.gprs[0],\n\t\t\tthis.gprs[1],\n\t\t\tthis.gprs[2],\n\t\t\tthis.gprs[3],\n\t\t\tthis.gprs[4],\n\t\t\tthis.gprs[5],\n\t\t\tthis.gprs[6],\n\t\t\tthis.gprs[7],\n\t\t\tthis.gprs[8],\n\t\t\tthis.gprs[9],\n\t\t\tthis.gprs[10],\n\t\t\tthis.gprs[11],\n\t\t\tthis.gprs[12],\n\t\t\tthis.gprs[13],\n\t\t\tthis.gprs[14],\n\t\t\tthis.gprs[15],\n\t\t],\n\t\t'sfprs': this.sfprs.slice(),\n\t\t'dfprs': this.dfprs.slice(),\n\t\t'ifprs': this.ifprs.slice(),\n\t\t'mode': this.mode,\n\t\t'cpsrI': this.cpsrI,\n\t\t'cpsrF': this.cpsrF,\n\t\t'cpsrV': this.cpsrV,\n\t\t'cpsrC': this.cpsrC,\n\t\t'cpsrZ': this.cpsrZ,\n\t\t'cpsrN': this.cpsrN,\n\t\t'bankedRegisters': [\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[0][0],\n\t\t\t\tthis.bankedRegisters[0][1],\n\t\t\t\tthis.bankedRegisters[0][2],\n\t\t\t\tthis.bankedRegisters[0][3],\n\t\t\t\tthis.bankedRegisters[0][4],\n\t\t\t\tthis.bankedRegisters[0][5],\n\t\t\t\tthis.bankedRegisters[0][6]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[1][0],\n\t\t\t\tthis.bankedRegisters[1][1],\n\t\t\t\tthis.bankedRegisters[1][2],\n\t\t\t\tthis.bankedRegisters[1][3],\n\t\t\t\tthis.bankedRegisters[1][4],\n\t\t\t\tthis.bankedRegisters[1][5],\n\t\t\t\tthis.bankedRegisters[1][6]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[2][0],\n\t\t\t\tthis.bankedRegisters[2][1]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[3][0],\n\t\t\t\tthis.bankedRegisters[3][1]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[4][0],\n\t\t\t\tthis.bankedRegisters[4][1]\n\t\t\t],\n\t\t\t[\n\t\t\t\tthis.bankedRegisters[5][0],\n\t\t\t\tthis.bankedRegisters[5][1]\n\t\t\t]\n\t\t],\n\t\t'spsr': this.spsr,\n\t\t'bankedSPSRs': [\n\t\t\tthis.bankedSPSRs[0],\n\t\t\tthis.bankedSPSRs[1],\n\t\t\tthis.bankedSPSRs[2],\n\t\t\tthis.bankedSPSRs[3],\n\t\t\tthis.bankedSPSRs[4],\n\t\t\tthis.bankedSPSRs[5]\n\t\t],\n\t\t'cycles': this.cycles,\n\t\t'instructionWidth': this.instructionWidth,\n\t};\n};\n\nARMCore.prototype.defrost = function(frost: ARMCoreState) {\n\tthis.instruction = null;\n\n\tthis.page = null;\n\tthis.pageId = 0;\n\tthis.pageRegion = -1;\n\n\tthis.gprs[0] = frost.gprs[0];\n\tthis.gprs[1] = frost.gprs[1];\n\tthis.gprs[2] = frost.gprs[2];\n\tthis.gprs[3] = frost.gprs[3];\n\tthis.gprs[4] = frost.gprs[4];\n\tthis.gprs[5] = frost.gprs[5];\n\tthis.gprs[6] = frost.gprs[6];\n\tthis.gprs[7] = frost.gprs[7];\n\tthis.gprs[8] = frost.gprs[8];\n\tthis.gprs[9] = frost.gprs[9];\n\tthis.gprs[10] = frost.gprs[10];\n\tthis.gprs[11] = frost.gprs[11];\n\tthis.gprs[12] = frost.gprs[12];\n\tthis.gprs[13] = frost.gprs[13];\n\tthis.gprs[14] = frost.gprs[14];\n\tthis.gprs[15] = frost.gprs[15];\n\n\tthis.ifprs.set(frost.ifprs); // regs shared with sfprs\n\n\tthis.mode = frost.mode;\n\tthis.cpsrI = frost.cpsrI;\n\tthis.cpsrF = frost.cpsrF;\n\tthis.cpsrV = frost.cpsrV;\n\tthis.cpsrC = frost.cpsrC;\n\tthis.cpsrZ = frost.cpsrZ;\n\tthis.cpsrN = frost.cpsrN;\n\n\tthis.bankedRegisters[0][0] = frost.bankedRegisters[0][0];\n\tthis.bankedRegisters[0][1] = frost.bankedRegisters[0][1];\n\tthis.bankedRegisters[0][2] = frost.bankedRegisters[0][2];\n\tthis.bankedRegisters[0][3] = frost.bankedRegisters[0][3];\n\tthis.bankedRegisters[0][4] = frost.bankedRegisters[0][4];\n\tthis.bankedRegisters[0][5] = frost.bankedRegisters[0][5];\n\tthis.bankedRegisters[0][6] = frost.bankedRegisters[0][6];\n\n\tthis.bankedRegisters[1][0] = frost.bankedRegisters[1][0];\n\tthis.bankedRegisters[1][1] = frost.bankedRegisters[1][1];\n\tthis.bankedRegisters[1][2] = frost.bankedRegisters[1][2];\n\tthis.bankedRegisters[1][3] = frost.bankedRegisters[1][3];\n\tthis.bankedRegisters[1][4] = frost.bankedRegisters[1][4];\n\tthis.bankedRegisters[1][5] = frost.bankedRegisters[1][5];\n\tthis.bankedRegisters[1][6] = frost.bankedRegisters[1][6];\n\n\tthis.bankedRegisters[2][0] = frost.bankedRegisters[2][0];\n\tthis.bankedRegisters[2][1] = frost.bankedRegisters[2][1];\n\n\tthis.bankedRegisters[3][0] = frost.bankedRegisters[3][0];\n\tthis.bankedRegisters[3][1] = frost.bankedRegisters[3][1];\n\n\tthis.bankedRegisters[4][0] = frost.bankedRegisters[4][0];\n\tthis.bankedRegisters[4][1] = frost.bankedRegisters[4][1];\n\n\tthis.bankedRegisters[5][0] = frost.bankedRegisters[5][0];\n\tthis.bankedRegisters[5][1] = frost.bankedRegisters[5][1];\n\n\tthis.spsr = frost.spsr;\n\tthis.bankedSPSRs[0] = frost.bankedSPSRs[0];\n\tthis.bankedSPSRs[1] = frost.bankedSPSRs[1];\n\tthis.bankedSPSRs[2] = frost.bankedSPSRs[2];\n\tthis.bankedSPSRs[3] = frost.bankedSPSRs[3];\n\tthis.bankedSPSRs[4] = frost.bankedSPSRs[4];\n\tthis.bankedSPSRs[5] = frost.bankedSPSRs[5];\n\n\tthis.cycles = frost.cycles;\n\n\tthis.instructionWidth = frost.instructionWidth;\n\tthis.loadInstruction = frost.instructionWidth == 2 ? this.loadInstructionThumb : this.loadInstructionArm;\n\tthis.execMode = frost.instructionWidth == 2 ? ARMMode.MODE_THUMB : ARMMode.MODE_ARM;\n};\n\nARMCore.prototype.fetchPage = function(address : number) {\n\tvar mmu = this.mmu;\n\tvar region = address >>> mmu.BASE_OFFSET;\n\tvar pageId = mmu.addressToPage(region, address & mmu.OFFSET_MASK);\n\tif (region == this.pageRegion) {\n\t\tif (pageId == this.pageId && !(this.page as ARMMemoryPage).invalid) {\n\t\t\treturn;\n\t\t}\n\t\tthis.pageId = pageId;\n\t} else {\n\t\tthis.pageMask = mmu.memory[region].PAGE_MASK;\n\t\tthis.pageRegion = region;\n\t\tthis.pageId = pageId;\n\t}\n\n\tthis.page = mmu.accessPage(region, pageId);\n};\n\nARMCore.prototype.loadInstructionArm = function(address : number) {\n\tvar next : ARMOperation = null;\n\tthis.fetchPage(address);\n\tvar offset = (address & this.pageMask) >> 2;\n\tnext = (this.page as ARMMemoryPage).arm[offset];\n\tif (next) {\n\t\treturn next;\n\t}\n\tvar instruction = this.mmu.load32(address) >>> 0;\n\tnext = this.compileArm(instruction);\n\tnext.next = null;\n\tnext.page = this.page;\n\tnext.address = address;\n\tnext.opcode = instruction;\n\t(this.page as ARMMemoryPage).arm[offset] = next;\n\treturn next;\n};\n\nARMCore.prototype.loadInstructionThumb = function(address : number) {\n\tvar next : ARMOperation = null;\n\tthis.fetchPage(address);\n\tvar offset = (address & this.pageMask) >> 1;\n\tnext = (this.page as ARMMemoryPage).thumb[offset];\n\tif (next) {\n\t\treturn next;\n\t}\n\tvar instruction = this.mmu.load16(address);\n\tnext = this.compileThumb(instruction);\n\tnext.next = null;\n\tnext.page = this.page;\n\tnext.address = address;\n\tnext.opcode = instruction;\n\t(this.page as ARMMemoryPage).thumb[offset] = next;\n\treturn next;\n};\n\nARMCore.prototype.selectBank = function(mode : ARMMode) {\n\tswitch (mode) {\n\tcase ARMMode.MODE_USER:\n\tcase ARMMode.MODE_SYSTEM:\n\t\t// No banked registers\n\t\treturn ARMConstants.BANK_NONE;\n\tcase ARMMode.MODE_FIQ:\n\t\treturn ARMConstants.BANK_FIQ;\n\tcase ARMMode.MODE_IRQ:\n\t\treturn ARMConstants.BANK_IRQ;\n\tcase ARMMode.MODE_SUPERVISOR:\n\t\treturn ARMConstants.BANK_SUPERVISOR;\n\tcase ARMMode.MODE_ABORT:\n\t\treturn ARMConstants.BANK_ABORT;\n\tcase ARMMode.MODE_UNDEFINED:\n\t\treturn ARMConstants.BANK_UNDEFINED;\n\tdefault:\n\t\tthrow new EmuHalt(\"Invalid user mode \" + mode + \" passed to selectBank\");\n\t}\n};\n\nARMCore.prototype.switchExecMode = function(newMode) {\n\tif (this.execMode != newMode) {\n\t\tthis.execMode = newMode;\n\t\tif (newMode == ARMMode.MODE_ARM) {\n\t\t\tthis.instructionWidth = ARMConstants.WORD_SIZE_ARM;\n\t\t\tthis.loadInstruction = this.loadInstructionArm;\n\t\t} else {\n\t\t\tthis.instructionWidth = ARMConstants.WORD_SIZE_THUMB;\n\t\t\tthis.loadInstruction = this.loadInstructionThumb;\n\t\t}\n\t}\n\t\n};\n\nARMCore.prototype.switchMode = function(newMode) {\n\tif (newMode == this.mode) {\n\t\t// Not switching modes after all\n\t\treturn;\n\t}\n\tif (newMode != ARMMode.MODE_USER || newMode != ARMMode.MODE_SYSTEM) {\n\t\t// Switch banked registers\n\t\tvar newBank = this.selectBank(newMode);\n\t\tvar oldBank = this.selectBank(this.mode);\n\t\tif (newBank != oldBank) {\n\t\t\t// TODO: support FIQ\n\t\t\tif (newMode == ARMMode.MODE_FIQ || this.mode == ARMMode.MODE_FIQ) {\n\t\t\t\tvar oldFiqBank = (oldBank == ARMConstants.BANK_FIQ) ? 1 : 0;\n\t\t\t\tvar newFiqBank = (newBank == ARMConstants.BANK_FIQ) ? 1 : 0;\n\t\t\t\tthis.bankedRegisters[oldFiqBank][2] = this.gprs[8];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][3] = this.gprs[9];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][4] = this.gprs[10];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][5] = this.gprs[11];\n\t\t\t\tthis.bankedRegisters[oldFiqBank][6] = this.gprs[12];\n\t\t\t\tthis.gprs[8] = this.bankedRegisters[newFiqBank][2];\n\t\t\t\tthis.gprs[9] = this.bankedRegisters[newFiqBank][3];\n\t\t\t\tthis.gprs[10] = this.bankedRegisters[newFiqBank][4];\n\t\t\t\tthis.gprs[11] = this.bankedRegisters[newFiqBank][5];\n\t\t\t\tthis.gprs[12] = this.bankedRegisters[newFiqBank][6];\n\t\t\t}\n\t\t\tthis.bankedRegisters[oldBank][0] = this.gprs[ARMRegs.SP];\n\t\t\tthis.bankedRegisters[oldBank][1] = this.gprs[ARMRegs.LR];\n\t\t\tthis.gprs[ARMRegs.SP] = this.bankedRegisters[newBank][0];\n\t\t\tthis.gprs[ARMRegs.LR] = this.bankedRegisters[newBank][1];\n\n\t\t\tthis.bankedSPSRs[oldBank] = this.spsr;\n\t\t\tthis.spsr = this.bankedSPSRs[newBank];\n\t\t}\n\t}\n\tthis.mode = newMode;\n};\n\nARMCore.prototype.packCPSR = function() {\n\treturn this.mode | (this.execMode << 5) | (this.cpsrF << 6) | (this.cpsrI << 7) |\n\t (this.cpsrN << 31) | (this.cpsrZ << 30) | (this.cpsrC << 29) | (this.cpsrV << 28);\n};\n\nARMCore.prototype.unpackCPSR = function(spsr) {\n\tthis.switchMode(spsr & 0x0000001F);\n\tthis.switchExecMode(!!(spsr & 0x00000020));\n\tthis.cpsrF = spsr & 0x00000040;\n\tthis.cpsrI = spsr & 0x00000080;\n\tthis.cpsrN = spsr & 0x80000000;\n\tthis.cpsrZ = spsr & 0x40000000;\n\tthis.cpsrC = spsr & 0x20000000;\n\tthis.cpsrV = spsr & 0x10000000;\n\n\tthis.irq.testIRQ();\n};\n\nARMCore.prototype.hasSPSR = function() {\n\treturn this.mode != ARMMode.MODE_SYSTEM && this.mode != ARMMode.MODE_USER;\n};\n\nARMCore.prototype.raiseIRQ = function() {\n\tif (this.cpsrI) {\n\t\treturn;\n\t}\n\tvar cpsr = this.packCPSR();\n\tvar instructionWidth = this.instructionWidth;\n\tthis.switchMode(ARMMode.MODE_IRQ);\n\tthis.spsr = cpsr;\n\tthis.gprs[ARMRegs.LR] = this.gprs[ARMRegs.PC] - instructionWidth + 4;\n\tthis.gprs[ARMRegs.PC] = this.BASE_IRQ + ARMConstants.WORD_SIZE_ARM;\n\tthis.instruction = null;\n\tthis.switchExecMode(ARMMode.MODE_ARM);\n\tthis.cpsrI = true;\n};\n\nARMCore.prototype.raiseTrap = function() {\n\tvar cpsr = this.packCPSR();\n\tvar instructionWidth = this.instructionWidth;\n\tthis.switchMode(ARMMode.MODE_SUPERVISOR);\n\tthis.spsr = cpsr;\n\tthis.gprs[ARMRegs.LR] = this.gprs[ARMRegs.PC] - instructionWidth;\n\tthis.gprs[ARMRegs.PC] = this.BASE_SWI + ARMConstants.WORD_SIZE_ARM;\n\tthis.instruction = null;\n\tthis.switchExecMode(ARMMode.MODE_ARM);\n\tthis.cpsrI = true;\n};\n\nARMCore.prototype.badOp = function(instruction) {\n\tvar func : AddressFunction = function() {\n\t\tthrow new EmuHalt(\"Illegal instruction: 0x\" + instruction.toString(16));\n\t};\n\tfunc.writesPC = true;\n\tfunc.fixedJump = false;\n\treturn func;\n};\n\nARMCore.prototype.generateConds = function() {\n\tvar cpu = this;\n\tthis.conds = [\n\t\t// EQ\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrZ;\n\t\t},\n\t\t// NE\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrZ;\n\t\t},\n\t\t// CS\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrC;\n\t\t},\n\t\t// CC\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrC;\n\t\t},\n\t\t// MI\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrN;\n\t\t},\n\t\t// PL\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrN;\n\t\t},\n\t\t// VS\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrV;\n\t\t},\n\t\t// VC\n\t\tfunction() {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrV;\n\t\t},\n\t\t// HI\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrC && !cpu.cpsrZ;\n\t\t},\n\t\t// LS\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrC || cpu.cpsrZ;\n\t\t},\n\t\t// GE\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrN == !cpu.cpsrV;\n\t\t},\n\t\t// LT\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrN != !cpu.cpsrV;\n\t\t},\n\t\t// GT\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = !cpu.cpsrZ && !cpu.cpsrN == !cpu.cpsrV;\n\t\t},\n\t\t// LE\n\t\tfunction () {\n\t\t\treturn cpu.conditionPassed = cpu.cpsrZ || !cpu.cpsrN != !cpu.cpsrV;\n\t\t},\n\t\t// AL\n\t\tnull,\n\t\tnull\n\t]\n}\n\nARMCore.prototype.barrelShiftImmediate = function(shiftType, immediate, rm) {\n\tvar cpu = this;\n\tvar gprs = this.gprs;\n\tvar shiftOp = this.badOp;\n\tswitch (shiftType) {\n\tcase 0x00000000:\n\t\t// LSL\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm] << immediate;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (32 - immediate));\n\t\t\t};\n\t\t} else {\n\t\t\t// This boils down to no shift\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm];\n\t\t\t\tcpu.shifterCarryOut = cpu.cpsrC;\n\t\t\t};\n\t\t}\n\t\tbreak;\n\tcase 0x00000020:\n\t\t// LSR\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm] >>> immediate;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (immediate - 1));\n\t\t\t};\n\t\t} else {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = 0;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & 0x80000000;\n\t\t\t};\n\t\t}\n\t\tbreak;\n\tcase 0x00000040:\n\t\t// ASR\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = gprs[rm] >> immediate;\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (immediate - 1));\n\t\t\t};\n\t\t} else {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & 0x80000000;\n\t\t\t\tif (cpu.shifterCarryOut) {\n\t\t\t\t\tcpu.shifterOperand = 0xFFFFFFFF;\n\t\t\t\t} else {\n\t\t\t\t\tcpu.shifterOperand = 0;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tbreak;\n\tcase 0x00000060:\n\t\t// ROR\n\t\tif (immediate) {\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = (gprs[rm] >>> immediate) | (gprs[rm] << (32 - immediate));\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & (1 << (immediate - 1));\n\t\t\t};\n\t\t} else {\n\t\t\t// RRX\n\t\t\tshiftOp = function() {\n\t\t\t\tcpu.shifterOperand = ((cpu.cpsrC ? 1 : 0) << 31) | (gprs[rm] >>> 1);\n\t\t\t\tcpu.shifterCarryOut = gprs[rm] & 0x00000001;\n\t\t\t};\n\t\t}\n\t\tbreak;\n\t}\n\treturn shiftOp;\n}\n\nARMCore.prototype.compileArm = function(instruction) {\n\tvar op = this.badOp(instruction);\n\tvar i = instruction & 0x0E000000;\n\tvar cpu = this;\n\tvar gprs = this.gprs;\n\n\tvar condOp = this.conds[(instruction & 0xF0000000) >>> 28];\n\tif ((instruction & 0x0FFFFFF0) == 0x012FFF10) {\n\t\t// BX\n\t\tvar rm = instruction & 0xF;\n\t\top = this.armCompiler.constructBX(rm, condOp);\n\t\top.writesPC = true;\n\t\top.fixedJump = false;\n\t} else if (!(instruction & 0x0C000000) && (i == 0x02000000 || (instruction & 0x00000090) != 0x00000090)) {\n\t\tvar opcode = instruction & 0x01E00000;\n\t\tvar s = instruction & 0x00100000;\n\t\tvar shiftsRs = false;\n\t\tif ((opcode & 0x01800000) == 0x01000000 && !s) {\n\t\t\tvar r = instruction & 0x00400000;\n\t\t\tif ((instruction & 0x00B0F000) == 0x0020F000) {\n\t\t\t\t// MSR\n\t\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\t\tvar immediate = instruction & 0x000000FF;\n\t\t\t\tvar rotateImm = (instruction & 0x00000F00) >> 7;\n\t\t\t\timmediate = (immediate >>> rotateImm) | (immediate << (32 - rotateImm));\n\t\t\t\top = this.armCompiler.constructMSR(rm, r, instruction, immediate, condOp);\n\t\t\t\top.writesPC = false;\n\t\t\t} else if ((instruction & 0x00BF0000) == 0x000F0000) {\n\t\t\t\t// MRS\n\t\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\t\t\t\top = this.armCompiler.constructMRS(rd, r, condOp);\n\t\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\t}\n\t\t} else {\n\t\t\t// Data processing/FSR transfer\n\t\t\tvar rn = (instruction & 0x000F0000) >> 16;\n\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\n\t\t\t// Parse shifter operand\n\t\t\tvar shiftType = instruction & 0x00000060;\n\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\tvar shiftOp = function() {\n\t\t\t\tthrow new EmuHalt('BUG: invalid barrel shifter');\n\t\t\t};\n\t\t\tif (instruction & 0x02000000) {\n\t\t\t\tvar immediate = instruction & 0x000000FF;\n\t\t\t\tvar rotate = (instruction & 0x00000F00) >> 7;\n\t\t\t\tif (!rotate) {\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1Immediate(immediate);\n\t\t\t\t} else {\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1ImmediateRotate(immediate, rotate);\n\t\t\t\t}\n\t\t\t} else if (instruction & 0x00000010) {\n\t\t\t\tvar rs = (instruction & 0x00000F00) >> 8;\n\t\t\t\tshiftsRs = true;\n\t\t\t\tswitch (shiftType) {\n\t\t\t\tcase 0x00000000:\n\t\t\t\t\t// LSL\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1LSL(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00000020:\n\t\t\t\t\t// LSR\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1LSR(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00000040:\n\t\t\t\t\t// ASR\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1ASR(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00000060:\n\t\t\t\t\t// ROR\n\t\t\t\t\tshiftOp = this.armCompiler.constructAddressingMode1ROR(rs, rm);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar immediate = (instruction & 0x00000F80) >> 7;\n\t\t\t\tshiftOp = this.barrelShiftImmediate(shiftType, immediate, rm);\n\t\t\t}\n\n\t\t\tswitch (opcode) {\n\t\t\tcase 0x00000000:\n\t\t\t\t// AND\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructANDS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructAND(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00200000:\n\t\t\t\t// EOR\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructEORS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructEOR(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00400000:\n\t\t\t\t// SUB\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructSUBS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructSUB(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00600000:\n\t\t\t\t// RSB\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructRSBS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructRSB(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00800000:\n\t\t\t\t// ADD\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructADDS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructADD(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00A00000:\n\t\t\t\t// ADC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructADCS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructADC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00C00000:\n\t\t\t\t// SBC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructSBCS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructSBC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x00E00000:\n\t\t\t\t// RSC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructRSCS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructRSC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01000000:\n\t\t\t\t// TST\n\t\t\t\top = this.armCompiler.constructTST(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01200000:\n\t\t\t\t// TEQ\n\t\t\t\top = this.armCompiler.constructTEQ(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01400000:\n\t\t\t\t// CMP\n\t\t\t\top = this.armCompiler.constructCMP(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01600000:\n\t\t\t\t// CMN\n\t\t\t\top = this.armCompiler.constructCMN(rd, rn, shiftOp, condOp);\n\t\t\t\tbreak;\n\t\t\tcase 0x01800000:\n\t\t\t\t// ORR\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructORRS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructORR(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01A00000:\n\t\t\t\t// MOV\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructMOVS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructMOV(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01C00000:\n\t\t\t\t// BIC\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructBICS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructBIC(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x01E00000:\n\t\t\t\t// MVN\n\t\t\t\tif (s) {\n\t\t\t\t\top = this.armCompiler.constructMVNS(rd, rn, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructMVN(rd, rn, shiftOp, condOp);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t}\n\t} else if ((instruction & 0x0FB00FF0) == 0x01000090) {\n\t\t// Single data swap\n\t\tvar rm = instruction & 0x0000000F;\n\t\tvar rd = (instruction >> 12) & 0x0000000F;\n\t\tvar rn = (instruction >> 16) & 0x0000000F;\n\t\tif (instruction & 0x00400000) {\n\t\t\top = this.armCompiler.constructSWPB(rd, rn, rm, condOp);\n\t\t} else {\n\t\t\top = this.armCompiler.constructSWP(rd, rn, rm, condOp);\n\t\t}\n\t\top.writesPC = rd == ARMRegs.PC;\n\t} else {\n\t\tswitch (i) {\n\t\tcase 0x00000000:\n\t\t\tif ((instruction & 0x010000F0) == 0x00000090) {\n\t\t\t\t// Multiplies\n\t\t\t\tvar rd = (instruction & 0x000F0000) >> 16;\n\t\t\t\tvar rn = (instruction & 0x0000F000) >> 12;\n\t\t\t\tvar rs = (instruction & 0x00000F00) >> 8;\n\t\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\t\tswitch (instruction & 0x00F00000) {\n\t\t\t\tcase 0x00000000:\n\t\t\t\t\t// MUL\n\t\t\t\t\top = this.armCompiler.constructMUL(rd, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00100000:\n\t\t\t\t\t// MULS\n\t\t\t\t\top = this.armCompiler.constructMULS(rd, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00200000:\n\t\t\t\t\t// MLA\n\t\t\t\t\top = this.armCompiler.constructMLA(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak\n\t\t\t\tcase 0x00300000:\n\t\t\t\t\t// MLAS\n\t\t\t\t\top = this.armCompiler.constructMLAS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00800000:\n\t\t\t\t\t// UMULL\n\t\t\t\t\top = this.armCompiler.constructUMULL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00900000:\n\t\t\t\t\t// UMULLS\n\t\t\t\t\top = this.armCompiler.constructUMULLS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00A00000:\n\t\t\t\t\t// UMLAL\n\t\t\t\t\top = this.armCompiler.constructUMLAL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00B00000:\n\t\t\t\t\t// UMLALS\n\t\t\t\t\top = this.armCompiler.constructUMLALS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00C00000:\n\t\t\t\t\t// SMULL\n\t\t\t\t\top = this.armCompiler.constructSMULL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00D00000:\n\t\t\t\t\t// SMULLS\n\t\t\t\t\top = this.armCompiler.constructSMULLS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00E00000:\n\t\t\t\t\t// SMLAL\n\t\t\t\t\top = this.armCompiler.constructSMLAL(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00F00000:\n\t\t\t\t\t// SMLALS\n\t\t\t\t\top = this.armCompiler.constructSMLALS(rd, rn, rs, rm, condOp);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\t} else {\n\t\t\t\t// Halfword and signed byte data transfer\n\t\t\t\tvar load = instruction & 0x00100000;\n\t\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\t\t\t\tvar hiOffset = (instruction & 0x00000F00) >> 4;\n\t\t\t\tvar loOffset = rm = instruction & 0x0000000F;\n\t\t\t\tvar h = instruction & 0x00000020;\n\t\t\t\tvar s = instruction & 0x00000040;\n\t\t\t\tvar w = instruction & 0x00200000;\n\t\t\t\tvar i = instruction & 0x00400000;\n\n\t\t\t\tvar address : AddressFunction;\n\t\t\t\tif (i) {\n\t\t\t\t\tvar immediate = loOffset | hiOffset;\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode23Immediate(instruction, immediate, condOp);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode23Register(instruction, rm, condOp);\n\t\t\t\t}\n\t\t\t\taddress.writesPC = !!w && rn == ARMRegs.PC;\n\n\t\t\t\tif ((instruction & 0x00000090) == 0x00000090) {\n\t\t\t\t\tif (load) {\n\t\t\t\t\t\t// Load [signed] halfword/byte\n\t\t\t\t\t\tif (h) {\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\t// LDRSH\n\t\t\t\t\t\t\t\top = this.armCompiler.constructLDRSH(rd, address, condOp);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// LDRH\n\t\t\t\t\t\t\t\top = this.armCompiler.constructLDRH(rd, address, condOp);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\t// LDRSB\n\t\t\t\t\t\t\t\top = this.armCompiler.constructLDRSB(rd, address, condOp);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!s && h) {\n\t\t\t\t\t\t// STRH\n\t\t\t\t\t\top = this.armCompiler.constructSTRH(rd, address, condOp);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\top.writesPC = rd == ARMRegs.PC || address.writesPC;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x04000000:\n\t\tcase 0x06000000:\n\t\t\t// LDR/STR\n\t\t\tvar rd = (instruction & 0x0000F000) >> 12;\n\t\t\tvar load = instruction & 0x00100000;\n\t\t\tvar b = instruction & 0x00400000;\n\t\t\tvar i = instruction & 0x02000000;\n\t\t\t// test for UDF instruction\n\t\t\tif ((instruction & 0xfff000f0) == (0xe7f000f0|0)) {\n\t\t\t\tvar immediate = instruction & 0x0000000f; // TODO: full range\n\t\t\t\tthrow new EmuHalt(\"Program exited (\" + immediate + \")\", undefined, true);\n\t\t\t}\n\n\t\t\tvar address : AddressFunction = function() {\n\t\t\t\tthrow new EmuHalt(\"Unimplemented memory access: 0x\" + instruction.toString(16));\n\t\t\t};\n\t\t\tif (~instruction & 0x01000000) {\n\t\t\t\t// Clear the W bit if the P bit is clear--we don't support memory translation, so these turn into regular accesses\n\t\t\t\tinstruction &= 0xFFDFFFFF;\n\t\t\t}\n\t\t\tif (i) {\n\t\t\t\t// Register offset\n\t\t\t\tvar rm = instruction & 0x0000000F;\n\t\t\t\tvar shiftType = instruction & 0x00000060;\n\t\t\t\tvar shiftImmediate = (instruction & 0x00000F80) >> 7;\n\t\t\t\t\n\t\t\t\tif (shiftType || shiftImmediate) {\n\t\t\t\t\tshiftOp = this.barrelShiftImmediate(shiftType, shiftImmediate, rm);\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode2RegisterShifted(instruction, shiftOp, condOp);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode23Register(instruction, rm, condOp);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Immediate\n\t\t\t\tvar offset = instruction & 0x00000FFF;\n\t\t\t\taddress = this.armCompiler.constructAddressingMode23Immediate(instruction, offset, condOp);\n\t\t\t}\n\t\t\tif (load) {\n\t\t\t\tif (b) {\n\t\t\t\t\t// LDRB\n\t\t\t\t\top = this.armCompiler.constructLDRB(rd, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\t// LDR\n\t\t\t\t\top = this.armCompiler.constructLDR(rd, address, condOp);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (b) {\n\t\t\t\t\t// STRB\n\t\t\t\t\top = this.armCompiler.constructSTRB(rd, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\t// STR\n\t\t\t\t\top = this.armCompiler.constructSTR(rd, address, condOp);\n\t\t\t\t}\n\t\t\t}\n\t\t\top.writesPC = load && (rd == ARMRegs.PC || address.writesPC); // SEH\n\t\t\tbreak;\n\t\tcase 0x08000000:\n\t\t\t// Block data transfer\n\t\t\tvar load = instruction & 0x00100000;\n\t\t\tvar w = instruction & 0x00200000;\n\t\t\tvar user = instruction & 0x00400000;\n\t\t\tvar u = instruction & 0x00800000;\n\t\t\tvar p = instruction & 0x01000000;\n\t\t\tvar rs = instruction & 0x0000FFFF;\n\t\t\tvar rn = (instruction & 0x000F0000) >> 16;\n\n\t\t\tvar address : AddressFunction;\n\t\t\tvar immediate = 0;\n\t\t\tvar offset = 0;\n\t\t\tvar overlap = false;\n\t\t\tif (u) {\n\t\t\t\tif (p) {\n\t\t\t\t\timmediate = 4;\n\t\t\t\t}\n\t\t\t\tfor (var m = 0x01, i = 0; i < 16; m <<= 1, ++i) {\n\t\t\t\t\tif (rs & m) {\n\t\t\t\t\t\tif (w && i == rn && !offset) {\n\t\t\t\t\t\t\trs &= ~m;\n\t\t\t\t\t\t\timmediate += 4;\n\t\t\t\t\t\t\toverlap = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset += 4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!p) {\n\t\t\t\t\timmediate = 4;\n\t\t\t\t}\n\t\t\t\tfor (var m = 0x01, i = 0; i < 16; m <<= 1, ++i) {\n\t\t\t\t\tif (rs & m) {\n\t\t\t\t\t\tif (w && i == rn && !offset) {\n\t\t\t\t\t\t\trs &= ~m;\n\t\t\t\t\t\t\timmediate += 4;\n\t\t\t\t\t\t\toverlap = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\timmediate -= 4;\n\t\t\t\t\t\toffset -= 4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (w) {\n\t\t\t\taddress = this.armCompiler.constructAddressingMode4Writeback(immediate, offset, rn, overlap);\n\t\t\t} else {\n\t\t\t\taddress = this.armCompiler.constructAddressingMode4(immediate, rn);\n\t\t\t}\n\t\t\tif (load) {\n\t\t\t\t// LDM\n\t\t\t\tif (user) {\n\t\t\t\t\top = this.armCompiler.constructLDMS(rs, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructLDM(rs, address, condOp);\n\t\t\t\t}\n\t\t\t\top.writesPC = !!(rs & (1 << 15));\n\t\t\t} else {\n\t\t\t\t// STM\n\t\t\t\tif (user) {\n\t\t\t\t\top = this.armCompiler.constructSTMS(rs, address, condOp);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructSTM(rs, address, condOp);\n\t\t\t\t}\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0A000000:\n\t\t\t// Branch\n\t\t\tvar immediate = instruction & 0x00FFFFFF;\n\t\t\tif (immediate & 0x00800000) {\n\t\t\t\timmediate |= 0xFF000000;\n\t\t\t}\n\t\t\timmediate <<= 2;\n\t\t\tvar link = instruction & 0x01000000;\n\t\t\tif (link) {\n\t\t\t\top = this.armCompiler.constructBL(immediate, condOp);\n\t\t\t} else {\n\t\t\t\top = this.armCompiler.constructB(immediate, condOp);\n\t\t\t}\n\t\t\top.writesPC = true;\n\t\t\top.fixedJump = true;\n\t\t\tbreak;\n\t\tcase 0x0C000000:\n\t\t\t// Coprocessor data transfer\n\t\t\tvar load = instruction & 0x00100000;\n\t\t\tvar w = instruction & 0x00200000;\n\t\t\tvar user = instruction & 0x00400000;\n\t\t\tvar u = instruction & 0x00800000;\n\t\t\tvar p = instruction & 0x01000000;\n\t\t\tvar rn = (instruction & 0x000F0000) >> 16;\n\t\t\tvar crd = (instruction & 0x0000F000) >> 12;\n\t\t\tvar cpnum = (instruction & 0x00000F00) >> 8;\n\t\t\tvar immediate = instruction & 0x000000FF;\n\t\t\tvar cond = (instruction >> 28) & 0xf;\n\t\t\tvar condOp = this.conds[cond];\n\n\t\t\t// VPUSH, VPOP\n\t\t\tif ((instruction & 0x0fbf0f00) == 0x0d2d0a00) {\n\t\t\t\top = this.armCompiler.constructVPUSH(condOp, (crd<<1)|(user?1:0), immediate, true);\n\t\t\t}\n\t\t\telse if ((instruction & 0x0fbf0f00) == 0x0d2d0b00) {\n\t\t\t\top = this.armCompiler.constructVPUSH(condOp, ((user?16:0)|crd)*2, immediate, false);\n\t\t\t}\n\t\t\telse if ((instruction & 0x0fbf0f00) == 0x0cbd0a00) {\n\t\t\t\top = this.armCompiler.constructVPOP(condOp, (crd<<1)|(user?1:0), immediate, true);\n\t\t\t}\n\t\t\telse if ((instruction & 0x0fbf0f00) == 0x0cbd0b00) {\n\t\t\t\top = this.armCompiler.constructVPOP(condOp, ((user?16:0)|crd)*2, immediate, false);\n\t\t\t}\n\t\t\t// VLDR, VSTR\n\t\t\t// https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/VSTR?lang=en\n\t\t\telse if ((instruction & 0x0f200f00) == 0x0d000a00) {\n\t\t\t\timmediate *= 4;\n\t\t\t\tif (!u) immediate = -immediate;\n\t\t\t\tvar overlap = false;\n\t\t\t\tvar d = (crd<<1)|(user?1:0);\n\t\n\t\t\t\tvar address : AddressFunction;\n\t\t\t\tif (w) {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4Writeback(immediate, offset, rn, overlap);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4(immediate, rn);\n\t\t\t\t}\n\t\t\t\tif (load) {\n\t\t\t\t\top = this.armCompiler.constructVLDR(condOp, d, address, true);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructVSTR(condOp, d, address, true);\n\t\t\t\t}\n\t\t\t} else if ((instruction & 0x0f200f00) == 0x0d000b00) {\n\t\t\t\timmediate *= 4;\n\t\t\t\tif (!u) immediate = -immediate;\n\t\t\t\tvar overlap = false;\n\t\t\t\tvar d = ((user?16:0)|crd)*2;\n\t\n\t\t\t\tvar address : AddressFunction;\n\t\t\t\tif (w) {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4Writeback(immediate, offset, rn, overlap);\n\t\t\t\t} else {\n\t\t\t\t\taddress = this.armCompiler.constructAddressingMode4(immediate, rn);\n\t\t\t\t}\n\t\t\t\tif (load) {\n\t\t\t\t\top = this.armCompiler.constructVLDR(condOp, d, address, false);\n\t\t\t\t} else {\n\t\t\t\t\top = this.armCompiler.constructVSTR(condOp, d, address, false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0E000000:\n\t\t\t// Coprocessor data operation/SWI\n\t\t\tif ((instruction & 0x0F000000) == 0x0F000000) {\n\t\t\t\t// SWI\n\t\t\t\tvar immediate = (instruction & 0x00FFFFFF);\n\t\t\t\top = this.armCompiler.constructSWI(immediate, condOp);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VCVT, VCVTR, VCVT\n\t\t\t// https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/VCVT--VCVTR--between-floating-point-and-integer--Floating-point-\n\t\t\t/*\n\t\t\tif opc2 != '000' && !(opc2 IN \"10x\") then SEE \"Related encodings\";\n\t\t\tto_integer = (opc2<2> == '1'); dp_operation = (sz == 1);\n\t\t\tif to_integer then\n\t\t\t\tunsigned = (opc2<0> == '0'); round_zero = (op == '1');\n\t\t\t\td = UInt(Vd:D); m = if dp_operation then UInt(M:Vm) else UInt(Vm:M);\n\t\t\telse\n\t\t\t\tunsigned = (op == '0'); round_nearest = FALSE; // FALSE selects FPSCR rounding\n\t\t\t\tm = UInt(Vm:M); d = if dp_operation then UInt(D:Vd) else UInt(Vd:D);\n\t\t\t*/\n\t\t\telse if ((instruction & 0x0FB80E50) == 0x0EB80A40) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst opc2 = (instruction >> 16) & 0x7;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst op0 = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0xf;\n\t\t\t\tconst to_integer = opc2 & 0x4;\n\t\t\t\tconst dp_operation = sz != 0;\n\t\t\t\tconst unsigned = to_integer ? opc2 & 0x1 : 0;\n\t\t\t\tconst round_zero = op0 != 0;\n\t\t\t\tconst round_nearest = false;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\t//console.log(\"VCVT\", d, m, opc2, to_integer, dp_operation, unsigned, round_zero, round_nearest);\n\t\t\t\top = this.armCompiler.constructVCVT(condOp, d, m, to_integer, dp_operation, unsigned, round_zero, round_nearest);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VCVT f64/f32\n\t\t\telse if ((instruction & 0x0FBF0ED0) == 0x0EB70AC0) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0xf;\n\t\t\t\tconst double_to_single = sz != 0;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\top = this.armCompiler.constructVCVTF(condOp, d, m, double_to_single);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// 3-op floating point vector instructions (VADD, etc)\n\t\t\telse if ((instruction & 0x0FA00E10) == 0x0E200A00) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst N = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst opcode = (instruction & 0x0F00000) >> 20;\n\t\t\t\tconst Vn = (instruction & 0x000F0000) >> 16;\n\t\t\t\tconst Vd = (instruction & 0x0000F000) >> 12;\n\t\t\t\tconst opcode2 = (instruction & 0b11100000) >> 5;\n\t\t\t\tconst Vm = instruction & 0x0000000F;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\tconst n = sz ? (N?16:0)|Vn : (Vn<<1)|(N?1:0);\n\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.armCompiler.constructVFP3Register(condOp, opcode, n, d, sz, opcode2, m);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VDIV - https://developer.arm.com/documentation/ddi0597/2023-12/SIMD-FP-Instructions/VDIV--Divide-?lang=en\n\t\t\telse if ((instruction & 0x0FB00C50) == 0x0E800800) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vn = (instruction >> 16) & 0xf;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst size = (instruction >> 8) & 0x3;\n\t\t\t\tconst N = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0xf;\n\t\t\t\t/*\n\t\t\t\tcase size of\n\t\t\t\twhen '01' esize = 16; d = UInt(Vd:D); n = UInt(Vn:N); m = UInt(Vm:M);\n\t\t\t\twhen '10' esize = 32; d = UInt(Vd:D); n = UInt(Vn:N); m = UInt(Vm:M);\n\t\t\t\twhen '11' esize = 64; d = UInt(D:Vd); n = UInt(N:Vn); m = UInt(M:Vm);\n\t\t\t\t*/\n\t\t\t\tconst d = size==3 ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = size==3 ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\tconst n = size==3 ? (N?16:0)|Vn : (Vn<<1)|(N?1:0);\n\t\t\t\top = this.armCompiler.constructVFP3Register(condOp, 8, n, d, size==3, 0, m);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// 2-op floating point vector instructions (VCMP, etc)\n\t\t\telse if ((instruction & 0x0FBF0E50) == 0x0EB40A40) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst E = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0x0000000F;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\t\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.armCompiler.constructVCMP(condOp, d, Vd, sz, E, m, Vm);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// VCMP #0\n\t\t\telse if ((instruction & 0x0FBF0EFF) == 0x0EB50A40) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst D = (instruction >> 22) & 0x1;\n\t\t\t\tconst Vd = (instruction >> 12) & 0xf;\n\t\t\t\tconst sz = (instruction >> 8) & 0x1;\n\t\t\t\tconst E = (instruction >> 7) & 0x1;\n\t\t\t\tconst M = (instruction >> 5) & 0x1;\n\t\t\t\tconst Vm = instruction & 0x0000000F;\n\t\t\t\tconst d = sz ? (D?16:0)|Vd : (Vd<<1)|(D?1:0);\n\t\t\t\tconst m = sz ? (M?16:0)|Vm : (Vm<<1)|(M?1:0);\n\t\t\t\t\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.armCompiler.constructVCMP0(condOp, d, Vd, sz, E, m, Vm);\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\t// vmrs apsr_nzcv, fpscr (ignore, we always call this after CMP)\n\t\t\telse if (instruction == 0xeef1fa10) {\n\t\t\t\top = this.armCompiler.constructNOP();\n\t\t\t}\n\t\t\t// VMOV - https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/VMOV--between-ARM-core-register-and-single-precision-register-\n\t\t\telse if ((instruction & 0x0FE00F10) == 0x0E000A10) {\n\t\t\t\tconst cond = (instruction >> 28) & 0xf;\n\t\t\t\tconst opc1 = (instruction >> 20) & 0x1;\n\t\t\t\tconst Vn = (instruction >> 16) & 0xf;\n\t\t\t\tconst Rt = (instruction >> 12) & 0xf;\n\t\t\t\tconst N = (instruction >> 7) & 0x1;\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\t//console.log(\"VMOV\", instruction.toString(16), opc1, Vn, Rt, N);\n\t\t\t\top = this.armCompiler.constructVMOV(condOp, opc1, (Vn<<1)|(N?1:0), Rt);\n\t\t\t}\n\t\t\t// vmov.32 dn[i], rn\n\t\t\telse if (instruction == 0xee000b10) {\n\t\t\t\top = this.armCompiler.constructVMOV(condOp, false, 0, 0);\n\t\t\t}\n\t\t\telse if (instruction == 0xee201b10) {\n\t\t\t\top = this.armCompiler.constructVMOV(condOp, false, 1, 1);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new EmuHalt('Bad opcode: 0x' + instruction.toString(16));\n\t\t}\n\t}\n\n\top.execMode = ARMMode.MODE_ARM;\n\top.fixedJump = op.fixedJump || false;\n\treturn op;\n};\n\nARMCore.prototype.compileThumb = function(instruction) {\n\tvar op = this.badOp(instruction & 0xFFFF);\n\tvar cpu = this;\n\tvar gprs = this.gprs;\n\tif ((instruction & 0xFC00) == 0x4000) {\n\t\t// Data-processing register\n\t\tvar rm = (instruction & 0x0038) >> 3;\n\t\tvar rd = instruction & 0x0007;\n\t\tswitch (instruction & 0x03C0) {\n\t\tcase 0x0000:\n\t\t\t// AND\n\t\t\top = this.thumbCompiler.constructAND(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0040:\n\t\t\t// EOR\n\t\t\top = this.thumbCompiler.constructEOR(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0080:\n\t\t\t// LSL(2)\n\t\t\top = this.thumbCompiler.constructLSL2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x00C0:\n\t\t\t// LSR(2)\n\t\t\top = this.thumbCompiler.constructLSR2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0100:\n\t\t\t// ASR(2)\n\t\t\top = this.thumbCompiler.constructASR2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0140:\n\t\t\t// ADC\n\t\t\top = this.thumbCompiler.constructADC(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0180:\n\t\t\t// SBC\n\t\t\top = this.thumbCompiler.constructSBC(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x01C0:\n\t\t\t// ROR\n\t\t\top = this.thumbCompiler.constructROR(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// TST\n\t\t\top = this.thumbCompiler.constructTST(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0240:\n\t\t\t// NEG\n\t\t\top = this.thumbCompiler.constructNEG(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0280:\n\t\t\t// CMP(2)\n\t\t\top = this.thumbCompiler.constructCMP2(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x02C0:\n\t\t\t// CMN\n\t\t\top = this.thumbCompiler.constructCMN(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0300:\n\t\t\t// ORR\n\t\t\top = this.thumbCompiler.constructORR(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0340:\n\t\t\t// MUL\n\t\t\top = this.thumbCompiler.constructMUL(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x0380:\n\t\t\t// BIC\n\t\t\top = this.thumbCompiler.constructBIC(rd, rm);\n\t\t\tbreak;\n\t\tcase 0x03C0:\n\t\t\t// MVN\n\t\t\top = this.thumbCompiler.constructMVN(rd, rm);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xFC00) == 0x4400) {\n\t\t// Special data processing / branch/exchange instruction set\n\t\tvar rm = (instruction & 0x0078) >> 3;\n\t\tvar rn = instruction & 0x0007;\n\t\tvar h1 = instruction & 0x0080;\n\t\tvar rd = rn | (h1 >> 4);\n\t\tswitch (instruction & 0x0300) {\n\t\tcase 0x0000:\n\t\t\t// ADD(4)\n\t\t\top = this.thumbCompiler.constructADD4(rd, rm)\n\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\tbreak;\n\t\tcase 0x0100:\n\t\t\t// CMP(3)\n\t\t\top = this.thumbCompiler.constructCMP3(rd, rm);\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// MOV(3)\n\t\t\top = this.thumbCompiler.constructMOV3(rd, rm);\n\t\t\top.writesPC = rd == ARMRegs.PC;\n\t\t\tbreak;\n\t\tcase 0x0300:\n\t\t\t// BX\n\t\t\top = this.thumbCompiler.constructBX(rd, rm);\n\t\t\top.writesPC = true;\n\t\t\top.fixedJump = false;\n\t\t\tbreak;\n\t\t}\n\t} else if ((instruction & 0xF800) == 0x1800) {\n\t\t// Add/subtract\n\t\tvar rm = (instruction & 0x01C0) >> 6;\n\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\tvar rd = instruction & 0x0007;\n\t\tswitch (instruction & 0x0600) {\n\t\tcase 0x0000:\n\t\t\t// ADD(3)\n\t\t\top = this.thumbCompiler.constructADD3(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// SUB(3)\n\t\t\top = this.thumbCompiler.constructSUB3(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0400:\n\t\t\tvar immediate = (instruction & 0x01C0) >> 6;\n\t\t\tif (immediate) {\n\t\t\t\t// ADD(1)\n\t\t\t\top = this.thumbCompiler.constructADD1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// MOV(2)\n\t\t\t\top = this.thumbCompiler.constructMOV2(rd, rn, rm);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0600:\n\t\t\t// SUB(1)\n\t\t\tvar immediate = (instruction & 0x01C0) >> 6;\n\t\t\top = this.thumbCompiler.constructSUB1(rd, rn, immediate);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if (!(instruction & 0xE000)) {\n\t\t// Shift by immediate\n\t\tvar rd = instruction & 0x0007;\n\t\tvar rm = (instruction & 0x0038) >> 3;\n\t\tvar immediate = (instruction & 0x07C0) >> 6;\n\t\tswitch (instruction & 0x1800) {\n\t\tcase 0x0000:\n\t\t\t// LSL(1)\n\t\t\top = this.thumbCompiler.constructLSL1(rd, rm, immediate);\n\t\t\tbreak;\n\t\tcase 0x0800:\n\t\t\t// LSR(1)\n\t\t\top = this.thumbCompiler.constructLSR1(rd, rm, immediate);\n\t\t\tbreak;\n\t\tcase 0x1000:\n\t\t\t// ASR(1)\n\t\t\top = this.thumbCompiler.constructASR1(rd, rm, immediate);\n\t\t\tbreak;\n\t\tcase 0x1800:\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xE000) == 0x2000) {\n\t\t// Add/subtract/compare/move immediate\n\t\tvar immediate = instruction & 0x00FF;\n\t\tvar rn = (instruction & 0x0700) >> 8;\n\t\tswitch (instruction & 0x1800) {\n\t\tcase 0x0000:\n\t\t\t// MOV(1)\n\t\t\top = this.thumbCompiler.constructMOV1(rn, immediate);\n\t\t\tbreak;\n\t\tcase 0x0800:\n\t\t\t// CMP(1)\n\t\t\top = this.thumbCompiler.constructCMP1(rn, immediate);\n\t\t\tbreak;\n\t\tcase 0x1000:\n\t\t\t// ADD(2)\n\t\t\top = this.thumbCompiler.constructADD2(rn, immediate);\n\t\t\tbreak;\n\t\tcase 0x1800:\n\t\t\t// SUB(2)\n\t\t\top = this.thumbCompiler.constructSUB2(rn, immediate);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xF800) == 0x4800) {\n\t\t// LDR(3)\n\t\tvar rd = (instruction & 0x0700) >> 8;\n\t\tvar immediate = (instruction & 0x00FF) << 2;\n\t\top = this.thumbCompiler.constructLDR3(rd, immediate);\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xF000) == 0x5000) {\n\t\t// Load and store with relative offset\n\t\tvar rd = instruction & 0x0007;\n\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\tvar rm = (instruction & 0x01C0) >> 6;\n\t\tvar opcode = instruction & 0x0E00;\n\t\tswitch (opcode) {\n\t\tcase 0x0000:\n\t\t\t// STR(2)\n\t\t\top = this.thumbCompiler.constructSTR2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0200:\n\t\t\t// STRH(2)\n\t\t\top = this.thumbCompiler.constructSTRH2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0400:\n\t\t\t// STRB(2)\n\t\t\top = this.thumbCompiler.constructSTRB2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0600:\n\t\t\t// LDRSB\n\t\t\top = this.thumbCompiler.constructLDRSB(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0800:\n\t\t\t// LDR(2)\n\t\t\top = this.thumbCompiler.constructLDR2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0A00:\n\t\t\t// LDRH(2)\n\t\t\top = this.thumbCompiler.constructLDRH2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0C00:\n\t\t\t// LDRB(2)\n\t\t\top = this.thumbCompiler.constructLDRB2(rd, rn, rm);\n\t\t\tbreak;\n\t\tcase 0x0E00:\n\t\t\t// LDRSH\n\t\t\top = this.thumbCompiler.constructLDRSH(rd, rn, rm);\n\t\t\tbreak;\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xE000) == 0x6000) {\n\t\t// Load and store with immediate offset\n\t\tvar rd = instruction & 0x0007;\n\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\tvar immediate = (instruction & 0x07C0) >> 4;\n\t\tvar b = instruction & 0x1000;\n\t\tif (b) {\n\t\t\timmediate >>= 2;\n\t\t}\n\t\tvar load = instruction & 0x0800;\n\t\tif (load) {\n\t\t\tif (b) {\n\t\t\t\t// LDRB(1)\n\t\t\t\top = this.thumbCompiler.constructLDRB1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// LDR(1)\n\t\t\t\top = this.thumbCompiler.constructLDR1(rd, rn, immediate);\n\t\t\t}\n\t\t} else {\n\t\t\tif (b) {\n\t\t\t\t// STRB(1)\n\t\t\t\top = this.thumbCompiler.constructSTRB1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// STR(1)\n\t\t\t\top = this.thumbCompiler.constructSTR1(rd, rn, immediate);\n\t\t\t}\n\t\t}\n\t\top.writesPC = false;\n\t} else if ((instruction & 0xF600) == 0xB400) {\n\t\t// Push and pop registers\n\t\tvar r = !!(instruction & 0x0100);\n\t\tvar rs = instruction & 0x00FF;\n\t\tif (instruction & 0x0800) {\n\t\t\t// POP\n\t\t\top = this.thumbCompiler.constructPOP(rs, r);\n\t\t\top.writesPC = r;\n\t\t\top.fixedJump = false;\n\t\t} else {\n\t\t\t// PUSH\n\t\t\top = this.thumbCompiler.constructPUSH(rs, r);\n\t\t\top.writesPC = false;\n\t\t}\n\t} else if (instruction & 0x8000) {\n\t\tswitch (instruction & 0x7000) {\n\t\tcase 0x0000:\n\t\t\t// Load and store halfword\n\t\t\tvar rd = instruction & 0x0007;\n\t\t\tvar rn = (instruction & 0x0038) >> 3;\n\t\t\tvar immediate = (instruction & 0x07C0) >> 5;\n\t\t\tif (instruction & 0x0800) {\n\t\t\t\t// LDRH(1)\n\t\t\t\top = this.thumbCompiler.constructLDRH1(rd, rn, immediate);\n\t\t\t} else {\n\t\t\t\t// STRH(1)\n\t\t\t\top = this.thumbCompiler.constructSTRH1(rd, rn, immediate);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x1000:\n\t\t\t// SP-relative load and store\n\t\t\tvar rd = (instruction & 0x0700) >> 8;\n\t\t\tvar immediate = (instruction & 0x00FF) << 2;\n\t\t\tvar load = instruction & 0x0800;\n\t\t\tif (load) {\n\t\t\t\t// LDR(4)\n\t\t\t\top = this.thumbCompiler.constructLDR4(rd, immediate);\n\t\t\t} else {\n\t\t\t\t// STR(3)\n\t\t\t\top = this.thumbCompiler.constructSTR3(rd, immediate);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x2000:\n\t\t\t// Load address\n\t\t\tvar rd = (instruction & 0x0700) >> 8;\n\t\t\tvar immediate = (instruction & 0x00FF) << 2;\n\t\t\tif (instruction & 0x0800) {\n\t\t\t\t// ADD(6)\n\t\t\t\top = this.thumbCompiler.constructADD6(rd, immediate);\n\t\t\t} else {\n\t\t\t\t// ADD(5)\n\t\t\t\top = this.thumbCompiler.constructADD5(rd, immediate);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x3000:\n\t\t\t// Miscellaneous\n\t\t\tif (!(instruction & 0x0F00)) {\n\t\t\t\t// Adjust stack pointer\n\t\t\t\t// ADD(7)/SUB(4)\n\t\t\t\tvar b = instruction & 0x0080;\n\t\t\t\tvar immediate = (instruction & 0x7F) << 2;\n\t\t\t\tif (b) {\n\t\t\t\t\timmediate = -immediate;\n\t\t\t\t}\n\t\t\t\top = this.thumbCompiler.constructADD7(immediate)\n\t\t\t\top.writesPC = false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x4000:\n\t\t\t// Multiple load and store\n\t\t\tvar rn = (instruction & 0x0700) >> 8;\n\t\t\tvar rs = instruction & 0x00FF;\n\t\t\tif (instruction & 0x0800) {\n\t\t\t\t// LDMIA\n\t\t\t\top = this.thumbCompiler.constructLDMIA(rn, rs);\n\t\t\t} else {\n\t\t\t\t// STMIA\n\t\t\t\top = this.thumbCompiler.constructSTMIA(rn, rs);\n\t\t\t}\n\t\t\top.writesPC = false;\n\t\t\tbreak;\n\t\tcase 0x5000:\n\t\t\t// Conditional branch\n\t\t\tvar cond = (instruction & 0x0F00) >> 8;\n\t\t\tvar immediate = (instruction & 0x00FF);\n\t\t\tif (cond == 0xF) {\n\t\t\t\t// SWI\n\t\t\t\top = this.thumbCompiler.constructSWI(immediate);\n\t\t\t\top.writesPC = false;\n\t\t\t} else {\n\t\t\t\t// B(1)\n\t\t\t\tif (instruction & 0x0080) {\n\t\t\t\t\timmediate |= 0xFFFFFF00;\n\t\t\t\t}\n\t\t\t\timmediate <<= 1;\n\t\t\t\tvar condOp = this.conds[cond];\n\t\t\t\top = this.thumbCompiler.constructB1(immediate, condOp);\n\t\t\t\top.writesPC = true;\n\t\t\t\top.fixedJump = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x6000:\n\t\tcase 0x7000:\n\t\t\t// BL(X)\n\t\t\tvar immediate = instruction & 0x07FF;\n\t\t\tvar h = instruction & 0x1800;\n\t\t\tswitch (h) {\n\t\t\tcase 0x0000:\n\t\t\t\t// B(2)\n\t\t\t\tif (immediate & 0x0400) {\n\t\t\t\t\timmediate |= 0xFFFFF800;\n\t\t\t\t}\n\t\t\t\timmediate <<= 1;\n\t\t\t\top = this.thumbCompiler.constructB2(immediate);\n\t\t\t\top.writesPC = true;\n\t\t\t\top.fixedJump = true;\n\t\t\t\tbreak;\n\t\t\tcase 0x0800:\n\t\t\t\t// BLX (ARMv5T)\n\t\t\t\t/*op = function() {\n\t\t\t\t\tvar pc = gprs[ARMRegs.PC];\n\t\t\t\t\tgprs[ARMRegs.PC] = (gprs[ARMRegs.LR] + (immediate << 1)) & 0xFFFFFFFC;\n\t\t\t\t\tgprs[ARMRegs.LR] = pc - 1;\n\t\t\t\t\tcpu.switchExecMode(cpu.MODE_ARM);\n\t\t\t\t}*/\n\t\t\t\tbreak;\n\t\t\tcase 0x1000:\n\t\t\t\t// BL(1)\n\t\t\t\tif (immediate & 0x0400) {\n\t\t\t\t\timmediate |= 0xFFFFFC00;\n\t\t\t\t}\n\t\t\t\timmediate <<= 12;\n\t\t\t\top = this.thumbCompiler.constructBL1(immediate);\n\t\t\t\top.writesPC = false;\n\t\t\t\tbreak;\n\t\t\tcase 0x1800:\n\t\t\t\t// BL(2)\n\t\t\t\top = this.thumbCompiler.constructBL2(immediate);\n\t\t\t\top.writesPC = true;\n\t\t\t\top.fixedJump = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new EmuHalt(\"Undefined instruction: 0x\" + instruction.toString(16));\n\t\t}\n\t} else {\n\t\tthrow new EmuHalt('Bad opcode: 0x' + instruction.toString(16));\n\t}\n\n\top.execMode = ARMMode.MODE_THUMB;\n\top.fixedJump = op.fixedJump || false;\n\t//console.log(hex(instruction), op);\n\treturn op;\n};\n\n///////////////////////////////////////////////////////////////////////////\n\ntype ARMBus = Bus & Bus32;\n\nexport class ARM32CPU implements CPU, InstructionBased, ARMMMUInterface, ARMIRQInterface, SavesState {\n\n\tcore : ARMCoreType;\n\tbus : ARMBus;\n\tmemory : ARMMemoryRegion[];\n\tf64arr = new Float64Array(1);\n\tf32arr = new Float32Array(this.f64arr.buffer);\n\ti32arr = new Int32Array(this.f64arr.buffer);\n\n\tBASE_OFFSET = 24;\n\tOFFSET_MASK = 0x00FFFFFF;\n\n\tconstructor() {\n\t\tthis.core = new ARMCore();\n\t\tthis.core.irq = this;\n\t\tthis.core.mmu = this;\n\t\tthis.resetMemory();\n\t}\n\tresetMemory() {\n\t\tthis.memory = []; // TODO\n\t\tfor (var i=0; i<256; i++) {\n\t\t\t// TODO: constant\n\t\t\tconst bits = 10;\n\t\t\tthis.memory[i] = {\n\t\t\t\tPAGE_MASK: (2 << bits) - 1,\n\t\t\t\tICACHE_PAGE_BITS: bits,\n\t\t\t\ticache: new Array() // size >> (bits + 1))\n\t\t\t }; // TODO?\n\t\t}\n\t}\n\tadvanceInsn() : number {\n\t\tvar n = this.core.cycles;\n\t\tthis.core.step();\n\t\tn -= this.core.cycles;\n\t\treturn n > 0 ? n : 1;\n\t}\n\tgetPC(): number {\n\t\treturn this.core.gprs[15] - this.core.instructionWidth;\n\t}\n\tgetSP(): number {\n\t\treturn this.core.gprs[13];\n\t}\n\tisStable(): boolean {\n\t\treturn true; // TODO?\n\t}\n\tconnectMemoryBus(bus: ARMBus): void {\n\t\tthis.bus = bus;\n\t}\n\treset(): void {\n\t\tthis.resetMemory();\n\t\tconst resetVector = this.load32(0);\n\t\tthis.core.resetCPU(resetVector);\n\t}\n\tsaveState() : ARMCoreState {\n\t\treturn this.core.freeze();\n\t}\n\tloadState(state: ARMCoreState): void {\n\t\tthis.core.defrost(state);\n\t}\n\n\tload8(a: number): number {\n\t\treturn (this.bus.read(a) << 24) >> 24;\n\t}\n\tloadU8(a: number): number {\n\t\treturn this.bus.read(a) & 0xff;\n\t}\n\tload16(a: number): number {\n\t\treturn (this.loadU16(a) << 16) >> 16;\n\t}\n\tloadU16(a: number): number {\n\t\treturn this.bus.read(a) | (this.bus.read(a+1) << 8);\n\t}\n\tload32(a: number): number {\n\t\tvar v = this.bus.read32(a);\n\t\treturn v;\n\t}\n\t// TODO: memory.invalidatePage(maskedOffset);\n\tstore8(a: number, v: number): void {\n\t\tthis.bus.write(a, v & 0xff);\n\t}\n\tstore16(a: number, v: number): void {\n\t\tthis.bus.write(a, v & 0xff);\n\t\tthis.bus.write(a+1, (v >> 8) & 0xff);\n\t}\n\tstore32(a: number, v: number): void {\n\t\tthis.bus.write32(a, v);\n\t}\n\t// TODO\n\twait(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twait32(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twaitSeq32(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twaitMul(rs: number): void {\n if (((rs & 0xFFFFFF00) == 0xFFFFFF00) || !(rs & 0xFFFFFF00)) {\n\t\t\tthis.core.cycles += 1;\n\t\t} else if (((rs & 0xFFFF0000) == 0xFFFF0000) || !(rs & 0xFFFF0000)) {\n\t\t\t\tthis.core.cycles += 2;\n\t\t} else if (((rs & 0xFF000000) == 0xFF000000) || !(rs & 0xFF000000)) {\n\t\t\t\tthis.core.cycles += 3;\n\t\t} else {\n\t\t\t\tthis.core.cycles += 4;\n\t\t}\n\t}\n\twaitMulti32(a: number, total: number): void {\n\t\tthis.core.cycles += 2;\n\t}\n\twaitPrefetch(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\twaitPrefetch32(a: number): void {\n\t\t++this.core.cycles;\n\t}\n\taddressToPage(region: number, address: number) : number {\n return address >> this.memory[region].ICACHE_PAGE_BITS;\n\t}\n\taccessPage(region: number, pageId: number): ARMMemoryPage {\n\t\tvar memory = this.memory[region];\n\t\tvar page = memory.icache[pageId];\n\t\tif (!page || page.invalid) {\n\t\t\t\tpage = {\n\t\t\t\t\t\tthumb: new Array(1 << (memory.ICACHE_PAGE_BITS)),\n\t\t\t\t\t\tarm: new Array(1 << memory.ICACHE_PAGE_BITS - 1),\n\t\t\t\t\t\tinvalid: false\n\t\t\t\t}\n\t\t\t\tmemory.icache[pageId] = page;\n\t\t}\n\t\treturn page;\n\t}\n\n\tswi(opcode: number): void {\n\t\tthis.core.raiseTrap();\n\t}\n\tswi32(opcode: number): void {\n this.swi(opcode >> 16);\n\t}\n\tclear() : void {\n\t}\n\tupdateTimers() : void {\n\t}\n\ttestIRQ() : void {\n\t}\n\n\tisThumb() : boolean {\n\t\treturn this.core.instructionWidth == 2;\n\t}\n\tgetDebugTree() {\n\t\treturn {\n\t\t\tstate: this.saveState(),\n\t\t\tmmu: this.core.mmu\n\t\t};\n\t}\n}\n", "/*\n * Copyright (c) 2024 Steven E. Hugg\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { ARM32CPU, ARMCoreState } from \"../common/cpu/ARM\";\nimport { BasicScanlineMachine, Bus32, HasSerialIO, SerialEvent, SerialIOInterface } from \"../common/devices\";\nimport { newAddressDecoder, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt } from \"../common/emu\";\nimport { Debuggable, EmuState } from \"../common/baseplatform\";\nimport { hex, lpad } from \"../common/util\";\n\nvar GBA_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 0, 0x1],\n [Keys.B, 0, 0x2],\n [Keys.GP_A, 0, 0x1],\n [Keys.GP_B, 0, 0x2],\n [Keys.SELECT,0, 0x4],\n [Keys.START ,0, 0x8],\n [Keys.RIGHT, 0, 0x10],\n [Keys.LEFT, 0, 0x20],\n [Keys.UP, 0, 0x40],\n [Keys.DOWN, 0, 0x80],\n]);\n\nconst RAM_START = 0x0;\nconst RAM_SIZE = 0x100000;\nconst ROM_BASE = 0x0;\nconst IO_START = 0x4000000;\nconst IO_SIZE = 0x100;\nconst MAX_SERIAL_CHARS = 1000000;\n\nconst CPU_FREQ = 4000000; // 4 MHz\n\nconst ILLEGAL_OPCODE = 0xedededed;\n\nexport class ARM32Machine extends BasicScanlineMachine\n implements Debuggable, HasSerialIO, Bus32 {\n\n cpuFrequency = CPU_FREQ; // MHz\n canvasWidth = 160;\n numTotalScanlines = 256;\n numVisibleScanlines = 128;\n cpuCyclesPerLine = Math.floor(CPU_FREQ / (256*60));\n defaultROMSize = RAM_SIZE - ROM_BASE;\n sampleRate = 1;\n \n cpu: ARM32CPU = new ARM32CPU();\n ram = new Uint8Array(RAM_SIZE);\n ram16 = new Uint16Array(this.ram.buffer);\n ram32 = new Uint32Array(this.ram.buffer);\n pixels32 : Uint32Array;\n pixels8 : Uint8Array;\n rombase : number = ROM_BASE;\n brightness : number = 255;\n serial : SerialIOInterface;\n serialOut : SerialEvent[];\n serialIn : SerialEvent[];\n ioregs = new Uint8Array(IO_SIZE);\n ioregs32 = new Uint32Array(this.ioregs.buffer);\n\n constructor() {\n super();\n this.connectCPUMemoryBus(this);\n this.handler = newKeyboardHandler(this.inputs, GBA_KEYCODE_MAP);\n }\n\n connectVideo(pixels:Uint32Array) : void {\n super.connectVideo(pixels);\n this.pixels32 = pixels;\n this.pixels8 = new Uint8Array(pixels.buffer);\n }\n\n connectSerialIO(serial: SerialIOInterface) {\n this.serial = serial;\n }\n\n loadROM(rom: Uint8Array) {\n super.loadROM(rom);\n }\n\n reset() {\n this.ram.fill(0);\n if (this.rom) {\n this.ram.set(this.rom, this.rombase);\n }\n super.reset();\n this.serialOut = [];\n this.serialIn = [];\n }\n\n // TODO: 32-bit bus?\n\n read = newAddressDecoder([\n [RAM_START, RAM_START+RAM_SIZE-1, RAM_SIZE-1, (a) => {\n return this.ram[a];\n }],\n [IO_START, IO_START+IO_SIZE-1, IO_SIZE-1, (a, v) => {\n return this.readIO(a);\n }],\n ], {defaultval: ILLEGAL_OPCODE & 0xff});\n\n write = newAddressDecoder([\n [RAM_START, RAM_START+RAM_SIZE-1, RAM_SIZE-1, (a, v) => {\n this.ram[a] = v;\n }],\n [IO_START, IO_START+IO_SIZE-1, IO_SIZE-1, (a, v) => {\n this.writeIO(a, v);\n }],\n ]);\n\n read32 = (a) => {\n if (a >= RAM_START && a < RAM_SIZE && (a & 3) == 0) {\n return this.ram32[a >> 2];\n } else {\n return this.read(a) | (this.read(a+1)<<8) | (this.read(a+2)<<16) | (this.read(a+3)<<24);\n }\n };\n\n write32 = (a, v) => {\n if (a >= RAM_START && a < RAM_SIZE && (a & 3) == 0) {\n this.ram32[a >> 2] = v;\n } else {\n this.write(a, v & 0xff);\n this.write(a+1, (v>>8) & 0xff);\n this.write(a+2, (v>>16) & 0xff);\n this.write(a+3, (v>>24) & 0xff);\n }\n }\n\n readAddress(a : number) : number {\n if (a >= RAM_START && a < RAM_START+RAM_SIZE) return this.read(a);\n else return ILLEGAL_OPCODE;\n }\n\n readIO(a : number) : number {\n switch (a) {\n case 0x0:\n return this.inputs[0];\n case 0x20:\n return this.getRasterY() & 0xff;\n case 0x21:\n return this.getRasterY() >> 8;\n case 0x24:\n return this.getRasterX();\n case 0x25:\n return this.getRasterX() >> 8;\n case 0x40:\n return (this.serial.byteAvailable() ? 0x80 : 0) | (this.serial.clearToSend() ? 0x40 : 0);\n case 0x44:\n let evin = this.serialIn.shift();\n if (evin != null) {\n this.serialOut.push(evin);\n return evin.value;\n } else\n return 0;\n default:\n return 0;\n }\n }\n\n writeIO(a : number, v : number) : void {\n this.ioregs[a] = v;\n switch (a) {\n case 0x48:\n if (this.serialOut.length < MAX_SERIAL_CHARS) {\n this.serialOut.push({op:'write', value:v, nbits:8});\n }\n break;\n }\n }\n\n startScanline() {\n }\n\n drawScanline() {\n }\n \n postFrame() {\n var p32 = this.pixels32;\n const vidbase = this.ioregs32[0x80 >> 2];\n var vbase = (vidbase >> 1) & 0xfffff;\n var mask = this.brightness << 24;\n for (var i=0; i\n // 000rrrrr000ggggg000bbbbb00011111111\n p32[i] = mask | ((col&31)<<3) | (((col>>5)&31)<<11) | (((col>>10)&31)<<19);\n }\n }\n\n getDebugCategories() {\n return ['CPU', 'Stack', 'FPU'];\n }\n\n getDebugInfo?(category: string, state: EmuState) : string {\n switch (category) {\n case 'Stack':\n var s = '';\n var c = state.c as ARMCoreState;\n var sp = c.gprs[13];\n var fp = c.gprs[11];\n // dump stack using ram32\n for (var i=0; i<16; i++) {\n s += hex(sp,8) + ' ' + hex(this.ram32[(sp-RAM_START)>>2],8);\n if (sp == fp) s += ' FP';\n s += '\\n';\n sp += 4;\n if (sp >= RAM_START+RAM_SIZE) break;\n }\n return s;\n case 'CPU':\n var s = '';\n var c = state.c as ARMCoreState;\n const EXEC_MODE = {2:'Thumb',4:'ARM'};\n const REGNAMES = {15:'PC',14:'LR',13:'SP',12:'IP',11:'FP',9:'SB'};\n for (var i=0; i<8; i++) {\n let j = i+8;\n s += lpad('r'+i, 5) + ' ' + hex(c.gprs[i],8) + ' ';\n s += lpad('r'+j, 5) + ' ' + hex(c.gprs[j],8) + lpad(REGNAMES[j]||'',3) + '\\n';\n }\n s += 'Flags ';\n s += c.cpsrN ? \" N\" : \" -\";\n s += c.cpsrV ? \" V\" : \" -\";\n s += c.cpsrF ? \" F\" : \" -\";\n s += c.cpsrZ ? \" Z\" : \" -\";\n s += c.cpsrC ? \" C\" : \" -\";\n s += c.cpsrI ? \" I\" : \" -\";\n s += '\\n';\n s += 'MODE ' + EXEC_MODE[c.instructionWidth] + ' ' + MODE_NAMES[c.mode] + '\\n';\n s += 'SPSR ' + hex(c.spsr,8) + '\\n';\n s += 'cycl ' + c.cycles + '\\n';\n return s;\n case 'FPU':\n var s = '';\n var c = state.c as ARMCoreState;\n for (var i=0; i<16; i++) {\n //let j = i+16;\n s += lpad('s'+i, 5) + ' ' + hex(c.ifprs[i],8) + ' ' + c.sfprs[i].toPrecision(6);\n if (i & 1) {\n s += lpad('d'+(i>>1), 5) + ' ' + c.dfprs[i>>1].toPrecision(12);\n }\n s += '\\n';\n //s += lpad('s'+j, 5) + ' ' + lpad(c.sfprs[j]+'',8) + '\\n';\n }\n return s;\n }\n }\n\n saveState() {\n var state = super.saveState() as any;\n state.serial = {\n sin: this.serialIn.slice(0),\n sout : this.serialOut.slice(0)\n }\n return state;\n }\n loadState(state) {\n super.loadState(state);\n this.serialIn = state.serial.sin;\n this.serialOut = state.serial.sout;\n }\n}\n\nconst MODE_NAMES = {\n\t0x10: \"USER\",\n 0x11: \"FIQ\",\n 0x12: \"IRQ\",\n 0x13: \"SUPERVISOR\",\n 0x17: \"ABORT\",\n 0x1b: \"UNDEFINED\",\n 0x1f: \"SYSTEM\",\n};\n", "/*\n * Copyright (c) 2024 Steven E. Hugg\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { Platform, DisasmLine, Machine, BaseMachinePlatform, getToolForFilename_arm32 } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\nimport { loadScript } from \"../common/util\";\nimport { ARM32Machine } from \"../machine/arm32\";\n\ndeclare var cs : any; // Unicorn module\n\nconst ARM32_PRESETS = [\n { id: 'vidfill.c', name: 'Video Memory Fill' },\n];\n\nexport abstract class BaseARMMachinePlatform extends BaseMachinePlatform {\n\n //getOpcodeMetadata = getOpcodeMetadata_z80;\n getToolForFilename = getToolForFilename_arm32;\n getPresets() { return ARM32_PRESETS; }\n getDefaultExtensions() { return [\".c\", \".armips\", \".vasm\"]; }\n }\n \nclass ARM32Platform extends BaseARMMachinePlatform implements Platform {\n\n capstone_arm : any;\n capstone_thumb : any;\n\n async start() {\n super.start();\n console.log(\"Loading Capstone\");\n await loadScript('./lib/capstone-arm.min.js');\n this.capstone_arm = new cs.Capstone(cs.ARCH_ARM, cs.MODE_ARM);\n this.capstone_thumb = new cs.Capstone(cs.ARCH_ARM, cs.MODE_THUMB);\n }\n\n newMachine() { return new ARM32Machine(); }\n readAddress(a) { return this.machine.read(a); }\n getMemoryMap = function() { return { main:[\n {name:'ROM',start:0x0000000,size:0x100000,type:'ram'},\n {name:'I/O',start:0x4000000,size:0x100,type:'io'},\n ] } };\n getPlatformName() { return \"ARM7\"; }\n getDebugTree() {\n return {\n ...this.machine.cpu.getDebugTree(),\n dwarf: this.debugSymbols.debuginfo\n }\n }\n disassemble(pc:number, read:(addr:number)=>number) : DisasmLine {\n var is_thumb = this.machine.cpu.isThumb();\n var capstone = is_thumb ? this.capstone_thumb : this.capstone_arm;\n var buf = [];\n for (var i=0; i<4; i++) {\n buf[i] = read(pc+i);\n }\n var insns = capstone.disasm(buf, pc, 4);\n var i0 = insns && insns[0];\n if (i0) {\n return {\n nbytes: i0.size,\n line: i0.mnemonic + \" \" + i0.op_str,\n isaddr: i0.address > 0,\n iscall: i0.mnemonic == \"bl\" || i0.mnemonic == \"blx\"\n };\n } else {\n return {\n nbytes: 4,\n line: \"???\",\n isaddr: false\n };\n }\n }\n}\n\n////\n\nPLATFORMS['arm32'] = ARM32Platform;\n"], + "mappings": "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", "names": ["USER_MASK", "PRIV_MASK", "STATE_MASK", "ARMCoreArm", "cpu", "rn", "offset", "condOp", "gprs", "address", "addr", "rm", "shiftOp", "rs", "shift", "shiftVal", "immediate", "rotate", "instruction", "overlap", "writeInitial", "rd", "shifterOperand", "d", "aluOut", "mmu", "total", "m", "i", "mode", "hi", "lo", "r", "c", "f", "operand", "mask", "n", "SHIFT_32", "carry", "opcode", "nOperandReg", "destReg", "sz", "opcode2", "mOperandReg", "fpregs", "hex", "to_integer", "dp_operation", "unsigned", "round_zero", "round_nearest", "sregs", "dregs", "iregs", "src", "dest", "double_to_single", "single_reg", "srcReg", "regs", "single_regs", "FPCompare", "op1", "op2", "Vd", "E", "Vm", "result", "to_arm_reg", "t", "ARMCoreThumb", "oldD", "oldDn", "dn", "mn", "pc", "misalign", "an", "r4", "ARMCore", "startOffset", "frost", "region", "pageId", "next", "EmuHalt", "newMode", "newBank", "oldBank", "oldFiqBank", "newFiqBank", "spsr", "cpsr", "instructionWidth", "func", "shiftType", "op", "s", "shiftsRs", "rotateImm", "load", "hiOffset", "loOffset", "h", "w", "b", "shiftImmediate", "user", "u", "p", "link", "crd", "cpnum", "cond", "D", "opc2", "op0", "M", "N", "Vn", "size", "opc1", "Rt", "h1", "ARM32CPU", "bus", "resetVector", "state", "a", "v", "memory", "page", "GBA_KEYCODE_MAP", "makeKeycodeMap", "Keys", "RAM_START", "RAM_SIZE", "ROM_BASE", "IO_START", "IO_SIZE", "MAX_SERIAL_CHARS", "CPU_FREQ", "ILLEGAL_OPCODE", "ARM32Machine", "BasicScanlineMachine", "ARM32CPU", "newAddressDecoder", "a", "v", "newKeyboardHandler", "pixels", "serial", "rom", "evin", "p32", "vbase", "mask", "i", "col", "category", "state", "s", "c", "sp", "fp", "hex", "EXEC_MODE", "REGNAMES", "j", "lpad", "MODE_NAMES", "ARM32_PRESETS", "BaseARMMachinePlatform", "BaseMachinePlatform", "getToolForFilename_arm32", "ARM32Platform", "loadScript", "ARM32Machine", "a", "__spreadProps", "__spreadValues", "pc", "read", "is_thumb", "capstone", "buf", "i", "insns", "i0", "PLATFORMS"] } diff --git a/gen/astrocade-BPFIWX7J.js b/gen/astrocade-DCHJM6EX.js similarity index 99% rename from gen/astrocade-BPFIWX7J.js rename to gen/astrocade-DCHJM6EX.js index 07d2bbcc..7cc95913 100644 --- a/gen/astrocade-BPFIWX7J.js +++ b/gen/astrocade-DCHJM6EX.js @@ -1,4 +1,4 @@ -import{H as D0,c as l0,d as m0,e as u0,k as h0,r as E0}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{$ as X0,K as k,Y as A,Z as C0,ba as x0,ca as N,g,l as c0,m as B0,t as g0}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var I0=X0([[A.UP,16,1],[A.DOWN,16,2],[A.LEFT,16,4],[A.RIGHT,16,8],[A.A,16,16],[A.P2_UP,17,1],[A.P2_DOWN,17,2],[A.P2_LEFT,17,4],[A.P2_RIGHT,17,8],[A.P2_A,17,16],[A.VK_P,20,1],[A.VK_SLASH,20,2],[A.VK_X,20,4],[A.VK_MINUS,20,8],[A.VK_COMMA,20,16],[A.VK_EQUALS,20,32],[A.VK_O,21,1],[A.VK_L,21,2],[A.VK_9,21,4],[A.VK_6,21,8],[A.VK_3,21,16],[A.VK_PERIOD,21,32],[A.VK_I,22,1],[A.VK_K,22,2],[A.VK_8,22,4],[A.VK_5,22,8],[A.VK_2,22,16],[A.VK_0,22,32],[A.VK_U,23,1],[A.VK_J,23,2],[A.VK_7,23,4],[A.VK_4,23,8],[A.VK_1,23,16],[A.VK_BACK_SLASH,23,32]]),P0=2,R0=function(d){var f,t,i,o,U,X,W,i0,J;let G=d?320:160,K=d?204:102,s0=G>>2,b0=d?16383:4095,H0=256,v0=4293848814,y0=4278190080,p0=d?3:1,w0=.7;var n0=0,j=new Uint8Array(32),c=0,D=0,m=!1,Y=0,b=0,p=0,V=0,w=0,Q=K,T=new Uint32Array(8),H=new Uint8Array(8),Z=0,v=new Uint8Array(d?262:131),u=new Uint8Array(4),h=0,S=0,l=0,L=0,B=new Uint8Array(8),M=0;function Q0(){return f.scanline=(b&63)?0:4;i0[s--]=T[E+(x&3)],x>>=2}}function a0(e){for(var x=e*G/4,s=0;s>=4);for(var n=0;n<4;n++){var E=x&1?D>>2&3:D&3;s|=E<>=1}x=s,m=!m}if(c&4){if(h&4){var a=2*(~h&3);x=(u[3]>>a&3)<<6|(u[2]>>a&3)<<4|(u[1]>>a&3)<<2|(u[0]>>a&3)<<0}else u[h&3]=x;h++}else{var a=(c&3)<<1,s=x>>a|Y;Y=x<<8-a&255,x=s}if(c&64&&(x=(x&3)<<6|(x&12)<<2|(x&48)>>2|(x&192)>>6),c&48){var F=i[e],r=0;F&192&&x&192&&(r|=1),F&48&&x&48&&(r|=2),F&12&&x&12&&(r|=4),F&3&&x&3&&(r|=8),c&16&&(x|=F),c&32&&(x^=F),S=S&240|r|r<<4}y(e,x)}function _(e,x){H[e&7]=x&255,T[e&7]=F0[x&255],O()}function M0(){var e=b>>6}function O(){Z=K}function V0(){let e=B[0]|B[1]<<8,x=B[2]&63,s=B[3],n=M&255|B[4]<<8,E=B[5],a=B[6]+1,F,r=0,C=0,N0=l;r=0,(x&2)===0&&(r=1);function f0(){r&&(x&4)!==0&&(F!==0||(x&8)===0)&&e++,(x&2)!==0&&(r^=1)}function o0(){F!==0&&((x&32)!==0?n++:n--)}for(;a>=0;){let q;for(F=E;F>=0;){let $,e0;$=(x&1)===0?e:n,F===0&&(x&8)!==0?e0=0:e0=o.read(e),(x&1)===0?f0():o0(),$=(x&1)!==0?e:n,y($,e0),(x&1)===0?o0():f0(),C+=4,F--}q=(n&255)+s&256,n=n&65280|n+s&255,(x&16)===0?n+=q:n-=q^256,a--}l=N0+C}this.drawScanline=e=>{e==V&&p&8&&(t.retryInterrupts=!(p&4),this.probe&&this.probe.logInterrupt(w),t.interrupt(w)),e0?(v[e]=0,a0(e),Z--):v[e]&&(v[e]=0,a0(e))},this.init=(e,x,s,n,E)=>{f=e,n0=e.cpuCyclesPerLine*w0,t=x,i=s,j=n,J=E,d?o={read:N([[16384,32767,16383,function(F){return z(),i[F]}],[53248,57343,4095,function(F){return i[F+16384]}],[0,16383,16383,function(F){return X?X[F]:0}],[32768,49151,16383,function(F){return X?X[F+16384]:0}]]),write:N([[16384,32767,16383,y],[0,16383,16383,d0],[53248,57343,4095,function(F,r){i[F+16384]=r}]])}:(W=x0(new c0().decode(B0(atob(G0))),8192),o={read:N([[0,8191,8191,function(F){return W[F]}],[8192,16383,8191,function(F){return X?X[F]:0}],[16384,20479,4095,function(F){return z(),i[F]}]]),write:N([[16384,20479,4095,y],[0,16383,4095,d0]])}),U={read:function(F){F&=31;var r;return F===8?(r=S,S=0):r=j[F],r},write:function(F,r){if(F!=42331){if(F&=255,F>120&&F<128){B[F&7]=r,F==114&&(M=0),F==116&&(M=M+B[3]&255),F==126&&V0();return}switch(F&=31,r&=255,F){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:_(F,r);break;case 9:b=r,M0(),O();break;case 10:Q=d?r:r>>1,O();break;case 11:var C=t.saveState();_((C.BC>>8)-1,o.read(C.HL));break;case 12:c=r,Y=0,h=0,m=!1;break;case 13:w=r;break;case 14:p=r;break;case 15:V=d?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:J.setACRegister(F,r);break;case 24:var C=t.saveState();J.setACRegister((C.BC>>8)-1,o.read(C.HL));break;case 25:D=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},e.connectCPUMemoryBus(o),e.connectCPUIOBus(U),this.membus=o,this.iobus=U;for(var a=0;a<8;a++)_(a,a)},this.resetWaitStates=function(){var e=l;return l=0,e},this.peek=function(e){var x=l,s=o.read(e);return l=x,s},this.loadState=e=>{t.loadState(e.c),i.set(e.ram),T.set(e.palette),H.set(e.palinds),c=e.magicop,D=e.xpand,m=e.xplower,Y=e.shift2,b=e.horcb,p=e.inmod,V=e.inlin,w=e.infbk,Q=e.verbl,h=e.rotcount,u.set(e.rotdata),S=e.intst,L=e.slotphase|0,j.set(e.inputs),B.set(e.patboard),M=e.patdest,O()},this.saveState=()=>({c:t.saveState(),ram:i.slice(0),inputs:j.slice(0),palette:T.slice(0),palinds:H.slice(0),magicop:c,xpand:D,xplower:m,shift2:Y,horcb:b,inmod:p,inlin:V,infbk:w,verbl:Q,rotcount:h,rotdata:u.slice(0),intst:S,slotphase:L,patboard:B.slice(0),patdest:M}),this.reset=()=>{c=D=p=V=w=Y=b=0,Q=K,m=!1},this.toLongString=e=>{var x="";x+=` +import{H as D0,c as l0,d as m0,e as u0,k as h0,r as E0}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{$ as X0,K as k,Y as A,Z as C0,ba as x0,ca as N,g,l as c0,m as B0,t as g0}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var I0=X0([[A.UP,16,1],[A.DOWN,16,2],[A.LEFT,16,4],[A.RIGHT,16,8],[A.A,16,16],[A.P2_UP,17,1],[A.P2_DOWN,17,2],[A.P2_LEFT,17,4],[A.P2_RIGHT,17,8],[A.P2_A,17,16],[A.VK_P,20,1],[A.VK_SLASH,20,2],[A.VK_X,20,4],[A.VK_MINUS,20,8],[A.VK_COMMA,20,16],[A.VK_EQUALS,20,32],[A.VK_O,21,1],[A.VK_L,21,2],[A.VK_9,21,4],[A.VK_6,21,8],[A.VK_3,21,16],[A.VK_PERIOD,21,32],[A.VK_I,22,1],[A.VK_K,22,2],[A.VK_8,22,4],[A.VK_5,22,8],[A.VK_2,22,16],[A.VK_0,22,32],[A.VK_U,23,1],[A.VK_J,23,2],[A.VK_7,23,4],[A.VK_4,23,8],[A.VK_1,23,16],[A.VK_BACK_SLASH,23,32]]),P0=2,R0=function(d){var f,t,i,o,U,X,W,i0,J;let G=d?320:160,K=d?204:102,s0=G>>2,b0=d?16383:4095,H0=256,v0=4293848814,y0=4278190080,p0=d?3:1,w0=.7;var n0=0,j=new Uint8Array(32),c=0,D=0,m=!1,Y=0,b=0,p=0,V=0,w=0,Q=K,T=new Uint32Array(8),H=new Uint8Array(8),Z=0,v=new Uint8Array(d?262:131),u=new Uint8Array(4),h=0,S=0,l=0,L=0,B=new Uint8Array(8),M=0;function Q0(){return f.scanline=(b&63)?0:4;i0[s--]=T[E+(x&3)],x>>=2}}function a0(e){for(var x=e*G/4,s=0;s>=4);for(var n=0;n<4;n++){var E=x&1?D>>2&3:D&3;s|=E<>=1}x=s,m=!m}if(c&4){if(h&4){var a=2*(~h&3);x=(u[3]>>a&3)<<6|(u[2]>>a&3)<<4|(u[1]>>a&3)<<2|(u[0]>>a&3)<<0}else u[h&3]=x;h++}else{var a=(c&3)<<1,s=x>>a|Y;Y=x<<8-a&255,x=s}if(c&64&&(x=(x&3)<<6|(x&12)<<2|(x&48)>>2|(x&192)>>6),c&48){var F=i[e],r=0;F&192&&x&192&&(r|=1),F&48&&x&48&&(r|=2),F&12&&x&12&&(r|=4),F&3&&x&3&&(r|=8),c&16&&(x|=F),c&32&&(x^=F),S=S&240|r|r<<4}y(e,x)}function _(e,x){H[e&7]=x&255,T[e&7]=F0[x&255],O()}function M0(){var e=b>>6}function O(){Z=K}function V0(){let e=B[0]|B[1]<<8,x=B[2]&63,s=B[3],n=M&255|B[4]<<8,E=B[5],a=B[6]+1,F,r=0,C=0,N0=l;r=0,(x&2)===0&&(r=1);function f0(){r&&(x&4)!==0&&(F!==0||(x&8)===0)&&e++,(x&2)!==0&&(r^=1)}function o0(){F!==0&&((x&32)!==0?n++:n--)}for(;a>=0;){let q;for(F=E;F>=0;){let $,e0;$=(x&1)===0?e:n,F===0&&(x&8)!==0?e0=0:e0=o.read(e),(x&1)===0?f0():o0(),$=(x&1)!==0?e:n,y($,e0),(x&1)===0?o0():f0(),C+=4,F--}q=(n&255)+s&256,n=n&65280|n+s&255,(x&16)===0?n+=q:n-=q^256,a--}l=N0+C}this.drawScanline=e=>{e==V&&p&8&&(t.retryInterrupts=!(p&4),this.probe&&this.probe.logInterrupt(w),t.interrupt(w)),e0?(v[e]=0,a0(e),Z--):v[e]&&(v[e]=0,a0(e))},this.init=(e,x,s,n,E)=>{f=e,n0=e.cpuCyclesPerLine*w0,t=x,i=s,j=n,J=E,d?o={read:N([[16384,32767,16383,function(F){return z(),i[F]}],[53248,57343,4095,function(F){return i[F+16384]}],[0,16383,16383,function(F){return X?X[F]:0}],[32768,49151,16383,function(F){return X?X[F+16384]:0}]]),write:N([[16384,32767,16383,y],[0,16383,16383,d0],[53248,57343,4095,function(F,r){i[F+16384]=r}]])}:(W=x0(new c0().decode(B0(atob(G0))),8192),o={read:N([[0,8191,8191,function(F){return W[F]}],[8192,16383,8191,function(F){return X?X[F]:0}],[16384,20479,4095,function(F){return z(),i[F]}]]),write:N([[16384,20479,4095,y],[0,16383,4095,d0]])}),U={read:function(F){F&=31;var r;return F===8?(r=S,S=0):r=j[F],r},write:function(F,r){if(F!=42331){if(F&=255,F>120&&F<128){B[F&7]=r,F==114&&(M=0),F==116&&(M=M+B[3]&255),F==126&&V0();return}switch(F&=31,r&=255,F){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:_(F,r);break;case 9:b=r,M0(),O();break;case 10:Q=d?r:r>>1,O();break;case 11:var C=t.saveState();_((C.BC>>8)-1,o.read(C.HL));break;case 12:c=r,Y=0,h=0,m=!1;break;case 13:w=r;break;case 14:p=r;break;case 15:V=d?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:J.setACRegister(F,r);break;case 24:var C=t.saveState();J.setACRegister((C.BC>>8)-1,o.read(C.HL));break;case 25:D=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},e.connectCPUMemoryBus(o),e.connectCPUIOBus(U),this.membus=o,this.iobus=U;for(var a=0;a<8;a++)_(a,a)},this.resetWaitStates=function(){var e=l;return l=0,e},this.peek=function(e){var x=l,s=o.read(e);return l=x,s},this.loadState=e=>{t.loadState(e.c),i.set(e.ram),T.set(e.palette),H.set(e.palinds),c=e.magicop,D=e.xpand,m=e.xplower,Y=e.shift2,b=e.horcb,p=e.inmod,V=e.inlin,w=e.infbk,Q=e.verbl,h=e.rotcount,u.set(e.rotdata),S=e.intst,L=e.slotphase|0,j.set(e.inputs),B.set(e.patboard),M=e.patdest,O()},this.saveState=()=>({c:t.saveState(),ram:i.slice(0),inputs:j.slice(0),palette:T.slice(0),palinds:H.slice(0),magicop:c,xpand:D,xplower:m,shift2:Y,horcb:b,inmod:p,inlin:V,infbk:w,verbl:Q,rotcount:h,rotdata:u.slice(0),intst:S,slotphase:L,patboard:B.slice(0),patdest:M}),this.reset=()=>{c=D=p=V=w=Y=b=0,Q=K,m=!1},this.toLongString=e=>{var x="";x+=` INLIN: `+e.inlin,x+=` VERBL: `+e.verbl,x+=` MAGICOP: $`+g(e.magicop),x+=` @@ -11,4 +11,4 @@ XPLOWER: `+e.xplower,x+=` INTST: $`+g(e.intst),x+=` Palette: `;for(var s=0;s<8;s++)x+=g(H[s]);return x+=` `,x},this.connectVideo=function(e){i0=e},this.loadROM=function(e){X=e},this.loadBIOS=function(e){W=e},this.getVisiblePixelWords=function(){return Q*G}},P=class extends E0{constructor(t){super();this.cpuFrequency=1789e3;this.arcade=t,this.cpu=new l0,this.psg=new t0(new m0),this.numTotalScanlines=t?262:131;var i=P0*(t?1:2);this.sampleRate=60*this.numTotalScanlines*i,this.audioadapter=new h0(this.psg.psg,i,this.sampleRate),this.handler=C0(this.inputs,I0),this.defaultROMSize=t?45056:8192,this.ram=new Uint8Array(t?20480:4096),this.numVisibleScanlines=t?204:102,this.canvasWidth=t?320:160,this.cpuCyclesPerLine=this.cpuFrequency/(60*this.numVisibleScanlines*1.286)|0,this.m=new R0(t),this.m.init(this,this.cpu,this.ram,this.inputs,this.psg),t&&(this.inputs[16]=255,this.inputs[17]=255,this.inputs[18]=0,this.inputs[19]=8)}read(t){return this.m.peek(t)}write(t,i){this.m.membus.write(t,i)}connectVideo(t){super.connectVideo(t),this.frontbuffer=t,this.backbuffer=new Uint32Array(t.length),this.m.connectVideo(this.backbuffer)}preFrame(){this.m.resetWaitStates()}postFrame(){var t=this.m.getVisiblePixelWords();this.frontbuffer.set(this.backbuffer.slice(0,t),0),this.frontbuffer.fill(0,t)}setPaddleInput(t,i){switch(t){case 0:this.inputs[28]=i&255;break;case 1:this.inputs[29]=i&255;break}}startScanline(){this.audio&&this.audioadapter.generate(this.audio)}drawScanline(){var t=this.scanline;this.m.drawScanline(t)}advanceCPU(){var t=super.advanceCPU(),i=this.m.resetWaitStates();return i&&(t+=i,this.probe.logClocks(i)),t}loadROM(t){super.loadROM(t),this.m.loadROM(this.rom),this.reset()}loadBIOS(t){this.m.loadBIOS(x0(t,8192)),this.reset()}reset(){super.reset(),this.m.reset()}loadState(t){this.m.loadState(t)}saveState(){return this.m.saveState()}getDebugCategories(){return["CPU","Stack","Astro"]}getDebugInfo(t,i){if(t==="Astro")return this.m.toLongString(i)}getRasterCanvasPosition(){return{x:this.getRasterX(),y:this.getRasterY()}}getVideoParams(){return this.arcade?{width:320,height:204,rotate:180}:{width:160,height:102}}},t0=class extends u0{setACRegister(f,t){switch(f&=7,t&=255,f){case 0:this.psg.setClock(1789e3*16/(t+1)),this.psg.writeRegisterAY(7,248);break;case 1:case 2:case 3:var i=(f-1)*2,o=t*2+1;this.psg.writeRegisterAY(i,o&255),this.psg.writeRegisterAY(i+1,o>>8&255);break;case 5:this.psg.writeRegisterAY(10,t&15);break;case 6:this.psg.writeRegisterAY(8,t&15),this.psg.writeRegisterAY(9,t>>4&15);break}}},F0=[0,2368548,4737096,7171437,9539985,11974326,14342874,16777215,2425019,4784352,7213567,9582079,12016383,14384895,16753663,16762879,4784304,7143637,9568761,11937279,14306047,16740095,16749311,16758783,6946975,9306307,11731175,14096639,16465151,16736767,16745983,16755199,8847495,11206827,13631696,15994612,16724735,16733951,16743423,16752639,10420330,12779662,15138995,16713687,16723195,16732415,16741631,16751103,11534409,13959277,16318610,16713142,16722394,16731647,16741119,16750335,12255269,14680137,16711790,16713362,16722615,16732123,16741375,16750847,12517376,14876708,16711752,16714605,16724113,16733366,16742874,16752127,12255232,14680064,16711715,16716871,16726380,16735632,16745141,16754393,11534336,13959168,16318464,16720164,16729416,16738924,16748177,16757685,10420224,12779520,15141888,16723971,16733479,16742731,16752240,16761492,8847360,11206656,13639168,16007680,16738058,16747310,16756563,16766071,6946816,9309440,11743488,14112256,16480768,16752151,16761659,16770911,4784128,7151872,9585920,11954688,14323200,16757509,16766761,16776270,2429184,4797696,7232e3,9600512,12034816,14403328,16771870,16777027,9472,2377984,4746496,7180800,9549312,11983616,14352155,16777023,14080,23296,2326528,4695040,7129344,9497856,11927326,14286659,18176,27648,36864,2405376,4774144,7142661,9568041,11927374,21760,30976,40192,246272,2614784,4980503,7405371,9764703,24320,33536,43008,52224,716810,3079982,5504851,7864183,25856,35328,44544,53763,63271,1572683,3932016,6291348,26624,35840,45312,54564,63816,393068,2752401,5177269,26112,35584,44835,54343,63596,65424,2031541,4456409,24832,34084,43592,52845,62353,65462,1834970,4194302,22565,31817,41326,50578,60087,65499,2031615,4456447,19273,28781,38034,47542,56794,393215,2752511,5177343,15466,24718,34227,43479,52987,1569535,3932159,6291455,10887,20395,29648,38900,703743,3072255,5505023,7864319,6047,15299,24807,230655,2599167,4967935,7401983,9764863,688,10197,19449,2388223,4756735,7125503,9559551,11927551,187,5088,2308095,4676607,7110911,9479423,11913727,14282239];for(I=0;I<256;I++)Y0=F0[I],F0[I]=g0(Y0)|4278190080;var Y0,I;var G0="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";var K0=[{id:"01-helloworlds.asm",name:"Hello World (ASM)"},{id:"02-telephone.asm",name:"Telephone (ASM)"},{id:"03-horcbpal.asm",name:"Paddle Demo (ASM)"},{id:"hello.c",name:"Hello Graphics"},{id:"lines.c",name:"Lines"},{id:"sprites.c",name:"Sprites"},{id:"vsync.c",name:"Sprites w/ VSYNC"},{id:"fastsprites.c",name:"Fast Sprites"},{id:"music.c",name:"Music"},{id:"rotate.c",name:"Rotate Op"},{id:"rainbow.c",name:"Rainbow"},{id:"cosmic.c",name:"Cosmic Impalas Game"},{id:"racing.c",name:"Pseudo 3-D Racing Game"}],j0=[{id:"bios.c",name:"BIOS"}],T0=[{id:"hello.c",name:"Hello Graphics"}],R=class extends D0{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"BIOS",start:0,size:8192,type:"rom"},{name:"Screen RAM",start:16384,size:4096,type:"ram"},{name:"BIOS Variables",start:20430,size:50,type:"ram"}]}}}newMachine(){return new P(!1)}getPresets(){return K0}readAddress(t){return this.machine.read(t)}showHelp(){return"https://8bitworkshop.com/docs/platforms/astrocade/"}},A0=class extends R{getPresets(){return j0}loadROM(f,t){this.machine.loadBIOS(t)}},r0=class extends R{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"ROM",start:0,size:16384,type:"rom"},{name:"Magic RAM",start:0,size:16384,type:"ram"},{name:"Screen RAM",start:16384,size:16384,type:"ram"},{name:"ROM",start:32768,size:16384,type:"rom"}]}}}newMachine(){return new P(!0)}getPresets(){return T0}};k.astrocade=R;k["astrocade-bios"]=A0;k["astrocade-arcade"]=r0; -//# sourceMappingURL=astrocade-BPFIWX7J.js.map +//# sourceMappingURL=astrocade-DCHJM6EX.js.map diff --git a/gen/astrocade-BPFIWX7J.js.map b/gen/astrocade-DCHJM6EX.js.map similarity index 100% rename from gen/astrocade-BPFIWX7J.js.map rename to gen/astrocade-DCHJM6EX.js.map diff --git a/gen/atari7800-7IUSBQLC.js b/gen/atari7800-YDBZZWY4.js similarity index 97% rename from gen/atari7800-7IUSBQLC.js rename to gen/atari7800-YDBZZWY4.js index 93f20d71..936b9931 100644 --- a/gen/atari7800-7IUSBQLC.js +++ b/gen/atari7800-YDBZZWY4.js @@ -1,7 +1,7 @@ -import{a as j}from"./chunk-IK55UTNM.js";import{G as $,h as z,k as Y,m as K,q as V}from"./chunk-4WX2XTAI.js";import{f as H}from"./chunk-UACHXWHT.js";import{$ as N,K as O,X as R,Y as o,Z as E,ba as W,ca as _,g as S}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var b=0,F=2,v=8,Z=N([[o.A,v+0,128],[o.B,v+1,128],[o.GP_A,v+0,128],[o.GP_B,v+1,128],[o.SELECT,F,-2],[o.START,F,-1],[o.UP,b,-16],[o.DOWN,b,-32],[o.LEFT,b,-64],[o.RIGHT,b,-128],[o.P2_A,v+2,128],[o.P2_B,v+3,128],[o.P2_UP,b,-1],[o.P2_DOWN,b,-2],[o.P2_LEFT,b,-4],[o.P2_RIGHT,b,-8]]);var M=263,G=242,C=451,tt=28,et=16,rt=24,q=2,X=M*60*q,I=class{constructor(){this.regs=new Uint8Array(32)}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t}saveState(){return{regs:this.regs.slice(0)}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t])}static stateToLongString(r){let t="";return t+=R(r.regs,0,32),t}},L=class{constructor(){this.cycles=0;this.regs=new Uint8Array(32);this.offset=-1;this.dll=0;this.dlstart=0;this.dli=!1;this.h16=!1;this.h8=!1;this.writemode=0;this.indirect=!1;this.pixels=new Uint8Array(320);this.WSYNC=0}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t,r==4&&this.WSYNC++}saveState(){return{regs:this.regs.slice(0),offset:this.offset,dll:this.dll,dlstart:this.dlstart,dli:this.dli,h16:this.h16,h8:this.h8,indirect:this.indirect,writemode:this.writemode}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t]|0);this.offset=r.offset|0,this.dll=r.dll|0,this.dlstart=r.dlstart|0,this.dli=!!r.dli,this.h16=!!r.h16,this.h8=!!r.h8,this.indirect=!!r.indirect,this.writemode=r.writemode|0}isDMAEnabled(){return(this.regs[28]&96)==64}getDLLStart(){return(this.regs[12]<<8)+this.regs[16]}getCharBaseAddress(){return(this.regs[20]<<8)+this.offset}setVBLANK(r){r?(this.regs[8]|=128,this.offset=-1,this.dll=this.getDLLStart(),this.dli=this.bus&&(this.bus.read(this.dll)&128)!=0):this.regs[8]&=-129}readDLLEntry(r){if(this.dll>=16384)return;let t=r.read(this.dll);this.offset=t&15,this.h16=(t&64)!=0,this.h8=(t&32)!=0,this.dlstart=(r.read(this.dll+1)<<8)+r.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(r.read(this.dll)&128)!=0}isHoley(r){return this.indirect?!1:!!(r&32768&&(this.h16&&r&4096||this.h8&&r&2048))}readDMA(r){return this.isHoley(r)?0:(this.cycles+=3,this.bus.read(r))}doDMA(r){this.bus=r,this.cycles=0;let t=this.pixels;if(t.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=this.offset==0?rt:et,this.offset<0&&this.readDLLEntry(r);let u=this.dlstart&65280,c=this.dlstart&255;do{let x=r.read(u+(c+0&511)),m=r.read(u+(c+1&511));if(m==0||u>=16384)break;let l=r.read(u+(c+2&511)),p=r.read(u+(c+3&511)),g=!1;if((m&31)==0){var e=p>>5,n=32-(p&31),i=r.read(u+(c+4&511));g=(m&32)!=0,c+=5,this.cycles+=10,this.writemode=m&128}else{var i=p,e=m>>5,n=32-(m&31);c+=4,this.cycles+=8}this.indirect=g;let y=x+((l+(g?0:this.offset)&255)<<8);i*=2;let d=this.regs[28],k=(d&3)+(this.writemode?4:0),A=(d&4)!=0,w=g&&(d&16)!=0;w&&(n*=2);for(var s=0;s>1):y+s);if(g){let P=(this.regs[20]+this.offset<<8)+h;w&&s&1&&(P++,this.cycles-=3),h=this.readDMA(P)}switch(k){case 0:for(let a=0;a<4;a++){let f=h>>6&3;(f||A)&&(t[i]=t[i+1]=this.regs[(e<<2)+f]),h<<=2,i=i+2&511}break;case 3:for(let a=0;a<8;a++){let f=(h&128)>>6;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 4:for(let a=0;a<2;a++){let f=(h>>6&3)+(h&12);(f&3||A)&&(t[i]=t[i+1]=t[i+2]=t[i+3]=this.regs[((e&4)<<2)+f]),h<<=2,i=i+2&511}break;case 6:for(let a=0;a<4;a++){let f=(h&128)>>6|(h&8)>>3;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 2:for(let a=0;a<8;a++){let f=(h&128)>>6;f+=a&1?e&1:e>>1&1,(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 7:let P=h;for(let a=0;a<4;a++){a==2&&(P<<=2);let f=(h&128)>>6,Q=e&4|P>>2&3;(f||A)&&(t[i]=this.regs[(Q<<2)+f]),h<<=1,i=i+1&511}break}}}while(this.cycles=16384)return;let t=r.read(this.dll);this.offset=t&15,this.h16=(t&64)!=0,this.h8=(t&32)!=0,this.dlstart=(r.read(this.dll+1)<<8)+r.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(r.read(this.dll)&128)!=0}isHoley(r){return this.indirect?!1:!!(r&32768&&(this.h16&&r&4096||this.h8&&r&2048))}readDMA(r){return this.isHoley(r)?0:(this.cycles+=3,this.bus.read(r))}doDMA(r){this.bus=r,this.cycles=0;let t=this.pixels;if(t.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=this.offset==0?rt:et,this.offset<0&&this.readDLLEntry(r);let u=this.dlstart&65280,c=this.dlstart&255;do{let x=r.read(u+(c+0&511)),m=r.read(u+(c+1&511));if(m==0||u>=16384)break;let l=r.read(u+(c+2&511)),p=r.read(u+(c+3&511)),g=!1;if((m&31)==0){var e=p>>5,n=32-(p&31),i=r.read(u+(c+4&511));g=(m&32)!=0,c+=5,this.cycles+=10,this.writemode=m&128}else{var i=p,e=m>>5,n=32-(m&31);c+=4,this.cycles+=8}this.indirect=g;let y=x+((l+(g?0:this.offset)&255)<<8);i*=2;let d=this.regs[28],k=(d&3)+(this.writemode?4:0),A=(d&4)!=0,w=g&&(d&16)!=0;w&&(n*=2);for(var s=0;s>1):y+s);if(g){let P=(this.regs[20]+this.offset<<8)+h;w&&s&1&&(P++,this.cycles-=3),h=this.readDMA(P)}switch(k){case 0:for(let a=0;a<4;a++){let f=h>>6&3;(f||A)&&(t[i]=t[i+1]=this.regs[(e<<2)+f]),h<<=2,i=i+2&511}break;case 3:for(let a=0;a<8;a++){let f=(h&128)>>6;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 4:for(let a=0;a<2;a++){let f=(h>>6&3)+(h&12);(f&3||A)&&(t[i]=t[i+1]=t[i+2]=t[i+3]=this.regs[((e&4)<<2)+f]),h<<=2,i=i+2&511}break;case 6:for(let a=0;a<4;a++){let f=(h&128)>>6|(h&8)>>3;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 2:for(let a=0;a<8;a++){let f=(h&128)>>6;f+=a&1?e&1:e>>1&1,(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 7:let P=h;for(let a=0;a<4;a++){a==2&&(P<<=2);let f=(h&128)>>6,Q=e&4|P>>2&3;(f||A)&&(t[i]=this.regs[(Q<<2)+f]),h<<=1,i=i+1&511}break}}}while(this.cycles(this.xtracyc++,this.readInput(t))],[0,31,31,t=>(this.xtracyc++,this.tia.read(t))],[32,63,31,t=>this.maria.read(t)],[64,255,255,t=>this.ram[t+2048]],[256,319,255,t=>this.read(t)],[320,511,511,t=>this.ram[t+2048]],[640,767,127,t=>(this.xtracyc++,this.readPIA(t))],[6144,10239,65535,t=>this.ram[t-6144]],[10240,16383,2047,t=>this.read(t|8192)],[16384,65535,65535,t=>this.rom?this.rom[t-16384]:0],[0,65535,65535,t=>this.probe&&this.probe.logIllegal(t)]]),this.write=_([[21,26,31,(t,e)=>{this.xtracyc++,this.pokey1.setTIARegister(t,e)}],[0,31,31,(t,e)=>{this.xtracyc++,this.tia.write(t,e)}],[32,63,31,(t,e)=>{this.maria.write(t,e)}],[64,255,255,(t,e)=>{this.ram[t+2048]=e}],[256,319,255,(t,e)=>{this.write(t,e)}],[320,511,511,(t,e)=>{this.ram[t+2048]=e}],[640,767,127,(t,e)=>{this.xtracyc++,this.writePIA(t,e)}],[6144,10239,65535,(t,e)=>{this.ram[t-6144]=e}],[10240,16383,2047,(t,e)=>{this.write(t|8192,e)}],[49151,49151,65535,(t,e)=>{}],[0,65535,65535,(t,e)=>{this.probe&&this.probe.logIllegal(t)}]]),this.connectCPUMemoryBus(this),this.dmaBus=this.probeDMABus(this),this.handler=E(this.inputs,Z),this.pokey1=new z,this.audioadapter=new Y(this.pokey1,q,X)}readConst(t){let e=this.probe;this.probe=null;let n=this.read(t);return this.probe=e,n}readInput(t){switch(t){case 12:return~this.inputs[8]&128;case 13:return~this.inputs[9]&128;default:return this.inputs[t]|0}}readPIA(t){switch(t){case 0:case 2:return this.inputs[t];case 1:case 3:return this.regs6532[t];case 4:return this.getPIATimerValue();default:return 0}}writePIA(t,e){switch(t){case 0:case 1:case 2:case 3:this.regs6532[t]=e;return;case 20:this.setPIATimer(e,0);return;case 21:this.setPIATimer(e,3);return;case 22:this.setPIATimer(e,6);return;case 23:this.setPIATimer(e,10);return;case 24:this.setPIATimer(e,6);return}}setPIATimer(t,e){this.piatimer=t+1<0?t>>this.timerinterval:t&255}advanceCPU(){var t=super.advanceCPU();return this.tickPIATimer(t),this.xtracyc&&(t+=this.xtracyc,this.tickClocks(this.xtracyc),this.xtracyc=0),t}tickClocks(t){this.probe.logClocks(t),this.tickPIATimer(t)}tickPIATimer(t){this.piatimer=Math.max(-256,this.piatimer-t)}advanceFrame(t){var e=this.pixels,n=0,i,s=0,u=0,c=0;this.lastFrameCycles=-1,this.probe.logNewFrame();for(var x=0;x>2),s+=p,e){let d=(this.maria.regs[28]&128)!=0?15:255;for(var l=0;l<320;l++)e[n++]=J[this.maria.pixels[l]&d]}}for((m||x==M-1)&&this.maria.doInterrupt()&&(this.probe.logInterrupt(0),this.cpu.NMI());s>2),s=C;break}if(t&&t()){t=null,x=999,this.lastFrameCycles=s;break}s+=this.advanceCPU()<<2,c++}this.audio&&this.audioadapter.generate(this.audio),s-=C,u+=s,this.probe.logNewScanline()}return c}getRasterX(){return(this.lastFrameCycles+C)%C}getRasterY(){return this.scanline}getRasterCanvasPosition(){return{x:this.getRasterX(),y:this.getRasterY()}}loadROM(t){t.length==49280&&(t=t.slice(128)),this.rom=W(t,this.defaultROMSize,!0)}reset(){super.reset(),this.tia.reset(),this.maria.reset(),this.inputs.fill(0),this.inputs[b]=255,this.inputs[F]=11,this.setPIATimer(0,0)}readAddress(t){return this.read(t)|0}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.tia.loadState(t.tia),this.maria.loadState(t.maria),this.regs6532.set(t.regs6532),this.piatimer=t.pia.timer,this.timerinterval=t.pia.interval,this.loadControlsState(t)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),tia:this.tia.saveState(),maria:this.maria.saveState(),regs6532:this.regs6532.slice(0),inputs:this.inputs.slice(0),pia:{timer:this.piatimer,interval:this.timerinterval}}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}getDebugCategories(){return["CPU","Stack","TIA","MARIA"]}getDebugInfo(t,e){switch(t){case"TIA":return I.stateToLongString(e.tia);case"MARIA":return L.stateToLongString(e.maria)+` Scanline: `+this.scanline}}getDebugDisplayLists(){let t={},e=this.maria.getDLLStart(),n=0;for(;n<240;){let i=this.readConst(e),s=i&15,u=(i&64)!=0,c=(i&32)!=0,x=(this.readConst(e+1)<<8)+this.readConst(e+2);e=e+3&65535;let m=(this.readConst(e)&128)!=0,l="DL $"+S(x,4)+" "+n+"-"+(n+s);u&&(l+=" H16"),c&&(l+=" H8"),m&&(l+=" DLI"),t[l]={$$:this._readDebugDisplayList(x)},n+=s+1}return t}_readDebugDisplayList(t){return()=>this.readDebugDisplayList(t)}readDebugDisplayList(t){let e=[],n=t&65280,i=t&255;do{let x=this.maria.regs[28],m=this.readConst(n+(i+0&511)),l=this.readConst(n+(i+1&511));if(l==0)break;let p=this.readConst(n+(i+2&511)),g=this.readConst(n+(i+3&511)),y=!1,d="",k,A=(x&3)+(l&128?4:0);if((l&31)==0){var s=g>>5,u=32-(g&31),c=this.readConst(n+(i+4&511));y=(l&32)!=0,k=l&128,i+=5}else{var c=g,s=l>>5,u=32-(l&31);i+=4}d+="X="+c+" W="+u+" P="+s,k&&(d+=" WM=1"),y&&(d+=" CHR=$"+S(this.maria.regs[20]+this.maria.offset&255)+"xx");let w=m+((p+(y?0:this.maria.offset)&255)<<8);d=" $"+S(w,4)+" "+d,d=["160A","?","320D","320A","160B","?","320B","320C"][A]+" "+d,e.push(d)}while(i<512);return e}},J=new Uint32Array(256);for(D=0;D<256;D++)J[D]=j(D);var D;var it=[{id:"sprites.dasm",name:"Sprites (ASM)",category:"Assembly"},{id:"wsync.c",name:"WSYNC",category:"CC65"},{id:"sprites.c",name:"Double Buffering"},{id:"scroll.c",name:"Scrolling"},{id:"test_conio.c78",name:"Conio Test",category:"cc7800"},{id:"example_small_sprites.c78",name:"Small Sprites"},{id:"example_vertical_scrolling.c78",name:"Vertical Scrolling"}],U=class extends ${constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"TIA",start:0,size:32,type:"io"},{name:"MARIA",start:32,size:32,type:"io"},{name:"RAM (6166 Block 0)",start:64,size:192,type:"ram"},{name:"RAM (6166 Block 1)",start:320,size:192,type:"ram"},{name:"PIA",start:640,size:24,type:"io"},{name:"RAM",start:6144,size:4096,type:"ram"},{name:"Cartridge ROM",start:16384,size:49146,type:"rom"},{name:"CPU Vectors",start:65530,size:6,type:"rom"}]}};this.getToolForFilename=H}newMachine(){return new T}getPresets(){return it}getDefaultExtensions(){return[...super.getDefaultExtensions(),".cc7800"]}readAddress(t){return this.machine.readConst(t)}getROMExtension(){return".a78"}getDebugTree(){let t=super.getDebugTree();return t.display_list=this.machine.getDebugDisplayLists(),t}};O.atari7800=U; -//# sourceMappingURL=atari7800-7IUSBQLC.js.map +//# sourceMappingURL=atari7800-YDBZZWY4.js.map diff --git a/gen/atari7800-7IUSBQLC.js.map b/gen/atari7800-YDBZZWY4.js.map similarity index 100% rename from gen/atari7800-7IUSBQLC.js.map rename to gen/atari7800-YDBZZWY4.js.map diff --git a/gen/atari8-FQ7EOZFI.js b/gen/atari8-KEK3L4F4.js similarity index 98% rename from gen/atari8-FQ7EOZFI.js rename to gen/atari8-KEK3L4F4.js index 3272e37b..48763945 100644 --- a/gen/atari8-FQ7EOZFI.js +++ b/gen/atari8-KEK3L4F4.js @@ -1,7 +1,7 @@ -import{a as ft}from"./chunk-XQKNUPDS.js";import{b as dt,c as xt,d as Q}from"./chunk-IK55UTNM.js";import{G as ct,g as at,k as nt,m as ht,r as ot,z as lt}from"./chunk-4WX2XTAI.js";import{g as H}from"./chunk-UACHXWHT.js";import{$ as rt,K as D,X as T,Y as i,Z as it,a as Y,ca as k,g as _,r as I}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var kt=[0,25,17,9],Mt=[0,89,97,105],y=0,vt=1,B=2,z=3,Ct=4,Lt=5,Kt=7,Pt=9,L=10,Vt=11,wt=12,Nt=13,ut=14,Ut=15,K=15;var Ft=13,Yt=106,Ht=105,X=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Qt=[0,0,2,2,2,2,4,4,8,8,4,4,4,2,2,2],Bt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],mt=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[ut]=0,this.regs[K]=127,this.regs[wt]=0,this.regs[Nt]=255,this.setReg(y,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return I(0,{},this)}loadState(e){I(0,this,e),this.setReg(y,e.regs[y])}static stateToLongString(e){let t="";return t+="H: "+Y(e.h,3)+" V: "+Y(e.v,3)+` +import{a as ft}from"./chunk-V7REAW7P.js";import{b as dt,c as xt,d as Q}from"./chunk-UTYUOOT2.js";import{G as ct,g as at,k as nt,m as ht,r as ot,z as lt}from"./chunk-MZ43WA3W.js";import{g as H}from"./chunk-UACHXWHT.js";import{$ as rt,K as D,X as T,Y as i,Z as it,a as Y,ca as k,g as _,r as I}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var kt=[0,25,17,9],Mt=[0,89,97,105],y=0,vt=1,B=2,z=3,Ct=4,Lt=5,Kt=7,Pt=9,L=10,Vt=11,wt=12,Nt=13,ut=14,Ut=15,K=15;var Ft=13,Yt=106,Ht=105,X=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Qt=[0,0,2,2,2,2,4,4,8,8,4,4,4,2,2,2],Bt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],mt=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[ut]=0,this.regs[K]=127,this.regs[wt]=0,this.regs[Nt]=255,this.setReg(y,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return I(0,{},this)}loadState(e){I(0,this,e),this.setReg(y,e.regs[y])}static stateToLongString(e){let t="";return t+="H: "+Y(e.h,3)+" V: "+Y(e.v,3)+` `,t+="DLIOp: "+_(e.dliop,2)+" Lines: "+e.yofs+"/"+e.linesleft,t+=" DMA "+(e.dma_enabled?"ON ":"off"),e.dma_enabled&&(t+=" idx "+e.dmaidx+" clk "+_(e.dmaclock)),t+=` `,t+="Addr: "+_(e.scanaddr,4)+` `,t+=T(e.regs,0,16).replace("$00","Regs"),t}setReg(e,t){switch(e){case L:this.regs[L]=255;return;case Ut:this.regs[K]=31;return}this.regs[e]=t}readReg(e){switch(e){case K:return this.regs[e];case Vt:return this.v>>1;default:return 255}}processDLIEntry(){if(this.mode==0)this.linesleft=(this.dliop>>4&7)+1,this.dmaclock=0;else{this.linesleft=X[this.mode],this.period=Qt[this.mode],this.jmp?(this.regs[B]=this.dlarg_lo,this.regs[z]=this.dlarg_hi,this.mode=this.period=0,this.dliop&64&&(this.linesleft=1,this.dma_enabled=!1),this.dmaclock=0):this.lms&&(this.scanaddr=this.dlarg_lo+(this.dlarg_hi<<8)),this.startaddr=this.scanaddr;let e=this.regs[y]&3,t=this.dliop&16?(this.regs[Ct]&15)>>1:0;this.dliop&16&&e<3&&e++,this.left=kt[e]+t,this.right=Mt[e]+t;let s=this.regs[Lt]&15;this.dliop&32^this.in_vscroll&&(this.in_vscroll?this.linesleft=s+1:(this.linesleft-=s,this.yofs+=s),this.linesleft&=15,this.in_vscroll^=32)}}nextLine(){this.linesleft>0&&(this.linesleft--,this.yofs++,this.isfirstline=!1,this.mode>=8&&this.linesleft&&(this.scanaddr=this.startaddr))}triggerNMI(e){this.regs[K]=e|31,this.regs[ut]&e&&this.nmi()}getDlistAddr(){return this.regs[B]+(this.regs[z]<<8)}nextInsn(){let e=this.getDlistAddr(),t=this.read(e);return e=e+1&1023|e&-1024,this.regs[B]=e&255,this.regs[z]=e>>8,t}nextScreen(){let e=this.read(this.scanaddr);return this.incScanAddr(),e}incScanAddr(){this.scanaddr=this.scanaddr+1&4095|this.scanaddr&-4096}dlDMAEnabled(){return this.regs[y]&32}isVisibleScanline(){return this.v>=8&&this.v<248}isPlayfieldDMAEnabled(){return this.dma_enabled&&!this.linesleft}isPlayerDMAEnabled(){return this.regs[y]&8}isMissileDMAEnabled(){return this.regs[y]&12}isWSYNC(){return this.regs[L]!=0}clockPulse(){let e=this.isWSYNC();if(!this.isVisibleScanline())this.doVBlank();else{switch(this.h){case 0:this.isMissileDMAEnabled()&&(this.doPlayerMissileDMA(3),e=!0);break;case 1:if(this.isPlayfieldDMAEnabled()){let t=this.nextInsn();this.jmp=(t&-65)==1,this.lms=(t&64)!=0&&(t&15)!=0,this.mode=t&15,this.dliop=t,this.yofs=0,this.isfirstline=!0,e=!0}break;case 2:case 3:case 4:case 5:this.isPlayerDMAEnabled()&&(this.doPlayerMissileDMA(this.h+2),e=!0);break;case 6:case 7:this.isPlayfieldDMAEnabled()&&this.isfirstline&&(this.jmp||this.lms)&&(this.h==6&&(this.dlarg_lo=this.nextInsn()),this.h==7&&(this.dlarg_hi=this.nextInsn()),e=!0);break;case 8:this.isfirstline&&this.processDLIEntry(),this.dliop&128&&this.linesleft==1&&this.triggerNMI(128);break;case 9:break;case 111:this.dma_enabled&&this.nextLine(),++this.v;break}if(this.output=0,this.mode>=2&&this.period){let t=this.h<=Ht;this.dmaclock=this.dmaclock<<1&511,this.dmaclock&1<=8&&this.incScanAddr(),e=t),this.output=this.h>=this.left+3&&this.h<=this.right+2?4:0}}return(this.hYt)&&(this.output=2),this.incHorizCounter(),!e&&this.dramrefresh&&(this.read(0),this.dramrefresh=!1,e=!0),e}incHorizCounter(){switch(this.h){case 25:case 29:case 33:case 37:case 41:case 45:case 49:case 53:case 57:this.dramrefresh=!0;break;case 102:this.regs[L]=0;break;case 113:this.h=0;return}++this.h}doVBlank(){this.linesleft=this.mode=this.period=0,this.h==111&&this.v++,this.v==248&&this.h==0&&this.triggerNMI(64),this.v==262&&this.h==112&&(this.v=0),this.v==7&&this.h==113&&(this.dma_enabled=this.dlDMAEnabled()!=0),this.output=2,this.dmaclock=0}doPlayerMissileDMA(e){let t=this.regs[y]&16,s=this.regs[Kt]<<8;t?(s&=63488,s|=e<<8,s|=this.v&255):(s&=64512,s|=e<<7,s|=this.v>>1),this.read(s)}readBitmapData(){let e=this.mode;if(e<8){let t=this.ch,s=this.yofs>>Bt[this.mode],r=s&7,a=this.regs[Pt];(e&14)==6?(t&=63,a&=254):(t&=127,a&=252);let l=(t<<3)+(a<<8);if((e&14)==2){let h=this.regs[vt],d=e==3&&(t&96)==96;h&4?this.pfbyte=this.read(l+(r^7)):this.pfbyte=this.read(l+r),d&&s<2&&(this.pfbyte=0),!d&&s>7&&(this.pfbyte=0),this.ch&128&&(h&1&&(this.pfbyte=0),h&2&&(this.pfbyte^=255))}else this.pfbyte=this.read(l+r)}else this.pfbyte=this.nextScreen()}shiftout(){if(this.output==4)switch(this.mode){case 2:case 3:case 15:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?8:6}case 6:case 7:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?(this.ch>>6)+4:0}case 9:case 11:case 12:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?4:0}case 4:case 5:{let e=this.pfbyte>>6&3;return this.pfbyte<<=2,this.ch&128?[0,4,5,7][e]:[0,4,5,6][e]}case 8:case 10:case 13:case 14:{let e=this.pfbyte>>6&3;return this.pfbyte<<=2,[0,4,5,6][e]}}return this.output}};var f=0;var zt=2;var gt=4;var _t=6;var p=8,Xt=9,qt=10,Gt=11,Wt=13,q=14,A=15;var jt=8,Zt=9,$t=10,Jt=13,O=14,P=15;var pt=128,bt=64,te=32,yt=16,St=8;var ee=1,At=28,se=114;var Et=511,It=131071,m=0,g=1,b=2,u=3,S=114,ie=15;var re=8;var G,V;function ae(){G=new Uint8Array(511),V=new Uint8Array(16385);let n=511;for(let e=0;e<511;e++)n=(((n>>5^n)&1)<<8)+(n>>1),G[e]=n;n=131071;for(let e=0;e<16385;e++)n=(((n>>5^n)&255)<<9)+(n>>8),V[e]=n>>1}var v=class{constructor(e,t){this.irq=e;this.antic_xpos=t;this.regs=new Uint8Array(16);this.readregs=new Uint8Array(16);this.divnirq=new Uint32Array(4);this.divnmax=new Uint32Array(4);this.pot_inputs=new Uint8Array(8);this.basemult=0;this.pot_scanline=0;this.random_scanline_counter=0;this.kbcode=0;this.DELAYED_SERIN_IRQ=0;this.DELAYED_SEROUT_IRQ=0;this.DELAYED_XMTDONE_IRQ=0;this.init()}saveState(){return I(0,{},this)}loadState(e){I(0,this,e)}init(){this.readregs.fill(255),this.readregs[P]=239,this.basemult=At,this.pot_inputs.fill(128),ae()}read(e){let t=this.readregs[e];switch(e&=15,e){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:return t=this.pot_inputs[e],t>3;s&=7,t=(V[r]>>s)+(V[r+1]<<8-s)}}break}return t&255}write(e,t){switch(e&=15,this.regs[e]=t,e){case p:t&ee?this.basemult=se:this.basemult=At,this.update_counter(1<=3?(this.readregs[O]|=8,this.DELAYED_XMTDONE_IRQ=2*this.DELAYED_SEROUT_IRQ-2):(this.DELAYED_SEROUT_IRQ=0,this.DELAYED_XMTDONE_IRQ=0));break;case Xt:this.divnirq[m]=this.divnmax[m],this.divnirq[g]=this.divnmax[g],this.divnirq[b]=this.divnmax[b],this.divnirq[u]=this.divnmax[u];break;case A:t&4&&(this.pot_scanline=228),(t&3)==0&&(this.DELAYED_SERIN_IRQ=0,this.DELAYED_SEROUT_IRQ=0,this.DELAYED_XMTDONE_IRQ=0);break}this.snd_update(e)}update_counter(e){e&1<0&&--this.DELAYED_SERIN_IRQ==0&&(this.readregs[Jt]=this.SIO_GetByte(),this.generateIRQ(32)),this.DELAYED_SEROUT_IRQ>0&&--this.DELAYED_SEROUT_IRQ==0&&this.generateIRQ(16),this.DELAYED_XMTDONE_IRQ>0&&--this.DELAYED_XMTDONE_IRQ==0&&this.generateIRQ(8),this.advanceIRQTimer(m,1),this.advanceIRQTimer(g,2),this.advanceIRQTimer(u,4))}advanceIRQTimer(e,t){(this.divnirq[e]-=S)<0&&(this.divnirq[e]+=this.divnmax[e],this.generateIRQ(t))}generateIRQ(e){this.regs[q]&e&&(this.irq(),this.readregs[O]&=~e)}static stateToLongString(e){let t="";return t+=`Write Registers: `,t+=T(e.regs,0,16),t+=`Read Registers: `,t+=T(e.readregs,0,16),t}CASSETTE_IOLineStatus(){return 0}siocheck(){return((this.regs[f+b]==40||this.regs[f+b]==16||this.regs[f+b]==8||this.regs[f+b]==10)&&this.regs[f+u]==0||(this.regs[A]&120)==40)&&(this.regs[p]&40)==40}SIO_PutByte(e){console.log("SIO put byte",e)}SIO_GetByte(){return 0}};var w=class{constructor(e){if(this.data=e,e.length>=16&&(e[0]|e[1]<<8)==662){let s=(e[2]|e[3]<<8)*16,r=e[4]|e[5]<<8;this.sectorsize=r==256?256:128,this.sectorsize==256?this.numsectors=3+Math.floor((s-16-384)/256):this.numsectors=Math.floor((s-16)/128)}else this.sectorsize=128,this.numsectors=Math.floor(e.length/128)}sectorOffset(e){return this.sectorsize==256?e<3?16+e*128:400+(e-3)*256:16+e*128}readSector(e,t){let s=e-1;if(s<0||s>=this.numsectors)return null;let r=this.sectorOffset(s);return this.data.subarray(r,Math.min(r+t,this.data.length))}writeSector(e,t,s){let r=e-1;if(r<0||r>=this.numsectors)return!1;let a=this.sectorOffset(r);return this.data.set(t.subarray(0,Math.min(s,this.data.length-a)),a),!0}};var W=160,ne=240,he=241,oe=[173,0,3,201,49,144,12,201,64,176,8,141,240,213,173,241,213,168,96,76,80,233],le=[i.VK_L,i.VK_J,i.VK_SEMICOLON,i.VK_F4,i.VK_F5,i.VK_K,i.VK_BACK_SLASH,i.VK_TILDE,i.VK_O,null,i.VK_P,i.VK_U,i.VK_ENTER,i.VK_I,i.VK_MINUS2,i.VK_EQUALS2,i.VK_V,i.VK_F7,i.VK_C,i.VK_F6,i.VK_F4,i.VK_B,i.VK_X,i.VK_Z,i.VK_4,null,i.VK_3,i.VK_6,i.VK_ESCAPE,i.VK_5,i.VK_2,i.VK_1,i.VK_COMMA,i.VK_SPACE,i.VK_PERIOD,i.VK_N,null,i.VK_M,i.VK_SLASH,null,i.VK_R,null,i.VK_E,i.VK_Y,i.VK_TAB,i.VK_T,i.VK_W,i.VK_Q,i.VK_9,null,i.VK_0,i.VK_7,i.VK_BACK_SPACE,i.VK_8,null,null,i.VK_F,i.VK_H,i.VK_D,null,i.VK_CAPS_LOCK,i.VK_G,i.VK_S,i.VK_A],ce=rt([[i.UP,0,1],[i.DOWN,0,2],[i.LEFT,0,4],[i.RIGHT,0,8],[{c:16,n:"Shift",plyr:0,button:0},2,1],[i.VK_F1,3,1],[i.VK_F2,3,2],[i.VK_F3,3,4]]),C=class extends ot{constructor(){super();this.cpuFrequency=1789773;this.numTotalScanlines=262;this.cpuCyclesPerLine=114;this.canvasWidth=336;this.numVisibleScanlines=224;this.aspectRatio=this.canvasWidth/this.numVisibleScanlines*.857;this.firstVisibleScanline=16;this.firstVisibleClock=76;this.defaultROMSize=32768;this.overscan=!0;this.audioOversample=2;this.sampleRate=this.numTotalScanlines*60*this.audioOversample;this.run_address=-1;this.inputs=new Uint8Array(4);this.linergb=new Uint32Array(this.canvasWidth);this.lastdmabyte=0;this.keycode=0;this.cart_80=!1;this.cart_a0=!1;this.xexdata=null;this.disk=null;this.keyboard_active=!0;this.d500=new Uint8Array(256);this.cpu=new ht,this.ram=new Uint8Array(65536),this.bios=new Uint8Array(10240),this.bus=this.newBus(),this.connectCPUMemoryBus(this.bus),this.antic=new M(this.readDMA.bind(this),this.antic_nmi.bind(this)),this.gtia=new Q,this.irq_pokey=new v(this.pokey_irq.bind(this),()=>this.antic.h),this.audio_pokey=at(1),this.audioadapter=new nt(this.audio_pokey.pokey1,this.audioOversample,this.sampleRate),this.handler=it(this.inputs,ce,this.getKeyboardFunction(),!0)}newBus(){return{read:k([[0,32767,65535,t=>this.ram[t]],[32768,40959,65535,t=>this.cart_80?this.rom[t-32768]:this.ram[t]],[40960,49151,65535,t=>this.cart_a0?this.rom[t-32768]:this.ram[t]],[53248,53503,31,t=>this.gtia.readReg(t)],[53760,54015,15,t=>this.readPokey(t)],[54016,54271,15,t=>this.readPIA(t)],[54272,54527,15,t=>this.antic.readReg(t)],[54528,54783,255,t=>this.d500[t]],[55296,65535,65535,t=>this.bios[t-55296]]]),write:k([[0,49146,65535,(t,s)=>{this.ram[t]=s}],[49147,49151,65535,(t,s)=>{this.ram[t]=s,this.initCartA()}],[53248,53503,31,(t,s)=>{this.gtia.setReg(t,s)}],[53760,54015,15,(t,s)=>{this.writePokey(t,s)}],[54272,54527,15,(t,s)=>{this.antic.setReg(t,s)}],[54528,54783,255,(t,s)=>{this.writeMapper(t,s)}]])}}loadBIOS(t){this.bios.set(t),this.installSIOStub()}installSIOStub(){this.bios[3161]=76,this.bios[3162]=54528+W&255,this.bios[3163]=54528+W>>8,this.d500.set(oe,W)}reset(){super.reset(),this.antic.reset(),this.gtia.reset(),this.keycode=0}read(t){return this.bus.read(t)}readDMA(t){let s=this.bus.read(t);return this.probe.logDMARead(t,s),this.lastdmabyte=s,s}readConst(t){return t<53248||t>=54528?this.bus.read(t):255}write(t,s){this.bus.write(t,s)}readPokey(t){switch(t&15){case 9:return this.keycode&255;case 15:return~this.keycode>>6&4|~this.keycode>>3&8|18;default:return this.irq_pokey.read(t)}}readPIA(t){if(t==0||t==1)return~this.inputs[t]}writePokey(t,s){this.audio_pokey.pokey1.setRegister(t,s),this.irq_pokey.write(t,s)}startScanline(){this.gtia.sync();for(let t=0;t<4;t++)this.gtia.readregs[dt+t]=~this.inputs[2]>>t&1;this.gtia.readregs[xt]=~this.inputs[3]&7,this.audio&&this.audioadapter.generate(this.audio),this.irq_pokey.advanceScanline()}drawScanline(){let t=this.antic.v-this.firstVisibleScanline;t>=0&&t{this.gtia.clockPulse1(),this.linergb[t++]=this.gtia.rgb},r=()=>{this.gtia.clockPulse2(),this.linergb[t++]=this.gtia.rgb};this.gtia.clockPulse4(),this.antic.dliop&16&&this.antic.regs[4]&1?(t+=2,this.gtia.setBias(-1)):this.gtia.setBias(0);let a=mt[this.antic.mode],l=this.antic.h&1;return(a<8||l)&&(this.gtia.an=this.antic.shiftout()),s(),a==1&&(this.gtia.an=this.antic.shiftout()),r(),a<=2&&(this.gtia.an=this.antic.shiftout()),s(),a==1&&(this.gtia.an=this.antic.shiftout()),r(),1}loadState(t){this.loadControlsState(t),this.cpu.loadState(t.c),this.ram.set(t.ram),this.antic.loadState(t.antic),this.gtia.loadState(t.gtia),this.irq_pokey.loadState(t.pokey),this.lastdmabyte=t.lastdmabyte,this.cart_80=t.cart_80,this.cart_a0=t.cart_a0}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),antic:this.antic.saveState(),gtia:this.gtia.saveState(),pokey:this.irq_pokey.saveState(),inputs:this.inputs.slice(0),lastdmabyte:this.lastdmabyte,keycode:this.keycode,cart_80:this.cart_80,cart_a0:this.cart_a0}}loadControlsState(t){this.inputs.set(t.inputs),this.keycode=t.keycode}saveControlsState(){return{inputs:this.inputs.slice(0),keycode:this.keycode}}getRasterY(){return this.antic.v}getRasterX(){return this.antic.h}getRasterCanvasPosition(){return{x:this.antic.h*4-this.firstVisibleClock,y:this.antic.v-this.firstVisibleScanline}}getDebugCategories(){return["CPU","Stack","ANTIC","GTIA","POKEY"]}getDebugInfo(t,s){switch(t){case"ANTIC":return M.stateToLongString(s.antic);case"GTIA":return Q.stateToLongString(s.gtia);case"POKEY":return v.stateToLongString(s.pokey)}}getKeyboardFunction(){return(t,s,r,a)=>{if(!this.keyboard_active)return!1;if(a&65){var l=le;if(s==i.VK_F9.c)return this.irq_pokey.generateIRQ(128),!0;for(var h=0;h>8}if(s>t.length)throw new Error("Bad .XEX file format")}l>=0&&(r[a++]=169,r[a++]=160,r[a++]=141,r[a++]=255,r[a++]=213,r[a++]=76,r[a++]=l&255,r[a++]=l>>8,this.ram[10]=0,this.ram[11]=213,this.run_address=54528)}initCartA(){this.cpu.getPC()==61823&&this.xexdata&&this.loadXEX(this.xexdata)}setPaddleInput(t,s){this.irq_pokey.pot_inputs[t]=255-s}getDebugDisplayList(){let t=this.antic.getDlistAddr(),s=()=>{let h=this.read(t);return t=t+1&1023|t&-1024,h},r=new Set,a=[],l=0;for(let h=0;h<256&&l<240;h++){let d=t;r.add(t);let o=s(),c=o&15,x="",E=!1,R;if(c==0)R=(o>>4&7)+1,x+=" blank="+R;else{R=X[c],x+=" mode="+_(c),x+=" lines="+R,E=(o&-65)==1;let tt=(o&64)!=0&&(o&15)!=0;if(o&16&&(x+=" HSCROL"),o&32&&(x+=" VSCROL"),o&128&&(x+=" DLI"),E&&o&64?x+=" JVB":E?x+=" JMP":tt&&(x+=" LMS"),E||tt){let et=s(),st=s();x+=" $"+_(st)+_(et),E&&(t=et+st*256)}}if(a.push("$"+_(d)+" y="+l+" "+x),E&&r.has(t))break;l+=R}return a}},N=class extends C{newBus(){return{read:k([[0,16383,65535,e=>this.ram[e]],[16384,49151,65535,e=>this.rom?this.rom[e-16384]:0],[49152,53247,31,e=>this.gtia.readReg(e)],[54272,54527,15,e=>this.antic.readReg(e)],[59392,61439,15,e=>this.readPokey(e)],[63488,65535,2047,e=>this.bios[e]]]),write:k([[0,16383,65535,(e,t)=>{this.ram[e]=t}],[49152,53247,31,(e,t)=>{this.gtia.setReg(e,t)}],[54272,54527,15,(e,t)=>{this.antic.setReg(e,t)}],[59392,61439,15,(e,t)=>{this.writePokey(e,t)}]])}}};var J=[{id:"hello.dasm",name:"Hello World",category:"Assembly"},{id:"hellopm.dasm",name:"Hello Sprites"},{id:"helloconio.c",name:"Text Mode",category:"C"},{id:"siegegame.c",name:"Siege Game"},{id:"hellodlist.c",name:"Display List"}],Ot=J.concat([{id:"tgidemo.c",name:"TGI Demo"},{id:"libdemo.c",name:"Library Demo"},{id:"scrolldemo.c",name:"Scrolling"},{id:"hello.cpp",name:"Hello Oscar64",category:"Oscar64"},{id:"libdemo.cpp",name:"Library Demo Oscar64"},{id:"sieve.bas",name:"Benchmark",category:"FastBasic"},{id:"pmtest.bas",name:"Sprites Test"},{id:"dli.bas",name:"DLI Test"},{id:"joyas.bas",name:"Match-3 Game"}]),Rt={main:[{name:"RAM",start:0,size:49152,type:"ram"},{name:"Left Cartridge ROM",start:40960,size:8192,type:"rom"},{name:"GTIA",start:53248,size:32,type:"io"},{name:"POKEY",start:53760,size:16,type:"io"},{name:"PIA",start:54016,size:4,type:"io"},{name:"ANTIC",start:54272,size:16,type:"io"},{name:"Cartridge Control Line",start:54784,size:256,type:"io"},{name:"ROM",start:55296,size:2048,type:"rom"},{name:"Character Set",start:57344,size:1024,type:"rom"},{name:"ROM",start:58368,size:7168,type:"rom"}]},Dt={main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"Cartridge ROM",start:16384,size:32768,type:"rom"},{name:"GTIA",start:49152,size:32,type:"io"},{name:"ANTIC",start:54272,size:16,type:"io"},{name:"POKEY",start:59392,size:16,type:"io"},{name:"ATARI Character Set",start:63488,size:1024,type:"rom"},{name:"ROM",start:64512,size:1024,type:"rom"}]},U=class extends ct{constructor(){super(...arguments);this.getToolForFilename=H;this.showHelp=Tt;this.getROMExtension=fe;this.biosPath="res/altirra/kernel.rom"}newMachine(){return new C}getPresets(){return Ot}getDefaultExtensions(){return[...super.getDefaultExtensions(),".bas"]}readAddress(t){return this.machine.readConst(t)}getMemoryMap(){return Rt}async start(){let t=await this.loadKernel();await super.start(),this.machine.loadBIOS(t)}async loadKernel(){var t=await fetch(this.biosPath);if(t.status==200||t.size){var s=await t.arrayBuffer();return new Uint8Array(s)}else throw new Error("could not load BIOS file")}getDebugTree(){let t=super.getDebugTree();return t.display_list=this.machine.getDebugDisplayList(),t}},j=class extends U{constructor(){super(...arguments);this.biosPath="res/altirra/superkernel.rom"}getPresets(){return J}newMachine(){return new N}getMemoryMap(){return Dt}},F=class extends ft{constructor(){super(...arguments);this.getToolForFilename=H;this.getOpcodeMetadata=lt;this.showHelp=Tt}getPresets(){return J}getDefaultExtensions(){return[".c",".bas",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}},Z=class extends F{constructor(){super(...arguments);this.getMemoryMap=function(){return Rt}}getPresets(){return Ot.filter(t=>!t.id.endsWith(".cpp"))}loadROM(t,s){this.started?(this.loadROMFile(s),this.loadRegion(":cartleft:cart:rom",s)):this.startModule(this.mainElement,{jsfile:"mame8bitws.js",biosfile:"a800xl.zip",cfgfile:"a800xl.cfg",driver:"a800xl",width:336*2,height:450,romfn:"/emulator/cart.rom",romdata:new Uint8Array(s),romsize:8192,preInit:function(r){}})}start(){}},$=class extends F{loadROM(e,t){this.started?(this.loadROMFile(t),this.loadRegion(":cartleft:cart:rom",t)):this.startModule(this.mainElement,{jsfile:"mame8bitws.js",biosfile:"a5200/5200.rom",cfgfile:"a5200.cfg",driver:"a5200",width:336*2,height:450,romfn:"/emulator/cart.rom",romdata:new Uint8Array(t),romsize:32768,preInit:function(s){}})}start(){}getMemoryMap(){return Dt}};function fe(n){return n==null?".bin":n[0]==150&&n[1]==2?".atr":n[0]==255&&n[1]==255?".xex":".rom"}function Tt(){return"https://8bitworkshop.com/docs/platforms/atari8/"}D["atari8-800.xlmame"]=Z;D["atari8-5200.mame"]=$;D["atari8-800"]=U;D["atari8-5200"]=j; -//# sourceMappingURL=atari8-FQ7EOZFI.js.map +//# sourceMappingURL=atari8-KEK3L4F4.js.map diff --git a/gen/atari8-FQ7EOZFI.js.map b/gen/atari8-KEK3L4F4.js.map similarity index 100% rename from gen/atari8-FQ7EOZFI.js.map rename to gen/atari8-KEK3L4F4.js.map diff --git a/gen/basic-JWJIGIKJ.js b/gen/basic-5TP7VOPQ.js similarity index 99% rename from gen/basic-JWJIGIKJ.js rename to gen/basic-5TP7VOPQ.js index 169fdc27..dce91091 100644 --- a/gen/basic-JWJIGIKJ.js +++ b/gen/basic-5TP7VOPQ.js @@ -1,4 +1,4 @@ -import{b as y}from"./chunk-3FIVEUG2.js";import{n as E}from"./chunk-UACHXWHT.js";import{B as c,K as f,T as d,V as v,W as S,a as g}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";function O(u){return u.value!=null}function k(u){return u.name!=null}function N(u){return u.op!=null&&u.left!=null&&u.right!=null}function I(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},T=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=T),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` +import{b as y}from"./chunk-3FIVEUG2.js";import{n as E}from"./chunk-UACHXWHT.js";import{B as c,K as f,T as d,V as v,W as S,a as g}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";function O(u){return u.value!=null}function k(u){return u.name!=null}function N(u){return u.op!=null&&u.left!=null&&u.right!=null}function I(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},T=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=T),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` `)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=` `):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),O(t))return JSON.stringify(t.value);if(k(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let h=t.args?t.args.map(o=>this.expr2js(o,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${h})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${h})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${h})`:e+=`this.arrayGet(${i}, ${h})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(N(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(I(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var h=()=>i>=0?this.vars[t]>e:this.vars[t]o==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:o=>{o&&t!=o&&this.runtimeError(`I executed NEXT "${o}", but the last FOR was for "${t}".`),this.vars[t]+=i;var b=h();b?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${b}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s=i.length&&this.runtimeError(`I tried to lookup ${t}(${r}) but it exceeded the dimensions of the array.`),i=i[r[n]]}return c(i)&&this.runtimeError(`I tried to lookup ${t}(${r}) but used too few dimensions.`),i}modifyStringSlice(t,r,e,i){return t=t||"",this.checkString(t),this.checkString(r),i||(i=e),e=this.ROUND(e),i=this.ROUND(i),e<1&&this.dialectError("accept a string slice index less than 1"),ir.length)&&this.runtimeError(`I needed a number between 1 and ${r.length}, but I got ${t}.`),t<1||t>r.length?0:t}onGotoLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gotoLabel(r[t-1])}onGosubLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gosubLabel(r[t-1])}nextDatum(){return this.dataptr>=this.datums.length&&this.runtimeError("I tried to READ, but ran out of data."),this.datums[this.dataptr++].value}do__PRINT(t){var r="";for(var e of t.args){var i=this.expr2js(e),n=i.name;r+=`this.printExpr(this.checkValue(${i}, ${JSON.stringify(n)}));`}return r}preInput(){this.running=!1,this.curpc--}postInput(t){t&&this.curpc++,this.running=!0,this.resume()}do__INPUT(t){var r=t.prompt!=null?this.expr2js(t.prompt):'""',e=t.elapsed!=null?this.assign2js(t.elapsed):"let ___",i="";return t.args.forEach((n,s)=>{var a=this.assign2js(n);i+=` var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]); @@ -34,4 +34,4 @@ import{b as y}from"./chunk-3FIVEUG2.js";import{n as E}from"./chunk-UACHXWHT.js"; `),this.tty.addtext("*** END OF PROGRAM ***",1),this.tty.showPrintHead(!1)}loadROM(t,r){var e=this.runtime.exited;this.program=r;var i=this.runtime.load(r);this.tty.uppercaseOnly=!0,(!this.hotReload||e||!i)&&this.reset()}getROMExtension(){return".json"}reset(){this.tty.clear(),this.runtime.reset(),this.clock=0,this.transcript=[]}pause(){this.timer.stop()}resume(){this.isBlocked()||(this.animcount=0,this.timer.start())}isBlocked(){return this.tty.waitingfor!=null||this.runtime.exited}isRunning(){return this.timer.isRunning()}getDefaultExtensions(){return[".bas"]}getPresets(){return L}getPC(){return this.runtime.curpc}getSP(){return 4096-this.runtime.returnStack.length}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP()}}saveState(){return{c:this.getCPUState(),rt:this.runtime.saveState()}}loadState(t){this.runtime.loadState(t)}getDebugTree(){return{CurrentLine:this.runtime.getCurrentLabel(),Variables:this.runtime.vars,Arrays:this.runtime.arrays,Functions:this.runtime.defs,ForLoops:this.runtime.forLoops,WhileLoops:this.runtime.whileLoops,ReturnStack:this.runtime.returnStack,NextDatum:this.runtime.datums[this.runtime.dataptr],Clock:this.clock,Options:this.runtime.opts,Internals:this.runtime}}inspect(t){let r=this.runtime.vars[t];if(r!=null)return`${t} = ${r}`}showHelp(){return"https://8bitworkshop.com/docs/platforms/basic/"}getDebugCategories(){return["Variables"]}getDebugInfo(t,r){if(t==="Variables")return this.varsToLongString()}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=g(e,3)+" = "+n+` `}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}hasCustomStepOver(){return!0}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t9?1:0;r=(s>>4)+(e>>4)+t;let i=r>9?1:0;this.clrOZCS();let x=this.doAdd(s,e);this.setSZ(x);let c=0;return i&&(c|=160),t&&(c|=10),c&&(this.clrOZCS(),x=this.doAdd(x,c),this.setSZ(x)),x}getScratchpadIndex(s){if(s<12)return s;if(s===12)return this.IS&63;if(s===13){let e=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,e}if(s===14){let e=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,e}return 0}advanceInsn(){if(this.irqRequest&&this.W&u)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~u,6;let s=this.fetchPC0();this.o=s,this.stable=!0;let e=4,r,t;switch(s){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,e=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],e=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],e=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],e=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,e=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],e=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],e=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,e=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),e=6;break;case 23:this.storeDC0(this.A),e=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:r=this.W&d?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A);break;case 26:this.W&=~u;break;case 27:this.W|=u;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),e=6;break;case 33:r=this.fetchPC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 34:r=this.fetchPC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 35:r=this.fetchPC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 36:r=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 37:r=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,r,1),this.setSZ(this.doAdd(~this.A&255,r,1)),e=6;break;case 38:r=this.fetchPC0(),this.A=this.iobus.read(r)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 39:r=this.fetchPC0(),this.iobus.write(r,this.A),e=8;break;case 40:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC1=this.PC0,this.PC0=i<<8|x,e=12;break}case 41:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC0=i<<8|x,e=10;break}case 42:{let i=this.fetchPC0(),x=this.fetchPC0();this.DC0=i<<8|x,e=10;break}case 43:break;case 44:r=this.DC0,this.DC0=this.DC1,this.DC1=r;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.R[t]=this.doAdd(this.R[t],255),this.setSZ(this.R[t]),e=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:t=this.getScratchpadIndex(s&15),this.A=this.R[t];break;case 79:break;case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:t=this.getScratchpadIndex(s&15),this.R[t]=this.A;break;case 95:break;case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:this.IS=this.IS&7|(s&7)<<3;break;case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:this.IS=this.IS&56|s&7;break;case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:this.A=s&15;break;case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:{let i=s&7,x=this.fetchPC0();this.W&i&&(this.PC0=this.PC0+(x&128?x-256:x)&65535),e=6;break}case 136:r=this.fetchDC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 137:r=this.fetchDC0(),this.A=this.doAddDecimal(this.A,r),e=6;break;case 138:r=this.fetchDC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 139:r=this.fetchDC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 140:r=this.fetchDC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 141:r=this.fetchDC0(),this.clrOZCS();{let i=this.doAdd(~this.A&255,r,1);this.setSZ(i)}e=6;break;case 142:this.DC0=this.DC0+(this.A&128?this.A-256:this.A)&65535,e=6;break;case 143:{let i=this.fetchPC0();(this.IS&7)!==7&&(this.PC0=this.PC0+(i&128?i-256:i)&65535),e=6;break}case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:{let i=s&15,x=this.fetchPC0();(i===0||!(this.W&i))&&(this.PC0=this.PC0+(x&128?x-256:x)&65535),e=6;break}case 160:case 161:this.A=this.iobus.read(s&1)&255,this.clrOZCS(),this.setSZ(this.A);break;case 162:case 163:break;case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:this.A=this.iobus.read(s&15)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 176:case 177:this.iobus.write(s&1,this.A);break;case 178:case 179:break;case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:this.iobus.write(s&15,this.A),e=8;break;case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.A=this.doAdd(this.A,this.R[t]),this.setSZ(this.A);break;case 207:break;case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:t=this.getScratchpadIndex(s&15),this.A=this.doAddDecimal(this.A,this.R[t]),e=8;break;case 223:break;case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:t=this.getScratchpadIndex(s&15),this.A=(this.A^this.R[t])&255,this.clrOZCS(),this.setSZ(this.A);break;case 239:break;case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:t=this.getScratchpadIndex(s&15),this.A=this.A&this.R[t]&255,this.clrOZCS(),this.setSZ(this.A);break;case 255:break}return e}};var U=[4282927176,4283498320,4283453695,4286611584,4294922320,4283498320,4283453695,4286611584,4282927176,4294922320,4283453695,4286611584,4282927176,4283498320,4294922320,4286611584],E=1,O=2,Z=4,g=8,v=16,_=32,L=64,w=128,C=class extends R{constructor(){super();this.cpuFrequency=1789773;this.defaultROMSize=65536;this.canvasWidth=128;this.numVisibleScanlines=64;this.numTotalScanlines=64;this.cpuCyclesPerLine=this.cpuFrequency/60/64;this.sampleRate=this.cpuFrequency/2;this.cpu=new l;this.ram=new Uint8Array(65536);this.vram=new Uint8Array(8192);this.port0=0;this.port1=0;this.port4=0;this.port5=0;this.row_reg=0;this.col_reg=0;this.color=0;this.soundMode=0;this.soundCounter=0;this.soundEnvelope=0;this.soundOnTime=0;this.read=A([[0,2047,2047,e=>this.bios[e]],[2048,65535,65535,e=>this.rom&&this.rom[e-2048]||0]],{gmask:65535});this.write=A([[10240,12287,2047,(e,r)=>{this.rom&&(this.rom[e-2048]=r)}]],{gmask:65535});this.bios=new Uint8Array(2048),this.connectCPUMemoryBus(this),this.cpu.connectIOBus(this.newIOBus())}newIOBus(){return this.probeIOBus({read:e=>this.readPort(e),write:(e,r)=>{this.writePort(e,r)}})}readPort(e){switch(e&255){case 0:return~this.inputs[0]&255;case 1:return~this.inputs[1]&255;case 4:return~this.inputs[2]&255;default:return 255}}writePort(e,r){switch(e&255){case 0:this.port0=r;break;case 1:this.port1=r,this.col_reg=r;break;case 4:this.port4=r;break;case 5:this.port5=r,this.soundMode=r>>6&3,this.soundMode>0&&(this.soundEnvelope=1023,this.soundOnTime=60),this.row_reg=r&63,this.writePixel();break}}writePixel(){let e=this.row_reg,r=this.col_reg&127;if(e<64&&r<128){let t=this.port1>>6&3,i=e*128+r;this.vram[i]=t}}readConst(e){return e<2048?this.bios[e]:this.rom&&this.rom[e-2048]||0}loadROM(e){this.rom||(this.rom=new Uint8Array(this.defaultROMSize)),this.rom.set(e),this.reset()}loadBIOS(e){this.bios=P(e,2048),this.reset()}reset(){super.reset(),this.vram.fill(0),this.port0=0,this.port1=0,this.port4=0,this.port5=0,this.row_reg=0,this.col_reg=0,this.soundMode=0,this.soundCounter=0,this.soundEnvelope=0}advanceFrame(e){var r=0,t=this.cpuFrequency/60;for(this.probe.logNewFrame();r>1)*4;for(let x=0;x<128;x++){let c=this.vram[e*128+x]&3,o=U[r+c];this.pixels[e*128+x]=o}}}generateAudio(e){if(!this.audio)return;let r=Math.floor(this.sampleRate/60);for(let t=0;t0&&this.soundEnvelope>0){let x;switch(this.soundMode){case 1:x=1e3;break;case 2:x=500;break;case 3:x=120;break;default:x=0}if(x>0){let c=Math.floor(this.sampleRate/x);this.soundCounter=(this.soundCounter+1)%c,i=this.soundCounter0?this.soundOnTime--:(this.soundEnvelope-=2,this.soundEnvelope<0&&(this.soundEnvelope=0))}this.audio.feedSample(i,1)}}setKeyInput(e,r,t){let i=!!(t&1),x=!!(t&64);e===n.VK_1.c&&(i?this.inputs[0]|=1:x&&(this.inputs[0]&=-2)),e===n.VK_2.c&&(i?this.inputs[0]|=2:x&&(this.inputs[0]&=-3)),e===n.VK_3.c&&(i?this.inputs[0]|=4:x&&(this.inputs[0]&=-5)),e===n.VK_4.c&&(i?this.inputs[0]|=8:x&&(this.inputs[0]&=-9)),(e===n.VK_UP.c||e===n.VK_W.c)&&(i?this.inputs[1]|=g:x&&(this.inputs[1]&=~g)),(e===n.VK_DOWN.c||e===n.VK_S.c)&&(i?this.inputs[1]|=Z:x&&(this.inputs[1]&=~Z)),(e===n.VK_LEFT.c||e===n.VK_A.c)&&(i?this.inputs[1]|=O:x&&(this.inputs[1]&=~O)),(e===n.VK_RIGHT.c||e===n.VK_D.c)&&(i?this.inputs[1]|=E:x&&(this.inputs[1]&=~E)),e===n.VK_Q.c&&(i?this.inputs[1]|=v:x&&(this.inputs[1]&=~v)),e===n.VK_E.c&&(i?this.inputs[1]|=_:x&&(this.inputs[1]&=~_)),e===n.VK_R.c&&(i?this.inputs[1]|=w:x&&(this.inputs[1]&=~w)),e===n.VK_F.c&&(i?this.inputs[1]|=L:x&&(this.inputs[1]&=~L))}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0),vram:this.vram.slice(0),port0:this.port0,port1:this.port1,port4:this.port4,port5:this.port5,row_reg:this.row_reg,col_reg:this.col_reg,soundMode:this.soundMode,soundCounter:this.soundCounter,soundEnvelope:this.soundEnvelope}}loadState(e){this.cpu.loadState(e.c),this.ram.set(e.ram),this.inputs.set(e.inputs),this.vram.set(e.vram),this.port0=e.port0,this.port1=e.port1,this.port4=e.port4,this.port5=e.port5,this.row_reg=e.row_reg,this.col_reg=e.col_reg,this.soundMode=e.soundMode,this.soundCounter=e.soundCounter,this.soundEnvelope=e.soundEnvelope}};function F(a){return a<9?"r"+a:a===9?"J":a===10?"HU":a===11?"HL":a===12?"S":a===13?"I":a===14?"D":"?"}function M(a,s,e,r){let t="",i="",x=1,c=!1;if(s<=7){let o=["KU","KL","QU","QL"];s<4?(t="LR",i="A,"+o[s]):(t="LR",i=o[s-4]+",A")}else if(s===8)t="LR",i="K,P";else if(s===9)t="LR",i="P,K";else if(s===10)t="LR",i="A,IS";else if(s===11)t="LR",i="IS,A";else if(s===12)t="PK";else if(s===13)t="LR",i="P0,Q";else if(s===14)t="LR",i="Q,DC";else if(s===15)t="LR",i="DC,Q";else if(s===16)t="LR",i="DC,H";else if(s===17)t="LR",i="H,DC";else if(s===18)t="SR",i="1";else if(s===19)t="SL",i="1";else if(s===20)t="SR",i="4";else if(s===21)t="SL",i="4";else if(s===22)t="LM";else if(s===23)t="ST";else if(s===24)t="COM";else if(s===25)t="LNK";else if(s===26)t="DI";else if(s===27)t="EI";else if(s===28)t="POP";else if(s===29)t="LR",i="W,J";else if(s===30)t="LR",i="J,W";else if(s===31)t="INC";else if(s===32)t="LI",i="$"+h(e,2),x=2;else if(s===33)t="NI",i="$"+h(e,2),x=2;else if(s===34)t="OI",i="$"+h(e,2),x=2;else if(s===35)t="XI",i="$"+h(e,2),x=2;else if(s===36)t="AI",i="$"+h(e,2),x=2;else if(s===37)t="CI",i="$"+h(e,2),x=2;else if(s===38)t="IN",i="$"+h(e,2),x=2;else if(s===39)t="OUT",i="$"+h(e,2),x=2;else if(s===40)t="PI",i="$"+h(e<<8|r,4),x=3,c=!0;else if(s===41)t="JMP",i="$"+h(e<<8|r,4),x=3,c=!0;else if(s===42)t="DCI",i="$"+h(e<<8|r,4),x=3,c=!0;else if(s===43)t="NOP";else if(s===44)t="XDC";else if(s<=47)t="???";else if(s>=48&&s<=62)t="DS",i=F(s&15),x=1;else if(s===63)t="???";else if(s>=64&&s<=78)t="LR",i="A,"+F(s&15);else if(s===79)t="???";else if(s>=80&&s<=94)t="LR",i=F(s&15)+",A";else if(s===95)t="???";else if(s>=96&&s<=103)t="LISU",i=""+(s&7);else if(s>=104&&s<=111)t="LISL",i=""+(s&7);else if(s>=112&&s<=127)t="LIS",i=""+(s&15);else if(s>=128&&s<=135){let o=e&128?a+2+e-256:a+2+e;t="BT",i=""+(s&7)+",$"+h(o&65535,4),x=2,c=!0}else if(s===136)t="AM";else if(s===137)t="AMD";else if(s===138)t="NM";else if(s===139)t="OM";else if(s===140)t="XM";else if(s===141)t="CM";else if(s===142)t="ADC";else if(s===143){let o=e&128?a+2+e-256:a+2+e;t="BR7",i="$"+h(o&65535,4),x=2,c=!0}else if(s>=144&&s<=159){let o=e&128?a+2+e-256:a+2+e,f=s&15;f===0?t="BR":t="BF",f!==0&&(i=""+f+","),i+="$"+h(o&65535,4),x=2,c=!0}else s>=160&&s<=161?(t="INS",i=""+(s&15)):s>=162&&s<=163?t="???":s>=164&&s<=175?(t="INS",i=""+(s&15)):s>=176&&s<=177?(t="OUTS",i=""+(s&15)):s>=178&&s<=179?t="???":s>=180&&s<=191?(t="OUTS",i=""+(s&15)):s>=192&&s<=206?(t="AS",i=F(s&15)):s===207?t="???":s>=208&&s<=222?(t="ASD",i=F(s&15)):s===223?t="???":s>=224&&s<=238?(t="XS",i=F(s&15)):s===239?t="???":s>=240&&s<=254?(t="NS",i=F(s&15)):t="???";return{line:t+(i?" "+i:""),nbytes:x,isaddr:c}}var W=[];function K(a){return"PC0 = "+h(a.PC0,4)+" PC1 = "+h(a.PC1,4)+` +import{F as I,q as R}from"./chunk-MZ43WA3W.js";import{j as D}from"./chunk-UACHXWHT.js";import{K as S,Y as n,ba as P,ca as A,g as h,s as p}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var k=1,d=2,b=4,B=8,u=16,l=class{constructor(){this.PC0=0;this.PC1=0;this.DC0=0;this.DC1=0;this.A=0;this.W=0;this.IS=0;this.R=new Uint8Array(64);this.o=0;this.stable=!0;this.irqRequest=!1}connectMemoryBus(s){this.bus=s}connectIOBus(s){this.iobus=s}reset(){this.PC0=0,this.PC1=0,this.DC0=0,this.DC1=0,this.A=0,this.W=0,this.IS=0,this.R.fill(0),this.irqRequest=!1}interrupt(s){this.irqRequest=!0}getPC(){return this.PC0}getSP(){return this.PC1}isStable(){return this.stable}saveState(){return{PC:this.PC0,PC0:this.PC0,PC1:this.PC1,DC0:this.DC0,DC1:this.DC1,A:this.A,W:this.W,IS:this.IS,R:Array.from(this.R),o:this.o,irq:this.irqRequest}}loadState(s){var e;this.PC0=(e=s.PC0)!=null?e:s.PC,this.PC1=s.PC1,this.DC0=s.DC0,this.DC1=s.DC1,this.A=s.A,this.W=s.W,this.IS=s.IS;for(let r=0;r<64;r++)this.R[r]=s.R[r];this.o=s.o,this.irqRequest=s.irq}fetchPC0(){let s=this.bus.read(this.PC0);return this.PC0=this.PC0+1&65535,s}fetchDC0(){let s=this.bus.read(this.DC0);return this.DC0=this.DC0+1&65535,s}storeDC0(s){this.bus.write(this.DC0,s),this.DC0=this.DC0+1&65535}clrOZCS(){this.W&=~(B|b|d|k)}setSZ(s){(s&255)===0&&(this.W|=b),(s&128)===0&&(this.W|=k)}doAdd(s,e,r=0){let t=(s&255)+(e&255)+(r&1);return t&256&&(this.W|=d),((s^t)&(e^t)&128)!==0&&(this.W|=B),t&255}doAddDecimal(s,e){let r=(s&15)+(e&15),t=r>9?1:0;r=(s>>4)+(e>>4)+t;let i=r>9?1:0;this.clrOZCS();let x=this.doAdd(s,e);this.setSZ(x);let c=0;return i&&(c|=160),t&&(c|=10),c&&(this.clrOZCS(),x=this.doAdd(x,c),this.setSZ(x)),x}getScratchpadIndex(s){if(s<12)return s;if(s===12)return this.IS&63;if(s===13){let e=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,e}if(s===14){let e=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,e}return 0}advanceInsn(){if(this.irqRequest&&this.W&u)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~u,6;let s=this.fetchPC0();this.o=s,this.stable=!0;let e=4,r,t;switch(s){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,e=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],e=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],e=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],e=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,e=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],e=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],e=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,e=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),e=6;break;case 23:this.storeDC0(this.A),e=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:r=this.W&d?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A);break;case 26:this.W&=~u;break;case 27:this.W|=u;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),e=6;break;case 33:r=this.fetchPC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 34:r=this.fetchPC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 35:r=this.fetchPC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 36:r=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 37:r=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,r,1),this.setSZ(this.doAdd(~this.A&255,r,1)),e=6;break;case 38:r=this.fetchPC0(),this.A=this.iobus.read(r)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 39:r=this.fetchPC0(),this.iobus.write(r,this.A),e=8;break;case 40:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC1=this.PC0,this.PC0=i<<8|x,e=12;break}case 41:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC0=i<<8|x,e=10;break}case 42:{let i=this.fetchPC0(),x=this.fetchPC0();this.DC0=i<<8|x,e=10;break}case 43:break;case 44:r=this.DC0,this.DC0=this.DC1,this.DC1=r;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.R[t]=this.doAdd(this.R[t],255),this.setSZ(this.R[t]),e=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:t=this.getScratchpadIndex(s&15),this.A=this.R[t];break;case 79:break;case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:t=this.getScratchpadIndex(s&15),this.R[t]=this.A;break;case 95:break;case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:this.IS=this.IS&7|(s&7)<<3;break;case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:this.IS=this.IS&56|s&7;break;case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:this.A=s&15;break;case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:{let i=s&7,x=this.fetchPC0();this.W&i&&(this.PC0=this.PC0+(x&128?x-256:x)&65535),e=6;break}case 136:r=this.fetchDC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 137:r=this.fetchDC0(),this.A=this.doAddDecimal(this.A,r),e=6;break;case 138:r=this.fetchDC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 139:r=this.fetchDC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 140:r=this.fetchDC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 141:r=this.fetchDC0(),this.clrOZCS();{let i=this.doAdd(~this.A&255,r,1);this.setSZ(i)}e=6;break;case 142:this.DC0=this.DC0+(this.A&128?this.A-256:this.A)&65535,e=6;break;case 143:{let i=this.fetchPC0();(this.IS&7)!==7&&(this.PC0=this.PC0+(i&128?i-256:i)&65535),e=6;break}case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:{let i=s&15,x=this.fetchPC0();(i===0||!(this.W&i))&&(this.PC0=this.PC0+(x&128?x-256:x)&65535),e=6;break}case 160:case 161:this.A=this.iobus.read(s&1)&255,this.clrOZCS(),this.setSZ(this.A);break;case 162:case 163:break;case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:this.A=this.iobus.read(s&15)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 176:case 177:this.iobus.write(s&1,this.A);break;case 178:case 179:break;case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:this.iobus.write(s&15,this.A),e=8;break;case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.A=this.doAdd(this.A,this.R[t]),this.setSZ(this.A);break;case 207:break;case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:t=this.getScratchpadIndex(s&15),this.A=this.doAddDecimal(this.A,this.R[t]),e=8;break;case 223:break;case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:t=this.getScratchpadIndex(s&15),this.A=(this.A^this.R[t])&255,this.clrOZCS(),this.setSZ(this.A);break;case 239:break;case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:t=this.getScratchpadIndex(s&15),this.A=this.A&this.R[t]&255,this.clrOZCS(),this.setSZ(this.A);break;case 255:break}return e}};var U=[4282927176,4283498320,4283453695,4286611584,4294922320,4283498320,4283453695,4286611584,4282927176,4294922320,4283453695,4286611584,4282927176,4283498320,4294922320,4286611584],E=1,O=2,Z=4,g=8,v=16,_=32,L=64,w=128,C=class extends R{constructor(){super();this.cpuFrequency=1789773;this.defaultROMSize=65536;this.canvasWidth=128;this.numVisibleScanlines=64;this.numTotalScanlines=64;this.cpuCyclesPerLine=this.cpuFrequency/60/64;this.sampleRate=this.cpuFrequency/2;this.cpu=new l;this.ram=new Uint8Array(65536);this.vram=new Uint8Array(8192);this.port0=0;this.port1=0;this.port4=0;this.port5=0;this.row_reg=0;this.col_reg=0;this.color=0;this.soundMode=0;this.soundCounter=0;this.soundEnvelope=0;this.soundOnTime=0;this.read=A([[0,2047,2047,e=>this.bios[e]],[2048,65535,65535,e=>this.rom&&this.rom[e-2048]||0]],{gmask:65535});this.write=A([[10240,12287,2047,(e,r)=>{this.rom&&(this.rom[e-2048]=r)}]],{gmask:65535});this.bios=new Uint8Array(2048),this.connectCPUMemoryBus(this),this.cpu.connectIOBus(this.newIOBus())}newIOBus(){return this.probeIOBus({read:e=>this.readPort(e),write:(e,r)=>{this.writePort(e,r)}})}readPort(e){switch(e&255){case 0:return~this.inputs[0]&255;case 1:return~this.inputs[1]&255;case 4:return~this.inputs[2]&255;default:return 255}}writePort(e,r){switch(e&255){case 0:this.port0=r;break;case 1:this.port1=r,this.col_reg=r;break;case 4:this.port4=r;break;case 5:this.port5=r,this.soundMode=r>>6&3,this.soundMode>0&&(this.soundEnvelope=1023,this.soundOnTime=60),this.row_reg=r&63,this.writePixel();break}}writePixel(){let e=this.row_reg,r=this.col_reg&127;if(e<64&&r<128){let t=this.port1>>6&3,i=e*128+r;this.vram[i]=t}}readConst(e){return e<2048?this.bios[e]:this.rom&&this.rom[e-2048]||0}loadROM(e){this.rom||(this.rom=new Uint8Array(this.defaultROMSize)),this.rom.set(e),this.reset()}loadBIOS(e){this.bios=P(e,2048),this.reset()}reset(){super.reset(),this.vram.fill(0),this.port0=0,this.port1=0,this.port4=0,this.port5=0,this.row_reg=0,this.col_reg=0,this.soundMode=0,this.soundCounter=0,this.soundEnvelope=0}advanceFrame(e){var r=0,t=this.cpuFrequency/60;for(this.probe.logNewFrame();r>1)*4;for(let x=0;x<128;x++){let c=this.vram[e*128+x]&3,o=U[r+c];this.pixels[e*128+x]=o}}}generateAudio(e){if(!this.audio)return;let r=Math.floor(this.sampleRate/60);for(let t=0;t0&&this.soundEnvelope>0){let x;switch(this.soundMode){case 1:x=1e3;break;case 2:x=500;break;case 3:x=120;break;default:x=0}if(x>0){let c=Math.floor(this.sampleRate/x);this.soundCounter=(this.soundCounter+1)%c,i=this.soundCounter0?this.soundOnTime--:(this.soundEnvelope-=2,this.soundEnvelope<0&&(this.soundEnvelope=0))}this.audio.feedSample(i,1)}}setKeyInput(e,r,t){let i=!!(t&1),x=!!(t&64);e===n.VK_1.c&&(i?this.inputs[0]|=1:x&&(this.inputs[0]&=-2)),e===n.VK_2.c&&(i?this.inputs[0]|=2:x&&(this.inputs[0]&=-3)),e===n.VK_3.c&&(i?this.inputs[0]|=4:x&&(this.inputs[0]&=-5)),e===n.VK_4.c&&(i?this.inputs[0]|=8:x&&(this.inputs[0]&=-9)),(e===n.VK_UP.c||e===n.VK_W.c)&&(i?this.inputs[1]|=g:x&&(this.inputs[1]&=~g)),(e===n.VK_DOWN.c||e===n.VK_S.c)&&(i?this.inputs[1]|=Z:x&&(this.inputs[1]&=~Z)),(e===n.VK_LEFT.c||e===n.VK_A.c)&&(i?this.inputs[1]|=O:x&&(this.inputs[1]&=~O)),(e===n.VK_RIGHT.c||e===n.VK_D.c)&&(i?this.inputs[1]|=E:x&&(this.inputs[1]&=~E)),e===n.VK_Q.c&&(i?this.inputs[1]|=v:x&&(this.inputs[1]&=~v)),e===n.VK_E.c&&(i?this.inputs[1]|=_:x&&(this.inputs[1]&=~_)),e===n.VK_R.c&&(i?this.inputs[1]|=w:x&&(this.inputs[1]&=~w)),e===n.VK_F.c&&(i?this.inputs[1]|=L:x&&(this.inputs[1]&=~L))}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0),vram:this.vram.slice(0),port0:this.port0,port1:this.port1,port4:this.port4,port5:this.port5,row_reg:this.row_reg,col_reg:this.col_reg,soundMode:this.soundMode,soundCounter:this.soundCounter,soundEnvelope:this.soundEnvelope}}loadState(e){this.cpu.loadState(e.c),this.ram.set(e.ram),this.inputs.set(e.inputs),this.vram.set(e.vram),this.port0=e.port0,this.port1=e.port1,this.port4=e.port4,this.port5=e.port5,this.row_reg=e.row_reg,this.col_reg=e.col_reg,this.soundMode=e.soundMode,this.soundCounter=e.soundCounter,this.soundEnvelope=e.soundEnvelope}};function F(a){return a<9?"r"+a:a===9?"J":a===10?"HU":a===11?"HL":a===12?"S":a===13?"I":a===14?"D":"?"}function M(a,s,e,r){let t="",i="",x=1,c=!1;if(s<=7){let o=["KU","KL","QU","QL"];s<4?(t="LR",i="A,"+o[s]):(t="LR",i=o[s-4]+",A")}else if(s===8)t="LR",i="K,P";else if(s===9)t="LR",i="P,K";else if(s===10)t="LR",i="A,IS";else if(s===11)t="LR",i="IS,A";else if(s===12)t="PK";else if(s===13)t="LR",i="P0,Q";else if(s===14)t="LR",i="Q,DC";else if(s===15)t="LR",i="DC,Q";else if(s===16)t="LR",i="DC,H";else if(s===17)t="LR",i="H,DC";else if(s===18)t="SR",i="1";else if(s===19)t="SL",i="1";else if(s===20)t="SR",i="4";else if(s===21)t="SL",i="4";else if(s===22)t="LM";else if(s===23)t="ST";else if(s===24)t="COM";else if(s===25)t="LNK";else if(s===26)t="DI";else if(s===27)t="EI";else if(s===28)t="POP";else if(s===29)t="LR",i="W,J";else if(s===30)t="LR",i="J,W";else if(s===31)t="INC";else if(s===32)t="LI",i="$"+h(e,2),x=2;else if(s===33)t="NI",i="$"+h(e,2),x=2;else if(s===34)t="OI",i="$"+h(e,2),x=2;else if(s===35)t="XI",i="$"+h(e,2),x=2;else if(s===36)t="AI",i="$"+h(e,2),x=2;else if(s===37)t="CI",i="$"+h(e,2),x=2;else if(s===38)t="IN",i="$"+h(e,2),x=2;else if(s===39)t="OUT",i="$"+h(e,2),x=2;else if(s===40)t="PI",i="$"+h(e<<8|r,4),x=3,c=!0;else if(s===41)t="JMP",i="$"+h(e<<8|r,4),x=3,c=!0;else if(s===42)t="DCI",i="$"+h(e<<8|r,4),x=3,c=!0;else if(s===43)t="NOP";else if(s===44)t="XDC";else if(s<=47)t="???";else if(s>=48&&s<=62)t="DS",i=F(s&15),x=1;else if(s===63)t="???";else if(s>=64&&s<=78)t="LR",i="A,"+F(s&15);else if(s===79)t="???";else if(s>=80&&s<=94)t="LR",i=F(s&15)+",A";else if(s===95)t="???";else if(s>=96&&s<=103)t="LISU",i=""+(s&7);else if(s>=104&&s<=111)t="LISL",i=""+(s&7);else if(s>=112&&s<=127)t="LIS",i=""+(s&15);else if(s>=128&&s<=135){let o=e&128?a+2+e-256:a+2+e;t="BT",i=""+(s&7)+",$"+h(o&65535,4),x=2,c=!0}else if(s===136)t="AM";else if(s===137)t="AMD";else if(s===138)t="NM";else if(s===139)t="OM";else if(s===140)t="XM";else if(s===141)t="CM";else if(s===142)t="ADC";else if(s===143){let o=e&128?a+2+e-256:a+2+e;t="BR7",i="$"+h(o&65535,4),x=2,c=!0}else if(s>=144&&s<=159){let o=e&128?a+2+e-256:a+2+e,f=s&15;f===0?t="BR":t="BF",f!==0&&(i=""+f+","),i+="$"+h(o&65535,4),x=2,c=!0}else s>=160&&s<=161?(t="INS",i=""+(s&15)):s>=162&&s<=163?t="???":s>=164&&s<=175?(t="INS",i=""+(s&15)):s>=176&&s<=177?(t="OUTS",i=""+(s&15)):s>=178&&s<=179?t="???":s>=180&&s<=191?(t="OUTS",i=""+(s&15)):s>=192&&s<=206?(t="AS",i=F(s&15)):s===207?t="???":s>=208&&s<=222?(t="ASD",i=F(s&15)):s===223?t="???":s>=224&&s<=238?(t="XS",i=F(s&15)):s===239?t="???":s>=240&&s<=254?(t="NS",i=F(s&15)):t="???";return{line:t+(i?" "+i:""),nbytes:x,isaddr:c}}var W=[];function K(a){return"PC0 = "+h(a.PC0,4)+" PC1 = "+h(a.PC1,4)+` DC0 = `+h(a.DC0,4)+" DC1 = "+h(a.DC1,4)+` A = `+h(a.A,2)+" W = "+h(a.W,2)+` IS = `+h(a.IS,2)+` @@ -14,4 +14,4 @@ Port 5: `+h(r.port5||0,2)+` Row: `+h(r.row_reg||0,2)+` Col: `+h(r.col_reg||0,2)+` `;case"VRAM":return"";default:return""}}getMemoryMap(){return{main:[{name:"BIOS",start:0,size:2048,type:"rom"},{name:"Cart ROM",start:2048,size:30720,type:"rom"}]}}};S.channelf=m; -//# sourceMappingURL=channelf-QEC3XA36.js.map +//# sourceMappingURL=channelf-22C5W255.js.map diff --git a/gen/channelf-QEC3XA36.js.map b/gen/channelf-22C5W255.js.map similarity index 100% rename from gen/channelf-QEC3XA36.js.map rename to gen/channelf-22C5W255.js.map diff --git a/gen/chunk-EY5LTL52.js b/gen/chunk-2I4PZDSN.js similarity index 72% rename from gen/chunk-EY5LTL52.js rename to gen/chunk-2I4PZDSN.js index 79e95b25..10395bd5 100644 --- a/gen/chunk-EY5LTL52.js +++ b/gen/chunk-2I4PZDSN.js @@ -1,2 +1,2 @@ -import{M as b,N as w}from"./chunk-EK7ZCXAS.js";import{d as E}from"./chunk-VSC4MAII.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-HFIVSWRQ.js");case"arm32":return import("./arm32-HML7LUDU.js");case"astrocade":return import("./astrocade-BPFIWX7J.js");case"atari7800":return import("./atari7800-7IUSBQLC.js");case"atari8":return import("./atari8-FQ7EOZFI.js");case"basic":return import("./basic-JWJIGIKJ.js");case"c64":return import("./c64-M5HIK4PX.js");case"channelf":return import("./channelf-QEC3XA36.js");case"coleco":return import("./coleco-5FRFBIFB.js");case"cpc":return import("./cpc-WIAAKPBY.js");case"devel":return import("./devel-BGTXLCQH.js");case"exidy":return import("./exidy-7W6HSMGU.js");case"galaxian":return import("./galaxian-T4CARUIR.js");case"gb":return import("./gb-AK7YB3TT.js");case"gameboy":return import("./gb-AK7YB3TT.js");case"kim1":return import("./kim1-5SXSABGS.js");case"mcr":return import("./mcr-PQD5XEKY.js");case"msx":return import("./msx-WYHUXEX2.js");case"mw8080bw":return import("./mw8080bw-6MHN2WND.js");case"nes":return import("./nes-PSU5C2HR.js");case"pacman":return import("./pacman-JPNW7KMG.js");case"pce":return import("./pce-TKEXWG4K.js");case"sms":return import("./sms-B4PKFPAM.js");case"sound_konami":return import("./sound_konami-PL5IXBMA.js");case"sound_williams":return import("./sound_williams-JETC4QDO.js");case"vcs":return import("./vcs-AX3ISR54.js");case"vector":return import("./vector-IYRMLG67.js");case"vectrex":return import("./vectrex-GQ3A7HRR.js");case"verilog":return import("./verilog-5B7TKAOQ.js");case"vic20":return import("./vic20-EEYQJAOB.js");case"vicdual":return import("./vicdual-HUORYJA6.js");case"williams":return import("./williams-AERWWXPK.js");case"x86":return import("./x86-XQBEF33M.js");case"zmachine":return import("./zmachine-NB5DIPHU.js");case"zx":return import("./zx-5C43TU6F.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{g as a,R as b,y as c}; -//# sourceMappingURL=chunk-EY5LTL52.js.map +import{M as b,N as w}from"./chunk-ZTLOJICZ.js";import{d as E}from"./chunk-VSC4MAII.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-HWNTKLI6.js");case"arm32":return import("./arm32-2EOEPSXB.js");case"astrocade":return import("./astrocade-DCHJM6EX.js");case"atari7800":return import("./atari7800-YDBZZWY4.js");case"atari8":return import("./atari8-KEK3L4F4.js");case"basic":return import("./basic-5TP7VOPQ.js");case"c64":return import("./c64-Z37VIZAM.js");case"channelf":return import("./channelf-22C5W255.js");case"coleco":return import("./coleco-FZQ3SEAK.js");case"cpc":return import("./cpc-POCBQYUN.js");case"devel":return import("./devel-DGSIRRCB.js");case"exidy":return import("./exidy-5ESAAHB5.js");case"galaxian":return import("./galaxian-5K5GYCNO.js");case"gb":return import("./gb-EL7XYT3L.js");case"gameboy":return import("./gb-EL7XYT3L.js");case"kim1":return import("./kim1-BNT3J6F5.js");case"mcr":return import("./mcr-6Z647VBV.js");case"msx":return import("./msx-MZ645RSK.js");case"mw8080bw":return import("./mw8080bw-LD2NTPKR.js");case"nes":return import("./nes-NKFIUNMU.js");case"pacman":return import("./pacman-MJBPZJBV.js");case"pce":return import("./pce-ED7Y5QEG.js");case"sms":return import("./sms-HCHAUJEX.js");case"sound_konami":return import("./sound_konami-LOYLXE65.js");case"sound_williams":return import("./sound_williams-HKXF5LD7.js");case"vcs":return import("./vcs-7FAHOI7X.js");case"vector":return import("./vector-ETOUYCYJ.js");case"vectrex":return import("./vectrex-WOLU3HO4.js");case"verilog":return import("./verilog-LJOR32QT.js");case"vic20":return import("./vic20-Z3GEEX64.js");case"vicdual":return import("./vicdual-DZ6SME6I.js");case"williams":return import("./williams-BYBVQW7G.js");case"x86":return import("./x86-VQ4UASUY.js");case"zmachine":return import("./zmachine-ODU3CZWV.js");case"zx":return import("./zx-3LQK3HXR.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{g as a,R as b,y as c}; +//# sourceMappingURL=chunk-2I4PZDSN.js.map diff --git a/gen/chunk-EY5LTL52.js.map b/gen/chunk-2I4PZDSN.js.map similarity index 100% rename from gen/chunk-EY5LTL52.js.map rename to gen/chunk-2I4PZDSN.js.map diff --git a/gen/chunk-42RFSQY5.js b/gen/chunk-MSPBD7SZ.js similarity index 96% rename from gen/chunk-42RFSQY5.js rename to gen/chunk-MSPBD7SZ.js index 54252548..3cb4a05f 100644 --- a/gen/chunk-42RFSQY5.js +++ b/gen/chunk-MSPBD7SZ.js @@ -1,2 +1,2 @@ -import{c as A,g as s}from"./chunk-EK7ZCXAS.js";var C=!1,P=[[{N:0},{N:1}],[{N:1},{N:0}],[{V:0},{V:1}],[{V:1},{V:0}],[{C:0},{C:1}],[{C:1},{C:0}],[{Z:0},{Z:1}],[{Z:1},{Z:0}]];function L(l,e){if(l==null||e==null)return null;for(var t in l)if(e[t]!=="undefined")return l[t]==e[t];for(var t in e)if(l[t]!=="undefined")return l[t]==e[t];return null}var m=class{constructor(e){this.pc2clockrange={};this.jsrresult={};this.MAX_CYCLES=2e3;this.platform=e}getClockCountsAtPC(e){var t=this.platform.readAddress(e),r=this.platform.getOpcodeMetadata(t,e);return r}traceInstructions(e,t,r,i,u){C&&console.log("trace",s(e),t,r),u||(u={});var f=!0,S=!1;for(let d=0;f&&!S;d++){if(d>=this.MAX_CYCLES){console.log("too many cycles @",s(e),"routine",s(i));break}f=!1,this.WRAP_CLOCKS?(t=t%this.MAX_CLOCKS,r=r%this.MAX_CLOCKS,r==t-1&&(C&&console.log("0-75",s(e),t,r),t=0,r=this.MAX_CLOCKS-1)):(t=Math.min(this.MAX_CLOCKS,t),r=Math.min(this.MAX_CLOCKS,r));let a=this.getClockCountsAtPC(e),g=this.platform.readAddress(e+1),M=this.platform.readAddress(e+2),x=g+(M<<8),c=e,o=this.pc2clockrange[c];if(o==null&&(this.pc2clockrange[c]=o={minclocks:t,maxclocks:r},C&&console.log("new",s(e),s(c),s(i),t,r),f=!0),(o.minclocks!=t||o.maxclocks!=r)&&(this.WRAP_CLOCKS&&t<=r!=o.minclocks<=o.maxclocks&&(C&&console.log("wrap",s(e),s(c),s(i),t,r,o),o.minclocks=t=0,o.maxclocks=r=this.MAX_CLOCKS-1,f=!0),to.maxclocks&&(C&&console.log("max",s(e),s(c),s(i),t,r,o),o.maxclocks=r,f=!0)),!a.insnlength){console.log("Illegal instruction!",s(e),s(a.opcode),a);break}e+=a.insnlength;var b=u;u=null;let O=this.getMaxCyclesForSync(a,g,M);if(typeof O=="number")t=0,r=O,a.minCycles=a.maxCycles=0;else switch(a.opcode){case 25:case 29:case 57:case 61:case 89:case 93:case 121:case 125:case 185:case 187:case 188:case 189:case 190:case 191:case 217:case 221:case 249:case 253:g==0&&(a.maxCycles-=1);break;case 32:t+=a.minCycles,r+=a.maxCycles,this.traceInstructions(x,t,r,x,u);var n=this.jsrresult[x];n?(t=n.minclocks,r=n.maxclocks):(console.log("No JSR result!",s(e),s(x)),t=r);break;case 76:e=x;break;case 64:S=!0;break;case 96:if(i){var n=this.jsrresult[i];n?n={minclocks:Math.min(t,n.minclocks),maxclocks:Math.max(r,n.maxclocks)}:n={minclocks:t,maxclocks:r},this.jsrresult[i]=n,console.log("RTS",s(e),s(i),this.jsrresult[i])}return;case 16:case 48:case 80:case 112:case 144:case 176:case 208:case 240:var y=e+A(g),p=e>>8!=y>>8;p||a.maxCycles--;var h=P[Math.floor((a.opcode-16)/32)],T=L(b,h[0]),R=L(b,h[1]);this.traceInstructions(y,t+a.maxCycles,r+a.maxCycles,i,h[0]),R===!1&&(console.log("branch always taken",s(e),b,h[1]),S=!0),u=h[1],a.maxCycles=a.minCycles;break;case 108:console.log("Instruction not supported!",s(e),s(a.opcode),a);return}C&&console.log("add",s(e),a.minCycles,a.maxCycles),t+=a.minCycles,r+=a.maxCycles}}showLoopTimingForPC(e){this.pc2clockrange={},this.jsrresult={},this.traceInstructions(e|this.platform.getOriginPC(),this.START_CLOCKS,this.MAX_CLOCKS,0,{})}getMaxCyclesForSync(e,t,r){}},K=class extends m{constructor(e){super(e),this.MAX_CLOCKS=76,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==133&&t==2)return 0}},_=class extends m{constructor(e){super(e),this.MAX_CLOCKS=114,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==44&&t==2&&r==32)return 4}};export{K as a,_ as b}; -//# sourceMappingURL=chunk-42RFSQY5.js.map +import{c as A,g as s}from"./chunk-ZTLOJICZ.js";var C=!1,P=[[{N:0},{N:1}],[{N:1},{N:0}],[{V:0},{V:1}],[{V:1},{V:0}],[{C:0},{C:1}],[{C:1},{C:0}],[{Z:0},{Z:1}],[{Z:1},{Z:0}]];function L(l,e){if(l==null||e==null)return null;for(var t in l)if(e[t]!=="undefined")return l[t]==e[t];for(var t in e)if(l[t]!=="undefined")return l[t]==e[t];return null}var m=class{constructor(e){this.pc2clockrange={};this.jsrresult={};this.MAX_CYCLES=2e3;this.platform=e}getClockCountsAtPC(e){var t=this.platform.readAddress(e),r=this.platform.getOpcodeMetadata(t,e);return r}traceInstructions(e,t,r,i,u){C&&console.log("trace",s(e),t,r),u||(u={});var f=!0,S=!1;for(let d=0;f&&!S;d++){if(d>=this.MAX_CYCLES){console.log("too many cycles @",s(e),"routine",s(i));break}f=!1,this.WRAP_CLOCKS?(t=t%this.MAX_CLOCKS,r=r%this.MAX_CLOCKS,r==t-1&&(C&&console.log("0-75",s(e),t,r),t=0,r=this.MAX_CLOCKS-1)):(t=Math.min(this.MAX_CLOCKS,t),r=Math.min(this.MAX_CLOCKS,r));let a=this.getClockCountsAtPC(e),g=this.platform.readAddress(e+1),M=this.platform.readAddress(e+2),x=g+(M<<8),c=e,o=this.pc2clockrange[c];if(o==null&&(this.pc2clockrange[c]=o={minclocks:t,maxclocks:r},C&&console.log("new",s(e),s(c),s(i),t,r),f=!0),(o.minclocks!=t||o.maxclocks!=r)&&(this.WRAP_CLOCKS&&t<=r!=o.minclocks<=o.maxclocks&&(C&&console.log("wrap",s(e),s(c),s(i),t,r,o),o.minclocks=t=0,o.maxclocks=r=this.MAX_CLOCKS-1,f=!0),to.maxclocks&&(C&&console.log("max",s(e),s(c),s(i),t,r,o),o.maxclocks=r,f=!0)),!a.insnlength){console.log("Illegal instruction!",s(e),s(a.opcode),a);break}e+=a.insnlength;var b=u;u=null;let O=this.getMaxCyclesForSync(a,g,M);if(typeof O=="number")t=0,r=O,a.minCycles=a.maxCycles=0;else switch(a.opcode){case 25:case 29:case 57:case 61:case 89:case 93:case 121:case 125:case 185:case 187:case 188:case 189:case 190:case 191:case 217:case 221:case 249:case 253:g==0&&(a.maxCycles-=1);break;case 32:t+=a.minCycles,r+=a.maxCycles,this.traceInstructions(x,t,r,x,u);var n=this.jsrresult[x];n?(t=n.minclocks,r=n.maxclocks):(console.log("No JSR result!",s(e),s(x)),t=r);break;case 76:e=x;break;case 64:S=!0;break;case 96:if(i){var n=this.jsrresult[i];n?n={minclocks:Math.min(t,n.minclocks),maxclocks:Math.max(r,n.maxclocks)}:n={minclocks:t,maxclocks:r},this.jsrresult[i]=n,console.log("RTS",s(e),s(i),this.jsrresult[i])}return;case 16:case 48:case 80:case 112:case 144:case 176:case 208:case 240:var y=e+A(g),p=e>>8!=y>>8;p||a.maxCycles--;var h=P[Math.floor((a.opcode-16)/32)],T=L(b,h[0]),R=L(b,h[1]);this.traceInstructions(y,t+a.maxCycles,r+a.maxCycles,i,h[0]),R===!1&&(console.log("branch always taken",s(e),b,h[1]),S=!0),u=h[1],a.maxCycles=a.minCycles;break;case 108:console.log("Instruction not supported!",s(e),s(a.opcode),a);return}C&&console.log("add",s(e),a.minCycles,a.maxCycles),t+=a.minCycles,r+=a.maxCycles}}showLoopTimingForPC(e){this.pc2clockrange={},this.jsrresult={},this.traceInstructions(e|this.platform.getOriginPC(),this.START_CLOCKS,this.MAX_CLOCKS,0,{})}getMaxCyclesForSync(e,t,r){}},K=class extends m{constructor(e){super(e),this.MAX_CLOCKS=76,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==133&&t==2)return 0}},_=class extends m{constructor(e){super(e),this.MAX_CLOCKS=114,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==44&&t==2&&r==32)return 4}};export{K as a,_ as b}; +//# sourceMappingURL=chunk-MSPBD7SZ.js.map diff --git a/gen/chunk-42RFSQY5.js.map b/gen/chunk-MSPBD7SZ.js.map similarity index 100% rename from gen/chunk-42RFSQY5.js.map rename to gen/chunk-MSPBD7SZ.js.map diff --git a/gen/chunk-4WX2XTAI.js b/gen/chunk-MZ43WA3W.js similarity index 99% rename from gen/chunk-4WX2XTAI.js rename to gen/chunk-MZ43WA3W.js index ffd39872..3722f3ef 100644 --- a/gen/chunk-4WX2XTAI.js +++ b/gen/chunk-MZ43WA3W.js @@ -1,4 +1,4 @@ -import{a as it,b as ft,c as st}from"./chunk-UACHXWHT.js";import{D as wt,P as kt,Q as Dt,T as Ye,W as Rt,X as at,aa as Bt,g as K,j as _t,s as Ve}from"./chunk-EK7ZCXAS.js";var gn=[{mn:"BRK",am:"",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:"SI"},{mn:"ORA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHP",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"ORA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BPL",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ORA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"ORA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SLO",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"JSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:"S"},{mn:"AND",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BIT",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PLP",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SCZIDVN"},{mn:"AND",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"BIT",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BMI",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"AND",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"SEC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"AND",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RLA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTI",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"SCZIDVN"},{mn:"EOR",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHA",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"EOR",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ASR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"JMP",am:"AAAA",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"EOR",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BVC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"EOR",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"EOR",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SRE",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTS",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"S"},{mn:"ADC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"PLA",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SAZN"},{mn:"ADC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ARR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"JMP",am:"(AAAA)",nb:3,il:0,c1:5,c2:0,nw:0,br:1,mod:""},{mn:"ADC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BVS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ADC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SEI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"ADC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RRA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"STA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"DEY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"TXA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ANE",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"BCC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"STA",am:"(aa),y",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SHA",am:"(aa),y",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa,y",nb:3,il:1,c1:4,c2:0,nw:1,br:1,mod:""},{mn:"TYA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STA",am:"AAAA,y",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"TXS",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"S"},{mn:"SHS",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:"S"},{mn:"SHY",am:"AAAA,x",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA,x",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHX",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHA",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"LDY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"TAY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"TAX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LXA",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"BCS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"LDA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"LAX",am:"(aa),y",nb:2,il:1,c1:5,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa,y",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"CLV",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"V"},{mn:"LDA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"TSX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAS",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"SAXZN"},{mn:"LDY",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"CPY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"INY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"CMP",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBX",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"XCZN"},{mn:"CPY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"BNE",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"CMP",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"CZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"DCP",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CLD",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"CMP",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"CPX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"INX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"CPX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BEQ",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"SBC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"ISB",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SED",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"SBC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"}];function ct(A,t,n,i){var m=gn[t];if(m==null)return{line:"???",nbytes:1,isaddr:!1};var o=m.mn,b=m.am,x=!1;if(b=="branch"){var f=n<128?A+2+n:A+2-(256-n);f&=65535,b="$"+K(f,4),x=!0}else b=b.replace("aa","$"+K(n,2)),b=b.replace("AAAA","$"+K(n+(i<<8),4)),b.indexOf("#")<0&&b.indexOf("$")>=0&&(x=!0);return{line:m.mn+" "+b,nbytes:m.nb,isaddr:x,iscall:m.mn=="JSR"}}function pn(A){let t=A;if(!t||typeof t.mem_read!="function"||typeof t.mem_write!="function"||typeof t.io_read!="function"||typeof t.io_write!="function")throw"Z80: Core object is missing required functions.";let n=0,i=0,m=0,o=0,b=0,x=0,f=0,Y=0,N=0,g=0,B=0,P=0,x0=0,R0=0,d=0,k=0,$=0,Z=0,H=0,s=0,c={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},g0={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},Z0=0,X=0,k0=0,p=!1,C=!1,V0=!1,e0=0;function q(){return{PC:s,SP:H,IX:d,IY:k,AF:(n<<8)+T0(),BC:(i<<8)+m,DE:(o<<8)+b,HL:(x<<8)+f,AF_:(Y<<8)+Y0(),BC_:(N<<8)+g,DE_:(B<<8)+P,HL_:(x0<<8)+R0,IR:($<<8)+Z,im:Z0,iff1:X,iff2:k0,halted:p,do_delayed_di:C,do_delayed_ei:V0,cycle_counter:e0}}function X0(e){s=e.PC,H=e.SP,d=e.IX,k=e.IY,n=e.AF>>8&255,M0(e.AF),i=e.BC>>8&255,m=e.BC&255,o=e.DE>>8&255,b=e.DE&255,x=e.HL>>8&255,f=e.HL&255,Y=e.AF_>>8&255,w0(e.AF_),N=e.BC_>>8&255,g=e.BC_&255,B=e.DE_>>8&255,P=e.DE_&255,x0=e.HL_>>8&255,R0=e.HL_&255,$=e.IR>>8&255,Z=e.IR&255,Z0=e.im,X=e.iff1,k0=e.iff2,p=e.halted,C=e.do_delayed_di,V0=e.do_delayed_ei,e0=e.cycle_counter}let W=function(){H=0,s=0,n=0,Z=0,M0(0),Z0=0,X=0,k0=0,p=!1,C=!1,V0=!1,e0=0},F=function(){if(p)return 1;var e=!1,a=!1;C?(C=!1,e=!0):V0&&(V0=!1,a=!0),Z=Z&128|(Z&127)+1&127;var _=t.mem_read(s);o0(_),s=s+1&65535,e?(X=0,k0=0):a&&(X=1,k0=1);var y0=e0;return e0=0,y0},A0=function(e,a){if(e)return Z=Z&128|(Z&127)+1&127,p=!1,k0=X,X=0,L0(s),s=102,e0+=11,!0;if(X){if(Z=Z&128|(Z&127)+1&127,p=!1,X=0,k0=0,Z0===0)s=s-1&65535,o0(a),s=s+1&65535,e0+=2;else if(Z0===1)L0(s),s=56,e0+=13;else if(Z0===2){L0(s);var _=$<<8|a;s=t.mem_read(_)|t.mem_read(_+1&65535)<<8,e0+=19}return!0}},o0=function(e){var a=function(I0){return(I0&7)===0?i:(I0&7)===1?m:(I0&7)===2?o:(I0&7)===3?b:(I0&7)===4?x:(I0&7)===5?f:(I0&7)===6?t.mem_read(f|x<<8):n};if(e===118)p=!0;else if(e>=64&&e<128){var _=a(e);(e&56)>>>3?(e&56)>>>3===1?m=_:(e&56)>>>3===2?o=_:(e&56)>>>3===3?b=_:(e&56)>>>3===4?x=_:(e&56)>>>3===5?f=_:(e&56)>>>3===6?t.mem_write(f|x<<8,_):(e&56)>>>3===7&&(n=_):i=_}else if(e>=128&&e<192){var _=a(e),y0=[s0,a0,O,w,f0,t0,E,M];y0[(e&56)>>>3](_)}else{var j0=v[e];j0()}e0+=u[e]},y=function(e){return e&=255,e&128&&(e=-((255&~e)+1)),e},T0=function(){return c.S<<7|c.Z<<6|c.Y<<5|c.H<<4|c.X<<3|c.P<<2|c.N<<1|c.C},Y0=function(){return g0.S<<7|g0.Z<<6|g0.Y<<5|g0.H<<4|g0.X<<3|g0.P<<2|g0.N<<1|g0.C},M0=function(e){c.S=(e&128)>>>7,c.Z=(e&64)>>>6,c.Y=(e&32)>>>5,c.H=(e&16)>>>4,c.X=(e&8)>>>3,c.P=(e&4)>>>2,c.N=(e&2)>>>1,c.C=e&1},w0=function(e){g0.S=(e&128)>>>7,g0.Z=(e&64)>>>6,g0.Y=(e&32)>>>5,g0.H=(e&16)>>>4,g0.X=(e&8)>>>3,g0.P=(e&4)>>>2,g0.N=(e&2)>>>1,g0.C=e&1},G=function(e){c.Y=(e&32)>>>5,c.X=(e&8)>>>3},m0=function(e){var a=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];return a[e]},L0=function(e){H=H-1&65535,t.mem_write(H,(e&65280)>>>8),H=H-1&65535,t.mem_write(H,e&255)},l0=function(){var e=t.mem_read(H)&255;return H=H+1&65535,e|=t.mem_read(H)<<8,H=H+1&65535,e},B0=function(e){e?(s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},W0=function(e){if(e){e0+=5;var a=y(t.mem_read(s+1&65535));s=s+a+1&65535}else s=s+1&65535},O0=function(e){e?(e0+=7,L0(s+3&65535),s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},F0=function(e){e&&(e0+=6,s=l0()-1&65535)},p0=function(e){L0(s+1&65535),s=e-1&65535},s0=function(e){var a=n+e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,G(n)},a0=function(e){var a=n+e+c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)+c.C&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,G(n)},O=function(e){var a=n-e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,G(n)},w=function(e){var a=n-e-c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)-c.C&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,G(n)},M=function(e){var a=n;O(e),n=a,G(e)},f0=function(e){n&=e&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=1,c.P=m0(n),c.N=0,c.C=0,G(n)},E=function(e){n=(e|n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n),c.N=0,c.C=0,G(n)},t0=function(e){n=(e^n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n),c.N=0,c.C=0,G(n)},I=function(e){var a=e+1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===15?1:0,c.P=e===127?1:0,c.N=0,a&=255,G(a),a},L=function(e){var a=e-1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===0?1:0,c.P=e===128?1:0,c.N=1,a&=255,G(a),a},P0=function(e){var a=f|x<<8,_=a+e;c.N=0,c.C=_&65536?1:0,c.H=(a&4095)+(e&4095)&4096?1:0,f=_&255,x=(_&65280)>>>8,G(x)},U=function(e){e+=c.C;var a=f|x<<8,_=a+e;c.S=_&32768?1:0,c.Z=_&65535?0:1,c.H=(a&4095)+(e&4095)&4096?1:0,c.P=(a&32768)===(e&32768)&&(_&32768)!==(a&32768)?1:0,c.N=0,c.C=_&65536?1:0,f=_&255,x=_>>>8&255,G(x)},n0=function(e){e+=c.C;var a=f|x<<8,_=a-e;c.S=_&32768?1:0,c.Z=_&65535?0:1,c.H=(a&4095)-(e&4095)&4096?1:0,c.P=(a&32768)!==(e&32768)&&(_&32768)!==(a&32768)?1:0,c.N=1,c.C=_&65536?1:0,f=_&255,x=_>>>8&255,G(x)},C0=function(e){var a=t.io_read(e);return c.S=a&128?1:0,c.Z=a?0:1,c.H=0,c.P=m0(a)?1:0,c.N=0,G(a),a},j=function(){n!==128&&(n=y(n),n=-n&255),c.S=n&128?1:0,c.Z=n?0:1,c.H=(-n&15)>0?1:0,c.P=n===128?1:0,c.N=1,c.C=n?1:0,G(n)},u0=function(){var e=t.mem_read(f|x<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)+1;b=a&255,o=(a&65280)>>>8,a=(f|x<<8)+1,f=a&255,x=(a&65280)>>>8,a=(m|i<<8)-1,m=a&255,i=(a&65280)>>>8,c.H=0,c.P=m||i?1:0,c.N=0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},N0=function(){var e=c.C,a=t.mem_read(f|x<<8);M(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var _=(f|x<<8)+1;f=_&255,x=(_&65280)>>>8,_=(m|i<<8)-1,m=_&255,i=(_&65280)>>>8,c.P=_?1:0},V=function(){i=L(i),t.mem_write(f|x<<8,t.io_read(i<<8|m));var e=(f|x<<8)+1;f=e&255,x=(e&65280)>>>8,c.N=1},H0=function(){t.io_write(i<<8|m,t.mem_read(f|x<<8));var e=(f|x<<8)+1;f=e&255,x=(e&65280)>>>8,i=L(i),c.N=1},r0=function(){c.N=0,c.H=0;var e=t.mem_read(f|x<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)-1;b=a&255,o=(a&65280)>>>8,a=(f|x<<8)-1,f=a&255,x=(a&65280)>>>8,a=(m|i<<8)-1,m=a&255,i=(a&65280)>>>8,c.P=m||i?1:0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},c0=function(){var e=c.C,a=t.mem_read(f|x<<8);M(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var _=(f|x<<8)-1;f=_&255,x=(_&65280)>>>8,_=(m|i<<8)-1,m=_&255,i=(_&65280)>>>8,c.P=_?1:0},_0=function(){i=L(i),t.mem_write(f|x<<8,t.io_read(i<<8|m));var e=(f|x<<8)-1;f=e&255,x=(e&65280)>>>8,c.N=1},D0=function(){t.io_write(i<<8|m,t.mem_read(f|x<<8));var e=(f|x<<8)-1;f=e&255,x=(e&65280)>>>8,i=L(i),c.N=1},U0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=(e<<1|c.C)&255,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},i0=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|c.C<<7,c.Z=e&255?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e&255},b0=function(e){c.N=0,c.H=0;var a=c.C;return c.C=(e&128)>>>7,e=(e<<1|a)&255,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},d0=function(e){c.N=0,c.H=0;var a=c.C;return c.C=e&1,e=e>>>1&127|a<<7,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},z0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},T=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|e&128,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},q0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255|1,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},$0=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127,c.Z=e?0:1,c.P=m0(e),c.S=0,G(e),e},G0=function(e){c.N=0;var a=d+e;c.C=a&65536?1:0,c.H=(d&4095)+(e&4095)&4096?1:0,G((a&65280)>>>8),d=a&65535},v=[];v[0]=function(){},v[1]=function(){s=s+1&65535,m=t.mem_read(s),s=s+1&65535,i=t.mem_read(s)},v[2]=function(){t.mem_write(m|i<<8,n)},v[3]=function(){var e=m|i<<8;e+=1,m=e&255,i=(e&65280)>>>8},v[4]=function(){i=I(i)},v[5]=function(){i=L(i)},v[6]=function(){s=s+1&65535,i=t.mem_read(s)},v[7]=function(){var e=c.S,a=c.Z,_=c.P;n=U0(n),c.S=e,c.Z=a,c.P=_},v[8]=function(){var e=n;n=Y,Y=e,e=T0(),M0(Y0()),w0(e)},v[9]=function(){P0(m|i<<8)},v[10]=function(){n=t.mem_read(m|i<<8)},v[11]=function(){var e=m|i<<8;e-=1,m=e&255,i=(e&65280)>>>8},v[12]=function(){m=I(m)},v[13]=function(){m=L(m)},v[14]=function(){s=s+1&65535,m=t.mem_read(s)},v[15]=function(){var e=c.S,a=c.Z,_=c.P;n=i0(n),c.S=e,c.Z=a,c.P=_},v[16]=function(){i=i-1&255,W0(i!==0)},v[17]=function(){s=s+1&65535,b=t.mem_read(s),s=s+1&65535,o=t.mem_read(s)},v[18]=function(){t.mem_write(b|o<<8,n)},v[19]=function(){var e=b|o<<8;e+=1,b=e&255,o=(e&65280)>>>8},v[20]=function(){o=I(o)},v[21]=function(){o=L(o)},v[22]=function(){s=s+1&65535,o=t.mem_read(s)},v[23]=function(){var e=c.S,a=c.Z,_=c.P;n=b0(n),c.S=e,c.Z=a,c.P=_},v[24]=function(){var e=y(t.mem_read(s+1&65535));s=s+e+1&65535},v[25]=function(){P0(b|o<<8)},v[26]=function(){n=t.mem_read(b|o<<8)},v[27]=function(){var e=b|o<<8;e-=1,b=e&255,o=(e&65280)>>>8},v[28]=function(){b=I(b)},v[29]=function(){b=L(b)},v[30]=function(){s=s+1&65535,b=t.mem_read(s)},v[31]=function(){var e=c.S,a=c.Z,_=c.P;n=d0(n),c.S=e,c.Z=a,c.P=_},v[32]=function(){W0(!c.Z)},v[33]=function(){s=s+1&65535,f=t.mem_read(s),s=s+1&65535,x=t.mem_read(s)},v[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,x)},v[35]=function(){var e=f|x<<8;e+=1,f=e&255,x=(e&65280)>>>8},v[36]=function(){x=I(x)},v[37]=function(){x=L(x)},v[38]=function(){s=s+1&65535,x=t.mem_read(s)},v[39]=function(){var e=n;c.N?((c.H||(n&15)>9)&&(e-=6),(c.C||n>153)&&(e-=96)):((c.H||(n&15)>9)&&(e+=6),(c.C||n>153)&&(e+=96)),c.S=e&128?1:0,c.Z=e&255?0:1,c.H=n&16^e&16?1:0,c.P=m0(e&255),c.C=c.C||n>153?1:0,n=e&255,G(n)},v[40]=function(){W0(!!c.Z)},v[41]=function(){P0(f|x<<8)},v[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),x=t.mem_read(e+1&65535)},v[43]=function(){var e=f|x<<8;e-=1,f=e&255,x=(e&65280)>>>8},v[44]=function(){f=I(f)},v[45]=function(){f=L(f)},v[46]=function(){s=s+1&65535,f=t.mem_read(s)},v[47]=function(){n=~n&255,c.N=1,c.H=1,G(n)},v[48]=function(){W0(!c.C)},v[49]=function(){H=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s+2&65535},v[50]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,n)},v[51]=function(){H=H+1&65535},v[52]=function(){var e=f|x<<8;t.mem_write(e,I(t.mem_read(e)))},v[53]=function(){var e=f|x<<8;t.mem_write(e,L(t.mem_read(e)))},v[54]=function(){s=s+1&65535,t.mem_write(f|x<<8,t.mem_read(s))},v[55]=function(){c.N=0,c.H=0,c.C=1,G(n)},v[56]=function(){W0(!!c.C)},v[57]=function(){P0(H)},v[58]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,n=t.mem_read(e)},v[59]=function(){H=H-1&65535},v[60]=function(){n=I(n)},v[61]=function(){n=L(n)},v[62]=function(){n=t.mem_read(s+1&65535),s=s+1&65535},v[63]=function(){c.N=0,c.H=c.C,c.C=c.C?0:1,G(n)},v[192]=function(){F0(!c.Z)},v[193]=function(){var e=l0();m=e&255,i=(e&65280)>>>8},v[194]=function(){B0(!c.Z)},v[195]=function(){s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535},v[196]=function(){O0(!c.Z)},v[197]=function(){L0(m|i<<8)},v[198]=function(){s=s+1&65535,s0(t.mem_read(s))},v[199]=function(){p0(0)},v[200]=function(){F0(!!c.Z)},v[201]=function(){s=l0()-1&65535},v[202]=function(){B0(!!c.Z)},v[203]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=(e&56)>>>3,_=e&7;if(e<64){var y0=[U0,i0,b0,d0,z0,T,q0,$0];_===0?i=y0[a](i):_===1?m=y0[a](m):_===2?o=y0[a](o):_===3?b=y0[a](b):_===4?x=y0[a](x):_===5?f=y0[a](f):_===6?t.mem_write(f|x<<8,y0[a](t.mem_read(f|x<<8))):_===7&&(n=y0[a](n))}else e<128?(_===0?c.Z=i&1<>>8},v[210]=function(){B0(!c.C)},v[211]=function(){s=s+1&65535,t.io_write(n<<8|t.mem_read(s),n)},v[212]=function(){O0(!c.C)},v[213]=function(){L0(b|o<<8)},v[214]=function(){s=s+1&65535,O(t.mem_read(s))},v[215]=function(){p0(16)},v[216]=function(){F0(!!c.C)},v[217]=function(){var e=i;i=N,N=e,e=m,m=g,g=e,e=o,o=B,B=e,e=b,b=P,P=e,e=x,x=x0,x0=e,e=f,f=R0,R0=e},v[218]=function(){B0(!!c.C)},v[219]=function(){s=s+1&65535,n=t.io_read(n<<8|t.mem_read(s))},v[220]=function(){O0(!!c.C)},v[221]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=D[e];a?(a(),e0+=Q[e]):(s=s-1&65535,e0+=u[0])},v[222]=function(){s=s+1&65535,w(t.mem_read(s))},v[223]=function(){p0(24)},v[224]=function(){F0(!c.P)},v[225]=function(){var e=l0();f=e&255,x=(e&65280)>>>8},v[226]=function(){B0(!c.P)},v[227]=function(){var e=t.mem_read(H);t.mem_write(H,f),f=e,e=t.mem_read(H+1&65535),t.mem_write(H+1&65535,x),x=e},v[228]=function(){O0(!c.P)},v[229]=function(){L0(f|x<<8)},v[230]=function(){s=s+1&65535,f0(t.mem_read(s))},v[231]=function(){p0(32)},v[232]=function(){F0(!!c.P)},v[233]=function(){s=f|x<<8,s=s-1&65535},v[234]=function(){B0(!!c.P)},v[235]=function(){var e=o;o=x,x=e,e=b,b=f,f=e},v[236]=function(){O0(!!c.P)},v[237]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=R[e];a?(a(),e0+=r[e]):e0+=u[0]},v[238]=function(){s=s+1&65535,t0(t.mem_read(s))},v[239]=function(){p0(40)},v[240]=function(){F0(!c.S)},v[241]=function(){var e=l0();M0(e&255),n=(e&65280)>>>8},v[242]=function(){B0(!c.S)},v[243]=function(){C=!0},v[244]=function(){O0(!c.S)},v[245]=function(){L0(T0()|n<<8)},v[246]=function(){s=s+1&65535,E(t.mem_read(s))},v[247]=function(){p0(48)},v[248]=function(){F0(!!c.S)},v[249]=function(){H=f|x<<8},v[250]=function(){B0(!!c.S)},v[251]=function(){V0=!0},v[252]=function(){O0(!!c.S)},v[253]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=D[e];if(a){var _=d;d=k,a(),k=d,d=_,e0+=Q[e]}else s=s-1&65535,e0+=u[0]},v[254]=function(){s=s+1&65535,M(t.mem_read(s))},v[255]=function(){p0(56)};let R=[];R[64]=function(){i=C0(i<<8|m)},R[65]=function(){t.io_write(i<<8|m,i)},R[66]=function(){n0(m|i<<8)},R[67]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,m),t.mem_write(e+1&65535,i)},R[68]=function(){j()},R[69]=function(){s=l0()-1&65535,X=k0},R[70]=function(){Z0=0},R[71]=function(){$=n},R[72]=function(){m=C0(i<<8|m)},R[73]=function(){t.io_write(i<<8|m,m)},R[74]=function(){U(m|i<<8)},R[75]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,m=t.mem_read(e),i=t.mem_read(e+1&65535)},R[76]=function(){j()},R[77]=function(){s=l0()-1&65535},R[78]=function(){Z0=0},R[79]=function(){Z=n},R[80]=function(){o=C0(i<<8|m)},R[81]=function(){t.io_write(i<<8|m,o)},R[82]=function(){n0(b|o<<8)},R[83]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,b),t.mem_write(e+1&65535,o)},R[84]=function(){j()},R[85]=function(){s=l0()-1&65535,X=k0},R[86]=function(){Z0=1},R[87]=function(){n=$,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=k0,c.N=0,G(n)},R[88]=function(){b=C0(i<<8|m)},R[89]=function(){t.io_write(i<<8|m,b)},R[90]=function(){U(b|o<<8)},R[91]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,b=t.mem_read(e),o=t.mem_read(e+1&65535)},R[92]=function(){j()},R[93]=function(){s=l0()-1&65535,X=k0},R[94]=function(){Z0=2},R[95]=function(){n=Z,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=k0,c.N=0,G(n)},R[96]=function(){x=C0(i<<8|m)},R[97]=function(){t.io_write(i<<8|m,x)},R[98]=function(){n0(f|x<<8)},R[99]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,x)},R[100]=function(){j()},R[101]=function(){s=l0()-1&65535,X=k0},R[102]=function(){Z0=0},R[103]=function(){var e=t.mem_read(f|x<<8),a=e&15,_=n&15;e=(e&240)>>>4|_<<4,n=n&240|a,t.mem_write(f|x<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n)?1:0,c.N=0,G(n)},R[104]=function(){f=C0(i<<8|m)},R[105]=function(){t.io_write(i<<8|m,f)},R[106]=function(){U(f|x<<8)},R[107]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),x=t.mem_read(e+1&65535)},R[108]=function(){j()},R[109]=function(){s=l0()-1&65535,X=k0},R[110]=function(){Z0=0},R[111]=function(){var e=t.mem_read(f|x<<8),a=e&240,_=n&15;e=(e&15)<<4|_,n=n&240|a>>>4,t.mem_write(f|x<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n)?1:0,c.N=0,G(n)},R[112]=function(){C0(i<<8|m)},R[113]=function(){t.io_write(i<<8|m,0)},R[114]=function(){n0(H)},R[115]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,H&255),t.mem_write(e+1&65535,H>>>8&255)},R[116]=function(){j()},R[117]=function(){s=l0()-1&65535,X=k0},R[118]=function(){Z0=1},R[120]=function(){n=C0(i<<8|m)},R[121]=function(){t.io_write(i<<8|m,n)},R[122]=function(){U(H)},R[123]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,H=t.mem_read(e),H|=t.mem_read(e+1&65535)<<8},R[124]=function(){j()},R[125]=function(){s=l0()-1&65535,X=k0},R[126]=function(){Z0=2},R[160]=function(){u0()},R[161]=function(){N0()},R[162]=function(){V()},R[163]=function(){H0()},R[168]=function(){r0()},R[169]=function(){c0()},R[170]=function(){_0()},R[171]=function(){D0()},R[176]=function(){u0(),(i||m)&&(e0+=5,s=s-2&65535)},R[177]=function(){N0(),!c.Z&&(i||m)&&(e0+=5,s=s-2&65535)},R[178]=function(){V(),i&&(e0+=5,s=s-2&65535)},R[179]=function(){H0(),i&&(e0+=5,s=s-2&65535)},R[184]=function(){r0(),(i||m)&&(e0+=5,s=s-2&65535)},R[185]=function(){c0(),!c.Z&&(i||m)&&(e0+=5,s=s-2&65535)},R[186]=function(){_0(),i&&(e0+=5,s=s-2&65535)},R[187]=function(){D0(),i&&(e0+=5,s=s-2&65535)};let D=[];D[9]=function(){G0(m|i<<8)},D[25]=function(){G0(b|o<<8)},D[33]=function(){s=s+1&65535,d=t.mem_read(s),s=s+1&65535,d|=t.mem_read(s)<<8},D[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,d&255),t.mem_write(e+1&65535,d>>>8&255)},D[35]=function(){d=d+1&65535},D[36]=function(){d=I(d>>>8)<<8|d&255},D[37]=function(){d=L(d>>>8)<<8|d&255},D[38]=function(){s=s+1&65535,d=t.mem_read(s)<<8|d&255},D[41]=function(){G0(d)},D[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,d=t.mem_read(e),d|=t.mem_read(e+1&65535)<<8},D[43]=function(){d=d-1&65535},D[44]=function(){d=I(d&255)|d&65280},D[45]=function(){d=L(d&255)|d&65280},D[46]=function(){s=s+1&65535,d=t.mem_read(s)&255|d&65280},D[52]=function(){s=s+1&65535;var e=y(t.mem_read(s)),a=t.mem_read(e+d&65535);t.mem_write(e+d&65535,I(a))},D[53]=function(){s=s+1&65535;var e=y(t.mem_read(s)),a=t.mem_read(e+d&65535);t.mem_write(e+d&65535,L(a))},D[54]=function(){s=s+1&65535;var e=y(t.mem_read(s));s=s+1&65535,t.mem_write(d+e&65535,t.mem_read(s))},D[57]=function(){G0(H)},D[68]=function(){i=d>>>8&255},D[69]=function(){i=d&255},D[70]=function(){s=s+1&65535;var e=y(t.mem_read(s));i=t.mem_read(d+e&65535)},D[76]=function(){m=d>>>8&255},D[77]=function(){m=d&255},D[78]=function(){s=s+1&65535;var e=y(t.mem_read(s));m=t.mem_read(d+e&65535)},D[84]=function(){o=d>>>8&255},D[85]=function(){o=d&255},D[86]=function(){s=s+1&65535;var e=y(t.mem_read(s));o=t.mem_read(d+e&65535)},D[92]=function(){b=d>>>8&255},D[93]=function(){b=d&255},D[94]=function(){s=s+1&65535;var e=y(t.mem_read(s));b=t.mem_read(d+e&65535)},D[96]=function(){d=d&255|i<<8},D[97]=function(){d=d&255|m<<8},D[98]=function(){d=d&255|o<<8},D[99]=function(){d=d&255|b<<8},D[100]=function(){},D[101]=function(){d=d&255|(d&255)<<8},D[102]=function(){s=s+1&65535;var e=y(t.mem_read(s));x=t.mem_read(d+e&65535)},D[103]=function(){d=d&255|n<<8},D[104]=function(){d=d&65280|i},D[105]=function(){d=d&65280|m},D[106]=function(){d=d&65280|o},D[107]=function(){d=d&65280|b},D[108]=function(){d=d&65280|d>>>8},D[109]=function(){},D[110]=function(){s=s+1&65535;var e=y(t.mem_read(s));f=t.mem_read(d+e&65535)},D[111]=function(){d=d&65280|n},D[112]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,i)},D[113]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,m)},D[114]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,o)},D[115]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,b)},D[116]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,x)},D[117]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,f)},D[119]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,n)},D[124]=function(){n=d>>>8&255},D[125]=function(){n=d&255},D[126]=function(){s=s+1&65535;var e=y(t.mem_read(s));n=t.mem_read(d+e&65535)},D[132]=function(){s0(d>>>8&255)},D[133]=function(){s0(d&255)},D[134]=function(){s=s+1&65535;var e=y(t.mem_read(s));s0(t.mem_read(d+e&65535))},D[140]=function(){a0(d>>>8&255)},D[141]=function(){a0(d&255)},D[142]=function(){s=s+1&65535;var e=y(t.mem_read(s));a0(t.mem_read(d+e&65535))},D[148]=function(){O(d>>>8&255)},D[149]=function(){O(d&255)},D[150]=function(){s=s+1&65535;var e=y(t.mem_read(s));O(t.mem_read(d+e&65535))},D[156]=function(){w(d>>>8&255)},D[157]=function(){w(d&255)},D[158]=function(){s=s+1&65535;var e=y(t.mem_read(s));w(t.mem_read(d+e&65535))},D[164]=function(){f0(d>>>8&255)},D[165]=function(){f0(d&255)},D[166]=function(){s=s+1&65535;var e=y(t.mem_read(s));f0(t.mem_read(d+e&65535))},D[172]=function(){t0(d>>>8&255)},D[173]=function(){t0(d&255)},D[174]=function(){s=s+1&65535;var e=y(t.mem_read(s));t0(t.mem_read(d+e&65535))},D[180]=function(){E(d>>>8&255)},D[181]=function(){E(d&255)},D[182]=function(){s=s+1&65535;var e=y(t.mem_read(s));E(t.mem_read(d+e&65535))},D[188]=function(){M(d>>>8&255)},D[189]=function(){M(d&255)},D[190]=function(){s=s+1&65535;var e=y(t.mem_read(s));M(t.mem_read(d+e&65535))},D[203]=function(){s=s+1&65535;var e=y(t.mem_read(s));s=s+1&65535;var a=t.mem_read(s),_;if(a<64){var y0=[U0,i0,b0,d0,z0,T,q0,$0],j0=y0[(a&56)>>>3],_=j0(t.mem_read(d+e&65535));t.mem_write(d+e&65535,_)}else{var I0=(a&56)>>>3;a<128?(c.N=0,c.H=1,c.Z=t.mem_read(d+e&65535)&1<>>8&255)},D[229]=function(){L0(d)},D[233]=function(){s=d-1&65535},D[249]=function(){H=d};let u=[4,10,7,6,4,4,7,4,4,11,7,6,4,4,7,4,8,10,7,6,4,4,7,4,12,11,7,6,4,4,7,4,7,10,16,6,4,4,7,4,7,11,16,6,4,4,7,4,7,10,13,6,11,11,10,4,7,11,13,6,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,7,7,7,7,7,7,4,7,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,5,10,10,10,10,11,7,11,5,10,10,0,10,17,7,11,5,10,10,11,10,11,7,11,5,4,10,11,10,0,7,11,5,10,10,19,10,11,7,11,5,4,10,4,10,0,7,11,5,10,10,4,10,11,7,11,5,6,10,4,10,0,7,11],r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,0,12,12,15,20,8,14,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],S=[8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8],Q=[0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,14,20,10,8,8,11,0,0,15,20,10,8,8,11,0,0,0,0,0,23,23,19,0,0,15,0,0,0,0,0,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,8,8,8,8,8,8,19,8,8,8,8,8,8,8,19,8,19,19,19,19,19,19,0,19,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,23,0,15,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0];this.saveState=q,this.loadState=X0,this.reset=W,this.advanceInsn=F,this.interrupt=A0,this.getPC=()=>s,this.getSP=()=>H,this.getHalted=()=>p}var We=class{constructor(){this.retryInterrupts=!1;this.retryData=-1}buildCPU(){this.memBus&&this.ioBus&&!this.cpu&&(this.cpu=new pn({mem_read:t=>this.memBus.read(t),mem_write:(t,n)=>this.memBus.write(t,n),io_read:t=>this.ioBus.read(t),io_write:(t,n)=>this.ioBus.write(t,n)}))}connectMemoryBus(t){this.memBus=t,this.buildCPU()}connectIOBus(t){this.ioBus=t,this.buildCPU()}advanceInsn(){return this.retryInterrupts&&this.retryData>=0&&this.cpu.interrupt(!1,this.retryData)&&(this.retryData=-1),this.cpu.advanceInsn()}reset(){this.cpu.reset()}interrupt(t){!this.cpu.interrupt(!1,t)&&this.retryInterrupts&&(this.retryData=t)}NMI(){this.cpu.interrupt(!0,0)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.getHalted()}saveState(){return this.cpu.saveState()}loadState(t){this.cpu.loadState(t)}isStable(){return!0}};var ot=class{constructor(){this.master=new MasterChannel}start(){this.looper||(this.looper=new AudioLooper(512),this.looper.setChannel(this.master),this.looper.activate())}stop(){this.looper&&(this.looper.setChannel(null),this.looper=null)}},Nt=class{constructor(t){this.psg=new PsgDeviceChannel;this.curreg=0;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),t.master.addChannel(this.psg)}reset(){for(var t=15;t>=0;t--)this.selectRegister(t),this.setData(0)}selectRegister(t){this.curreg=t&15}setData(t){this.psg.writeRegisterAY(this.curreg,t&255)}readData(){return this.psg.readRegister(this.curreg)}currentRegister(){return this.curreg}},yt=class{constructor(t){this.psg=new PsgDeviceChannel;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_SN76489),t.master.addChannel(this.psg)}reset(){}setData(t){this.psg.writeRegisterSN(0,t&255)}};function Fn(A){for(var t=new ot,n=1;n<=A;n++){var i=new Pn;t["pokey"+n]=i,t.master.addChannel(i)}return t}function Re(A,t){for(var n=new Uint8Array(A.length*t.length),i=0,m=0;m.5?1:0;var Y0=Re(y,W),M0=Re(W,X0),w0=[Y0,W,M0,W,y,q,X0,q],G=ze(2),m0=ze(6),L0=ze(31),l0=ze(93),B0=Re(A0,X0),W0=Re(W,G),O0=Re(W,m0),F0=[e0,X0,B0,M0,G,G,L0,W0,F,W,L0,e0,m0,m0,l0,O0],p0=new Uint8Array(16),s0=new Float32Array(4),a0=new Float32Array(4),O=new Float32Array(4),w=new Uint8Array(4),M=[e0,e0,e0,e0],f0,E,t0,I,L=!0;this.setBufferLength=function(U){f0=new Int32Array(U)},this.getBuffer=function(){return f0},this.setSampleRate=function(U){E=U,I=C/U};function P0(U){var n0=p0[8],C0=n0&B?x0:P,j,u0=U&4,N0=u0>>1,V=u0>>2;n0&f>>V?(n0&b>>V?j=p0[u0+2]*256+p0[u0+0]+7:j=(p0[u0+2]*256+p0[u0+0]+1)*C0,a0[N0+1]=I/j,a0[N0+0]=0):(n0&b>>V?j=p0[u0+0]+4:j=(p0[u0+0]+1)*C0,a0[N0+0]=I/j,j=(p0[u0+2]+1)*C0,a0[N0+1]=I/j)}this.setRegister=function(U,n0){if(U&=15,n0&=255,p0[U]!=n0)switch(p0[U]=n0,U){case 0:case 2:case 4:case 6:case 8:L=!0;break;case 1:case 3:case 5:case 7:O[U>>1]=n0&15,M[U>>1]=w0[n0>>5];break}},this.getRegister=function(U){return U&=15,p0[U]},this.setTIARegister=function(U,n0){switch(U){case 23:case 24:p0[(U&1)*4]=n0&31,L=!0;break;case 21:case 22:M[(U&1)*2]=F0[n0&15];break;case 25:case 26:O[(U&1)*2]=n0&15;break}},this.generate=function(U){L&&(P0(0),P0(4),L=!1);for(var n0=0;n00&&u0<1&&N0>0){var V=M[j],H0=s0[j]+=u0;H0>V.length&&(H0=s0[j]=H0-Math.floor(H0/V.length)*V.length);var r0=V[Math.floor(H0)];r0&&(C0+=N0)}}C0*=64,f0[n0]=C0,f0[n0+1]=C0}}},Tn=function(A){var t,n,i=[],m=0;A.onmessage=function(o){o&&o.data&&o.data.samples&&n&&(i.push(o.data.samples),m+=o.data.samples.length)},this.setBufferLength=function(o){n=new Int16Array(o),m=0},this.getBuffer=function(){return n},this.setSampleRate=function(o){t=o,A.postMessage({sampleRate:o})},this.generate=function(o){if(mN){for(var H=x[N%P],s=0;s<$.length;s++)$[s]=s=o.length)){if(b=0,t.stream){var $=o;o=new Float32Array(t.bufferlen),t.stream.push($);return}if(x[f]=o,Y++,Y-N>=P){N++,g++;var Z=Date.now();Z-B>1e3&&(console.warn("SampleAudio: skipped audio buffer(s), total="+g+", fill="+(Y-N)+"/"+P+", contextRate="+t.sr+", requestedBuf="+t.bufferlen+", expectedIntervalMs="+(t.bufferlen*1e3/t.sr).toFixed(2)),B=Z)}f=(f+1)%P,o=x[f]}},this.feedSample=function(k,$){if(m+=k*$,n+=i*$,n>=1){for(m/=n;n>=1;)this.addSingleSample(m*i),n-=1;m*=n}}},Ke=class{constructor(t){this.sa=new wn(t)}feedSample(t,n){this.sa.feedSample(t,n)}start(){this.sa.start()}stop(){this.sa.stop()}reset(){this.sa.reset()}get sampleRate(){return this.sa.sr||0}},Lt=class{constructor(t,n,i){this.audioGain=1/8192;this.bufferLength=n*2,this.channels=t.generate?[t]:t,this.channels.forEach(m=>{m.setBufferLength(this.bufferLength),m.setSampleRate(i)})}generate(t){var n=this.bufferLength,i=this.channels.map(o=>o.getBuffer());this.channels.forEach(o=>{o.generate(n)});for(let o=0;om+=b[o]),t.feedSample(m*this.audioGain,1)}}};var $e=class{constructor(t,n){this.idx=0;this.sl=0;this.cur_sp=-1;this.singleFrame=!0;this.m=t,this.reset(n||1048576)}start(){this.m.connectProbe(this)}stop(){this.m.connectProbe(null)}reset(t){t&&(this.buf=new Uint32Array(t)),this.sl=0,this.cur_sp=-1,this.clear()}clear(){this.idx=0}logData(t){this.log(t)}log(t){this.idx>=this.buf.length||(this.buf[this.idx++]=t)}relog(t){this.buf[this.idx-1]=t}lastOp(){return this.idx>0?this.buf[this.idx-1]&4278190080:-1}lastAddr(){return this.idx>0?this.buf[this.idx-1]&16777215:-1}addLogBuffer(t){this.idx+t.length>this.buf.length&&(t=t.slice(0,this.buf.length-this.idx)),this.buf.set(t,this.idx),this.idx+=t.length}logClocks(t){t|=0,t>0&&(this.lastOp()==0?this.relog(this.lastAddr()+t|0):this.log(t|0))}logNewScanline(){this.log(2113929216),this.sl++}logNewFrame(){this.log(2130706432),this.sl=0,this.singleFrame&&this.clear()}logExecute(t,n){this.cur_sp!==n&&(nthis.cur_sp&&this.log(184549376|n),this.cur_sp=n),this.log(t|16777216)}logInterrupt(t){this.log(t|134217728)}logValue(t,n,i){this.log(t&65535|(n&255)<<16|i)}logRead(t,n){this.logValue(t,n,301989888)}logWrite(t,n){this.logValue(t,n,318767104)}logIORead(t,n){this.logValue(t,n,335544320)}logIOWrite(t,n){this.logValue(t,n,352321536)}logVRAMRead(t,n){this.logValue(t,n,369098752)}logVRAMWrite(t,n){this.logValue(t,n,385875968)}logIllegal(t){this.log(t|150994944)}logWait(t){this.log(t|520093696)}logDMARead(t,n){this.logValue(t,n,402653184)}logDMAWrite(t,n){this.logValue(t,n,419430400)}countEvents(t){for(var n=0,i=0;ithis.rom.length)throw new Error(`ROM too big: ${t.length} > ${this.rom.length}`);this.rom.set(t)}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.inputs.set(t.inputs)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0)}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}advanceCPU(){var t=this.cpu,n=1;return this.probing&&this.cpu.isStable()&&this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),t.advanceClock?t.advanceClock():t.advanceInsn&&(n=t.advanceInsn(1)),this.probing&&this.probe.logClocks(n),n}probeMemoryBus(t){return{read:n=>{let i=t.read(n);return this.probe.logRead(n,i),i},write:(n,i)=>{this.probe.logWrite(n,i),t.write(n,i)},read32:n=>{let i=t.read32(n);return this.probe.logRead(n,i),i},write32:(n,i)=>{this.probe.logWrite(n,i),t.write32(n,i)}}}connectCPUMemoryBus(t){this.cpuMemoryBus=t,this.rewireCPUBuses()}probeIOBus(t){return{read:n=>{let i=t.read(n);return this.probe.logIORead(n,i),i},write:(n,i)=>{this.probe.logIOWrite(n,i),t.write(n,i)}}}probeDMABus(t){return{read:n=>{let i=t.read(n);return this.probe.logDMARead(n,i),i},write:(n,i)=>{this.probe.logDMAWrite(n,i),t.write(n,i)}}}connectCPUIOBus(t){this.cpuIOBus=t,this.rewireCPUBuses()}},ut=class extends xt{constructor(){super(...arguments);this.overscan=!1;this.rotate=0}getAudioParams(){return{sampleRate:this.sampleRate,stereo:!1}}connectAudio(n){this.audio=n}getVideoParams(){return{width:this.canvasWidth,height:this.numVisibleScanlines,aspect:this.aspectRatio,overscan:this.overscan,rotate:this.rotate}}connectVideo(n){this.pixels=n}},Ot=class extends ut{advanceFrame(t){this.preFrame();var n=0,i=0;this.probe.logNewFrame(),this.frameCycles=0;for(var m=0;m=64&&n<=127&&(x=Zt[n-64]),n>=160&&n<=191&&(x=Zt[n-160+64]),b++;break;case 221:case 253:var g=t==221?"ix":"iy";n==203?(x=Mt[m],f[2]=m,f[3]=i,b++):x=Et[n],x=x.replace(/[(]hl[)]/,"("+g+"+x)"),x=x.replace(/\bhl\b/,g),b++;break;default:x=Et[t];break}if((!x||!x.length)&&(x="??"),N=/^(call|rst)/.test(x),/\bxx\b/.test(x))x=x.replace(/\bxx\b/,"$"+K(f[b]+(f[b+1]<<8),4)),b+=2,Y=!0;else if(/\bx\b/.test(x)){if(x.startsWith("j")){var B=n<128?A+2+n:A+2-(256-n);B&=65535,x=x.replace(/\bx\b/,"$"+K(B,4)),Y=!0}else x=x.replace(/\bx\b/,"$"+K(f[b],2));b+=1}return{line:x.toUpperCase(),nbytes:b,isaddr:Y,iscall:N}}function je(){var A,t,n,i,m,o,b,x,f,Y,N=1,g=2,B=4,P=8,x0=16,R0=32,d=64,k=128,$=65534,Z=65532,H=65530,s=65528,c=65526,g0=65524,Z0=65522,X=0,k0,p,C,V0=[6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,0,0,2,4,0,0,5,9,0,2,3,0,3,2,8,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,0,5,3,6,9,11,0,19,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,7,0,0,7,7,0,7,7,7,7,7,0,7,7,4,7,2,2,2,4,2,2,2,0,2,2,2,2,4,7,3,0,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,5,5,5,7,5,5,5,5,5,5,5,5,7,8,6,6,2,2,2,4,2,2,2,0,2,2,2,2,3,0,3,0,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,6,6,6,6],e0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,4,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,8,0,0,0,0,0,0,0,0,8,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7],q=[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8],X0=function(u,r,S){f|=((u^r^S^S>>1)&128)>>6},W=function(u,r,S){f|=((u^r^S^S>>1)&32768)>>14},F=function(){return(t<<8)+n},A0=function(u){t=u>>8&255,n=u&255},o0=function(u){p(--b,u&255)},y=function(u){p(--b,u&255),p(--b,u>>8&255)},T0=function(u){p(--o,u&255)},Y0=function(u){p(--o,u&255),p(--o,u>>8&255)},M0=function(){return C(b++)},w0=function(){return C(b++)*256+C(b++)},G=function(){return C(o++)},m0=function(){return C(o++)*256+C(o++)},L0=function(u){var r=0;u&128&&(y(x),r+=2),u&64&&(y(o),r+=2),u&32&&(y(m),r+=2),u&16&&(y(i),r+=2),u&8&&(o0(Y),r++),u&4&&(o0(n),r++),u&2&&(o0(t),r++),u&1&&(o0(f),r++),X+=r},l0=function(u){var r=0;u&128&&(Y0(x),r+=2),u&64&&(Y0(b),r+=2),u&32&&(Y0(m),r+=2),u&16&&(Y0(i),r+=2),u&8&&(T0(Y),r++),u&4&&(T0(n),r++),u&2&&(T0(t),r++),u&1&&(T0(f),r++),X+=r},B0=function(u){var r=0;u&1&&(f=M0(),r++),u&2&&(t=M0(),r++),u&4&&(n=M0(),r++),u&8&&(Y=M0(),r++),u&16&&(i=w0(),r+=2),u&32&&(m=w0(),r+=2),u&64&&(o=w0(),r+=2),u&128&&(x=w0(),r+=2),X+=r},W0=function(u){var r=0;u&1&&(f=G(),r++),u&2&&(t=G(),r++),u&4&&(n=G(),r++),u&8&&(Y=G(),r++),u&16&&(i=m0(),r+=2),u&32&&(m=m0(),r+=2),u&64&&(b=m0(),r+=2),u&128&&(x=m0(),r+=2),X+=r},O0=function(u){switch(u&15){case 0:return F();case 1:return i;case 2:return m;case 3:return o;case 4:return b;case 5:return x;case 8:return t;case 9:return n;case 10:return f;case 11:return Y;default:return null}},F0=function(u,r){switch(u&15){case 0:A0(r);return;case 1:i=r;return;case 2:m=r;return;case 3:o=r;return;case 4:b=r;return;case 5:x=r;return;case 8:t=r;return;case 9:n=r;return;case 10:f=r;return;case 11:Y=r;return;default:return}},p0=function(u,r){var S=u&136;(S==128||S==8)&&(S=0),r?(S=O0(u>>4),F0(u>>4,O0(u)),F0(u,S)):F0(u,O0(u>>4))},s0=function(u){return u>127?u-256:u},a0=function(u){return u>32767?u-65536:u},O=function(){var u=C(x++);return x&=65535,u},w=function(){var u=C(x++);x&=65535;var r=C(x++);return x&=65535,u*256+r},M=function(u){var r=C(u++);u&=65535;var S=C(u++);return u&=65535,r*256+S},f0=function(u,r){p(u++,r>>8&255),u&=65535,p(u,r&255)},E=function(){var u=O(),r;switch(u&96){case 0:r=i;break;case 32:r=m;break;case 64:r=o;break;case 96:r=b;break}var S=null,Q=null,e;if(u&128){switch(u&15){case 0:Q=r,S=r+1,X+=2;break;case 1:Q=r,S=r+2,X+=3;break;case 2:S=r-1,Q=S,X+=2;break;case 3:S=r-2,Q=S,X+=3;break;case 4:Q=r;break;case 5:Q=r+s0(n),X+=1;break;case 6:Q=r+s0(t),X+=1;break;case 7:Q=0;break;case 8:Q=r+s0(O()),X+=1;break;case 9:Q=r+a0(w()),X+=4;break;case 10:Q=0;break;case 11:X+=4,Q=r+F();break;case 12:e=s0(O()),Q=x+e,X+=1;break;case 13:e=a0(w()),Q=x+e,X+=5;break;case 14:Q=0;break;case 15:X+=5,Q=w();break}Q&=65535,u&16&&(Q=C(Q)*256+C(Q+1&65535),X+=3)}else{var a=u&31;a>15&&(a-=32),Q=r+a,X+=1}if(S!==null)switch(u&96){case 0:i=S;break;case 32:m=S;break;case 64:o=S;break;case 96:b=S;break}return Q&65535},t0=function(u){f&=~(B|P),u===0&&(f|=B),u&32768&&(f|=P)},I=function(u){return u++,u&=255,f&=~(B|g|P),f|=q[u],(u===0||u==128)&&(f|=g),u},L=function(u){return u--,u&=255,f&=~(B|g|P),f|=q[u],(u===127||u==255)&&(f|=g),u},P0=function(u,r){var S=u-r;return f&=~(N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),S&255},U=function(u,r){var S=u-r;return f&=~(N|B|g|P),(S&65535)===0&&(f|=B),S&32768&&(f|=P),S&65536&&(f|=N),W(u,r,S),S&65535},n0=function(u,r){var S=u+r;return f&=~(R0|N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),(S^u^r)&16&&(f|=R0),S&255},C0=function(u,r){var S=u+r;return f&=~(N|B|g|P),(S&65535)===0&&(f|=B),S&32768&&(f|=P),S&65536&&(f|=N),W(u,r,S),S&65535},j=function(u,r){var S=u+r+(f&N);return f&=~(R0|N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),(S^u^r)&16&&(f|=R0),S&255},u0=function(u,r){var S=u-r-(f&N);return f&=~(N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),S&255},N0=function(u,r){var S=u-r;f&=~(N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S)},V=function(u,r){var S=u-r;f&=~(N|B|g|P),(S&65535)===0&&(f|=B),S&32768&&(f|=P),S&65536&&(f|=N),W(u,r,S)},H0=function(u){return f&=~(N|B|g|P),u==128&&(f|=g),u=(~u&255)+1,u===0&&(f|=B),u&128&&(f|=P|N),u},r0=function(u){return f&=~(B|N|P),u&1&&(f|=N),u>>=1,u===0&&(f|=B),u&255},c0=function(u){return f&=~(B|N|P),u&1&&(f|=N),u=u&128|u>>1,f|=q[u],u},_0=function(u){var r=u;return f&=~(B|N|P|g),u&128&&(f|=N),u<<=1,f|=q[u],(u^r)&128&&(f|=g),u},D0=function(u){var r=u,S=f&N;return f&=~(B|N|P|g),u&128&&(f|=N),u=u<<1|S,f|=q[u],(u^r)&128&&(f|=g),u},U0=function(u){var r=f&N;return f&=~(B|N|P),u&1&&(f|=N),u=u>>1|r<<7,f|=q[u],u},i0=function(u,r){return f&=~(B|P|g),u^=r,f|=q[u],u},b0=function(u,r){return f&=~(B|P|g),u|=r,f|=q[u],u},d0=function(u,r){return f&=~(B|P|g),u&=r,f|=q[u],u},z0=function(u){return f&=~(B|P|g),u^=255,f|=q[u],f|=N,u},T=function(){return Y*256+O()},q0=function(){var u=X,r=null,S=null,Q=x,e=O();switch(X+=V0[e],e){case 0:r=T(),p(r,H0(C(r)));break;case 3:r=T(),p(r,z0(C(r)));break;case 4:r=T(),p(r,r0(C(r)));break;case 6:r=T(),p(r,U0(C(r)));break;case 7:r=T(),p(r,c0(C(r)));break;case 8:r=T(),p(r,_0(C(r)));break;case 9:r=T(),p(r,D0(C(r)));break;case 10:r=T(),p(r,L(C(r)));break;case 12:r=T(),p(r,I(C(r)));break;case 13:r=T(),S=C(r),f&=~(B|P|g),f|=q[S];break;case 14:r=T(),x=r;break;case 15:r=T(),p(r,0),f&=~(N|P|g),f|=B;break;case 18:break;case 19:break;case 22:r=a0(w()),x+=r;break;case 23:r=a0(w()),y(x),x+=r;break;case 25:var a=0,_=t&240,y0=t&15;(y0>9||f&32)&&(a|=6),_>128&&y0>9&&(a|=96),(_>144||f&1)&&(a|=96),r=a+t,f&=~(N|P|B|g),r&256&&(f|=N),t=r&255,f|=q[t];break;case 26:f|=O();break;case 28:f&=O();break;case 29:t=n&128?255:0,t0(F()),f&=~g;break;case 30:S=O(),p0(S,!0);break;case 31:S=O(),p0(S,!1);break;case 32:r=s0(O()),x+=r;break;case 33:r=s0(O());break;case 34:r=s0(O()),f&(N|B)||(x+=r);break;case 35:r=s0(O()),f&(N|B)&&(x+=r);break;case 36:r=s0(O()),f&N||(x+=r);break;case 37:r=s0(O()),f&N&&(x+=r);break;case 38:r=s0(O()),f&B||(x+=r);break;case 39:r=s0(O()),f&B&&(x+=r);break;case 40:r=s0(O()),f&g||(x+=r);break;case 41:r=s0(O()),f&g&&(x+=r);break;case 42:r=s0(O()),f&P||(x+=r);break;case 43:r=s0(O()),f&P&&(x+=r);break;case 44:r=s0(O()),f&P^(f&g)<<2||(x+=r);break;case 45:r=s0(O()),f&P^(f&g)<<2&&(x+=r);break;case 46:r=s0(O()),f&P^(f&g)<<2||f&B||(x+=r);break;case 47:r=s0(O()),(f&P^(f&g)<<2||f&B)&&(x+=r);break;case 48:i=E(),i===0?f|=B:f&=~B;break;case 49:m=E(),m===0?f|=B:f&=~B;break;case 50:b=E();break;case 51:o=E();break;case 52:L0(O());break;case 53:B0(O());break;case 54:l0(O());break;case 55:W0(O());break;case 57:x=w0();break;case 58:i+=n;break;case 59:f=M0(),f&k&&(X+=9,t=M0(),n=M0(),Y=M0(),i=w0(),m=w0(),o=w0()),x=w0();break;case 60:f&=O();break;case 61:r=t*n,r===0?f|=B:f&=~B,r&128?f|=N:f&=~N,A0(r);break;case 63:f|=k,y(x),y(o),y(m),y(i),o0(Y),o0(n),o0(t),o0(f),f|=x0|d,x=M(H);break;case 64:t=H0(t);break;case 67:t=z0(t);break;case 68:t=r0(t);break;case 70:t=U0(t);break;case 71:t=c0(t);break;case 72:t=_0(t);break;case 73:t=D0(t);break;case 74:t=L(t);break;case 76:t=I(t);break;case 77:f&=~(B|P|g),f|=q[t];break;case 79:t=0,f&=~(P|g|N),f|=B;break;case 80:n=H0(n);break;case 83:n=z0(n);break;case 84:n=r0(n);break;case 86:n=U0(n);break;case 87:n=c0(n);break;case 88:n=_0(n);break;case 89:n=D0(n);break;case 90:n=L(n);break;case 92:n=I(n);break;case 93:f&=~(B|P|g),f|=q[n];break;case 95:n=0,f&=~(P|g|N),f|=B;break;case 96:r=E(),p(r,H0(C(r)));break;case 99:r=E(),p(r,z0(C(r)));break;case 100:r=E(),p(r,r0(C(r)));break;case 102:r=E(),p(r,U0(C(r)));break;case 103:r=E(),p(r,c0(C(r)));break;case 104:r=E(),p(r,_0(C(r)));break;case 105:r=E(),p(r,D0(C(r)));break;case 106:r=E(),p(r,L(C(r)));break;case 108:r=E(),p(r,I(C(r)));break;case 109:r=E(),S=C(r),f&=~(B|P|g),f|=q[S];break;case 110:r=E(),x=r;break;case 111:r=E(),p(r,0),f&=~(N|P|g),f|=B;break;case 112:r=w(),p(r,H0(C(r)));break;case 115:r=w(),p(r,z0(C(r)));break;case 116:r=w(),p(r,r0(C(r)));break;case 118:r=w(),p(r,U0(C(r)));break;case 119:r=w(),p(r,c0(C(r)));break;case 120:r=w(),p(r,_0(C(r)));break;case 121:r=w(),p(r,D0(C(r)));break;case 122:r=w(),p(r,L(C(r)));break;case 124:r=w(),p(r,I(C(r)));break;case 125:r=w(),S=C(r),f&=~(B|P|g),f|=q[S];break;case 126:r=w(),x=r;break;case 127:r=w(),p(r,0),f&=~(N|P|g),f|=B;break;case 128:t=P0(t,O());break;case 129:N0(t,O());break;case 130:t=u0(t,O());break;case 131:A0(U(F(),w()));break;case 132:t=d0(t,O());break;case 133:d0(t,O());break;case 134:t=O(),f&=~(B|P|g),f|=q[t];break;case 136:t=i0(t,O());break;case 137:t=j(t,O());break;case 138:t=b0(t,O());break;case 139:t=n0(t,O());break;case 140:V(i,w());break;case 141:r=s0(O()),y(x),x+=r;break;case 142:i=w(),t0(i),f&=~g;break;case 144:r=T(),t=P0(t,C(r));break;case 145:r=T(),N0(t,C(r));break;case 146:r=T(),t=u0(t,C(r));break;case 147:r=T(),A0(U(F(),M(r)));break;case 148:r=T(),t=d0(t,C(r));break;case 149:r=T(),d0(t,C(r));break;case 150:r=T(),t=C(r),f&=~(B|P|g),f|=q[t];break;case 151:r=T(),p(r,t),f&=~(B|P|g),f|=q[t];break;case 152:r=T(),t=i0(t,C(r));break;case 153:r=T(),t=j(t,C(r));break;case 154:r=T(),t=b0(t,C(r));break;case 155:r=T(),t=n0(t,C(r));break;case 156:r=T(),V(i,M(r));break;case 157:r=T(),y(x),x=r;break;case 158:r=T(),i=M(r),t0(i),f&=~g;break;case 159:r=T(),f0(r,i),t0(i),f&=~g;break;case 160:r=E(),t=P0(t,C(r));break;case 161:r=E(),N0(t,C(r));break;case 162:r=E(),t=u0(t,C(r));break;case 163:r=E(),A0(U(F(),M(r)));break;case 164:r=E(),t=d0(t,C(r));break;case 165:r=E(),d0(t,C(r));break;case 166:r=E(),t=C(r),f&=~(B|P|g),f|=q[t];break;case 167:r=E(),p(r,t),f&=~(B|P|g),f|=q[t];break;case 168:r=E(),t=i0(t,C(r));break;case 169:r=E(),t=j(t,C(r));break;case 170:r=E(),t=b0(t,C(r));break;case 171:r=E(),t=n0(t,C(r));break;case 172:r=E(),V(i,M(r));break;case 173:r=E(),y(x),x=r;break;case 174:r=E(),i=M(r),t0(i),f&=~g;break;case 175:r=E(),f0(r,i),t0(i),f&=~g;break;case 176:r=w(),t=P0(t,C(r));break;case 177:r=w(),N0(t,C(r));break;case 178:r=w(),t=u0(t,C(r));break;case 179:r=w(),A0(U(F(),M(r)));break;case 180:r=w(),t=d0(t,C(r));break;case 181:r=w(),d0(t,C(r));break;case 182:r=w(),t=C(r),f&=~(B|P|g),f|=q[t];break;case 183:r=w(),p(r,t),f&=~(B|P|g),f|=q[t];break;case 184:r=w(),t=i0(t,C(r));break;case 185:r=w(),t=j(t,C(r));break;case 186:r=w(),t=b0(t,C(r));break;case 187:r=w(),t=n0(t,C(r));break;case 188:r=w(),V(i,M(r));break;case 189:r=w(),y(x),x=r;break;case 190:r=w(),i=M(r),t0(i),f&=~g;break;case 191:r=w(),f0(r,i),t0(i),f&=~g;break;case 192:n=P0(n,O());break;case 193:N0(n,O());break;case 194:n=u0(n,O());break;case 195:A0(C0(F(),w()));break;case 196:n=d0(n,O());break;case 197:d0(n,O());break;case 198:n=O(),f&=~(B|P|g),f|=q[n];break;case 200:n=i0(n,O());break;case 201:n=j(n,O());break;case 202:n=b0(n,O());break;case 203:n=n0(n,O());break;case 204:r=w(),A0(r),t0(r),f&=~g;break;case 206:o=w(),t0(o),f&=~g;break;case 208:r=T(),n=P0(n,C(r));break;case 209:r=T(),N0(n,C(r));break;case 210:r=T(),n=u0(n,C(r));break;case 211:r=T(),A0(C0(F(),M(r)));break;case 212:r=T(),n=d0(n,C(r));break;case 213:r=T(),d0(n,C(r));break;case 214:r=T(),n=C(r),f&=~(B|P|g),f|=q[n];break;case 215:r=T(),p(r,n),f&=~(B|P|g),f|=q[n];break;case 216:r=T(),n=i0(n,C(r));break;case 217:r=T(),n=j(n,C(r));break;case 218:r=T(),n=b0(n,C(r));break;case 219:r=T(),n=n0(n,C(r));break;case 220:r=T(),S=M(r),A0(S),t0(S),f&=~g;break;case 221:r=T(),f0(r,F()),f&=~g;break;case 222:r=T(),o=M(r),t0(o),f&=~g;break;case 223:r=T(),f0(r,o),t0(o),f&=~g;break;case 224:r=E(),n=P0(n,C(r));break;case 225:r=E(),N0(n,C(r));break;case 226:r=E(),n=u0(n,C(r));break;case 227:r=E(),A0(C0(F(),M(r)));break;case 228:r=E(),n=d0(n,C(r));break;case 229:r=E(),d0(n,C(r));break;case 230:r=E(),n=C(r),f&=~(B|P|g),f|=q[n];break;case 231:r=E(),p(r,n),f&=~(B|P|g),f|=q[n];break;case 232:r=E(),n=i0(n,C(r));break;case 233:r=E(),n=j(n,C(r));break;case 234:r=E(),n=b0(n,C(r));break;case 235:r=E(),n=n0(n,C(r));break;case 236:r=E(),S=M(r),A0(S),t0(S),f&=~g;break;case 237:r=E(),f0(r,F()),f&=~g;break;case 238:r=E(),o=M(r),t0(o),f&=~g;break;case 239:r=E(),f0(r,o),t0(o),f&=~g;break;case 240:r=w(),n=P0(n,C(r));break;case 241:r=w(),N0(n,C(r));break;case 242:r=w(),n=u0(n,C(r));break;case 243:r=w(),A0(C0(F(),M(r)));break;case 244:r=w(),n=d0(n,C(r));break;case 245:r=w(),d0(n,C(r));break;case 246:r=w(),n=C(r),f&=~(B|P|g),f|=q[n];break;case 247:r=w(),p(r,n),f&=~(B|P|g),f|=q[n];break;case 248:r=w(),n=i0(n,C(r));break;case 249:r=w(),n=j(n,C(r));break;case 250:r=w(),n=b0(n,C(r));break;case 251:r=w(),n=n0(n,C(r));break;case 252:r=w(),S=M(r),A0(S),t0(S),f&=~g;break;case 253:r=w(),f0(r,F()),f&=~g;break;case 254:r=w(),o=M(r),t0(o),f&=~g;break;case 255:r=w(),f0(r,o),t0(o),f&=~g;break;case 16:switch(e=O(),X+=e0[e],e){case 33:r=a0(w());break;case 34:r=a0(w()),f&(N|B)||(x+=r);break;case 35:r=a0(w()),f&(N|B)&&(x+=r);break;case 36:r=a0(w()),f&N||(x+=r);break;case 37:r=a0(w()),f&N&&(x+=r);break;case 38:r=a0(w()),f&B||(x+=r);break;case 39:r=a0(w()),f&B&&(x+=r);break;case 40:r=a0(w()),f&g||(x+=r);break;case 41:r=a0(w()),f&g&&(x+=r);break;case 42:r=a0(w()),f&P||(x+=r);break;case 43:r=a0(w()),f&P&&(x+=r);break;case 44:r=a0(w()),f&P^(f&g)<<2||(x+=r);break;case 45:r=a0(w()),f&P^(f&g)<<2&&(x+=r);break;case 46:r=a0(w()),f&P^(f&g)<<2||f&B||(x+=r);break;case 47:r=a0(w()),(f&P^(f&g)<<2||f&B)&&(x+=r);break;case 63:f|=k,y(x),y(o),y(m),y(i),o0(Y),o0(n),o0(t),o0(f),f|=x0|d,x=M(g0);break;case 131:V(F(),w());break;case 140:V(m,w());break;case 142:m=w(),t0(m),f&=~g;break;case 147:r=T(),V(F(),M(r));break;case 156:r=T(),V(m,M(r));break;case 158:r=T(),m=M(r),t0(m),f&=~g;break;case 159:r=T(),f0(r,m),t0(m),f&=~g;break;case 163:r=E(),V(F(),M(r));break;case 172:r=E(),V(m,M(r));break;case 174:r=E(),m=M(r),t0(m),f&=~g;break;case 175:r=E(),f0(r,m),t0(m),f&=~g;break;case 179:r=w(),V(F(),M(r));break;case 188:r=w(),V(m,M(r));break;case 190:r=w(),m=M(r),t0(m),f&=~g;break;case 191:r=w(),f0(r,m),t0(m),f&=~g;break;case 206:b=w(),t0(b),f&=~g;break;case 222:r=T(),b=M(r),t0(b),f&=~g;break;case 223:r=T(),f0(r,b),t0(b),f&=~g;break;case 238:r=E(),b=M(r),t0(b),f&=~g;break;case 239:r=E(),f0(r,b),t0(b),f&=~g;break;case 254:r=w(),b=M(r),t0(b),f&=~g;break;case 255:r=w(),f0(r,b),t0(b),f&=~g;break}break;case 17:switch(e=O(),X+=e0[e],e){case 63:f|=k,y(x),y(o),y(m),y(i),o0(Y),o0(n),o0(t),o0(f),f|=x0|d,x=M(Z0);break;case 131:V(o,w());break;case 140:V(b,w());break;case 147:r=T(),V(o,M(r));break;case 156:r=T(),V(b,M(r));break;case 163:r=E(),V(o,M(r));break;case 172:r=E(),V(b,M(r));break;case 179:r=w(),V(o,M(r));break;case 188:r=w(),V(b,M(r));break}break}return t&=255,n&=255,f&=255,Y&=255,i&=65535,m&=65535,o&=65535,b&=65535,x&=65535,X-u},$0=function(){x=M($),Y=0,f|=d|x0,X=0,t=n=Y=i=m=o=b=0},G0=[[2,1,"NEG"],[1,0,"???"],[1,0,"???"],[2,1,"COM"],[2,1,"LSR"],[1,0,"???"],[2,1,"ROR"],[2,1,"ASR"],[2,1,"LSL"],[2,1,"ROL"],[2,1,"DEC"],[1,0,"???"],[2,1,"INC"],[2,1,"TST"],[2,1,"JMP"],[2,1,"CLR"],[1,0,"Prefix"],[1,0,"Prefix"],[1,2,"NOP"],[1,2,"SYNC"],[1,0,"???"],[1,0,"???"],[3,3,"LBRA"],[3,3,"LBSR"],[1,0,"???"],[1,2,"DAA"],[2,4,"ORCC"],[1,0,"???"],[2,4,"ANDCC"],[1,2,"SEX"],[2,20,"EXG"],[2,20,"TFR"],[2,5,"BRA"],[2,5,"BRN"],[2,5,"BHI"],[2,5,"BLS"],[2,5,"BCC"],[2,5,"BCS"],[2,5,"BNE"],[2,5,"BEQ"],[2,5,"BVC"],[2,5,"BVS"],[2,5,"BPL"],[2,5,"BMI"],[2,5,"BGE"],[2,5,"BLT"],[2,5,"BGT"],[2,5,"BLE"],[2,6,"LEAX"],[2,6,"LEAY"],[2,6,"LEAS"],[2,6,"LEAU"],[2,10,"PSHS"],[2,10,"PULS"],[2,11,"PSHU"],[2,11,"PULU"],[1,0,"???"],[1,2,"RTS"],[1,2,"ABX"],[1,2,"RTI"],[2,2,"CWAI"],[1,2,"MUL"],[1,2,"RESET"],[1,2,"SWI1"],[1,2,"NEGA"],[1,0,"???"],[1,0,"???"],[1,2,"COMA"],[1,2,"LSRA"],[1,0,"???"],[1,2,"RORA"],[1,2,"ASRA"],[1,2,"ASLA"],[1,2,"ROLA"],[1,2,"DECA"],[1,0,"???"],[1,2,"INCA"],[1,2,"TSTA"],[1,0,"???"],[1,2,"CLRA"],[1,2,"NEGB"],[1,0,"???"],[1,0,"???"],[1,2,"COMB"],[1,2,"LSRB"],[1,0,"???"],[1,2,"RORB"],[1,2,"ASRB"],[1,2,"ASLB"],[1,2,"ROLB"],[1,2,"DECB"],[1,0,"???"],[1,2,"INCB"],[1,2,"TSTB"],[1,0,"???"],[1,2,"CLRB"],[2,6,"NEG"],[1,0,"???"],[1,0,"???"],[2,6,"COM"],[2,6,"LSR"],[1,0,"???"],[2,6,"ROR"],[2,6,"ASR"],[2,6,"LSL"],[2,6,"ROL"],[2,6,"DEC"],[1,0,"???"],[2,6,"INC"],[2,6,"TST"],[2,6,"JMP"],[2,6,"CLR"],[3,7,"NEG"],[1,0,"???"],[1,0,"???"],[3,7,"COM"],[3,7,"LSR"],[1,0,"???"],[3,7,"ROR"],[3,7,"ASR"],[3,7,"LSL"],[3,7,"ROL"],[3,7,"DEC"],[1,0,"???"],[3,7,"INC"],[3,7,"TST"],[3,7,"JMP"],[3,7,"CLR"],[2,4,"SUBA"],[2,4,"CMPA"],[2,4,"SBCA"],[3,8,"SUBD"],[2,4,"ANDA"],[2,4,"BITA"],[2,4,"LDA"],[1,0,"???"],[2,4,"EORA"],[2,4,"ADCA"],[2,4,"ORA"],[2,4,"ADDA"],[3,8,"CMPX"],[2,5,"BSR"],[3,8,"LDX"],[1,0,"???"],[2,1,"SUBA"],[2,1,"CMPA"],[2,1,"SBCA"],[2,1,"SUBd"],[2,1,"ANDA"],[2,1,"BITA"],[2,1,"LDA"],[2,1,"STA"],[2,1,"EORA"],[2,1,"ADCA"],[2,1,"ORA"],[2,1,"ADDA"],[2,1,"CMPX"],[2,1,"JSR"],[2,1,"LDX"],[2,1,"STX"],[2,6,"SUBA"],[2,6,"CMPA"],[2,6,"SBCA"],[2,6,"SUBD"],[2,6,"ANDA"],[2,6,"BITA"],[2,6,"LDA"],[2,6,"STA"],[2,6,"EORA"],[2,6,"ADCA"],[2,6,"ORA"],[2,6,"ADDA"],[2,6,"CMPX"],[2,6,"JSR"],[2,6,"LDX"],[2,6,"STX"],[3,7,"SUBA"],[3,7,"CMPA"],[3,7,"SBCA"],[3,7,"SUBD"],[3,7,"ANDA"],[3,7,"BITA"],[3,7,"LDA"],[3,7,"STA"],[3,7,"EORA"],[3,7,"ADCA"],[3,7,"ORA"],[3,7,"ADDA"],[3,7,"CMPX"],[3,7,"JSR"],[3,7,"LDX"],[3,7,"STX"],[2,4,"SUBB"],[2,4,"CMPB"],[2,4,"SBCB"],[3,8,"ADDD"],[2,4,"ANDB"],[2,4,"BITB"],[2,4,"LDB"],[1,0,"???"],[2,4,"EORB"],[2,4,"ADCB"],[2,4,"ORB"],[2,4,"ADDB"],[3,8,"LDD"],[1,0,"???"],[3,8,"LDU"],[1,0,"???"],[2,1,"SUBB"],[2,1,"CMPB"],[2,1,"SBCB"],[2,1,"ADDD"],[2,1,"ANDB"],[2,1,"BITB"],[2,1,"LDB"],[2,1,"STB"],[2,1,"EORB"],[2,1,"ADCB"],[2,1,"ORB "],[2,1,"ADDB"],[2,1,"LDD "],[2,1,"STD "],[2,1,"LDU "],[2,1,"STU "],[2,6,"SUBB"],[2,6,"CMPB"],[2,6,"SBCB"],[2,6,"ADDD"],[2,6,"ANDB"],[2,6,"BITB"],[2,6,"LDB"],[2,6,"STB"],[2,6,"EORB"],[2,6,"ADCB"],[2,6,"ORB"],[2,6,"ADDB"],[2,6,"LDD"],[2,6,"STD"],[2,6,"LDU"],[2,6,"STU"],[3,7,"SUBB"],[3,7,"CMPB"],[3,7,"SBCB"],[3,7,"ADDD"],[3,7,"ANDB"],[3,7,"BITB"],[3,7,"LDB"],[3,7,"STB"],[3,7,"EORB"],[3,7,"ADCB"],[3,7,"ORB"],[3,7,"ADDB"],[3,7,"LDD"],[3,7,"STD"],[3,7,"LDU"],[3,7,"STU"]],v={63:[2,2,"SWI3"],131:[4,8,"CMPU"],140:[4,8,"CMPS"],147:[3,1,"CMPU"],156:[3,1,"CMPS"],163:[3,6,"CMPU"],172:[3,6,"CMPS"],179:[4,7,"CMPU"],188:[4,7,"CMPS"]},R={33:[5,3,"LBRN"],34:[5,3,"LBHI"],35:[5,3,"LBLS"],36:[5,3,"LBCC"],37:[5,3,"LBCS"],38:[5,3,"LBNE"],39:[5,3,"LBEQ"],40:[5,3,"LBVC"],41:[5,3,"LBVS"],42:[5,3,"LBPL"],43:[5,3,"LBMI"],44:[5,3,"LBGE"],45:[5,3,"LBLT"],46:[5,3,"LBGT"],47:[5,3,"LBLE"],63:[2,2,"SWI2"],131:[4,8,"CMPD"],140:[4,8,"CMPY"],142:[4,8,"LDY"],147:[3,1,"CMPD"],156:[3,1,"CMPY"],158:[3,1,"LDY"],159:[3,1,"STY"],163:[3,6,"CMPD"],172:[3,6,"CMPY"],174:[3,6,"LDY"],175:[3,6,"STY"],179:[4,7,"CMPD"],188:[4,7,"CMPY"],190:[4,7,"LDY"],191:[4,7,"STY"],206:[4,8,"LDS"],222:[3,1,"LDS"],223:[3,1,"STS"],238:[3,6,"LDS"],239:[3,6,"STS"],254:[4,7,"LDS"],255:[4,7,"STS"]},D=function(u,r,S,Q,e,a){var _=function(ue,qe){for(var Pe=ue.toString(16);Pe.length>5];if(!(xe&128)){var Se=xe&31;Se>15&&(Se=Se-32),J+=Se+","+E0;break}var Qe=xe&16,Oe=xe&15,ge=S>127?S-256:S,pe=S*256+Q>32767?S*256+Q-65536:S*256+Q;if(Qe)switch(Oe){case 0:J+="???";break;case 1:J+="[,"+E0+"++]";break;case 2:J+="???";break;case 3:J+="[,--"+E0+"]";break;case 4:J+="[,"+E0+"]";break;case 5:J+="[B,"+E0+"]";break;case 6:J+="[A,"+E0+"]";break;case 7:J+="???";break;case 8:J+="["+ge+","+E0+"]",K0++;break;case 9:J+="["+pe+","+E0+"]",K0+=2;break;case 10:J+="???";break;case 11:J+="[D,"+E0+"]";break;case 12:J+="["+ge+",PC]",K0++;break;case 13:J+="["+pe+",PC]",K0+=2;break;case 14:J+="???";break;case 15:J+="[$"+j0(S*256+Q)+"]",K0+=2;break}else switch(Oe){case 0:J+=","+E0+"+";break;case 1:J+=","+E0+"++";break;case 2:J+=",-"+E0;break;case 3:J+=",--"+E0;break;case 4:J+=","+E0;break;case 5:J+="B,"+E0;break;case 6:J+="A,"+E0;break;case 7:J+="???";break;case 8:J+=ge+","+E0,K0++;break;case 9:J+=pe+","+E0,K0+=2;break;case 10:J+="???";break;case 11:J+="D,"+E0;break;case 12:J+=ge+",PC",K0++;break;case 13:J+=pe+",PC",K0+=2;break;case 14:J+="???";break;case 15:J+="$"+j0(S*256+Q),K0+=2;break}break;case 7:J+=" $"+j0(r*256+S);break;case 8:J+=" #$"+j0(r*256+S);break;case 10:for(I0=["PC","U","Y","X","DP","B","A","CC"],ne=[],Q0=0;Q0<8;Q0++)(r&1)!==0&&ne.push(I0[7-Q0]),r>>=1;J+=" "+ne.join(",");break;case 11:for(I0=["PC","S","Y","X","DP","B","A","CC"],ne=[],Q0=0;Q0<8;Q0++)(r&1)!==0&&ne.push(I0[7-Q0]),r>>=1;J+=" "+ne.join(",");break;case 20:I0=["D","X","Y","U","S","PC","?","?","A","B","CC","DP","?","?","?","?"],J+=" "+I0[r>>4]+","+I0[r&15];break}return{line:J,nbytes:K0}};return{steps:function(u){for(;u>0;)u-=q0()},runFrame:function(u){for(;X>S;Q===0?u+=r[S].toLowerCase():u+=r[S]}return u},disasm:D,isStable:function(){return!0}}}var lt=function(){var A=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){n&&(x0++,d[x0]())},this.connectBus=function(l){t=l},this.setRDY=function(l){n=l},this.isRDY=function(){return n},this.reset=function(){g=1,x0=-1,d=[W],i=t.read(X)|t.read(X+1)<<8,this.setRDY(!0)};var t,n=!1,i=0,m=0,o=0,b=0,x=0,f=0,Y=0,N=0,g=0,B=0,P=0,x0=-1,R0=-1,d,k=0,$=0,Z=0,H=!1,s=0,c=0,g0=0;let Z0=65530,X=65532,k0=65534,p=0,C=1,V0=7,e0=6,q=1,X0=0;this.debug=!1,this.trace=!1;var W=function(){R0=t.read(i),d=a[R0],x0=0,i++},F=W,A0=function(){t.read(i)},o0=function(){c=t.read(i),i++},y=function(){$=t.read(i),i++},T0=function(){$|=t.read(i)<<8,i++},Y0=function(){$=t.read(Z)},M0=function(){$|=t.read(Z)<<8},w0=function(){Z=t.read(i),i++},G=function(){Z|=t.read(i)<<8,i++},m0=function(){Z=t.read(s)},L0=function(){Z|=t.read(s)<<8},l0=function(){var l=(Z&255)+b;H=l>255,Z=Z&65280|l&255},B0=function(){var l=(Z&255)+x;H=l>255,Z=Z&65280|l&255},W0=function(){var l=(Z&255)+1;H=l>255,Z=Z&65280|l&255},O0=function(){H&&(Z=Z+256&65535)},F0=function(){s=t.read(i),i++},p0=function(){s|=t.read(i)<<8,i++},s0=function(){var l=(s&255)+1;s=s&65280|l&255},a0=function(){k=t.read(i),i++},O=function(){k=t.read($)},w=function(){k=t.read(Z)},M=function(){t.write($,k)},f0=function(){t.write(Z,k)},E=function(){var l=i&255,h=l+c&255;c>127?g0=h>l?-256:0:g0=h>>7,Y=l>>>6&1,N=l>>>3&1,g=l>>>2&1,B=l>>>1&1,P=l&1},V=function(l){A.debug&&A.breakpoint("Illegal Opcode: "+l)},H0=function(){V("KIL/HLT/JAM");let l=i-1&65535;throw new Ye(`CPU executed halt instruction ($${K(R0,2)}) at $${K(l,4)}`)},r0=function(l){return[W,A0,function(){l(),F()}]},c0=function(l){return[W,a0,function(){l(),F()}]},_0=function(l){return[W,y,O,function(){l(),F()}]},D0=function(l){return[W,y,T0,O,function(){l(),F()}]},U0=function(l){return[W,w0,w,function(){l0(),Y0()},function(){W0(),M0()},O,function(){l(),F()}]},i0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,G,function(){h(),w(),O0()},function(){H?w():(z(),F())},function(){z(),F()}]}},b0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,w,function(){h(),w()},function(){z(),F()}]}},d0=function(l){return[W,F0,m0,function(){s0(),L0()},function(){B0(),w(),O0()},function(){H?w():(l(),F())},function(){l(),F()}]},z0=function(l){return[W,y,function(){l(),M()},F]},T=function(l){return[W,y,T0,function(){l(),M()},F]},q0=function(l){return[W,w0,w,function(){l0(),Y0()},function(){W0(),M0()},function(){l(),M()},F]},$0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,G,function(){h(),w(),O0()},function(){z(),f0()},F]}},G0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,w,function(){h(),z(),f0()},F]}},v=function(l){return[W,F0,m0,function(){s0(),L0()},function(){B0(),w(),O0()},function(){l(),f0()},F]},R=function(l){return[W,y,O,M,function(){l(),M()},F]},D=function(l){return[W,y,T0,O,M,function(){l(),M()},F]},u=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,w,function(){h(),w()},f0,function(){z(),f0()},F]}},r=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,G,function(){h(),w(),O0()},w,f0,function(){z(),f0()},F]}},S=function(l){return[W,w0,w,function(){l0(),Y0()},function(){W0(),M0()},O,M,function(){l(),M()},F]},Q=function(l){return[W,F0,m0,function(){s0(),L0()},function(){B0(),w(),O0()},w,f0,function(){l(),f0()},F]},e=new Array(256),a=new Array(256);e[0]="BRK",a[0]=mn(),e[1]="ORA",a[1]=ce(U0),e[2]="uKIL",a[2]=J0(),e[3]="uSLO",a[3]=Ae(S),e[4]="uNOP",a[4]=S0(_0),e[5]="ORA",a[5]=ce(_0),e[6]="ASL",a[6]=Ze(R),e[7]="uSLO",a[7]=Ae(R),e[8]="PHP",a[8]=cn(),e[9]="ORA",a[9]=ce(c0),e[10]="ASL",a[10]=_(),e[11]="uANC",a[11]=gt(c0),e[12]="uNOP",a[12]=S0(D0),e[13]="ORA",a[13]=ce(D0),e[14]="ASL",a[14]=Ze(D),e[15]="uSLO",a[15]=Ae(D),e[16]="BPL",a[16]=oe(V0,0),e[17]="ORA",a[17]=ce(d0),e[18]="uKIL",a[18]=J0(),e[19]="uSLO",a[19]=Ae(Q),e[20]="uNOP",a[20]=S0(b0(p)),e[21]="ORA",a[21]=ce(b0(p)),e[22]="ASL",a[22]=Ze(u(p)),e[23]="uSLO",a[23]=Ae(u(p)),e[24]="CLC",a[24]=y0(),e[25]="ORA",a[25]=ce(i0(C)),e[26]="uNOP",a[26]=S0(r0),e[27]="uSLO",a[27]=Ae(r(C)),e[28]="uNOP",a[28]=S0(i0(p)),e[29]="ORA",a[29]=ce(i0(p)),e[30]="ASL",a[30]=Ze(r(p)),e[31]="uSLO",a[31]=Ae(r(p)),e[32]="JSR",a[32]=un(),e[33]="AND",a[33]=ae(U0),e[34]="uKIL",a[34]=J0(),e[35]="uRLA",a[35]=de(S),e[36]="BIT",a[36]=St(_0),e[37]="AND",a[37]=ae(_0),e[38]="ROL",a[38]=Ue(R),e[39]="uRLA",a[39]=de(R),e[40]="PLP",a[40]=xn(),e[41]="AND",a[41]=ae(c0),e[42]="ROL",a[42]=E0(),e[43]="uANC",a[43]=gt(c0),e[44]="BIT",a[44]=St(D0),e[45]="AND",a[45]=ae(D0),e[46]="ROL",a[46]=Ue(D),e[47]="uRLA",a[47]=de(D),e[48]="BMI",a[48]=oe(V0,1),e[49]="AND",a[49]=ae(d0),e[50]="uKIL",a[50]=J0(),e[51]="uRLA",a[51]=de(Q),e[52]="uNOP",a[52]=S0(b0(p)),e[53]="AND",a[53]=ae(b0(p)),e[54]="ROL",a[54]=Ue(u(p)),e[55]="uRLA",a[55]=de(u(p)),e[56]="SEC",a[56]=Qe(),e[57]="AND",a[57]=ae(i0(C)),e[58]="uNOP",a[58]=S0(r0),e[59]="uRLA",a[59]=de(r(C)),e[60]="uNOP",a[60]=S0(i0(p)),e[61]="AND",a[61]=ae(i0(p)),e[62]="ROL",a[62]=Ue(r(p)),e[63]="uRLA",a[63]=de(r(p)),e[64]="RTI",a[64]=dn(),e[65]="EOR",a[65]=fe(U0),e[66]="uKIL",a[66]=J0(),e[67]="uSRE",a[67]=Ce(S),e[68]="uNOP",a[68]=S0(_0),e[69]="EOR",a[69]=fe(_0),e[70]="LSR",a[70]=Te(R),e[71]="uSRE",a[71]=Ce(R),e[72]="PHA",a[72]=sn(),e[73]="EOR",a[73]=fe(c0),e[74]="LSR",a[74]=J(),e[75]="uASR",a[75]=qt(c0),e[76]="JMP",a[76]=An(),e[77]="EOR",a[77]=fe(D0),e[78]="LSR",a[78]=Te(D),e[79]="uSRE",a[79]=Ce(D),e[80]="BVC",a[80]=oe(e0,0),e[81]="EOR",a[81]=fe(d0),e[82]="uKIL",a[82]=J0(),e[83]="uSRE",a[83]=Ce(Q),e[84]="uNOP",a[84]=S0(b0(p)),e[85]="EOR",a[85]=fe(b0(p)),e[86]="LSR",a[86]=Te(u(p)),e[87]="uSRE",a[87]=Ce(u(p)),e[88]="CLI",a[88]=I0(),e[89]="EOR",a[89]=fe(i0(C)),e[90]="uNOP",a[90]=S0(r0),e[91]="uSRE",a[91]=Ce(r(C)),e[92]="uNOP",a[92]=S0(i0(p)),e[93]="EOR",a[93]=fe(i0(p)),e[94]="LSR",a[94]=Te(r(p)),e[95]="uSRE",a[95]=Ce(r(p)),e[96]="RTS",a[96]=hn(),e[97]="ADC",a[97]=re(U0),e[98]="uKIL",a[98]=J0(),e[99]="uRRA",a[99]=he(S),e[100]="uNOP",a[100]=S0(_0),e[101]="ADC",a[101]=re(_0),e[102]="ROR",a[102]=Xe(R),e[103]="uRRA",a[103]=he(R),e[104]="PLA",a[104]=on(),e[105]="ADC",a[105]=re(c0),e[106]="ROR",a[106]=Se(),e[107]="uARR",a[107]=Qt(c0),e[108]="JMP",a[108]=Cn(),e[109]="ADC",a[109]=re(D0),e[110]="ROR",a[110]=Xe(D),e[111]="uRRA",a[111]=he(D),e[112]="BVS",a[112]=oe(e0,1),e[113]="ADC",a[113]=re(d0),e[114]="uKIL",a[114]=J0(),e[115]="uRRA",a[115]=he(Q),e[116]="uNOP",a[116]=S0(b0(p)),e[117]="ADC",a[117]=re(b0(p)),e[118]="ROR",a[118]=Xe(u(p)),e[119]="uRRA",a[119]=he(u(p)),e[120]="SEI",a[120]=ge(),e[121]="ADC",a[121]=re(i0(C)),e[122]="uNOP",a[122]=S0(r0),e[123]="uRRA",a[123]=he(r(C)),e[124]="uNOP",a[124]=S0(i0(p)),e[125]="ADC",a[125]=re(i0(p)),e[126]="ROR",a[126]=Xe(r(p)),e[127]="uRRA",a[127]=he(r(p)),e[128]="uNOP",a[128]=S0(c0),e[129]="STA",a[129]=me(q0),e[130]="uNOP",a[130]=S0(c0),e[131]="uSAX",a[131]=Ee(q0),e[132]="STY",a[132]=rt(z0),e[133]="STA",a[133]=me(z0),e[134]="STX",a[134]=nt(z0),e[135]="uSAX",a[135]=Ee(z0),e[136]="DEY",a[136]=ee(),e[137]="uNOP",a[137]=S0(c0),e[138]="TXA",a[138]=Pe(),e[139]="uANE",a[139]=Gt(c0),e[140]="STY",a[140]=rt(T),e[141]="STA",a[141]=me(T),e[142]="STX",a[142]=nt(T),e[143]="uSAX",a[143]=Ee(T),e[144]="BCC",a[144]=oe(X0,0),e[145]="STA",a[145]=me(v),e[146]="uKIL",a[146]=J0(),e[147]="uSHA",a[147]=pt(v),e[148]="STY",a[148]=rt(G0(p)),e[149]="STA",a[149]=me(G0(p)),e[150]="STX",a[150]=nt(G0(C)),e[151]="uSAX",a[151]=Ee(G0(C)),e[152]="TYA",a[152]=Jt(),e[153]="STA",a[153]=me($0(C)),e[154]="TXS",a[154]=jt(),e[155]="uSHS",a[155]=rn($0(C)),e[156]="uSHY",a[156]=fn($0(p)),e[157]="STA",a[157]=me($0(p)),e[158]="uSHX",a[158]=an($0(C)),e[159]="uSHA",a[159]=pt($0(C)),e[160]="LDY",a[160]=De(c0),e[161]="LDA",a[161]=se(U0),e[162]="LDX",a[162]=ke(c0),e[163]="uLAX",a[163]=_e(U0),e[164]="LDY",a[164]=De(_0),e[165]="LDA",a[165]=se(_0),e[166]="LDX",a[166]=ke(_0),e[167]="uLAX",a[167]=_e(_0),e[168]="TAY",a[168]=ue(),e[169]="LDA",a[169]=se(c0),e[170]="TAX",a[170]=pe(),e[171]="uLXA",a[171]=tn(c0),e[172]="LDY",a[172]=De(D0),e[173]="LDA",a[173]=se(D0),e[174]="LDX",a[174]=ke(D0),e[175]="uLAX",a[175]=_e(D0),e[176]="BCS",a[176]=oe(X0,1),e[177]="LDA",a[177]=se(d0),e[178]="uKIL",a[178]=J0(),e[179]="uLAX",a[179]=_e(d0),e[180]="LDY",a[180]=De(b0(p)),e[181]="LDA",a[181]=se(b0(p)),e[182]="LDX",a[182]=ke(b0(C)),e[183]="uLAX",a[183]=_e(b0(C)),e[184]="CLV",a[184]=ne(),e[185]="LDA",a[185]=se(i0(C)),e[186]="TSX",a[186]=qe(),e[187]="uLAS",a[187]=en(i0(C)),e[188]="LDY",a[188]=De(i0(p)),e[189]="LDA",a[189]=se(i0(p)),e[190]="LDX",a[190]=ke(i0(C)),e[191]="uLAX",a[191]=_e(i0(C)),e[192]="CPY",a[192]=tt(c0),e[193]="CMP",a[193]=ie(U0),e[194]="uNOP",a[194]=S0(c0),e[195]="uDCP",a[195]=le(S),e[196]="CPY",a[196]=tt(_0),e[197]="CMP",a[197]=ie(_0),e[198]="DEC",a[198]=Me(R),e[199]="uDCP",a[199]=le(R),e[200]="INY",a[200]=Ge(),e[201]="CMP",a[201]=ie(c0),e[202]="DEX",a[202]=Q0(),e[203]="uSBX",a[203]=nn(c0),e[204]="CPY",a[204]=tt(D0),e[205]="CMP",a[205]=ie(D0),e[206]="DEC",a[206]=Me(D),e[207]="uDCP",a[207]=le(D),e[208]="BNE",a[208]=oe(q,0),e[209]="CMP",a[209]=ie(d0),e[210]="uKIL",a[210]=J0(),e[211]="uDCP",a[211]=le(Q),e[212]="uNOP",a[212]=S0(b0(p)),e[213]="CMP",a[213]=ie(b0(p)),e[214]="DEC",a[214]=Me(u(p)),e[215]="uDCP",a[215]=le(u(p)),e[216]="CLD",a[216]=j0(),e[217]="CMP",a[217]=ie(i0(C)),e[218]="uNOP",a[218]=S0(r0),e[219]="uDCP",a[219]=le(r(C)),e[220]="uNOP",a[220]=S0(i0(p)),e[221]="CMP",a[221]=ie(i0(p)),e[222]="DEC",a[222]=Me(r(p)),e[223]="uDCP",a[223]=le(r(p)),e[224]="CPX",a[224]=et(c0),e[225]="SBC",a[225]=te(U0),e[226]="uNOP",a[226]=S0(c0),e[227]="uISB",a[227]=be(S),e[228]="CPX",a[228]=et(_0),e[229]="SBC",a[229]=te(_0),e[230]="INC",a[230]=Fe(R),e[231]="uISB",a[231]=be(R),e[232]="INX",a[232]=K0(),e[233]="SBC",a[233]=te(c0),e[234]="NOP",a[234]=xe(),e[235]="SBC",a[235]=te(c0),e[236]="CPX",a[236]=et(D0),e[237]="SBC",a[237]=te(D0),e[238]="INC",a[238]=Fe(D),e[239]="uISB",a[239]=be(D),e[240]="BEQ",a[240]=oe(q,1),e[241]="SBC",a[241]=te(d0),e[242]="uKIL",a[242]=J0(),e[243]="uISB",a[243]=be(Q),e[244]="uNOP",a[244]=S0(b0(p)),e[245]="SBC",a[245]=te(b0(p)),e[246]="INC",a[246]=Fe(u(p)),e[247]="uISB",a[247]=be(u(p)),e[248]="SED",a[248]=Oe(),e[249]="SBC",a[249]=te(i0(C)),e[250]="uNOP",a[250]=S0(r0),e[251]="uISB",a[251]=be(r(C)),e[252]="uNOP",a[252]=S0(i0(p)),e[253]="SBC",a[253]=te(i0(p)),e[254]="INC",a[254]=Fe(r(p)),e[255]="uISB",a[255]=be(r(p));function _(){return r0(function(){U(o>127),o=o<<1&255,I(o),L(o)})}function y0(){return r0(function(){P=0})}function j0(){return r0(function(){N=0})}function I0(){return r0(function(){g=0})}function ne(){return r0(function(){Y=0})}function Q0(){return r0(function(){b=b-1&255,I(b),L(b)})}function ee(){return r0(function(){x=x-1&255,I(x),L(x)})}function K0(){return r0(function(){b=b+1&255,I(b),L(b)})}function Ge(){return r0(function(){x=x+1&255,I(x),L(x)})}function J(){return r0(function(){P=o&1,o>>>=1,I(o),f=0})}function xe(){return r0(function(){})}function E0(){return r0(function(){var l=o>127;o=(o<<1|P)&255,U(l),I(o),L(o)})}function Se(){return r0(function(){var l=o&1;o=o>>>1|P<<7,U(l),I(o),L(o)})}function Qe(){return r0(function(){P=1})}function Oe(){return r0(function(){N=1})}function ge(){return r0(function(){g=1})}function pe(){return r0(function(){b=o,I(b),L(b)})}function ue(){return r0(function(){x=o,I(x),L(x)})}function qe(){return r0(function(){b=m,I(b),L(b)})}function Pe(){return r0(function(){o=b,I(o),L(o)})}function jt(){return r0(function(){m=b})}function Jt(){return r0(function(){o=x,I(o),L(o)})}function J0(){return[W,function(){H0()},function(){x0--}]}function S0(l){return l(function(){V("NOP/DOP")})}function re(l){return l(function(){if(N){var h=k,z=(o&15)+(h&15)+P;z>9&&(z+=6);var v0=(o>>4)+(h>>4)+(z>15?1:0)<<4;I(o+h+P&255),L(v0),P0((o^v0)&~(o^h)&128),v0>159&&(v0+=96),U(v0>255),o=(v0|z&15)&255}else{var h0=o+k+P;U(h0>255),P0((o^h0)&(k^h0)&128),o=h0&255,I(o),L(o)}})}function ae(l){return l(function(){o&=k,I(o),L(o)})}function St(l){return l(function(){var h=k;I(o&h),P0(h&64),L(h)})}function ie(l){return l(function(){var h=o-k&255;U(o>=k),I(h),L(h)})}function et(l){return l(function(){var h=b-k&255;U(b>=k),I(h),L(h)})}function tt(l){return l(function(){var h=x-k&255;U(x>=k),I(h),L(h)})}function fe(l){return l(function(){o^=k,I(o),L(o)})}function se(l){return l(function(){o=k,I(o),L(o)})}function ke(l){return l(function(){b=k,I(b),L(b)})}function De(l){return l(function(){x=k,I(x),L(x)})}function ce(l){return l(function(){o|=k,I(o),L(o)})}function te(l){return l(function(){if(N){var h=k,z=(o&15)-(h&15)-(1-P),v0=(o>>4)-(h>>4)-(z<0?1:0);z<0&&(z-=6),v0<0&&(v0-=6);var h0=o-h-(1-P);U(~h0&256),P0((o^h)&(o^h0)&128),I(h0&255),L(h0),o=(v0<<4|z&15)&255}else h=~k&255,h0=o+h+P,U(h0>255),P0((o^h0)&(h^h0)&128),o=h0&255,I(o),L(o)})}function gt(l){return l(function(){V("ANC"),o&=k,I(o),f=P=o&128?1:0})}function Gt(l){return l(function(){V("ANE")})}function Qt(l){return l(function(){V("ARR");var h=o&k,z=P?128:0;h=h>>>1|z,o=h,I(h),L(h);var v0=o&96;v0==96?(P=1,Y=0):v0==0?(P=0,Y=0):v0==32?(P=0,Y=1):v0==64&&(P=1,Y=1)})}function qt(l){return l(function(){V("ASR");var h=o&k;P=h&1,h=h>>>1,o=h,I(h),f=0})}function en(l){return l(function(){V("LAS");var h=m&k;o=h,b=h,m=h,I(h),L(h)})}function _e(l){return l(function(){V("LAX");var h=k;o=h,b=h,I(h),L(h)})}function tn(l){return l(function(){V("LXA");var h=o&k;o=h,b=h,I(h),L(h)})}function nn(l){return l(function(){V("SBX");var h=o&b,z=k,v0=h-z&255;b=v0,U(h>=z),I(v0),L(v0)})}function me(l){return l(function(){k=o})}function nt(l){return l(function(){k=b})}function rt(l){return l(function(){k=x})}function Ee(l){return l(function(){V("SAX"),k=o&b})}function pt(l){return l(function(){V("SHA"),k=o&b&(Z>>>8)+1&255})}function rn(l){return l(function(){V("SHS");var h=o&b;m=h,k=h&(Z>>>8)+1&255})}function an(l){return l(function(){V("SHX"),k=b&(Z>>>8)+1&255})}function fn(l){return l(function(){V("SHY"),k=x&(Z>>>8)+1&255})}function Ze(l){return l(function(){U(k>127);var h=k<<1&255;k=h,I(h),L(h)})}function Me(l){return l(function(){var h=k-1&255;k=h,I(h),L(h)})}function Fe(l){return l(function(){var h=k+1&255;k=h,I(h),L(h)})}function Te(l){return l(function(){P=k&1,k>>>=1,I(k),f=0})}function Ue(l){return l(function(){var h=k>127,z=(k<<1|P)&255;k=z,U(h),I(z),L(z)})}function Xe(l){return l(function(){var h=k&1,z=k>>>1|P<<7;k=z,U(h),I(z),L(z)})}function le(l){return l(function(){V("DCP");var h=k-1&255;k=h,h=o-h,U(h>=0),I(h),L(h)})}function be(l){return l(function(){if(V("ISB"),k=k+1&255,N){var h=k,z=(o&15)-(h&15)-(1-P),v0=(o>>4)-(h>>4)-(z<0?1:0);z<0&&(z-=6),v0<0&&(v0-=6);var h0=o-h-(1-P);U(~h0&256),P0((o^h)&(o^h0)&128),I(h0&255),L(h0),o=(v0<<4|z&15)&255}else h=~k&255,h0=o+h+P,U(h0>255),P0((o^h0)&(h^h0)&128),o=h0&255,I(o),L(o)})}function de(l){return l(function(){V("RLA");var h=k,z=P;U(h&128),h=(h<<1|z)&255,k=h,o&=h,I(h),L(h)})}function he(l){return l(function(){V("RRA");var h=k,z=P?128:0;if(U(h&1),h=h>>>1|z,k=h,N){var v0=k,h0=(o&15)+(v0&15)+P;h0>9&&(h0+=6);var we=(o>>4)+(v0>>4)+(h0>15?1:0)<<4;I(o+v0+P&255),L(we),P0((o^we)&~(o^v0)&128),we>159&&(we+=96),U(we>255),o=(we|h0&15)&255}else{var He=o+k+P;U(He>255),P0((o^He)&(k^He)&128),o=He&255,I(o),L(o)}})}function Ae(l){return l(function(){V("SLO");var h=k;U(h&128),h=h<<1&255,k=h,h=o|h,o=h,I(h),L(h)})}function Ce(l){return l(function(){V("SRE");var h=k;U(h&1),h=h>>>1,k=h,h=(o^h)&255,o=h,I(h),L(h)})}function sn(){return[W,A0,function(){j(o)},F]}function cn(){return[W,A0,function(){j(u0())},F]}function on(){return[W,A0,C0,function(){o=n0(),I(o),L(o)},F]}function xn(){return[W,A0,C0,function(){N0(n0())},F]}function un(){return[W,y,C0,function(){j(i>>>8&255)},function(){j(i&255)},T0,function(){i=$,F()}]}function mn(){return[W,a0,function(){A.debug&&A.breakpoint("BRK "+k),j(i>>>8&255)},function(){j(i&255)},function(){j(u0())},function(){$=t.read(k0)},function(){$|=t.read(k0+1)<<8},function(){i=$,g=1,F()}]}function ln(){return[W,a0,function(){A.debug&&A.breakpoint("IRQ "+k),j(i>>>8&255)},function(){j(i&255)},function(){j(u0()&-17)},function(){$=t.read(k0)},function(){$|=t.read(k0+1)<<8},function(){i=$,F()}]}function bn(){return[W,a0,function(){A.debug&&A.breakpoint("NMI "+k),j(i>>>8&255)},function(){j(i&255)},function(){j(u0()&-17)},function(){$=t.read(Z0)},function(){$|=t.read(Z0+1)<<8},function(){i=$,F()}]}function dn(){return[W,A0,C0,function(){N0(n0())},function(){$=n0()},function(){$|=n0()<<8},function(){i=$,F()}]}function hn(){return[W,A0,C0,function(){$=n0()},function(){$|=n0()<<8},function(){i=$,a0()},F]}function An(){return[W,y,T0,function(){i=$,F()}]}function Cn(){return[W,F0,p0,m0,function(){s0(),L0()},function(){i=Z,F()}]}function oe(l,h){var z;return l===q?z=function(){return B===h}:l===V0?z=function(){return f===h}:l===X0?z=function(){return P===h}:z=function(){return Y===h},[W,o0,function(){z()?(A0(),E()):F()},function(){g0?(A0(),t0()):F()},F]}this.saveState=function(){return{PC:i-1&65535,A:o,X:b,Y:x,SP:m,N:f,V:Y,D:N,I:g,Z:B,C:P,T:x0,o:R0,R:n?1:0,d:k,AD:$,BA:Z,BC:H?1:0,IA:s,bo:c,boa:g0}},this.loadState=function(l){i=l.PC+1&65535,o=l.A,b=l.X,x=l.Y,m=l.SP,f=l.N,Y=l.V,N=l.D,g=l.I,B=l.Z,P=l.C,x0=l.T,R0=l.o,n=!!l.R,k=l.d,$=l.AD,Z=l.BA,H=!!l.BC,s=l.IA,c=l.bo,g0=l.boa,d=R0<0?[W]:a[R0]},this.toString=function(){return"CPU PC: "+i.toString(16)+" op: "+R0.toString()+" T: "+x0+" data: "+k+` +import{a as it,b as ft,c as st}from"./chunk-UACHXWHT.js";import{D as wt,P as kt,Q as Dt,T as Ye,W as Rt,X as at,aa as Bt,g as K,j as _t,s as Ve}from"./chunk-ZTLOJICZ.js";var gn=[{mn:"BRK",am:"",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:"SI"},{mn:"ORA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHP",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"ORA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BPL",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ORA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"ORA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SLO",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"JSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:"S"},{mn:"AND",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BIT",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PLP",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SCZIDVN"},{mn:"AND",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"BIT",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BMI",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"AND",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"SEC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"AND",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RLA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTI",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"SCZIDVN"},{mn:"EOR",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHA",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"EOR",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ASR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"JMP",am:"AAAA",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"EOR",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BVC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"EOR",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"EOR",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SRE",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTS",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"S"},{mn:"ADC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"PLA",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SAZN"},{mn:"ADC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ARR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"JMP",am:"(AAAA)",nb:3,il:0,c1:5,c2:0,nw:0,br:1,mod:""},{mn:"ADC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BVS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ADC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SEI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"ADC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RRA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"STA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"DEY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"TXA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ANE",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"BCC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"STA",am:"(aa),y",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SHA",am:"(aa),y",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa,y",nb:3,il:1,c1:4,c2:0,nw:1,br:1,mod:""},{mn:"TYA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STA",am:"AAAA,y",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"TXS",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"S"},{mn:"SHS",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:"S"},{mn:"SHY",am:"AAAA,x",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA,x",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHX",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHA",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"LDY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"TAY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"TAX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LXA",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"BCS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"LDA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"LAX",am:"(aa),y",nb:2,il:1,c1:5,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa,y",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"CLV",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"V"},{mn:"LDA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"TSX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAS",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"SAXZN"},{mn:"LDY",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"CPY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"INY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"CMP",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBX",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"XCZN"},{mn:"CPY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"BNE",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"CMP",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"CZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"DCP",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CLD",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"CMP",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"CPX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"INX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"CPX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BEQ",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"SBC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"ISB",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SED",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"SBC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"}];function ct(A,t,n,i){var m=gn[t];if(m==null)return{line:"???",nbytes:1,isaddr:!1};var o=m.mn,b=m.am,x=!1;if(b=="branch"){var f=n<128?A+2+n:A+2-(256-n);f&=65535,b="$"+K(f,4),x=!0}else b=b.replace("aa","$"+K(n,2)),b=b.replace("AAAA","$"+K(n+(i<<8),4)),b.indexOf("#")<0&&b.indexOf("$")>=0&&(x=!0);return{line:m.mn+" "+b,nbytes:m.nb,isaddr:x,iscall:m.mn=="JSR"}}function pn(A){let t=A;if(!t||typeof t.mem_read!="function"||typeof t.mem_write!="function"||typeof t.io_read!="function"||typeof t.io_write!="function")throw"Z80: Core object is missing required functions.";let n=0,i=0,m=0,o=0,b=0,x=0,f=0,Y=0,N=0,g=0,B=0,P=0,x0=0,R0=0,d=0,k=0,$=0,Z=0,H=0,s=0,c={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},g0={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},Z0=0,X=0,k0=0,p=!1,C=!1,V0=!1,e0=0;function q(){return{PC:s,SP:H,IX:d,IY:k,AF:(n<<8)+T0(),BC:(i<<8)+m,DE:(o<<8)+b,HL:(x<<8)+f,AF_:(Y<<8)+Y0(),BC_:(N<<8)+g,DE_:(B<<8)+P,HL_:(x0<<8)+R0,IR:($<<8)+Z,im:Z0,iff1:X,iff2:k0,halted:p,do_delayed_di:C,do_delayed_ei:V0,cycle_counter:e0}}function X0(e){s=e.PC,H=e.SP,d=e.IX,k=e.IY,n=e.AF>>8&255,M0(e.AF),i=e.BC>>8&255,m=e.BC&255,o=e.DE>>8&255,b=e.DE&255,x=e.HL>>8&255,f=e.HL&255,Y=e.AF_>>8&255,w0(e.AF_),N=e.BC_>>8&255,g=e.BC_&255,B=e.DE_>>8&255,P=e.DE_&255,x0=e.HL_>>8&255,R0=e.HL_&255,$=e.IR>>8&255,Z=e.IR&255,Z0=e.im,X=e.iff1,k0=e.iff2,p=e.halted,C=e.do_delayed_di,V0=e.do_delayed_ei,e0=e.cycle_counter}let W=function(){H=0,s=0,n=0,Z=0,M0(0),Z0=0,X=0,k0=0,p=!1,C=!1,V0=!1,e0=0},F=function(){if(p)return 1;var e=!1,a=!1;C?(C=!1,e=!0):V0&&(V0=!1,a=!0),Z=Z&128|(Z&127)+1&127;var _=t.mem_read(s);o0(_),s=s+1&65535,e?(X=0,k0=0):a&&(X=1,k0=1);var y0=e0;return e0=0,y0},A0=function(e,a){if(e)return Z=Z&128|(Z&127)+1&127,p=!1,k0=X,X=0,L0(s),s=102,e0+=11,!0;if(X){if(Z=Z&128|(Z&127)+1&127,p=!1,X=0,k0=0,Z0===0)s=s-1&65535,o0(a),s=s+1&65535,e0+=2;else if(Z0===1)L0(s),s=56,e0+=13;else if(Z0===2){L0(s);var _=$<<8|a;s=t.mem_read(_)|t.mem_read(_+1&65535)<<8,e0+=19}return!0}},o0=function(e){var a=function(I0){return(I0&7)===0?i:(I0&7)===1?m:(I0&7)===2?o:(I0&7)===3?b:(I0&7)===4?x:(I0&7)===5?f:(I0&7)===6?t.mem_read(f|x<<8):n};if(e===118)p=!0;else if(e>=64&&e<128){var _=a(e);(e&56)>>>3?(e&56)>>>3===1?m=_:(e&56)>>>3===2?o=_:(e&56)>>>3===3?b=_:(e&56)>>>3===4?x=_:(e&56)>>>3===5?f=_:(e&56)>>>3===6?t.mem_write(f|x<<8,_):(e&56)>>>3===7&&(n=_):i=_}else if(e>=128&&e<192){var _=a(e),y0=[s0,a0,O,w,f0,t0,E,M];y0[(e&56)>>>3](_)}else{var j0=v[e];j0()}e0+=u[e]},y=function(e){return e&=255,e&128&&(e=-((255&~e)+1)),e},T0=function(){return c.S<<7|c.Z<<6|c.Y<<5|c.H<<4|c.X<<3|c.P<<2|c.N<<1|c.C},Y0=function(){return g0.S<<7|g0.Z<<6|g0.Y<<5|g0.H<<4|g0.X<<3|g0.P<<2|g0.N<<1|g0.C},M0=function(e){c.S=(e&128)>>>7,c.Z=(e&64)>>>6,c.Y=(e&32)>>>5,c.H=(e&16)>>>4,c.X=(e&8)>>>3,c.P=(e&4)>>>2,c.N=(e&2)>>>1,c.C=e&1},w0=function(e){g0.S=(e&128)>>>7,g0.Z=(e&64)>>>6,g0.Y=(e&32)>>>5,g0.H=(e&16)>>>4,g0.X=(e&8)>>>3,g0.P=(e&4)>>>2,g0.N=(e&2)>>>1,g0.C=e&1},G=function(e){c.Y=(e&32)>>>5,c.X=(e&8)>>>3},m0=function(e){var a=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];return a[e]},L0=function(e){H=H-1&65535,t.mem_write(H,(e&65280)>>>8),H=H-1&65535,t.mem_write(H,e&255)},l0=function(){var e=t.mem_read(H)&255;return H=H+1&65535,e|=t.mem_read(H)<<8,H=H+1&65535,e},B0=function(e){e?(s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},W0=function(e){if(e){e0+=5;var a=y(t.mem_read(s+1&65535));s=s+a+1&65535}else s=s+1&65535},O0=function(e){e?(e0+=7,L0(s+3&65535),s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},F0=function(e){e&&(e0+=6,s=l0()-1&65535)},p0=function(e){L0(s+1&65535),s=e-1&65535},s0=function(e){var a=n+e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,G(n)},a0=function(e){var a=n+e+c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)+c.C&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,G(n)},O=function(e){var a=n-e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,G(n)},w=function(e){var a=n-e-c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)-c.C&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,G(n)},M=function(e){var a=n;O(e),n=a,G(e)},f0=function(e){n&=e&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=1,c.P=m0(n),c.N=0,c.C=0,G(n)},E=function(e){n=(e|n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n),c.N=0,c.C=0,G(n)},t0=function(e){n=(e^n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n),c.N=0,c.C=0,G(n)},I=function(e){var a=e+1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===15?1:0,c.P=e===127?1:0,c.N=0,a&=255,G(a),a},L=function(e){var a=e-1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===0?1:0,c.P=e===128?1:0,c.N=1,a&=255,G(a),a},P0=function(e){var a=f|x<<8,_=a+e;c.N=0,c.C=_&65536?1:0,c.H=(a&4095)+(e&4095)&4096?1:0,f=_&255,x=(_&65280)>>>8,G(x)},U=function(e){e+=c.C;var a=f|x<<8,_=a+e;c.S=_&32768?1:0,c.Z=_&65535?0:1,c.H=(a&4095)+(e&4095)&4096?1:0,c.P=(a&32768)===(e&32768)&&(_&32768)!==(a&32768)?1:0,c.N=0,c.C=_&65536?1:0,f=_&255,x=_>>>8&255,G(x)},n0=function(e){e+=c.C;var a=f|x<<8,_=a-e;c.S=_&32768?1:0,c.Z=_&65535?0:1,c.H=(a&4095)-(e&4095)&4096?1:0,c.P=(a&32768)!==(e&32768)&&(_&32768)!==(a&32768)?1:0,c.N=1,c.C=_&65536?1:0,f=_&255,x=_>>>8&255,G(x)},C0=function(e){var a=t.io_read(e);return c.S=a&128?1:0,c.Z=a?0:1,c.H=0,c.P=m0(a)?1:0,c.N=0,G(a),a},j=function(){n!==128&&(n=y(n),n=-n&255),c.S=n&128?1:0,c.Z=n?0:1,c.H=(-n&15)>0?1:0,c.P=n===128?1:0,c.N=1,c.C=n?1:0,G(n)},u0=function(){var e=t.mem_read(f|x<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)+1;b=a&255,o=(a&65280)>>>8,a=(f|x<<8)+1,f=a&255,x=(a&65280)>>>8,a=(m|i<<8)-1,m=a&255,i=(a&65280)>>>8,c.H=0,c.P=m||i?1:0,c.N=0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},N0=function(){var e=c.C,a=t.mem_read(f|x<<8);M(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var _=(f|x<<8)+1;f=_&255,x=(_&65280)>>>8,_=(m|i<<8)-1,m=_&255,i=(_&65280)>>>8,c.P=_?1:0},V=function(){i=L(i),t.mem_write(f|x<<8,t.io_read(i<<8|m));var e=(f|x<<8)+1;f=e&255,x=(e&65280)>>>8,c.N=1},H0=function(){t.io_write(i<<8|m,t.mem_read(f|x<<8));var e=(f|x<<8)+1;f=e&255,x=(e&65280)>>>8,i=L(i),c.N=1},r0=function(){c.N=0,c.H=0;var e=t.mem_read(f|x<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)-1;b=a&255,o=(a&65280)>>>8,a=(f|x<<8)-1,f=a&255,x=(a&65280)>>>8,a=(m|i<<8)-1,m=a&255,i=(a&65280)>>>8,c.P=m||i?1:0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},c0=function(){var e=c.C,a=t.mem_read(f|x<<8);M(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var _=(f|x<<8)-1;f=_&255,x=(_&65280)>>>8,_=(m|i<<8)-1,m=_&255,i=(_&65280)>>>8,c.P=_?1:0},_0=function(){i=L(i),t.mem_write(f|x<<8,t.io_read(i<<8|m));var e=(f|x<<8)-1;f=e&255,x=(e&65280)>>>8,c.N=1},D0=function(){t.io_write(i<<8|m,t.mem_read(f|x<<8));var e=(f|x<<8)-1;f=e&255,x=(e&65280)>>>8,i=L(i),c.N=1},U0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=(e<<1|c.C)&255,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},i0=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|c.C<<7,c.Z=e&255?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e&255},b0=function(e){c.N=0,c.H=0;var a=c.C;return c.C=(e&128)>>>7,e=(e<<1|a)&255,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},d0=function(e){c.N=0,c.H=0;var a=c.C;return c.C=e&1,e=e>>>1&127|a<<7,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},z0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},T=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|e&128,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},q0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255|1,c.Z=e?0:1,c.P=m0(e),c.S=e&128?1:0,G(e),e},$0=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127,c.Z=e?0:1,c.P=m0(e),c.S=0,G(e),e},G0=function(e){c.N=0;var a=d+e;c.C=a&65536?1:0,c.H=(d&4095)+(e&4095)&4096?1:0,G((a&65280)>>>8),d=a&65535},v=[];v[0]=function(){},v[1]=function(){s=s+1&65535,m=t.mem_read(s),s=s+1&65535,i=t.mem_read(s)},v[2]=function(){t.mem_write(m|i<<8,n)},v[3]=function(){var e=m|i<<8;e+=1,m=e&255,i=(e&65280)>>>8},v[4]=function(){i=I(i)},v[5]=function(){i=L(i)},v[6]=function(){s=s+1&65535,i=t.mem_read(s)},v[7]=function(){var e=c.S,a=c.Z,_=c.P;n=U0(n),c.S=e,c.Z=a,c.P=_},v[8]=function(){var e=n;n=Y,Y=e,e=T0(),M0(Y0()),w0(e)},v[9]=function(){P0(m|i<<8)},v[10]=function(){n=t.mem_read(m|i<<8)},v[11]=function(){var e=m|i<<8;e-=1,m=e&255,i=(e&65280)>>>8},v[12]=function(){m=I(m)},v[13]=function(){m=L(m)},v[14]=function(){s=s+1&65535,m=t.mem_read(s)},v[15]=function(){var e=c.S,a=c.Z,_=c.P;n=i0(n),c.S=e,c.Z=a,c.P=_},v[16]=function(){i=i-1&255,W0(i!==0)},v[17]=function(){s=s+1&65535,b=t.mem_read(s),s=s+1&65535,o=t.mem_read(s)},v[18]=function(){t.mem_write(b|o<<8,n)},v[19]=function(){var e=b|o<<8;e+=1,b=e&255,o=(e&65280)>>>8},v[20]=function(){o=I(o)},v[21]=function(){o=L(o)},v[22]=function(){s=s+1&65535,o=t.mem_read(s)},v[23]=function(){var e=c.S,a=c.Z,_=c.P;n=b0(n),c.S=e,c.Z=a,c.P=_},v[24]=function(){var e=y(t.mem_read(s+1&65535));s=s+e+1&65535},v[25]=function(){P0(b|o<<8)},v[26]=function(){n=t.mem_read(b|o<<8)},v[27]=function(){var e=b|o<<8;e-=1,b=e&255,o=(e&65280)>>>8},v[28]=function(){b=I(b)},v[29]=function(){b=L(b)},v[30]=function(){s=s+1&65535,b=t.mem_read(s)},v[31]=function(){var e=c.S,a=c.Z,_=c.P;n=d0(n),c.S=e,c.Z=a,c.P=_},v[32]=function(){W0(!c.Z)},v[33]=function(){s=s+1&65535,f=t.mem_read(s),s=s+1&65535,x=t.mem_read(s)},v[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,x)},v[35]=function(){var e=f|x<<8;e+=1,f=e&255,x=(e&65280)>>>8},v[36]=function(){x=I(x)},v[37]=function(){x=L(x)},v[38]=function(){s=s+1&65535,x=t.mem_read(s)},v[39]=function(){var e=n;c.N?((c.H||(n&15)>9)&&(e-=6),(c.C||n>153)&&(e-=96)):((c.H||(n&15)>9)&&(e+=6),(c.C||n>153)&&(e+=96)),c.S=e&128?1:0,c.Z=e&255?0:1,c.H=n&16^e&16?1:0,c.P=m0(e&255),c.C=c.C||n>153?1:0,n=e&255,G(n)},v[40]=function(){W0(!!c.Z)},v[41]=function(){P0(f|x<<8)},v[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),x=t.mem_read(e+1&65535)},v[43]=function(){var e=f|x<<8;e-=1,f=e&255,x=(e&65280)>>>8},v[44]=function(){f=I(f)},v[45]=function(){f=L(f)},v[46]=function(){s=s+1&65535,f=t.mem_read(s)},v[47]=function(){n=~n&255,c.N=1,c.H=1,G(n)},v[48]=function(){W0(!c.C)},v[49]=function(){H=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s+2&65535},v[50]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,n)},v[51]=function(){H=H+1&65535},v[52]=function(){var e=f|x<<8;t.mem_write(e,I(t.mem_read(e)))},v[53]=function(){var e=f|x<<8;t.mem_write(e,L(t.mem_read(e)))},v[54]=function(){s=s+1&65535,t.mem_write(f|x<<8,t.mem_read(s))},v[55]=function(){c.N=0,c.H=0,c.C=1,G(n)},v[56]=function(){W0(!!c.C)},v[57]=function(){P0(H)},v[58]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,n=t.mem_read(e)},v[59]=function(){H=H-1&65535},v[60]=function(){n=I(n)},v[61]=function(){n=L(n)},v[62]=function(){n=t.mem_read(s+1&65535),s=s+1&65535},v[63]=function(){c.N=0,c.H=c.C,c.C=c.C?0:1,G(n)},v[192]=function(){F0(!c.Z)},v[193]=function(){var e=l0();m=e&255,i=(e&65280)>>>8},v[194]=function(){B0(!c.Z)},v[195]=function(){s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535},v[196]=function(){O0(!c.Z)},v[197]=function(){L0(m|i<<8)},v[198]=function(){s=s+1&65535,s0(t.mem_read(s))},v[199]=function(){p0(0)},v[200]=function(){F0(!!c.Z)},v[201]=function(){s=l0()-1&65535},v[202]=function(){B0(!!c.Z)},v[203]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=(e&56)>>>3,_=e&7;if(e<64){var y0=[U0,i0,b0,d0,z0,T,q0,$0];_===0?i=y0[a](i):_===1?m=y0[a](m):_===2?o=y0[a](o):_===3?b=y0[a](b):_===4?x=y0[a](x):_===5?f=y0[a](f):_===6?t.mem_write(f|x<<8,y0[a](t.mem_read(f|x<<8))):_===7&&(n=y0[a](n))}else e<128?(_===0?c.Z=i&1<>>8},v[210]=function(){B0(!c.C)},v[211]=function(){s=s+1&65535,t.io_write(n<<8|t.mem_read(s),n)},v[212]=function(){O0(!c.C)},v[213]=function(){L0(b|o<<8)},v[214]=function(){s=s+1&65535,O(t.mem_read(s))},v[215]=function(){p0(16)},v[216]=function(){F0(!!c.C)},v[217]=function(){var e=i;i=N,N=e,e=m,m=g,g=e,e=o,o=B,B=e,e=b,b=P,P=e,e=x,x=x0,x0=e,e=f,f=R0,R0=e},v[218]=function(){B0(!!c.C)},v[219]=function(){s=s+1&65535,n=t.io_read(n<<8|t.mem_read(s))},v[220]=function(){O0(!!c.C)},v[221]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=D[e];a?(a(),e0+=Q[e]):(s=s-1&65535,e0+=u[0])},v[222]=function(){s=s+1&65535,w(t.mem_read(s))},v[223]=function(){p0(24)},v[224]=function(){F0(!c.P)},v[225]=function(){var e=l0();f=e&255,x=(e&65280)>>>8},v[226]=function(){B0(!c.P)},v[227]=function(){var e=t.mem_read(H);t.mem_write(H,f),f=e,e=t.mem_read(H+1&65535),t.mem_write(H+1&65535,x),x=e},v[228]=function(){O0(!c.P)},v[229]=function(){L0(f|x<<8)},v[230]=function(){s=s+1&65535,f0(t.mem_read(s))},v[231]=function(){p0(32)},v[232]=function(){F0(!!c.P)},v[233]=function(){s=f|x<<8,s=s-1&65535},v[234]=function(){B0(!!c.P)},v[235]=function(){var e=o;o=x,x=e,e=b,b=f,f=e},v[236]=function(){O0(!!c.P)},v[237]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=R[e];a?(a(),e0+=r[e]):e0+=u[0]},v[238]=function(){s=s+1&65535,t0(t.mem_read(s))},v[239]=function(){p0(40)},v[240]=function(){F0(!c.S)},v[241]=function(){var e=l0();M0(e&255),n=(e&65280)>>>8},v[242]=function(){B0(!c.S)},v[243]=function(){C=!0},v[244]=function(){O0(!c.S)},v[245]=function(){L0(T0()|n<<8)},v[246]=function(){s=s+1&65535,E(t.mem_read(s))},v[247]=function(){p0(48)},v[248]=function(){F0(!!c.S)},v[249]=function(){H=f|x<<8},v[250]=function(){B0(!!c.S)},v[251]=function(){V0=!0},v[252]=function(){O0(!!c.S)},v[253]=function(){Z=Z&128|(Z&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=D[e];if(a){var _=d;d=k,a(),k=d,d=_,e0+=Q[e]}else s=s-1&65535,e0+=u[0]},v[254]=function(){s=s+1&65535,M(t.mem_read(s))},v[255]=function(){p0(56)};let R=[];R[64]=function(){i=C0(i<<8|m)},R[65]=function(){t.io_write(i<<8|m,i)},R[66]=function(){n0(m|i<<8)},R[67]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,m),t.mem_write(e+1&65535,i)},R[68]=function(){j()},R[69]=function(){s=l0()-1&65535,X=k0},R[70]=function(){Z0=0},R[71]=function(){$=n},R[72]=function(){m=C0(i<<8|m)},R[73]=function(){t.io_write(i<<8|m,m)},R[74]=function(){U(m|i<<8)},R[75]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,m=t.mem_read(e),i=t.mem_read(e+1&65535)},R[76]=function(){j()},R[77]=function(){s=l0()-1&65535},R[78]=function(){Z0=0},R[79]=function(){Z=n},R[80]=function(){o=C0(i<<8|m)},R[81]=function(){t.io_write(i<<8|m,o)},R[82]=function(){n0(b|o<<8)},R[83]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,b),t.mem_write(e+1&65535,o)},R[84]=function(){j()},R[85]=function(){s=l0()-1&65535,X=k0},R[86]=function(){Z0=1},R[87]=function(){n=$,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=k0,c.N=0,G(n)},R[88]=function(){b=C0(i<<8|m)},R[89]=function(){t.io_write(i<<8|m,b)},R[90]=function(){U(b|o<<8)},R[91]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,b=t.mem_read(e),o=t.mem_read(e+1&65535)},R[92]=function(){j()},R[93]=function(){s=l0()-1&65535,X=k0},R[94]=function(){Z0=2},R[95]=function(){n=Z,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=k0,c.N=0,G(n)},R[96]=function(){x=C0(i<<8|m)},R[97]=function(){t.io_write(i<<8|m,x)},R[98]=function(){n0(f|x<<8)},R[99]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,x)},R[100]=function(){j()},R[101]=function(){s=l0()-1&65535,X=k0},R[102]=function(){Z0=0},R[103]=function(){var e=t.mem_read(f|x<<8),a=e&15,_=n&15;e=(e&240)>>>4|_<<4,n=n&240|a,t.mem_write(f|x<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n)?1:0,c.N=0,G(n)},R[104]=function(){f=C0(i<<8|m)},R[105]=function(){t.io_write(i<<8|m,f)},R[106]=function(){U(f|x<<8)},R[107]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),x=t.mem_read(e+1&65535)},R[108]=function(){j()},R[109]=function(){s=l0()-1&65535,X=k0},R[110]=function(){Z0=0},R[111]=function(){var e=t.mem_read(f|x<<8),a=e&240,_=n&15;e=(e&15)<<4|_,n=n&240|a>>>4,t.mem_write(f|x<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=m0(n)?1:0,c.N=0,G(n)},R[112]=function(){C0(i<<8|m)},R[113]=function(){t.io_write(i<<8|m,0)},R[114]=function(){n0(H)},R[115]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,H&255),t.mem_write(e+1&65535,H>>>8&255)},R[116]=function(){j()},R[117]=function(){s=l0()-1&65535,X=k0},R[118]=function(){Z0=1},R[120]=function(){n=C0(i<<8|m)},R[121]=function(){t.io_write(i<<8|m,n)},R[122]=function(){U(H)},R[123]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,H=t.mem_read(e),H|=t.mem_read(e+1&65535)<<8},R[124]=function(){j()},R[125]=function(){s=l0()-1&65535,X=k0},R[126]=function(){Z0=2},R[160]=function(){u0()},R[161]=function(){N0()},R[162]=function(){V()},R[163]=function(){H0()},R[168]=function(){r0()},R[169]=function(){c0()},R[170]=function(){_0()},R[171]=function(){D0()},R[176]=function(){u0(),(i||m)&&(e0+=5,s=s-2&65535)},R[177]=function(){N0(),!c.Z&&(i||m)&&(e0+=5,s=s-2&65535)},R[178]=function(){V(),i&&(e0+=5,s=s-2&65535)},R[179]=function(){H0(),i&&(e0+=5,s=s-2&65535)},R[184]=function(){r0(),(i||m)&&(e0+=5,s=s-2&65535)},R[185]=function(){c0(),!c.Z&&(i||m)&&(e0+=5,s=s-2&65535)},R[186]=function(){_0(),i&&(e0+=5,s=s-2&65535)},R[187]=function(){D0(),i&&(e0+=5,s=s-2&65535)};let D=[];D[9]=function(){G0(m|i<<8)},D[25]=function(){G0(b|o<<8)},D[33]=function(){s=s+1&65535,d=t.mem_read(s),s=s+1&65535,d|=t.mem_read(s)<<8},D[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,d&255),t.mem_write(e+1&65535,d>>>8&255)},D[35]=function(){d=d+1&65535},D[36]=function(){d=I(d>>>8)<<8|d&255},D[37]=function(){d=L(d>>>8)<<8|d&255},D[38]=function(){s=s+1&65535,d=t.mem_read(s)<<8|d&255},D[41]=function(){G0(d)},D[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,d=t.mem_read(e),d|=t.mem_read(e+1&65535)<<8},D[43]=function(){d=d-1&65535},D[44]=function(){d=I(d&255)|d&65280},D[45]=function(){d=L(d&255)|d&65280},D[46]=function(){s=s+1&65535,d=t.mem_read(s)&255|d&65280},D[52]=function(){s=s+1&65535;var e=y(t.mem_read(s)),a=t.mem_read(e+d&65535);t.mem_write(e+d&65535,I(a))},D[53]=function(){s=s+1&65535;var e=y(t.mem_read(s)),a=t.mem_read(e+d&65535);t.mem_write(e+d&65535,L(a))},D[54]=function(){s=s+1&65535;var e=y(t.mem_read(s));s=s+1&65535,t.mem_write(d+e&65535,t.mem_read(s))},D[57]=function(){G0(H)},D[68]=function(){i=d>>>8&255},D[69]=function(){i=d&255},D[70]=function(){s=s+1&65535;var e=y(t.mem_read(s));i=t.mem_read(d+e&65535)},D[76]=function(){m=d>>>8&255},D[77]=function(){m=d&255},D[78]=function(){s=s+1&65535;var e=y(t.mem_read(s));m=t.mem_read(d+e&65535)},D[84]=function(){o=d>>>8&255},D[85]=function(){o=d&255},D[86]=function(){s=s+1&65535;var e=y(t.mem_read(s));o=t.mem_read(d+e&65535)},D[92]=function(){b=d>>>8&255},D[93]=function(){b=d&255},D[94]=function(){s=s+1&65535;var e=y(t.mem_read(s));b=t.mem_read(d+e&65535)},D[96]=function(){d=d&255|i<<8},D[97]=function(){d=d&255|m<<8},D[98]=function(){d=d&255|o<<8},D[99]=function(){d=d&255|b<<8},D[100]=function(){},D[101]=function(){d=d&255|(d&255)<<8},D[102]=function(){s=s+1&65535;var e=y(t.mem_read(s));x=t.mem_read(d+e&65535)},D[103]=function(){d=d&255|n<<8},D[104]=function(){d=d&65280|i},D[105]=function(){d=d&65280|m},D[106]=function(){d=d&65280|o},D[107]=function(){d=d&65280|b},D[108]=function(){d=d&65280|d>>>8},D[109]=function(){},D[110]=function(){s=s+1&65535;var e=y(t.mem_read(s));f=t.mem_read(d+e&65535)},D[111]=function(){d=d&65280|n},D[112]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,i)},D[113]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,m)},D[114]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,o)},D[115]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,b)},D[116]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,x)},D[117]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,f)},D[119]=function(){s=s+1&65535;var e=y(t.mem_read(s));t.mem_write(d+e&65535,n)},D[124]=function(){n=d>>>8&255},D[125]=function(){n=d&255},D[126]=function(){s=s+1&65535;var e=y(t.mem_read(s));n=t.mem_read(d+e&65535)},D[132]=function(){s0(d>>>8&255)},D[133]=function(){s0(d&255)},D[134]=function(){s=s+1&65535;var e=y(t.mem_read(s));s0(t.mem_read(d+e&65535))},D[140]=function(){a0(d>>>8&255)},D[141]=function(){a0(d&255)},D[142]=function(){s=s+1&65535;var e=y(t.mem_read(s));a0(t.mem_read(d+e&65535))},D[148]=function(){O(d>>>8&255)},D[149]=function(){O(d&255)},D[150]=function(){s=s+1&65535;var e=y(t.mem_read(s));O(t.mem_read(d+e&65535))},D[156]=function(){w(d>>>8&255)},D[157]=function(){w(d&255)},D[158]=function(){s=s+1&65535;var e=y(t.mem_read(s));w(t.mem_read(d+e&65535))},D[164]=function(){f0(d>>>8&255)},D[165]=function(){f0(d&255)},D[166]=function(){s=s+1&65535;var e=y(t.mem_read(s));f0(t.mem_read(d+e&65535))},D[172]=function(){t0(d>>>8&255)},D[173]=function(){t0(d&255)},D[174]=function(){s=s+1&65535;var e=y(t.mem_read(s));t0(t.mem_read(d+e&65535))},D[180]=function(){E(d>>>8&255)},D[181]=function(){E(d&255)},D[182]=function(){s=s+1&65535;var e=y(t.mem_read(s));E(t.mem_read(d+e&65535))},D[188]=function(){M(d>>>8&255)},D[189]=function(){M(d&255)},D[190]=function(){s=s+1&65535;var e=y(t.mem_read(s));M(t.mem_read(d+e&65535))},D[203]=function(){s=s+1&65535;var e=y(t.mem_read(s));s=s+1&65535;var a=t.mem_read(s),_;if(a<64){var y0=[U0,i0,b0,d0,z0,T,q0,$0],j0=y0[(a&56)>>>3],_=j0(t.mem_read(d+e&65535));t.mem_write(d+e&65535,_)}else{var I0=(a&56)>>>3;a<128?(c.N=0,c.H=1,c.Z=t.mem_read(d+e&65535)&1<>>8&255)},D[229]=function(){L0(d)},D[233]=function(){s=d-1&65535},D[249]=function(){H=d};let u=[4,10,7,6,4,4,7,4,4,11,7,6,4,4,7,4,8,10,7,6,4,4,7,4,12,11,7,6,4,4,7,4,7,10,16,6,4,4,7,4,7,11,16,6,4,4,7,4,7,10,13,6,11,11,10,4,7,11,13,6,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,7,7,7,7,7,7,4,7,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,5,10,10,10,10,11,7,11,5,10,10,0,10,17,7,11,5,10,10,11,10,11,7,11,5,4,10,11,10,0,7,11,5,10,10,19,10,11,7,11,5,4,10,4,10,0,7,11,5,10,10,4,10,11,7,11,5,6,10,4,10,0,7,11],r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,0,12,12,15,20,8,14,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],S=[8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8],Q=[0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,14,20,10,8,8,11,0,0,15,20,10,8,8,11,0,0,0,0,0,23,23,19,0,0,15,0,0,0,0,0,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,8,8,8,8,8,8,19,8,8,8,8,8,8,8,19,8,19,19,19,19,19,19,0,19,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,23,0,15,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0];this.saveState=q,this.loadState=X0,this.reset=W,this.advanceInsn=F,this.interrupt=A0,this.getPC=()=>s,this.getSP=()=>H,this.getHalted=()=>p}var We=class{constructor(){this.retryInterrupts=!1;this.retryData=-1}buildCPU(){this.memBus&&this.ioBus&&!this.cpu&&(this.cpu=new pn({mem_read:t=>this.memBus.read(t),mem_write:(t,n)=>this.memBus.write(t,n),io_read:t=>this.ioBus.read(t),io_write:(t,n)=>this.ioBus.write(t,n)}))}connectMemoryBus(t){this.memBus=t,this.buildCPU()}connectIOBus(t){this.ioBus=t,this.buildCPU()}advanceInsn(){return this.retryInterrupts&&this.retryData>=0&&this.cpu.interrupt(!1,this.retryData)&&(this.retryData=-1),this.cpu.advanceInsn()}reset(){this.cpu.reset()}interrupt(t){!this.cpu.interrupt(!1,t)&&this.retryInterrupts&&(this.retryData=t)}NMI(){this.cpu.interrupt(!0,0)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.getHalted()}saveState(){return this.cpu.saveState()}loadState(t){this.cpu.loadState(t)}isStable(){return!0}};var ot=class{constructor(){this.master=new MasterChannel}start(){this.looper||(this.looper=new AudioLooper(512),this.looper.setChannel(this.master),this.looper.activate())}stop(){this.looper&&(this.looper.setChannel(null),this.looper=null)}},Nt=class{constructor(t){this.psg=new PsgDeviceChannel;this.curreg=0;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),t.master.addChannel(this.psg)}reset(){for(var t=15;t>=0;t--)this.selectRegister(t),this.setData(0)}selectRegister(t){this.curreg=t&15}setData(t){this.psg.writeRegisterAY(this.curreg,t&255)}readData(){return this.psg.readRegister(this.curreg)}currentRegister(){return this.curreg}},yt=class{constructor(t){this.psg=new PsgDeviceChannel;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_SN76489),t.master.addChannel(this.psg)}reset(){}setData(t){this.psg.writeRegisterSN(0,t&255)}};function Fn(A){for(var t=new ot,n=1;n<=A;n++){var i=new Pn;t["pokey"+n]=i,t.master.addChannel(i)}return t}function Re(A,t){for(var n=new Uint8Array(A.length*t.length),i=0,m=0;m.5?1:0;var Y0=Re(y,W),M0=Re(W,X0),w0=[Y0,W,M0,W,y,q,X0,q],G=ze(2),m0=ze(6),L0=ze(31),l0=ze(93),B0=Re(A0,X0),W0=Re(W,G),O0=Re(W,m0),F0=[e0,X0,B0,M0,G,G,L0,W0,F,W,L0,e0,m0,m0,l0,O0],p0=new Uint8Array(16),s0=new Float32Array(4),a0=new Float32Array(4),O=new Float32Array(4),w=new Uint8Array(4),M=[e0,e0,e0,e0],f0,E,t0,I,L=!0;this.setBufferLength=function(U){f0=new Int32Array(U)},this.getBuffer=function(){return f0},this.setSampleRate=function(U){E=U,I=C/U};function P0(U){var n0=p0[8],C0=n0&B?x0:P,j,u0=U&4,N0=u0>>1,V=u0>>2;n0&f>>V?(n0&b>>V?j=p0[u0+2]*256+p0[u0+0]+7:j=(p0[u0+2]*256+p0[u0+0]+1)*C0,a0[N0+1]=I/j,a0[N0+0]=0):(n0&b>>V?j=p0[u0+0]+4:j=(p0[u0+0]+1)*C0,a0[N0+0]=I/j,j=(p0[u0+2]+1)*C0,a0[N0+1]=I/j)}this.setRegister=function(U,n0){if(U&=15,n0&=255,p0[U]!=n0)switch(p0[U]=n0,U){case 0:case 2:case 4:case 6:case 8:L=!0;break;case 1:case 3:case 5:case 7:O[U>>1]=n0&15,M[U>>1]=w0[n0>>5];break}},this.getRegister=function(U){return U&=15,p0[U]},this.setTIARegister=function(U,n0){switch(U){case 23:case 24:p0[(U&1)*4]=n0&31,L=!0;break;case 21:case 22:M[(U&1)*2]=F0[n0&15];break;case 25:case 26:O[(U&1)*2]=n0&15;break}},this.generate=function(U){L&&(P0(0),P0(4),L=!1);for(var n0=0;n00&&u0<1&&N0>0){var V=M[j],H0=s0[j]+=u0;H0>V.length&&(H0=s0[j]=H0-Math.floor(H0/V.length)*V.length);var r0=V[Math.floor(H0)];r0&&(C0+=N0)}}C0*=64,f0[n0]=C0,f0[n0+1]=C0}}},Tn=function(A){var t,n,i=[],m=0;A.onmessage=function(o){o&&o.data&&o.data.samples&&n&&(i.push(o.data.samples),m+=o.data.samples.length)},this.setBufferLength=function(o){n=new Int16Array(o),m=0},this.getBuffer=function(){return n},this.setSampleRate=function(o){t=o,A.postMessage({sampleRate:o})},this.generate=function(o){if(mN){for(var H=x[N%P],s=0;s<$.length;s++)$[s]=s=o.length)){if(b=0,t.stream){var $=o;o=new Float32Array(t.bufferlen),t.stream.push($);return}if(x[f]=o,Y++,Y-N>=P){N++,g++;var Z=Date.now();Z-B>1e3&&(console.warn("SampleAudio: skipped audio buffer(s), total="+g+", fill="+(Y-N)+"/"+P+", contextRate="+t.sr+", requestedBuf="+t.bufferlen+", expectedIntervalMs="+(t.bufferlen*1e3/t.sr).toFixed(2)),B=Z)}f=(f+1)%P,o=x[f]}},this.feedSample=function(k,$){if(m+=k*$,n+=i*$,n>=1){for(m/=n;n>=1;)this.addSingleSample(m*i),n-=1;m*=n}}},Ke=class{constructor(t){this.sa=new wn(t)}feedSample(t,n){this.sa.feedSample(t,n)}start(){this.sa.start()}stop(){this.sa.stop()}reset(){this.sa.reset()}get sampleRate(){return this.sa.sr||0}},Lt=class{constructor(t,n,i){this.audioGain=1/8192;this.bufferLength=n*2,this.channels=t.generate?[t]:t,this.channels.forEach(m=>{m.setBufferLength(this.bufferLength),m.setSampleRate(i)})}generate(t){var n=this.bufferLength,i=this.channels.map(o=>o.getBuffer());this.channels.forEach(o=>{o.generate(n)});for(let o=0;om+=b[o]),t.feedSample(m*this.audioGain,1)}}};var $e=class{constructor(t,n){this.idx=0;this.sl=0;this.cur_sp=-1;this.singleFrame=!0;this.m=t,this.reset(n||1048576)}start(){this.m.connectProbe(this)}stop(){this.m.connectProbe(null)}reset(t){t&&(this.buf=new Uint32Array(t)),this.sl=0,this.cur_sp=-1,this.clear()}clear(){this.idx=0}logData(t){this.log(t)}log(t){this.idx>=this.buf.length||(this.buf[this.idx++]=t)}relog(t){this.buf[this.idx-1]=t}lastOp(){return this.idx>0?this.buf[this.idx-1]&4278190080:-1}lastAddr(){return this.idx>0?this.buf[this.idx-1]&16777215:-1}addLogBuffer(t){this.idx+t.length>this.buf.length&&(t=t.slice(0,this.buf.length-this.idx)),this.buf.set(t,this.idx),this.idx+=t.length}logClocks(t){t|=0,t>0&&(this.lastOp()==0?this.relog(this.lastAddr()+t|0):this.log(t|0))}logNewScanline(){this.log(2113929216),this.sl++}logNewFrame(){this.log(2130706432),this.sl=0,this.singleFrame&&this.clear()}logExecute(t,n){this.cur_sp!==n&&(nthis.cur_sp&&this.log(184549376|n),this.cur_sp=n),this.log(t|16777216)}logInterrupt(t){this.log(t|134217728)}logValue(t,n,i){this.log(t&65535|(n&255)<<16|i)}logRead(t,n){this.logValue(t,n,301989888)}logWrite(t,n){this.logValue(t,n,318767104)}logIORead(t,n){this.logValue(t,n,335544320)}logIOWrite(t,n){this.logValue(t,n,352321536)}logVRAMRead(t,n){this.logValue(t,n,369098752)}logVRAMWrite(t,n){this.logValue(t,n,385875968)}logIllegal(t){this.log(t|150994944)}logWait(t){this.log(t|520093696)}logDMARead(t,n){this.logValue(t,n,402653184)}logDMAWrite(t,n){this.logValue(t,n,419430400)}countEvents(t){for(var n=0,i=0;ithis.rom.length)throw new Error(`ROM too big: ${t.length} > ${this.rom.length}`);this.rom.set(t)}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.inputs.set(t.inputs)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0)}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}advanceCPU(){var t=this.cpu,n=1;return this.probing&&this.cpu.isStable()&&this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),t.advanceClock?t.advanceClock():t.advanceInsn&&(n=t.advanceInsn(1)),this.probing&&this.probe.logClocks(n),n}probeMemoryBus(t){return{read:n=>{let i=t.read(n);return this.probe.logRead(n,i),i},write:(n,i)=>{this.probe.logWrite(n,i),t.write(n,i)},read32:n=>{let i=t.read32(n);return this.probe.logRead(n,i),i},write32:(n,i)=>{this.probe.logWrite(n,i),t.write32(n,i)}}}connectCPUMemoryBus(t){this.cpuMemoryBus=t,this.rewireCPUBuses()}probeIOBus(t){return{read:n=>{let i=t.read(n);return this.probe.logIORead(n,i),i},write:(n,i)=>{this.probe.logIOWrite(n,i),t.write(n,i)}}}probeDMABus(t){return{read:n=>{let i=t.read(n);return this.probe.logDMARead(n,i),i},write:(n,i)=>{this.probe.logDMAWrite(n,i),t.write(n,i)}}}connectCPUIOBus(t){this.cpuIOBus=t,this.rewireCPUBuses()}},ut=class extends xt{constructor(){super(...arguments);this.overscan=!1;this.rotate=0}getAudioParams(){return{sampleRate:this.sampleRate,stereo:!1}}connectAudio(n){this.audio=n}getVideoParams(){return{width:this.canvasWidth,height:this.numVisibleScanlines,aspect:this.aspectRatio,overscan:this.overscan,rotate:this.rotate}}connectVideo(n){this.pixels=n}},Ot=class extends ut{advanceFrame(t){this.preFrame();var n=0,i=0;this.probe.logNewFrame(),this.frameCycles=0;for(var m=0;m=64&&n<=127&&(x=Zt[n-64]),n>=160&&n<=191&&(x=Zt[n-160+64]),b++;break;case 221:case 253:var g=t==221?"ix":"iy";n==203?(x=Mt[m],f[2]=m,f[3]=i,b++):x=Et[n],x=x.replace(/[(]hl[)]/,"("+g+"+x)"),x=x.replace(/\bhl\b/,g),b++;break;default:x=Et[t];break}if((!x||!x.length)&&(x="??"),N=/^(call|rst)/.test(x),/\bxx\b/.test(x))x=x.replace(/\bxx\b/,"$"+K(f[b]+(f[b+1]<<8),4)),b+=2,Y=!0;else if(/\bx\b/.test(x)){if(x.startsWith("j")){var B=n<128?A+2+n:A+2-(256-n);B&=65535,x=x.replace(/\bx\b/,"$"+K(B,4)),Y=!0}else x=x.replace(/\bx\b/,"$"+K(f[b],2));b+=1}return{line:x.toUpperCase(),nbytes:b,isaddr:Y,iscall:N}}function je(){var A,t,n,i,m,o,b,x,f,Y,N=1,g=2,B=4,P=8,x0=16,R0=32,d=64,k=128,$=65534,Z=65532,H=65530,s=65528,c=65526,g0=65524,Z0=65522,X=0,k0,p,C,V0=[6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,0,0,2,4,0,0,5,9,0,2,3,0,3,2,8,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,0,5,3,6,9,11,0,19,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,7,0,0,7,7,0,7,7,7,7,7,0,7,7,4,7,2,2,2,4,2,2,2,0,2,2,2,2,4,7,3,0,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,5,5,5,7,5,5,5,5,5,5,5,5,7,8,6,6,2,2,2,4,2,2,2,0,2,2,2,2,3,0,3,0,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,6,6,6,6],e0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,4,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,8,0,0,0,0,0,0,0,0,8,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7],q=[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8],X0=function(u,r,S){f|=((u^r^S^S>>1)&128)>>6},W=function(u,r,S){f|=((u^r^S^S>>1)&32768)>>14},F=function(){return(t<<8)+n},A0=function(u){t=u>>8&255,n=u&255},o0=function(u){p(--b,u&255)},y=function(u){p(--b,u&255),p(--b,u>>8&255)},T0=function(u){p(--o,u&255)},Y0=function(u){p(--o,u&255),p(--o,u>>8&255)},M0=function(){return C(b++)},w0=function(){return C(b++)*256+C(b++)},G=function(){return C(o++)},m0=function(){return C(o++)*256+C(o++)},L0=function(u){var r=0;u&128&&(y(x),r+=2),u&64&&(y(o),r+=2),u&32&&(y(m),r+=2),u&16&&(y(i),r+=2),u&8&&(o0(Y),r++),u&4&&(o0(n),r++),u&2&&(o0(t),r++),u&1&&(o0(f),r++),X+=r},l0=function(u){var r=0;u&128&&(Y0(x),r+=2),u&64&&(Y0(b),r+=2),u&32&&(Y0(m),r+=2),u&16&&(Y0(i),r+=2),u&8&&(T0(Y),r++),u&4&&(T0(n),r++),u&2&&(T0(t),r++),u&1&&(T0(f),r++),X+=r},B0=function(u){var r=0;u&1&&(f=M0(),r++),u&2&&(t=M0(),r++),u&4&&(n=M0(),r++),u&8&&(Y=M0(),r++),u&16&&(i=w0(),r+=2),u&32&&(m=w0(),r+=2),u&64&&(o=w0(),r+=2),u&128&&(x=w0(),r+=2),X+=r},W0=function(u){var r=0;u&1&&(f=G(),r++),u&2&&(t=G(),r++),u&4&&(n=G(),r++),u&8&&(Y=G(),r++),u&16&&(i=m0(),r+=2),u&32&&(m=m0(),r+=2),u&64&&(b=m0(),r+=2),u&128&&(x=m0(),r+=2),X+=r},O0=function(u){switch(u&15){case 0:return F();case 1:return i;case 2:return m;case 3:return o;case 4:return b;case 5:return x;case 8:return t;case 9:return n;case 10:return f;case 11:return Y;default:return null}},F0=function(u,r){switch(u&15){case 0:A0(r);return;case 1:i=r;return;case 2:m=r;return;case 3:o=r;return;case 4:b=r;return;case 5:x=r;return;case 8:t=r;return;case 9:n=r;return;case 10:f=r;return;case 11:Y=r;return;default:return}},p0=function(u,r){var S=u&136;(S==128||S==8)&&(S=0),r?(S=O0(u>>4),F0(u>>4,O0(u)),F0(u,S)):F0(u,O0(u>>4))},s0=function(u){return u>127?u-256:u},a0=function(u){return u>32767?u-65536:u},O=function(){var u=C(x++);return x&=65535,u},w=function(){var u=C(x++);x&=65535;var r=C(x++);return x&=65535,u*256+r},M=function(u){var r=C(u++);u&=65535;var S=C(u++);return u&=65535,r*256+S},f0=function(u,r){p(u++,r>>8&255),u&=65535,p(u,r&255)},E=function(){var u=O(),r;switch(u&96){case 0:r=i;break;case 32:r=m;break;case 64:r=o;break;case 96:r=b;break}var S=null,Q=null,e;if(u&128){switch(u&15){case 0:Q=r,S=r+1,X+=2;break;case 1:Q=r,S=r+2,X+=3;break;case 2:S=r-1,Q=S,X+=2;break;case 3:S=r-2,Q=S,X+=3;break;case 4:Q=r;break;case 5:Q=r+s0(n),X+=1;break;case 6:Q=r+s0(t),X+=1;break;case 7:Q=0;break;case 8:Q=r+s0(O()),X+=1;break;case 9:Q=r+a0(w()),X+=4;break;case 10:Q=0;break;case 11:X+=4,Q=r+F();break;case 12:e=s0(O()),Q=x+e,X+=1;break;case 13:e=a0(w()),Q=x+e,X+=5;break;case 14:Q=0;break;case 15:X+=5,Q=w();break}Q&=65535,u&16&&(Q=C(Q)*256+C(Q+1&65535),X+=3)}else{var a=u&31;a>15&&(a-=32),Q=r+a,X+=1}if(S!==null)switch(u&96){case 0:i=S;break;case 32:m=S;break;case 64:o=S;break;case 96:b=S;break}return Q&65535},t0=function(u){f&=~(B|P),u===0&&(f|=B),u&32768&&(f|=P)},I=function(u){return u++,u&=255,f&=~(B|g|P),f|=q[u],(u===0||u==128)&&(f|=g),u},L=function(u){return u--,u&=255,f&=~(B|g|P),f|=q[u],(u===127||u==255)&&(f|=g),u},P0=function(u,r){var S=u-r;return f&=~(N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),S&255},U=function(u,r){var S=u-r;return f&=~(N|B|g|P),(S&65535)===0&&(f|=B),S&32768&&(f|=P),S&65536&&(f|=N),W(u,r,S),S&65535},n0=function(u,r){var S=u+r;return f&=~(R0|N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),(S^u^r)&16&&(f|=R0),S&255},C0=function(u,r){var S=u+r;return f&=~(N|B|g|P),(S&65535)===0&&(f|=B),S&32768&&(f|=P),S&65536&&(f|=N),W(u,r,S),S&65535},j=function(u,r){var S=u+r+(f&N);return f&=~(R0|N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),(S^u^r)&16&&(f|=R0),S&255},u0=function(u,r){var S=u-r-(f&N);return f&=~(N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S),S&255},N0=function(u,r){var S=u-r;f&=~(N|B|g|P),f|=q[S&255],S&256&&(f|=N),X0(u,r,S)},V=function(u,r){var S=u-r;f&=~(N|B|g|P),(S&65535)===0&&(f|=B),S&32768&&(f|=P),S&65536&&(f|=N),W(u,r,S)},H0=function(u){return f&=~(N|B|g|P),u==128&&(f|=g),u=(~u&255)+1,u===0&&(f|=B),u&128&&(f|=P|N),u},r0=function(u){return f&=~(B|N|P),u&1&&(f|=N),u>>=1,u===0&&(f|=B),u&255},c0=function(u){return f&=~(B|N|P),u&1&&(f|=N),u=u&128|u>>1,f|=q[u],u},_0=function(u){var r=u;return f&=~(B|N|P|g),u&128&&(f|=N),u<<=1,f|=q[u],(u^r)&128&&(f|=g),u},D0=function(u){var r=u,S=f&N;return f&=~(B|N|P|g),u&128&&(f|=N),u=u<<1|S,f|=q[u],(u^r)&128&&(f|=g),u},U0=function(u){var r=f&N;return f&=~(B|N|P),u&1&&(f|=N),u=u>>1|r<<7,f|=q[u],u},i0=function(u,r){return f&=~(B|P|g),u^=r,f|=q[u],u},b0=function(u,r){return f&=~(B|P|g),u|=r,f|=q[u],u},d0=function(u,r){return f&=~(B|P|g),u&=r,f|=q[u],u},z0=function(u){return f&=~(B|P|g),u^=255,f|=q[u],f|=N,u},T=function(){return Y*256+O()},q0=function(){var u=X,r=null,S=null,Q=x,e=O();switch(X+=V0[e],e){case 0:r=T(),p(r,H0(C(r)));break;case 3:r=T(),p(r,z0(C(r)));break;case 4:r=T(),p(r,r0(C(r)));break;case 6:r=T(),p(r,U0(C(r)));break;case 7:r=T(),p(r,c0(C(r)));break;case 8:r=T(),p(r,_0(C(r)));break;case 9:r=T(),p(r,D0(C(r)));break;case 10:r=T(),p(r,L(C(r)));break;case 12:r=T(),p(r,I(C(r)));break;case 13:r=T(),S=C(r),f&=~(B|P|g),f|=q[S];break;case 14:r=T(),x=r;break;case 15:r=T(),p(r,0),f&=~(N|P|g),f|=B;break;case 18:break;case 19:break;case 22:r=a0(w()),x+=r;break;case 23:r=a0(w()),y(x),x+=r;break;case 25:var a=0,_=t&240,y0=t&15;(y0>9||f&32)&&(a|=6),_>128&&y0>9&&(a|=96),(_>144||f&1)&&(a|=96),r=a+t,f&=~(N|P|B|g),r&256&&(f|=N),t=r&255,f|=q[t];break;case 26:f|=O();break;case 28:f&=O();break;case 29:t=n&128?255:0,t0(F()),f&=~g;break;case 30:S=O(),p0(S,!0);break;case 31:S=O(),p0(S,!1);break;case 32:r=s0(O()),x+=r;break;case 33:r=s0(O());break;case 34:r=s0(O()),f&(N|B)||(x+=r);break;case 35:r=s0(O()),f&(N|B)&&(x+=r);break;case 36:r=s0(O()),f&N||(x+=r);break;case 37:r=s0(O()),f&N&&(x+=r);break;case 38:r=s0(O()),f&B||(x+=r);break;case 39:r=s0(O()),f&B&&(x+=r);break;case 40:r=s0(O()),f&g||(x+=r);break;case 41:r=s0(O()),f&g&&(x+=r);break;case 42:r=s0(O()),f&P||(x+=r);break;case 43:r=s0(O()),f&P&&(x+=r);break;case 44:r=s0(O()),f&P^(f&g)<<2||(x+=r);break;case 45:r=s0(O()),f&P^(f&g)<<2&&(x+=r);break;case 46:r=s0(O()),f&P^(f&g)<<2||f&B||(x+=r);break;case 47:r=s0(O()),(f&P^(f&g)<<2||f&B)&&(x+=r);break;case 48:i=E(),i===0?f|=B:f&=~B;break;case 49:m=E(),m===0?f|=B:f&=~B;break;case 50:b=E();break;case 51:o=E();break;case 52:L0(O());break;case 53:B0(O());break;case 54:l0(O());break;case 55:W0(O());break;case 57:x=w0();break;case 58:i+=n;break;case 59:f=M0(),f&k&&(X+=9,t=M0(),n=M0(),Y=M0(),i=w0(),m=w0(),o=w0()),x=w0();break;case 60:f&=O();break;case 61:r=t*n,r===0?f|=B:f&=~B,r&128?f|=N:f&=~N,A0(r);break;case 63:f|=k,y(x),y(o),y(m),y(i),o0(Y),o0(n),o0(t),o0(f),f|=x0|d,x=M(H);break;case 64:t=H0(t);break;case 67:t=z0(t);break;case 68:t=r0(t);break;case 70:t=U0(t);break;case 71:t=c0(t);break;case 72:t=_0(t);break;case 73:t=D0(t);break;case 74:t=L(t);break;case 76:t=I(t);break;case 77:f&=~(B|P|g),f|=q[t];break;case 79:t=0,f&=~(P|g|N),f|=B;break;case 80:n=H0(n);break;case 83:n=z0(n);break;case 84:n=r0(n);break;case 86:n=U0(n);break;case 87:n=c0(n);break;case 88:n=_0(n);break;case 89:n=D0(n);break;case 90:n=L(n);break;case 92:n=I(n);break;case 93:f&=~(B|P|g),f|=q[n];break;case 95:n=0,f&=~(P|g|N),f|=B;break;case 96:r=E(),p(r,H0(C(r)));break;case 99:r=E(),p(r,z0(C(r)));break;case 100:r=E(),p(r,r0(C(r)));break;case 102:r=E(),p(r,U0(C(r)));break;case 103:r=E(),p(r,c0(C(r)));break;case 104:r=E(),p(r,_0(C(r)));break;case 105:r=E(),p(r,D0(C(r)));break;case 106:r=E(),p(r,L(C(r)));break;case 108:r=E(),p(r,I(C(r)));break;case 109:r=E(),S=C(r),f&=~(B|P|g),f|=q[S];break;case 110:r=E(),x=r;break;case 111:r=E(),p(r,0),f&=~(N|P|g),f|=B;break;case 112:r=w(),p(r,H0(C(r)));break;case 115:r=w(),p(r,z0(C(r)));break;case 116:r=w(),p(r,r0(C(r)));break;case 118:r=w(),p(r,U0(C(r)));break;case 119:r=w(),p(r,c0(C(r)));break;case 120:r=w(),p(r,_0(C(r)));break;case 121:r=w(),p(r,D0(C(r)));break;case 122:r=w(),p(r,L(C(r)));break;case 124:r=w(),p(r,I(C(r)));break;case 125:r=w(),S=C(r),f&=~(B|P|g),f|=q[S];break;case 126:r=w(),x=r;break;case 127:r=w(),p(r,0),f&=~(N|P|g),f|=B;break;case 128:t=P0(t,O());break;case 129:N0(t,O());break;case 130:t=u0(t,O());break;case 131:A0(U(F(),w()));break;case 132:t=d0(t,O());break;case 133:d0(t,O());break;case 134:t=O(),f&=~(B|P|g),f|=q[t];break;case 136:t=i0(t,O());break;case 137:t=j(t,O());break;case 138:t=b0(t,O());break;case 139:t=n0(t,O());break;case 140:V(i,w());break;case 141:r=s0(O()),y(x),x+=r;break;case 142:i=w(),t0(i),f&=~g;break;case 144:r=T(),t=P0(t,C(r));break;case 145:r=T(),N0(t,C(r));break;case 146:r=T(),t=u0(t,C(r));break;case 147:r=T(),A0(U(F(),M(r)));break;case 148:r=T(),t=d0(t,C(r));break;case 149:r=T(),d0(t,C(r));break;case 150:r=T(),t=C(r),f&=~(B|P|g),f|=q[t];break;case 151:r=T(),p(r,t),f&=~(B|P|g),f|=q[t];break;case 152:r=T(),t=i0(t,C(r));break;case 153:r=T(),t=j(t,C(r));break;case 154:r=T(),t=b0(t,C(r));break;case 155:r=T(),t=n0(t,C(r));break;case 156:r=T(),V(i,M(r));break;case 157:r=T(),y(x),x=r;break;case 158:r=T(),i=M(r),t0(i),f&=~g;break;case 159:r=T(),f0(r,i),t0(i),f&=~g;break;case 160:r=E(),t=P0(t,C(r));break;case 161:r=E(),N0(t,C(r));break;case 162:r=E(),t=u0(t,C(r));break;case 163:r=E(),A0(U(F(),M(r)));break;case 164:r=E(),t=d0(t,C(r));break;case 165:r=E(),d0(t,C(r));break;case 166:r=E(),t=C(r),f&=~(B|P|g),f|=q[t];break;case 167:r=E(),p(r,t),f&=~(B|P|g),f|=q[t];break;case 168:r=E(),t=i0(t,C(r));break;case 169:r=E(),t=j(t,C(r));break;case 170:r=E(),t=b0(t,C(r));break;case 171:r=E(),t=n0(t,C(r));break;case 172:r=E(),V(i,M(r));break;case 173:r=E(),y(x),x=r;break;case 174:r=E(),i=M(r),t0(i),f&=~g;break;case 175:r=E(),f0(r,i),t0(i),f&=~g;break;case 176:r=w(),t=P0(t,C(r));break;case 177:r=w(),N0(t,C(r));break;case 178:r=w(),t=u0(t,C(r));break;case 179:r=w(),A0(U(F(),M(r)));break;case 180:r=w(),t=d0(t,C(r));break;case 181:r=w(),d0(t,C(r));break;case 182:r=w(),t=C(r),f&=~(B|P|g),f|=q[t];break;case 183:r=w(),p(r,t),f&=~(B|P|g),f|=q[t];break;case 184:r=w(),t=i0(t,C(r));break;case 185:r=w(),t=j(t,C(r));break;case 186:r=w(),t=b0(t,C(r));break;case 187:r=w(),t=n0(t,C(r));break;case 188:r=w(),V(i,M(r));break;case 189:r=w(),y(x),x=r;break;case 190:r=w(),i=M(r),t0(i),f&=~g;break;case 191:r=w(),f0(r,i),t0(i),f&=~g;break;case 192:n=P0(n,O());break;case 193:N0(n,O());break;case 194:n=u0(n,O());break;case 195:A0(C0(F(),w()));break;case 196:n=d0(n,O());break;case 197:d0(n,O());break;case 198:n=O(),f&=~(B|P|g),f|=q[n];break;case 200:n=i0(n,O());break;case 201:n=j(n,O());break;case 202:n=b0(n,O());break;case 203:n=n0(n,O());break;case 204:r=w(),A0(r),t0(r),f&=~g;break;case 206:o=w(),t0(o),f&=~g;break;case 208:r=T(),n=P0(n,C(r));break;case 209:r=T(),N0(n,C(r));break;case 210:r=T(),n=u0(n,C(r));break;case 211:r=T(),A0(C0(F(),M(r)));break;case 212:r=T(),n=d0(n,C(r));break;case 213:r=T(),d0(n,C(r));break;case 214:r=T(),n=C(r),f&=~(B|P|g),f|=q[n];break;case 215:r=T(),p(r,n),f&=~(B|P|g),f|=q[n];break;case 216:r=T(),n=i0(n,C(r));break;case 217:r=T(),n=j(n,C(r));break;case 218:r=T(),n=b0(n,C(r));break;case 219:r=T(),n=n0(n,C(r));break;case 220:r=T(),S=M(r),A0(S),t0(S),f&=~g;break;case 221:r=T(),f0(r,F()),f&=~g;break;case 222:r=T(),o=M(r),t0(o),f&=~g;break;case 223:r=T(),f0(r,o),t0(o),f&=~g;break;case 224:r=E(),n=P0(n,C(r));break;case 225:r=E(),N0(n,C(r));break;case 226:r=E(),n=u0(n,C(r));break;case 227:r=E(),A0(C0(F(),M(r)));break;case 228:r=E(),n=d0(n,C(r));break;case 229:r=E(),d0(n,C(r));break;case 230:r=E(),n=C(r),f&=~(B|P|g),f|=q[n];break;case 231:r=E(),p(r,n),f&=~(B|P|g),f|=q[n];break;case 232:r=E(),n=i0(n,C(r));break;case 233:r=E(),n=j(n,C(r));break;case 234:r=E(),n=b0(n,C(r));break;case 235:r=E(),n=n0(n,C(r));break;case 236:r=E(),S=M(r),A0(S),t0(S),f&=~g;break;case 237:r=E(),f0(r,F()),f&=~g;break;case 238:r=E(),o=M(r),t0(o),f&=~g;break;case 239:r=E(),f0(r,o),t0(o),f&=~g;break;case 240:r=w(),n=P0(n,C(r));break;case 241:r=w(),N0(n,C(r));break;case 242:r=w(),n=u0(n,C(r));break;case 243:r=w(),A0(C0(F(),M(r)));break;case 244:r=w(),n=d0(n,C(r));break;case 245:r=w(),d0(n,C(r));break;case 246:r=w(),n=C(r),f&=~(B|P|g),f|=q[n];break;case 247:r=w(),p(r,n),f&=~(B|P|g),f|=q[n];break;case 248:r=w(),n=i0(n,C(r));break;case 249:r=w(),n=j(n,C(r));break;case 250:r=w(),n=b0(n,C(r));break;case 251:r=w(),n=n0(n,C(r));break;case 252:r=w(),S=M(r),A0(S),t0(S),f&=~g;break;case 253:r=w(),f0(r,F()),f&=~g;break;case 254:r=w(),o=M(r),t0(o),f&=~g;break;case 255:r=w(),f0(r,o),t0(o),f&=~g;break;case 16:switch(e=O(),X+=e0[e],e){case 33:r=a0(w());break;case 34:r=a0(w()),f&(N|B)||(x+=r);break;case 35:r=a0(w()),f&(N|B)&&(x+=r);break;case 36:r=a0(w()),f&N||(x+=r);break;case 37:r=a0(w()),f&N&&(x+=r);break;case 38:r=a0(w()),f&B||(x+=r);break;case 39:r=a0(w()),f&B&&(x+=r);break;case 40:r=a0(w()),f&g||(x+=r);break;case 41:r=a0(w()),f&g&&(x+=r);break;case 42:r=a0(w()),f&P||(x+=r);break;case 43:r=a0(w()),f&P&&(x+=r);break;case 44:r=a0(w()),f&P^(f&g)<<2||(x+=r);break;case 45:r=a0(w()),f&P^(f&g)<<2&&(x+=r);break;case 46:r=a0(w()),f&P^(f&g)<<2||f&B||(x+=r);break;case 47:r=a0(w()),(f&P^(f&g)<<2||f&B)&&(x+=r);break;case 63:f|=k,y(x),y(o),y(m),y(i),o0(Y),o0(n),o0(t),o0(f),f|=x0|d,x=M(g0);break;case 131:V(F(),w());break;case 140:V(m,w());break;case 142:m=w(),t0(m),f&=~g;break;case 147:r=T(),V(F(),M(r));break;case 156:r=T(),V(m,M(r));break;case 158:r=T(),m=M(r),t0(m),f&=~g;break;case 159:r=T(),f0(r,m),t0(m),f&=~g;break;case 163:r=E(),V(F(),M(r));break;case 172:r=E(),V(m,M(r));break;case 174:r=E(),m=M(r),t0(m),f&=~g;break;case 175:r=E(),f0(r,m),t0(m),f&=~g;break;case 179:r=w(),V(F(),M(r));break;case 188:r=w(),V(m,M(r));break;case 190:r=w(),m=M(r),t0(m),f&=~g;break;case 191:r=w(),f0(r,m),t0(m),f&=~g;break;case 206:b=w(),t0(b),f&=~g;break;case 222:r=T(),b=M(r),t0(b),f&=~g;break;case 223:r=T(),f0(r,b),t0(b),f&=~g;break;case 238:r=E(),b=M(r),t0(b),f&=~g;break;case 239:r=E(),f0(r,b),t0(b),f&=~g;break;case 254:r=w(),b=M(r),t0(b),f&=~g;break;case 255:r=w(),f0(r,b),t0(b),f&=~g;break}break;case 17:switch(e=O(),X+=e0[e],e){case 63:f|=k,y(x),y(o),y(m),y(i),o0(Y),o0(n),o0(t),o0(f),f|=x0|d,x=M(Z0);break;case 131:V(o,w());break;case 140:V(b,w());break;case 147:r=T(),V(o,M(r));break;case 156:r=T(),V(b,M(r));break;case 163:r=E(),V(o,M(r));break;case 172:r=E(),V(b,M(r));break;case 179:r=w(),V(o,M(r));break;case 188:r=w(),V(b,M(r));break}break}return t&=255,n&=255,f&=255,Y&=255,i&=65535,m&=65535,o&=65535,b&=65535,x&=65535,X-u},$0=function(){x=M($),Y=0,f|=d|x0,X=0,t=n=Y=i=m=o=b=0},G0=[[2,1,"NEG"],[1,0,"???"],[1,0,"???"],[2,1,"COM"],[2,1,"LSR"],[1,0,"???"],[2,1,"ROR"],[2,1,"ASR"],[2,1,"LSL"],[2,1,"ROL"],[2,1,"DEC"],[1,0,"???"],[2,1,"INC"],[2,1,"TST"],[2,1,"JMP"],[2,1,"CLR"],[1,0,"Prefix"],[1,0,"Prefix"],[1,2,"NOP"],[1,2,"SYNC"],[1,0,"???"],[1,0,"???"],[3,3,"LBRA"],[3,3,"LBSR"],[1,0,"???"],[1,2,"DAA"],[2,4,"ORCC"],[1,0,"???"],[2,4,"ANDCC"],[1,2,"SEX"],[2,20,"EXG"],[2,20,"TFR"],[2,5,"BRA"],[2,5,"BRN"],[2,5,"BHI"],[2,5,"BLS"],[2,5,"BCC"],[2,5,"BCS"],[2,5,"BNE"],[2,5,"BEQ"],[2,5,"BVC"],[2,5,"BVS"],[2,5,"BPL"],[2,5,"BMI"],[2,5,"BGE"],[2,5,"BLT"],[2,5,"BGT"],[2,5,"BLE"],[2,6,"LEAX"],[2,6,"LEAY"],[2,6,"LEAS"],[2,6,"LEAU"],[2,10,"PSHS"],[2,10,"PULS"],[2,11,"PSHU"],[2,11,"PULU"],[1,0,"???"],[1,2,"RTS"],[1,2,"ABX"],[1,2,"RTI"],[2,2,"CWAI"],[1,2,"MUL"],[1,2,"RESET"],[1,2,"SWI1"],[1,2,"NEGA"],[1,0,"???"],[1,0,"???"],[1,2,"COMA"],[1,2,"LSRA"],[1,0,"???"],[1,2,"RORA"],[1,2,"ASRA"],[1,2,"ASLA"],[1,2,"ROLA"],[1,2,"DECA"],[1,0,"???"],[1,2,"INCA"],[1,2,"TSTA"],[1,0,"???"],[1,2,"CLRA"],[1,2,"NEGB"],[1,0,"???"],[1,0,"???"],[1,2,"COMB"],[1,2,"LSRB"],[1,0,"???"],[1,2,"RORB"],[1,2,"ASRB"],[1,2,"ASLB"],[1,2,"ROLB"],[1,2,"DECB"],[1,0,"???"],[1,2,"INCB"],[1,2,"TSTB"],[1,0,"???"],[1,2,"CLRB"],[2,6,"NEG"],[1,0,"???"],[1,0,"???"],[2,6,"COM"],[2,6,"LSR"],[1,0,"???"],[2,6,"ROR"],[2,6,"ASR"],[2,6,"LSL"],[2,6,"ROL"],[2,6,"DEC"],[1,0,"???"],[2,6,"INC"],[2,6,"TST"],[2,6,"JMP"],[2,6,"CLR"],[3,7,"NEG"],[1,0,"???"],[1,0,"???"],[3,7,"COM"],[3,7,"LSR"],[1,0,"???"],[3,7,"ROR"],[3,7,"ASR"],[3,7,"LSL"],[3,7,"ROL"],[3,7,"DEC"],[1,0,"???"],[3,7,"INC"],[3,7,"TST"],[3,7,"JMP"],[3,7,"CLR"],[2,4,"SUBA"],[2,4,"CMPA"],[2,4,"SBCA"],[3,8,"SUBD"],[2,4,"ANDA"],[2,4,"BITA"],[2,4,"LDA"],[1,0,"???"],[2,4,"EORA"],[2,4,"ADCA"],[2,4,"ORA"],[2,4,"ADDA"],[3,8,"CMPX"],[2,5,"BSR"],[3,8,"LDX"],[1,0,"???"],[2,1,"SUBA"],[2,1,"CMPA"],[2,1,"SBCA"],[2,1,"SUBd"],[2,1,"ANDA"],[2,1,"BITA"],[2,1,"LDA"],[2,1,"STA"],[2,1,"EORA"],[2,1,"ADCA"],[2,1,"ORA"],[2,1,"ADDA"],[2,1,"CMPX"],[2,1,"JSR"],[2,1,"LDX"],[2,1,"STX"],[2,6,"SUBA"],[2,6,"CMPA"],[2,6,"SBCA"],[2,6,"SUBD"],[2,6,"ANDA"],[2,6,"BITA"],[2,6,"LDA"],[2,6,"STA"],[2,6,"EORA"],[2,6,"ADCA"],[2,6,"ORA"],[2,6,"ADDA"],[2,6,"CMPX"],[2,6,"JSR"],[2,6,"LDX"],[2,6,"STX"],[3,7,"SUBA"],[3,7,"CMPA"],[3,7,"SBCA"],[3,7,"SUBD"],[3,7,"ANDA"],[3,7,"BITA"],[3,7,"LDA"],[3,7,"STA"],[3,7,"EORA"],[3,7,"ADCA"],[3,7,"ORA"],[3,7,"ADDA"],[3,7,"CMPX"],[3,7,"JSR"],[3,7,"LDX"],[3,7,"STX"],[2,4,"SUBB"],[2,4,"CMPB"],[2,4,"SBCB"],[3,8,"ADDD"],[2,4,"ANDB"],[2,4,"BITB"],[2,4,"LDB"],[1,0,"???"],[2,4,"EORB"],[2,4,"ADCB"],[2,4,"ORB"],[2,4,"ADDB"],[3,8,"LDD"],[1,0,"???"],[3,8,"LDU"],[1,0,"???"],[2,1,"SUBB"],[2,1,"CMPB"],[2,1,"SBCB"],[2,1,"ADDD"],[2,1,"ANDB"],[2,1,"BITB"],[2,1,"LDB"],[2,1,"STB"],[2,1,"EORB"],[2,1,"ADCB"],[2,1,"ORB "],[2,1,"ADDB"],[2,1,"LDD "],[2,1,"STD "],[2,1,"LDU "],[2,1,"STU "],[2,6,"SUBB"],[2,6,"CMPB"],[2,6,"SBCB"],[2,6,"ADDD"],[2,6,"ANDB"],[2,6,"BITB"],[2,6,"LDB"],[2,6,"STB"],[2,6,"EORB"],[2,6,"ADCB"],[2,6,"ORB"],[2,6,"ADDB"],[2,6,"LDD"],[2,6,"STD"],[2,6,"LDU"],[2,6,"STU"],[3,7,"SUBB"],[3,7,"CMPB"],[3,7,"SBCB"],[3,7,"ADDD"],[3,7,"ANDB"],[3,7,"BITB"],[3,7,"LDB"],[3,7,"STB"],[3,7,"EORB"],[3,7,"ADCB"],[3,7,"ORB"],[3,7,"ADDB"],[3,7,"LDD"],[3,7,"STD"],[3,7,"LDU"],[3,7,"STU"]],v={63:[2,2,"SWI3"],131:[4,8,"CMPU"],140:[4,8,"CMPS"],147:[3,1,"CMPU"],156:[3,1,"CMPS"],163:[3,6,"CMPU"],172:[3,6,"CMPS"],179:[4,7,"CMPU"],188:[4,7,"CMPS"]},R={33:[5,3,"LBRN"],34:[5,3,"LBHI"],35:[5,3,"LBLS"],36:[5,3,"LBCC"],37:[5,3,"LBCS"],38:[5,3,"LBNE"],39:[5,3,"LBEQ"],40:[5,3,"LBVC"],41:[5,3,"LBVS"],42:[5,3,"LBPL"],43:[5,3,"LBMI"],44:[5,3,"LBGE"],45:[5,3,"LBLT"],46:[5,3,"LBGT"],47:[5,3,"LBLE"],63:[2,2,"SWI2"],131:[4,8,"CMPD"],140:[4,8,"CMPY"],142:[4,8,"LDY"],147:[3,1,"CMPD"],156:[3,1,"CMPY"],158:[3,1,"LDY"],159:[3,1,"STY"],163:[3,6,"CMPD"],172:[3,6,"CMPY"],174:[3,6,"LDY"],175:[3,6,"STY"],179:[4,7,"CMPD"],188:[4,7,"CMPY"],190:[4,7,"LDY"],191:[4,7,"STY"],206:[4,8,"LDS"],222:[3,1,"LDS"],223:[3,1,"STS"],238:[3,6,"LDS"],239:[3,6,"STS"],254:[4,7,"LDS"],255:[4,7,"STS"]},D=function(u,r,S,Q,e,a){var _=function(ue,qe){for(var Pe=ue.toString(16);Pe.length>5];if(!(xe&128)){var Se=xe&31;Se>15&&(Se=Se-32),J+=Se+","+E0;break}var Qe=xe&16,Oe=xe&15,ge=S>127?S-256:S,pe=S*256+Q>32767?S*256+Q-65536:S*256+Q;if(Qe)switch(Oe){case 0:J+="???";break;case 1:J+="[,"+E0+"++]";break;case 2:J+="???";break;case 3:J+="[,--"+E0+"]";break;case 4:J+="[,"+E0+"]";break;case 5:J+="[B,"+E0+"]";break;case 6:J+="[A,"+E0+"]";break;case 7:J+="???";break;case 8:J+="["+ge+","+E0+"]",K0++;break;case 9:J+="["+pe+","+E0+"]",K0+=2;break;case 10:J+="???";break;case 11:J+="[D,"+E0+"]";break;case 12:J+="["+ge+",PC]",K0++;break;case 13:J+="["+pe+",PC]",K0+=2;break;case 14:J+="???";break;case 15:J+="[$"+j0(S*256+Q)+"]",K0+=2;break}else switch(Oe){case 0:J+=","+E0+"+";break;case 1:J+=","+E0+"++";break;case 2:J+=",-"+E0;break;case 3:J+=",--"+E0;break;case 4:J+=","+E0;break;case 5:J+="B,"+E0;break;case 6:J+="A,"+E0;break;case 7:J+="???";break;case 8:J+=ge+","+E0,K0++;break;case 9:J+=pe+","+E0,K0+=2;break;case 10:J+="???";break;case 11:J+="D,"+E0;break;case 12:J+=ge+",PC",K0++;break;case 13:J+=pe+",PC",K0+=2;break;case 14:J+="???";break;case 15:J+="$"+j0(S*256+Q),K0+=2;break}break;case 7:J+=" $"+j0(r*256+S);break;case 8:J+=" #$"+j0(r*256+S);break;case 10:for(I0=["PC","U","Y","X","DP","B","A","CC"],ne=[],Q0=0;Q0<8;Q0++)(r&1)!==0&&ne.push(I0[7-Q0]),r>>=1;J+=" "+ne.join(",");break;case 11:for(I0=["PC","S","Y","X","DP","B","A","CC"],ne=[],Q0=0;Q0<8;Q0++)(r&1)!==0&&ne.push(I0[7-Q0]),r>>=1;J+=" "+ne.join(",");break;case 20:I0=["D","X","Y","U","S","PC","?","?","A","B","CC","DP","?","?","?","?"],J+=" "+I0[r>>4]+","+I0[r&15];break}return{line:J,nbytes:K0}};return{steps:function(u){for(;u>0;)u-=q0()},runFrame:function(u){for(;X>S;Q===0?u+=r[S].toLowerCase():u+=r[S]}return u},disasm:D,isStable:function(){return!0}}}var lt=function(){var A=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){n&&(x0++,d[x0]())},this.connectBus=function(l){t=l},this.setRDY=function(l){n=l},this.isRDY=function(){return n},this.reset=function(){g=1,x0=-1,d=[W],i=t.read(X)|t.read(X+1)<<8,this.setRDY(!0)};var t,n=!1,i=0,m=0,o=0,b=0,x=0,f=0,Y=0,N=0,g=0,B=0,P=0,x0=-1,R0=-1,d,k=0,$=0,Z=0,H=!1,s=0,c=0,g0=0;let Z0=65530,X=65532,k0=65534,p=0,C=1,V0=7,e0=6,q=1,X0=0;this.debug=!1,this.trace=!1;var W=function(){R0=t.read(i),d=a[R0],x0=0,i++},F=W,A0=function(){t.read(i)},o0=function(){c=t.read(i),i++},y=function(){$=t.read(i),i++},T0=function(){$|=t.read(i)<<8,i++},Y0=function(){$=t.read(Z)},M0=function(){$|=t.read(Z)<<8},w0=function(){Z=t.read(i),i++},G=function(){Z|=t.read(i)<<8,i++},m0=function(){Z=t.read(s)},L0=function(){Z|=t.read(s)<<8},l0=function(){var l=(Z&255)+b;H=l>255,Z=Z&65280|l&255},B0=function(){var l=(Z&255)+x;H=l>255,Z=Z&65280|l&255},W0=function(){var l=(Z&255)+1;H=l>255,Z=Z&65280|l&255},O0=function(){H&&(Z=Z+256&65535)},F0=function(){s=t.read(i),i++},p0=function(){s|=t.read(i)<<8,i++},s0=function(){var l=(s&255)+1;s=s&65280|l&255},a0=function(){k=t.read(i),i++},O=function(){k=t.read($)},w=function(){k=t.read(Z)},M=function(){t.write($,k)},f0=function(){t.write(Z,k)},E=function(){var l=i&255,h=l+c&255;c>127?g0=h>l?-256:0:g0=h>>7,Y=l>>>6&1,N=l>>>3&1,g=l>>>2&1,B=l>>>1&1,P=l&1},V=function(l){A.debug&&A.breakpoint("Illegal Opcode: "+l)},H0=function(){V("KIL/HLT/JAM");let l=i-1&65535;throw new Ye(`CPU executed halt instruction ($${K(R0,2)}) at $${K(l,4)}`)},r0=function(l){return[W,A0,function(){l(),F()}]},c0=function(l){return[W,a0,function(){l(),F()}]},_0=function(l){return[W,y,O,function(){l(),F()}]},D0=function(l){return[W,y,T0,O,function(){l(),F()}]},U0=function(l){return[W,w0,w,function(){l0(),Y0()},function(){W0(),M0()},O,function(){l(),F()}]},i0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,G,function(){h(),w(),O0()},function(){H?w():(z(),F())},function(){z(),F()}]}},b0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,w,function(){h(),w()},function(){z(),F()}]}},d0=function(l){return[W,F0,m0,function(){s0(),L0()},function(){B0(),w(),O0()},function(){H?w():(l(),F())},function(){l(),F()}]},z0=function(l){return[W,y,function(){l(),M()},F]},T=function(l){return[W,y,T0,function(){l(),M()},F]},q0=function(l){return[W,w0,w,function(){l0(),Y0()},function(){W0(),M0()},function(){l(),M()},F]},$0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,G,function(){h(),w(),O0()},function(){z(),f0()},F]}},G0=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,w,function(){h(),z(),f0()},F]}},v=function(l){return[W,F0,m0,function(){s0(),L0()},function(){B0(),w(),O0()},function(){l(),f0()},F]},R=function(l){return[W,y,O,M,function(){l(),M()},F]},D=function(l){return[W,y,T0,O,M,function(){l(),M()},F]},u=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,w,function(){h(),w()},f0,function(){z(),f0()},F]}},r=function(l){var h=l===p?l0:B0;return function(z){return[W,w0,G,function(){h(),w(),O0()},w,f0,function(){z(),f0()},F]}},S=function(l){return[W,w0,w,function(){l0(),Y0()},function(){W0(),M0()},O,M,function(){l(),M()},F]},Q=function(l){return[W,F0,m0,function(){s0(),L0()},function(){B0(),w(),O0()},w,f0,function(){l(),f0()},F]},e=new Array(256),a=new Array(256);e[0]="BRK",a[0]=mn(),e[1]="ORA",a[1]=ce(U0),e[2]="uKIL",a[2]=J0(),e[3]="uSLO",a[3]=Ae(S),e[4]="uNOP",a[4]=S0(_0),e[5]="ORA",a[5]=ce(_0),e[6]="ASL",a[6]=Ze(R),e[7]="uSLO",a[7]=Ae(R),e[8]="PHP",a[8]=cn(),e[9]="ORA",a[9]=ce(c0),e[10]="ASL",a[10]=_(),e[11]="uANC",a[11]=gt(c0),e[12]="uNOP",a[12]=S0(D0),e[13]="ORA",a[13]=ce(D0),e[14]="ASL",a[14]=Ze(D),e[15]="uSLO",a[15]=Ae(D),e[16]="BPL",a[16]=oe(V0,0),e[17]="ORA",a[17]=ce(d0),e[18]="uKIL",a[18]=J0(),e[19]="uSLO",a[19]=Ae(Q),e[20]="uNOP",a[20]=S0(b0(p)),e[21]="ORA",a[21]=ce(b0(p)),e[22]="ASL",a[22]=Ze(u(p)),e[23]="uSLO",a[23]=Ae(u(p)),e[24]="CLC",a[24]=y0(),e[25]="ORA",a[25]=ce(i0(C)),e[26]="uNOP",a[26]=S0(r0),e[27]="uSLO",a[27]=Ae(r(C)),e[28]="uNOP",a[28]=S0(i0(p)),e[29]="ORA",a[29]=ce(i0(p)),e[30]="ASL",a[30]=Ze(r(p)),e[31]="uSLO",a[31]=Ae(r(p)),e[32]="JSR",a[32]=un(),e[33]="AND",a[33]=ae(U0),e[34]="uKIL",a[34]=J0(),e[35]="uRLA",a[35]=de(S),e[36]="BIT",a[36]=St(_0),e[37]="AND",a[37]=ae(_0),e[38]="ROL",a[38]=Ue(R),e[39]="uRLA",a[39]=de(R),e[40]="PLP",a[40]=xn(),e[41]="AND",a[41]=ae(c0),e[42]="ROL",a[42]=E0(),e[43]="uANC",a[43]=gt(c0),e[44]="BIT",a[44]=St(D0),e[45]="AND",a[45]=ae(D0),e[46]="ROL",a[46]=Ue(D),e[47]="uRLA",a[47]=de(D),e[48]="BMI",a[48]=oe(V0,1),e[49]="AND",a[49]=ae(d0),e[50]="uKIL",a[50]=J0(),e[51]="uRLA",a[51]=de(Q),e[52]="uNOP",a[52]=S0(b0(p)),e[53]="AND",a[53]=ae(b0(p)),e[54]="ROL",a[54]=Ue(u(p)),e[55]="uRLA",a[55]=de(u(p)),e[56]="SEC",a[56]=Qe(),e[57]="AND",a[57]=ae(i0(C)),e[58]="uNOP",a[58]=S0(r0),e[59]="uRLA",a[59]=de(r(C)),e[60]="uNOP",a[60]=S0(i0(p)),e[61]="AND",a[61]=ae(i0(p)),e[62]="ROL",a[62]=Ue(r(p)),e[63]="uRLA",a[63]=de(r(p)),e[64]="RTI",a[64]=dn(),e[65]="EOR",a[65]=fe(U0),e[66]="uKIL",a[66]=J0(),e[67]="uSRE",a[67]=Ce(S),e[68]="uNOP",a[68]=S0(_0),e[69]="EOR",a[69]=fe(_0),e[70]="LSR",a[70]=Te(R),e[71]="uSRE",a[71]=Ce(R),e[72]="PHA",a[72]=sn(),e[73]="EOR",a[73]=fe(c0),e[74]="LSR",a[74]=J(),e[75]="uASR",a[75]=qt(c0),e[76]="JMP",a[76]=An(),e[77]="EOR",a[77]=fe(D0),e[78]="LSR",a[78]=Te(D),e[79]="uSRE",a[79]=Ce(D),e[80]="BVC",a[80]=oe(e0,0),e[81]="EOR",a[81]=fe(d0),e[82]="uKIL",a[82]=J0(),e[83]="uSRE",a[83]=Ce(Q),e[84]="uNOP",a[84]=S0(b0(p)),e[85]="EOR",a[85]=fe(b0(p)),e[86]="LSR",a[86]=Te(u(p)),e[87]="uSRE",a[87]=Ce(u(p)),e[88]="CLI",a[88]=I0(),e[89]="EOR",a[89]=fe(i0(C)),e[90]="uNOP",a[90]=S0(r0),e[91]="uSRE",a[91]=Ce(r(C)),e[92]="uNOP",a[92]=S0(i0(p)),e[93]="EOR",a[93]=fe(i0(p)),e[94]="LSR",a[94]=Te(r(p)),e[95]="uSRE",a[95]=Ce(r(p)),e[96]="RTS",a[96]=hn(),e[97]="ADC",a[97]=re(U0),e[98]="uKIL",a[98]=J0(),e[99]="uRRA",a[99]=he(S),e[100]="uNOP",a[100]=S0(_0),e[101]="ADC",a[101]=re(_0),e[102]="ROR",a[102]=Xe(R),e[103]="uRRA",a[103]=he(R),e[104]="PLA",a[104]=on(),e[105]="ADC",a[105]=re(c0),e[106]="ROR",a[106]=Se(),e[107]="uARR",a[107]=Qt(c0),e[108]="JMP",a[108]=Cn(),e[109]="ADC",a[109]=re(D0),e[110]="ROR",a[110]=Xe(D),e[111]="uRRA",a[111]=he(D),e[112]="BVS",a[112]=oe(e0,1),e[113]="ADC",a[113]=re(d0),e[114]="uKIL",a[114]=J0(),e[115]="uRRA",a[115]=he(Q),e[116]="uNOP",a[116]=S0(b0(p)),e[117]="ADC",a[117]=re(b0(p)),e[118]="ROR",a[118]=Xe(u(p)),e[119]="uRRA",a[119]=he(u(p)),e[120]="SEI",a[120]=ge(),e[121]="ADC",a[121]=re(i0(C)),e[122]="uNOP",a[122]=S0(r0),e[123]="uRRA",a[123]=he(r(C)),e[124]="uNOP",a[124]=S0(i0(p)),e[125]="ADC",a[125]=re(i0(p)),e[126]="ROR",a[126]=Xe(r(p)),e[127]="uRRA",a[127]=he(r(p)),e[128]="uNOP",a[128]=S0(c0),e[129]="STA",a[129]=me(q0),e[130]="uNOP",a[130]=S0(c0),e[131]="uSAX",a[131]=Ee(q0),e[132]="STY",a[132]=rt(z0),e[133]="STA",a[133]=me(z0),e[134]="STX",a[134]=nt(z0),e[135]="uSAX",a[135]=Ee(z0),e[136]="DEY",a[136]=ee(),e[137]="uNOP",a[137]=S0(c0),e[138]="TXA",a[138]=Pe(),e[139]="uANE",a[139]=Gt(c0),e[140]="STY",a[140]=rt(T),e[141]="STA",a[141]=me(T),e[142]="STX",a[142]=nt(T),e[143]="uSAX",a[143]=Ee(T),e[144]="BCC",a[144]=oe(X0,0),e[145]="STA",a[145]=me(v),e[146]="uKIL",a[146]=J0(),e[147]="uSHA",a[147]=pt(v),e[148]="STY",a[148]=rt(G0(p)),e[149]="STA",a[149]=me(G0(p)),e[150]="STX",a[150]=nt(G0(C)),e[151]="uSAX",a[151]=Ee(G0(C)),e[152]="TYA",a[152]=Jt(),e[153]="STA",a[153]=me($0(C)),e[154]="TXS",a[154]=jt(),e[155]="uSHS",a[155]=rn($0(C)),e[156]="uSHY",a[156]=fn($0(p)),e[157]="STA",a[157]=me($0(p)),e[158]="uSHX",a[158]=an($0(C)),e[159]="uSHA",a[159]=pt($0(C)),e[160]="LDY",a[160]=De(c0),e[161]="LDA",a[161]=se(U0),e[162]="LDX",a[162]=ke(c0),e[163]="uLAX",a[163]=_e(U0),e[164]="LDY",a[164]=De(_0),e[165]="LDA",a[165]=se(_0),e[166]="LDX",a[166]=ke(_0),e[167]="uLAX",a[167]=_e(_0),e[168]="TAY",a[168]=ue(),e[169]="LDA",a[169]=se(c0),e[170]="TAX",a[170]=pe(),e[171]="uLXA",a[171]=tn(c0),e[172]="LDY",a[172]=De(D0),e[173]="LDA",a[173]=se(D0),e[174]="LDX",a[174]=ke(D0),e[175]="uLAX",a[175]=_e(D0),e[176]="BCS",a[176]=oe(X0,1),e[177]="LDA",a[177]=se(d0),e[178]="uKIL",a[178]=J0(),e[179]="uLAX",a[179]=_e(d0),e[180]="LDY",a[180]=De(b0(p)),e[181]="LDA",a[181]=se(b0(p)),e[182]="LDX",a[182]=ke(b0(C)),e[183]="uLAX",a[183]=_e(b0(C)),e[184]="CLV",a[184]=ne(),e[185]="LDA",a[185]=se(i0(C)),e[186]="TSX",a[186]=qe(),e[187]="uLAS",a[187]=en(i0(C)),e[188]="LDY",a[188]=De(i0(p)),e[189]="LDA",a[189]=se(i0(p)),e[190]="LDX",a[190]=ke(i0(C)),e[191]="uLAX",a[191]=_e(i0(C)),e[192]="CPY",a[192]=tt(c0),e[193]="CMP",a[193]=ie(U0),e[194]="uNOP",a[194]=S0(c0),e[195]="uDCP",a[195]=le(S),e[196]="CPY",a[196]=tt(_0),e[197]="CMP",a[197]=ie(_0),e[198]="DEC",a[198]=Me(R),e[199]="uDCP",a[199]=le(R),e[200]="INY",a[200]=Ge(),e[201]="CMP",a[201]=ie(c0),e[202]="DEX",a[202]=Q0(),e[203]="uSBX",a[203]=nn(c0),e[204]="CPY",a[204]=tt(D0),e[205]="CMP",a[205]=ie(D0),e[206]="DEC",a[206]=Me(D),e[207]="uDCP",a[207]=le(D),e[208]="BNE",a[208]=oe(q,0),e[209]="CMP",a[209]=ie(d0),e[210]="uKIL",a[210]=J0(),e[211]="uDCP",a[211]=le(Q),e[212]="uNOP",a[212]=S0(b0(p)),e[213]="CMP",a[213]=ie(b0(p)),e[214]="DEC",a[214]=Me(u(p)),e[215]="uDCP",a[215]=le(u(p)),e[216]="CLD",a[216]=j0(),e[217]="CMP",a[217]=ie(i0(C)),e[218]="uNOP",a[218]=S0(r0),e[219]="uDCP",a[219]=le(r(C)),e[220]="uNOP",a[220]=S0(i0(p)),e[221]="CMP",a[221]=ie(i0(p)),e[222]="DEC",a[222]=Me(r(p)),e[223]="uDCP",a[223]=le(r(p)),e[224]="CPX",a[224]=et(c0),e[225]="SBC",a[225]=te(U0),e[226]="uNOP",a[226]=S0(c0),e[227]="uISB",a[227]=be(S),e[228]="CPX",a[228]=et(_0),e[229]="SBC",a[229]=te(_0),e[230]="INC",a[230]=Fe(R),e[231]="uISB",a[231]=be(R),e[232]="INX",a[232]=K0(),e[233]="SBC",a[233]=te(c0),e[234]="NOP",a[234]=xe(),e[235]="SBC",a[235]=te(c0),e[236]="CPX",a[236]=et(D0),e[237]="SBC",a[237]=te(D0),e[238]="INC",a[238]=Fe(D),e[239]="uISB",a[239]=be(D),e[240]="BEQ",a[240]=oe(q,1),e[241]="SBC",a[241]=te(d0),e[242]="uKIL",a[242]=J0(),e[243]="uISB",a[243]=be(Q),e[244]="uNOP",a[244]=S0(b0(p)),e[245]="SBC",a[245]=te(b0(p)),e[246]="INC",a[246]=Fe(u(p)),e[247]="uISB",a[247]=be(u(p)),e[248]="SED",a[248]=Oe(),e[249]="SBC",a[249]=te(i0(C)),e[250]="uNOP",a[250]=S0(r0),e[251]="uISB",a[251]=be(r(C)),e[252]="uNOP",a[252]=S0(i0(p)),e[253]="SBC",a[253]=te(i0(p)),e[254]="INC",a[254]=Fe(r(p)),e[255]="uISB",a[255]=be(r(p));function _(){return r0(function(){U(o>127),o=o<<1&255,I(o),L(o)})}function y0(){return r0(function(){P=0})}function j0(){return r0(function(){N=0})}function I0(){return r0(function(){g=0})}function ne(){return r0(function(){Y=0})}function Q0(){return r0(function(){b=b-1&255,I(b),L(b)})}function ee(){return r0(function(){x=x-1&255,I(x),L(x)})}function K0(){return r0(function(){b=b+1&255,I(b),L(b)})}function Ge(){return r0(function(){x=x+1&255,I(x),L(x)})}function J(){return r0(function(){P=o&1,o>>>=1,I(o),f=0})}function xe(){return r0(function(){})}function E0(){return r0(function(){var l=o>127;o=(o<<1|P)&255,U(l),I(o),L(o)})}function Se(){return r0(function(){var l=o&1;o=o>>>1|P<<7,U(l),I(o),L(o)})}function Qe(){return r0(function(){P=1})}function Oe(){return r0(function(){N=1})}function ge(){return r0(function(){g=1})}function pe(){return r0(function(){b=o,I(b),L(b)})}function ue(){return r0(function(){x=o,I(x),L(x)})}function qe(){return r0(function(){b=m,I(b),L(b)})}function Pe(){return r0(function(){o=b,I(o),L(o)})}function jt(){return r0(function(){m=b})}function Jt(){return r0(function(){o=x,I(o),L(o)})}function J0(){return[W,function(){H0()},function(){x0--}]}function S0(l){return l(function(){V("NOP/DOP")})}function re(l){return l(function(){if(N){var h=k,z=(o&15)+(h&15)+P;z>9&&(z+=6);var v0=(o>>4)+(h>>4)+(z>15?1:0)<<4;I(o+h+P&255),L(v0),P0((o^v0)&~(o^h)&128),v0>159&&(v0+=96),U(v0>255),o=(v0|z&15)&255}else{var h0=o+k+P;U(h0>255),P0((o^h0)&(k^h0)&128),o=h0&255,I(o),L(o)}})}function ae(l){return l(function(){o&=k,I(o),L(o)})}function St(l){return l(function(){var h=k;I(o&h),P0(h&64),L(h)})}function ie(l){return l(function(){var h=o-k&255;U(o>=k),I(h),L(h)})}function et(l){return l(function(){var h=b-k&255;U(b>=k),I(h),L(h)})}function tt(l){return l(function(){var h=x-k&255;U(x>=k),I(h),L(h)})}function fe(l){return l(function(){o^=k,I(o),L(o)})}function se(l){return l(function(){o=k,I(o),L(o)})}function ke(l){return l(function(){b=k,I(b),L(b)})}function De(l){return l(function(){x=k,I(x),L(x)})}function ce(l){return l(function(){o|=k,I(o),L(o)})}function te(l){return l(function(){if(N){var h=k,z=(o&15)-(h&15)-(1-P),v0=(o>>4)-(h>>4)-(z<0?1:0);z<0&&(z-=6),v0<0&&(v0-=6);var h0=o-h-(1-P);U(~h0&256),P0((o^h)&(o^h0)&128),I(h0&255),L(h0),o=(v0<<4|z&15)&255}else h=~k&255,h0=o+h+P,U(h0>255),P0((o^h0)&(h^h0)&128),o=h0&255,I(o),L(o)})}function gt(l){return l(function(){V("ANC"),o&=k,I(o),f=P=o&128?1:0})}function Gt(l){return l(function(){V("ANE")})}function Qt(l){return l(function(){V("ARR");var h=o&k,z=P?128:0;h=h>>>1|z,o=h,I(h),L(h);var v0=o&96;v0==96?(P=1,Y=0):v0==0?(P=0,Y=0):v0==32?(P=0,Y=1):v0==64&&(P=1,Y=1)})}function qt(l){return l(function(){V("ASR");var h=o&k;P=h&1,h=h>>>1,o=h,I(h),f=0})}function en(l){return l(function(){V("LAS");var h=m&k;o=h,b=h,m=h,I(h),L(h)})}function _e(l){return l(function(){V("LAX");var h=k;o=h,b=h,I(h),L(h)})}function tn(l){return l(function(){V("LXA");var h=o&k;o=h,b=h,I(h),L(h)})}function nn(l){return l(function(){V("SBX");var h=o&b,z=k,v0=h-z&255;b=v0,U(h>=z),I(v0),L(v0)})}function me(l){return l(function(){k=o})}function nt(l){return l(function(){k=b})}function rt(l){return l(function(){k=x})}function Ee(l){return l(function(){V("SAX"),k=o&b})}function pt(l){return l(function(){V("SHA"),k=o&b&(Z>>>8)+1&255})}function rn(l){return l(function(){V("SHS");var h=o&b;m=h,k=h&(Z>>>8)+1&255})}function an(l){return l(function(){V("SHX"),k=b&(Z>>>8)+1&255})}function fn(l){return l(function(){V("SHY"),k=x&(Z>>>8)+1&255})}function Ze(l){return l(function(){U(k>127);var h=k<<1&255;k=h,I(h),L(h)})}function Me(l){return l(function(){var h=k-1&255;k=h,I(h),L(h)})}function Fe(l){return l(function(){var h=k+1&255;k=h,I(h),L(h)})}function Te(l){return l(function(){P=k&1,k>>>=1,I(k),f=0})}function Ue(l){return l(function(){var h=k>127,z=(k<<1|P)&255;k=z,U(h),I(z),L(z)})}function Xe(l){return l(function(){var h=k&1,z=k>>>1|P<<7;k=z,U(h),I(z),L(z)})}function le(l){return l(function(){V("DCP");var h=k-1&255;k=h,h=o-h,U(h>=0),I(h),L(h)})}function be(l){return l(function(){if(V("ISB"),k=k+1&255,N){var h=k,z=(o&15)-(h&15)-(1-P),v0=(o>>4)-(h>>4)-(z<0?1:0);z<0&&(z-=6),v0<0&&(v0-=6);var h0=o-h-(1-P);U(~h0&256),P0((o^h)&(o^h0)&128),I(h0&255),L(h0),o=(v0<<4|z&15)&255}else h=~k&255,h0=o+h+P,U(h0>255),P0((o^h0)&(h^h0)&128),o=h0&255,I(o),L(o)})}function de(l){return l(function(){V("RLA");var h=k,z=P;U(h&128),h=(h<<1|z)&255,k=h,o&=h,I(h),L(h)})}function he(l){return l(function(){V("RRA");var h=k,z=P?128:0;if(U(h&1),h=h>>>1|z,k=h,N){var v0=k,h0=(o&15)+(v0&15)+P;h0>9&&(h0+=6);var we=(o>>4)+(v0>>4)+(h0>15?1:0)<<4;I(o+v0+P&255),L(we),P0((o^we)&~(o^v0)&128),we>159&&(we+=96),U(we>255),o=(we|h0&15)&255}else{var He=o+k+P;U(He>255),P0((o^He)&(k^He)&128),o=He&255,I(o),L(o)}})}function Ae(l){return l(function(){V("SLO");var h=k;U(h&128),h=h<<1&255,k=h,h=o|h,o=h,I(h),L(h)})}function Ce(l){return l(function(){V("SRE");var h=k;U(h&1),h=h>>>1,k=h,h=(o^h)&255,o=h,I(h),L(h)})}function sn(){return[W,A0,function(){j(o)},F]}function cn(){return[W,A0,function(){j(u0())},F]}function on(){return[W,A0,C0,function(){o=n0(),I(o),L(o)},F]}function xn(){return[W,A0,C0,function(){N0(n0())},F]}function un(){return[W,y,C0,function(){j(i>>>8&255)},function(){j(i&255)},T0,function(){i=$,F()}]}function mn(){return[W,a0,function(){A.debug&&A.breakpoint("BRK "+k),j(i>>>8&255)},function(){j(i&255)},function(){j(u0())},function(){$=t.read(k0)},function(){$|=t.read(k0+1)<<8},function(){i=$,g=1,F()}]}function ln(){return[W,a0,function(){A.debug&&A.breakpoint("IRQ "+k),j(i>>>8&255)},function(){j(i&255)},function(){j(u0()&-17)},function(){$=t.read(k0)},function(){$|=t.read(k0+1)<<8},function(){i=$,F()}]}function bn(){return[W,a0,function(){A.debug&&A.breakpoint("NMI "+k),j(i>>>8&255)},function(){j(i&255)},function(){j(u0()&-17)},function(){$=t.read(Z0)},function(){$|=t.read(Z0+1)<<8},function(){i=$,F()}]}function dn(){return[W,A0,C0,function(){N0(n0())},function(){$=n0()},function(){$|=n0()<<8},function(){i=$,F()}]}function hn(){return[W,A0,C0,function(){$=n0()},function(){$|=n0()<<8},function(){i=$,a0()},F]}function An(){return[W,y,T0,function(){i=$,F()}]}function Cn(){return[W,F0,p0,m0,function(){s0(),L0()},function(){i=Z,F()}]}function oe(l,h){var z;return l===q?z=function(){return B===h}:l===V0?z=function(){return f===h}:l===X0?z=function(){return P===h}:z=function(){return Y===h},[W,o0,function(){z()?(A0(),E()):F()},function(){g0?(A0(),t0()):F()},F]}this.saveState=function(){return{PC:i-1&65535,A:o,X:b,Y:x,SP:m,N:f,V:Y,D:N,I:g,Z:B,C:P,T:x0,o:R0,R:n?1:0,d:k,AD:$,BA:Z,BC:H?1:0,IA:s,bo:c,boa:g0}},this.loadState=function(l){i=l.PC+1&65535,o=l.A,b=l.X,x=l.Y,m=l.SP,f=l.N,Y=l.V,N=l.D,g=l.I,B=l.Z,P=l.C,x0=l.T,R0=l.o,n=!!l.R,k=l.d,$=l.AD,Z=l.BA,H=!!l.BC,s=l.IA,c=l.bo,g0=l.boa,d=R0<0?[W]:a[R0]},this.toString=function(){return"CPU PC: "+i.toString(16)+" op: "+R0.toString()+" T: "+x0+" data: "+k+` A: `+o.toString(16)+" X: "+b.toString(16)+" Y: "+x.toString(16)+" SP: "+m.toString(16)+" N"+f+" V"+Y+" D"+N+" I"+g+" Z"+B+" C"+P+" "},this.breakpoint=function(l){if(this.trace)var h="CPU Breakpoint! "+(l?"("+l+")":"")+` `+this.toString()};var Pt=[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],vn=[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],Sn=[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],On=[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0];this.getOpcodeMetadata=function(l,h){return{opcode:l,mnenomic:e[l],minCycles:Pt[l],maxCycles:Pt[l]+vn[l],insnlength:Sn[l]}},this.setNMI=function(){d=bn(),x0=1,i=i-1&65535},this.setIRQ=function(){g||(d=ln(),x0=1,i=i-1&65535)},this.getSP=function(){return m},this.getPC=function(){return i-1&65535},this.getT=function(){return x0},this.isHalted=function(){return e[R0]=="uKIL"},this.isPCStable=function(){return x0==0}};var Ft=class{constructor(){this.cpu=new lt;this.interruptType=0}connectMemoryBus(t){this.cpu.connectBus(t)}advanceClock(){if(this.interruptType&&this.isStable()){switch(this.interruptType){case 1:this.cpu.setNMI();break;case 2:this.cpu.setIRQ();break}this.interruptType=0}this.cpu.clockPulse()}advanceInsn(){do this.advanceClock();while(!this.isStable())}reset(){this.cpu.reset(),this.interruptType=0}interrupt(t){this.interruptType!=1&&(this.interruptType=t)}NMI(){this.interrupt(1)}IRQ(){this.interrupt(2)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.isHalted()}saveState(){var t=this.cpu.saveState();return t.it=this.interruptType,t}loadState(t){this.cpu.loadState(t),this.interruptType=t.it}isStable(){return this.cpu.isPCStable()}getOpcodeMetadata(t){return this.cpu.getOpcodeMetadata(t)}};var Ne=class{constructor(t){this.maxROMSize=262144;this.videoOffsetBytes=0;this.prefix=t;var n=this;this.cpu={getPC:n.getPC.bind(n),getSP:n.getSP.bind(n),isStable:n.isStable.bind(n),reset:n.reset.bind(n),saveState:()=>n.getCPUState(),loadState:()=>{console.log("loadState not implemented")},connectMemoryBus(){console.log("connectMemoryBus not implemented")}}}getImports(t){return{}}async fetchWASM(){var t=await fetch("res/"+this.prefix+".wasm");if(t.status==200||t.size){var n=await t.arrayBuffer(),i=await WebAssembly.compile(n),m=await WebAssembly.instantiate(i,this.getImports(i));this.instance=m,this.exports=m.exports}else throw new Error("could not load WASM file")}allocateBIOS(t){this.biosptr=this.exports.malloc(t.byteLength),this.biosarr=new Uint8Array(this.exports.memory.buffer,this.biosptr,t.byteLength)}async fetchBIOS(){var t=await fetch("res/"+this.prefix+".bios");if(t.status==200||t.size){var n=new Uint8Array(await t.arrayBuffer());this.allocateBIOS(n),this.loadBIOS(n)}else throw new Error("could not load BIOS file")}async initWASM(){this.sys=this.exports.machine_init(this.biosptr);let t=this.exports.machine_get_state_size();this.stateptr=this.exports.malloc(t);let n=this.exports.machine_get_controls_state_size();this.ctrlstateptr=this.exports.malloc(n);let i=this.exports.machine_get_cpu_state_size();this.cpustateptr=this.exports.malloc(i),this.romptr=this.exports.malloc(this.maxROMSize),this.statearr=new Uint8Array(this.exports.memory.buffer,this.stateptr,t),this.ctrlstatearr=new Uint8Array(this.exports.memory.buffer,this.ctrlstateptr,n),this.cpustatearr=new Uint8Array(this.exports.memory.buffer,this.cpustateptr,i);let m=4096*4;this.audioarr=new Float32Array(this.exports.memory.buffer,this.exports.machine_get_sample_buffer(),m),this.romarr=new Uint8Array(this.exports.memory.buffer,this.romptr,this.maxROMSize),console.log("machine_init",this.sys,t,n,i,m)}async loadWASM(){await this.fetchWASM(),this.exports.memory.grow(96),await this.fetchBIOS(),await this.initWASM()}getPC(){return this.exports.machine_cpu_get_pc(this.sys)}getSP(){return this.exports.machine_cpu_get_sp(this.sys)}isStable(){return this.exports.machine_cpu_is_stable(this.sys)}loadROM(t){if(t.length>this.maxROMSize)throw new Ye(`Rom size too big: ${t.length} bytes`);this.romarr.set(t),this.romlen=t.length,console.log("load rom",t.length,"bytes"),this.reset()}loadBIOS(t){this.biosarr.set(t)}reset(){this.exports.machine_reset(this.sys)}read(t){return this.exports.machine_mem_read(this.sys,t&65535)}readConst(t){return this.exports.machine_mem_read(this.sys,t&65535)}write(t,n){this.exports.machine_mem_write(this.sys,t&65535,n&255)}getAudioParams(){return{sampleRate:44100,stereo:!1}}connectVideo(t){this.pixel_dest=t;var n=this.exports.machine_get_pixel_buffer(this.sys);console.log("connectVideo",n,t.length),this.pixel_src=new Uint32Array(this.exports.memory.buffer,n+this.videoOffsetBytes,t.length)}syncVideo(){this.exports.machine_update_video&&this.exports.machine_update_video(this.sys),this.pixel_dest!=null&&this.pixel_dest.set(this.pixel_src)}saveControlsState(){return this.exports.machine_save_controls_state(this.sys,this.ctrlstateptr),{controls:this.ctrlstatearr.slice(0)}}loadControlsState(t){this.ctrlstatearr.set(t.controls),this.exports.machine_load_controls_state(this.sys,this.ctrlstateptr)}connectAudio(t){this.audio=t}syncAudio(){if(this.audio!=null)for(var t=this.exports.machine_get_sample_count(),n=0;n{var t=!1;for(var n in this.id2bp)this.id2bp[n].cond()&&(t=!0);return t}}},ht=class{constructor(){this.recorder=null;this.internalFiles={}}setRecorder(t){this.recorder=t}updateRecorder(){this.recorder&&this.isRunning()&&this.recorder.frameRequested()&&this.recorder.recordFrame(this.saveState())}inspect(t){return kn(this,t)}getDebugTree(){var n;var t={};return t.state=this.saveState(),(n=this.debugSymbols)!=null&&n.debuginfo&&(t.debuginfo=this.debugSymbols.debuginfo),t}readFile(t){return this.internalFiles[t]}writeFile(t,n){return this.internalFiles[t]=n,!0}},ye=class extends ht{constructor(){super(...arguments);this.debugSavedState=null;this.debugBreakState=null;this.debugTargetClock=0;this.debugClock=0;this.breakpoints=new dt;this.frameCount=0}setBreakpoint(n,i){i?(this.breakpoints.id2bp[n]={cond:i},this.restartDebugging()):this.clearBreakpoint(n)}clearBreakpoint(n){delete this.breakpoints.id2bp[n]}hasBreakpoint(n){return this.breakpoints.id2bp[n]!=null}getDebugCallback(){return this.breakpoints.getDebugCondition()}setupDebug(n){this.onBreakpointHit=n}clearDebug(){this.debugBreakState!=null&&this.debugSavedState!=null&&this.loadState(this.debugSavedState),this.debugSavedState=null,this.debugBreakState=null,this.debugTargetClock=-1,this.debugClock=0,this.onBreakpointHit=null,this.clearBreakpoint("debug"),this.frameCount=0}setDebugCondition(n){this.setBreakpoint("debug",n)}resetDebugging(){this.debugSavedState?this.loadState(this.debugSavedState):this.debugSavedState=this.saveState(),this.debugClock=0,this.debugCallback=this.getDebugCallback(),this.debugBreakState=null}restartDebugging(){this.resetDebugging(),this.resume()}preFrame(){this.debugCallback&&!this.debugBreakState&&(this.debugSavedState=this.saveState(),this.debugTargetClock-=this.debugClock,this.debugClock=0)}postFrame(){this.debugCallback&&this.debugBreakState&&this.loadState(this.debugBreakState),this.frameCount++}pollControls(){}nextFrame(n){this.pollControls(),this.updateRecorder(),this.preFrame();var i=this.advance(n);return this.postFrame(),i}evalDebugCondition(){this.debugCallback&&!this.debugBreakState&&this.debugCallback()}wasBreakpointHit(){return this.debugBreakState!=null}breakpointHit(n,i){console.log(this.debugTargetClock,n,this.debugClock,this.isStable()),this.debugTargetClock=n,this.debugBreakState=this.saveState(),console.log("Breakpoint at clk",this.debugClock,"PC",this.debugBreakState.c.PC.toString(16)),this.pause(),this.onBreakpointHit&&this.onBreakpointHit(this.debugBreakState,i)}haltAndCatchFire(n){this.breakpointHit(this.debugClock,n)}runEval(n){this.setDebugCondition(()=>{if(++this.debugClock>=this.debugTargetClock&&this.isStable()){var i=this.getCPUState();return n(i)?(this.breakpointHit(this.debugClock),!0):!1}})}runToPC(n){this.debugTargetClock++;let i=new Set(n);this.runEval(m=>i.has(m.PC))}runEvalAtPC(n){this.debugTargetClock++,this.runEval(i=>{let m=i.EPC!=null?i.EPC:i.PC;if(!n.has(m))return!1;let o=n.get(m);return o?o(i):!0})}runUntilReturn(){var n=this.getSP();this.runEval(i=>i.SP>n)}stepOver(){var x;var n=this,i=this.getPC(),m=null,o=(x=n.readAddress)==null?void 0:x.bind(n);if(o&&n.disassemble&&(m=n.disassemble(i,o)),m&&m.iscall){var b=i+m.nbytes;this.debugTargetClock++,this.runEval(f=>f.PC==b)}else this.step()}hasCustomStepOver(){return!1}runToFrameClock(n){this.restartDebugging(),this.debugTargetClock=n,this.runEval(()=>!0)}step(){this.runToFrameClock(this.debugClock+1)}stepBack(){var n,i,m=this.debugTargetClock;this.restartDebugging(),this.debugTargetClock=m-25,this.runEval(o=>this.debugClockthis.frameCount>n)}};function kn(A,t){if(A.debugSymbols){var n=A.debugSymbols.symbolmap,i=A.debugSymbols.addr2symbol;if(!n||!A.readAddress)return null;var m=n["_"+t]||n[t];if(typeof m!="number")return null;var o=A.readAddress(m);if(i&&i[m+1]!=null)return"$"+K(m,4)+" = $"+K(o,2)+" ("+o+" decimal)";{let b=A.readAddress(m+1),x=o|b<<8;return"$"+K(m,4)+" = $"+K(o,2)+" $"+K(b,2)+" ("+(x<<16>>16)+" decimal)"}}}var Ut=class extends ye{constructor(){super(...arguments);this.debugPCDelta=-1;this.getToolForFilename=it}fixPC(n){return n.PC=n.PC+this.debugPCDelta&65535,n}unfixPC(n){return n.PC=n.PC-this.debugPCDelta&65535,n}getSP(){return this.getCPUState().SP}getPC(){return this.getCPUState().PC}isStable(){return!this.getCPUState().T}newCPU(n){var i=new lt;return i.connectBus(n),i}getOpcodeMetadata(n,i){return Kt(n,i)}getOriginPC(){return(this.readAddress(65532)|this.readAddress(65533)<<8)&65535}disassemble(n,i){return ct(n,i(n),i(n+1),i(n+2))}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}getDebugCategories(){return["CPU","ZPRAM","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return zt(i.c);case"ZPRAM":return at(i.b||i.ram,0,256);case"Stack":return Le(this,i.b||i.ram,256,511,256+i.c.SP,32)}}};function zt(A){function t(n){var i="";return i+=n.N?" N":" -",i+=n.V?" V":" -",i+=n.D?" D":" -",i+=n.Z?" Z":" -",i+=n.C?" C":" -",i+=n.I?" I":" -",i}return"PC "+K(A.PC,4)+" "+t(A)+` @@ -27,4 +27,4 @@ $`+K(m)+": ",x+=K(N,4)+" "+Dn(A,N,!0),m++,f=0):(f==0&&(x+=` $`+K(m)+": "),x+=K(Y(m))+" ",++f==8&&(f=0))}return x+` `}function Dn(A,t,n){for(var i=t,m=A.debugSymbols&&A.debugSymbols.addr2symbol;m&&t>=0;){var o=m[t];if(o){var o=m[t];return n?o+" + $"+K(i-t):o}if(!n)break;t--}return""}function Rn(A){return typeof A.connectVideo=="function"}function Bn(A){return typeof A.connectAudio=="function"}function Nn(A){return typeof A.setKeyInput=="function"}function Ht(A){return typeof A.setPaddleInput=="function"}function bt(A){return typeof A.getRasterY=="function"}function yn(A){return typeof A.connectProbe=="function"}function In(A){return typeof A.loadBIOS=="function"}function Ln(A){return typeof A.connectSerialIO=="function"}var Ie=class extends ye{constructor(t){super(),this.mainElement=t}reset(){this.machine.reset(),this.serialVisualizer!=null&&this.serialVisualizer.reset()}loadState(t){this.machine.loadState(t)}saveState(){return this.machine.saveState()}getSP(){return this.machine.cpu.getSP()}getPC(){return this.machine.cpu.getPC()}isStable(){return this.machine.cpu.isStable()}getCPUState(){return this.machine.cpu.saveState()}loadControlsState(t){this.machine.loadControlsState(t)}saveControlsState(){return this.machine.saveControlsState()}async start(){this.machine=this.newMachine();let t=this.machine;t instanceof Ne&&await t.loadWASM();var n;if(Rn(t)){var i=t.getVideoParams();this.video=new Dt(this.mainElement,i.width,i.height,{overscan:!!i.overscan,rotate:i.rotate|0,aspect:i.aspect}),this.video.create(),t.connectVideo(this.video.getFrameData()),Nn(t)&&(this.video.setKeyboardEvents(t.setKeyInput.bind(t)),this.poller=new Bt(t.setKeyInput.bind(t))),n=i.videoFrequency}if(this.timer=new Rt(n||60,this.nextFrame.bind(this)),Bn(t)){var m=t.getAudioParams();this.audio=new Ke(m.sampleRate),this.audio.start(),t.connectAudio(this.audio)}Ht(t)&&this.video.setupMouseEvents(),yn(t)&&(this.probeRecorder=new $e(t),this.startProbing=()=>(t.connectProbe(this.probeRecorder),this.probeRecorder),this.stopProbing=()=>{t.connectProbe(null)}),In(t)&&(this.loadBIOS=(o,b)=>{t.loadBIOS(b,o)}),Ln(t)&&(this.serialIOInterface==null?this.serialVisualizer=new vt(this.mainElement,t):t.connectSerialIO(this.serialIOInterface))}loadROM(t,n,i){this.machine.loadROM(n,t,i),this.reset()}pollControls(){this.poller&&this.poller.poll(),Ht(this.machine)&&(this.machine.setPaddleInput(0,this.video.paddle_x),this.machine.setPaddleInput(1,this.video.paddle_y),this.machine.setPaddleButton&&this.video.paddle_buttons!=null&&(this.machine.setPaddleButton(0,this.video.paddle_buttons[0]),this.machine.setPaddleButton(1,this.video.paddle_buttons[1]),this.machine.setPaddleButton(2,this.video.paddle_buttons[2]))),this.machine.pollControls&&this.machine.pollControls()}advance(t){let n=this.getDebugCallback();try{var i=this.machine.advanceFrame(n);return i}finally{!t&&this.video&&(this.video.updateFrame(),this.updateVideoDebugger()),!t&&this.serialVisualizer&&this.serialVisualizer.refresh()}}updateVideoDebugger(){var t;if(!this.isRunning()&&bt(this.machine)&&this.machine.getRasterCanvasPosition){let{x:n,y:i}=this.machine.getRasterCanvasPosition();if(n>=0||i>=0){let m=(t=this.video)==null?void 0:t.getContext();m&&kt(m,n,i,1)}}}advanceFrameClock(t,n){if(n>0)return this.machine instanceof Ne?this.machine.advanceFrameClock(t,n):this.machine.advanceFrame(()=>--n<=0)}isRunning(){return this.timer&&this.timer.isRunning()}resume(){this.timer.start(),this.audio&&this.audio.start(),this.poller&&this.poller.start()}pause(){this.timer.stop(),this.audio&&this.audio.stop(),this.poller&&this.poller.stop()}runToVsync(){this.restartDebugging();var t=!1;this.runEval(()=>{if(this.getRasterScanline()>0)t=!0;else return t})}getRasterScanline(){return bt(this.machine)&&this.machine.getRasterY?this.machine.getRasterY():-1}getRasterLineClock(){return bt(this.machine)&&this.machine.getRasterX?this.machine.getRasterX():-1}readAddress(t){return this.machine.read(t)}getDebugCategories(){if(ve(this.machine))return this.machine.getDebugCategories()}getDebugInfo(t,n){return ve(this.machine)&&this.machine.getDebugInfo(t,n)}},Vt=class extends Ie{constructor(){super(...arguments);this.getOpcodeMetadata=Kt}getToolForFilename(n){return it(n)}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}disassemble(n,i){return ct(n,i(n),i(n+1),i(n+2))}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","ZPRAM","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return zt(i.c);case"ZPRAM":return at(i.b||i.ram,0,256);case"Stack":return Le(this,i.b||i.ram,256,511,256+i.c.SP,32);default:return ve(this.machine)&&this.machine.getDebugInfo(n,i)}}},Yt=class extends Ie{constructor(){super(...arguments);this.getToolForFilename=ft}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return $t(i.c);case"Stack":{var m=i.c.SP-1&65535,o=m&65280,b=o+255;return m==0&&(m=65536),Le(this,[],o,b,m,205)}default:return ve(this.machine)&&this.machine.getDebugInfo(n,i)}}disassemble(n,i){return mt(n,i(n),i(n+1),i(n+2),i(n+3))}},Wt=class extends Ie{constructor(){super(...arguments);this.getToolForFilename=st}getDefaultExtensions(){return[".c",".lwasm",".xasm"]}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return Ct(i.c);case"Stack":{var m=i.c.SP-1&65535,o=m&65280,b=o+255;return m==0&&(m=65536),Le(this,[],o,b,m,23,!0)}default:return super.getDebugInfo(n,i)}}disassemble(n,i){return Object.create(je()).disasm(i(n),i(n+1),i(n+2),i(n+3),i(n+4),n)}},vt=class{constructor(t,n){this.lastOutCount=-1;this.lastInCount=-1;this.device=n,this.textarea=document.createElement("textarea"),this.textarea.classList.add("transcript"),this.textarea.classList.add("transcript-style-2"),this.textarea.style.display="none",t.appendChild(this.textarea)}reset(){this.lastOutCount=0,this.lastInCount=0,this.textarea.style.display="none"}refresh(){var t="";if(this.device.serialOut.length!=this.lastOutCount){var n="";for(var i of this.device.serialOut)t!=i.op&&(n!=""&&(n+=` `),i.op==="read"?n+="<< ":i.op==="write"&&(n+=">> "),t=i.op),i.value==10?(n+="\u21B5",t=""):n+=wt(i.value);this.textarea.value=n,this.lastOutCount=this.device.serialOut.length,this.textarea.style.display="block"}}};export{ct as a,mt as b,We as c,ot as d,Nt as e,yt as f,Fn as g,Pn as h,Tn as i,wn as j,Lt as k,je as l,Ft as m,$e as n,Be as o,xt as p,ut as q,Ot as r,Ne as s,Tt as t,ve as u,ht as v,kn as w,Ut as x,zt as y,Kt as z,$t as A,lr as B,At as C,Xt as D,Le as E,Ie as F,Vt as G,Yt as H,Wt as I}; -//# sourceMappingURL=chunk-4WX2XTAI.js.map +//# sourceMappingURL=chunk-MZ43WA3W.js.map diff --git a/gen/chunk-4WX2XTAI.js.map b/gen/chunk-MZ43WA3W.js.map similarity index 100% rename from gen/chunk-4WX2XTAI.js.map rename to gen/chunk-MZ43WA3W.js.map diff --git a/gen/chunk-IK55UTNM.js b/gen/chunk-UTYUOOT2.js similarity index 96% rename from gen/chunk-IK55UTNM.js rename to gen/chunk-UTYUOOT2.js index de55c6aa..10507eb1 100644 --- a/gen/chunk-IK55UTNM.js +++ b/gen/chunk-UTYUOOT2.js @@ -1,5 +1,5 @@ -import{X as v,a as F,g as P,r as d,u as R,v as b}from"./chunk-EK7ZCXAS.js";function _(e){let a=e>>4&15,h=e&15,r=a?60:0;a&&(h+=1);let f=((a-1)*25-25)*(2*Math.PI/360),g=256*1.1*Math.pow(h/16,.9),p=r*Math.cos(f),O=r*Math.sin(f);var y=g+.956*p+.621*O,k=g-.272*p-.647*O,w=g-1.107*p+1.704*O;return R(b(0,255,y),b(0,255,k),b(0,255,w))}var I=0;var B=8,E=12,M=13,j=17,n=18,c=22,G=23,U=24,D=25,o=26,u=27,H=28,C=29,K=30,N=31,$=0,Z=4,q=8,x=12,J=16,z=31,L=-9,m=[0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7],V=[n+0,n+1,n+2,n+3,c+0,c+1,c+2,c+3,o,o,o,o,c+0,c+1,c+2,c+3],T=class{constructor(){this.regs=new Uint8Array(32);this.readregs=new Uint8Array(32);this.shiftregs=new Uint32Array(8);this.count=0;this.an=0;this.rgb=0;this.pmcol=0;this.gtiacol=0;this.gtiacol2=0;this.hbias=L;this.pmDebugMask=-1}reset(){this.regs.fill(0),this.readregs.fill(0),this.readregs[20]=15,this.readregs.fill(15,21),this.count=0}saveState(){return d(0,{},this)}loadState(t){d(0,this,t)}setReg(t,s){switch(t){case n:case n+1:case n+2:case n+3:case c:case c+1:case c+2:case c+3:case o:s&=254;break;case K:this.readregs.fill(0,0,16);return}this.regs[t]=s}readReg(t){return t===z?this.readregs[t]&~this.regs[N]:this.readregs[t]}sync(){this.count=0}setBias(t){this.hbias=L+t}updateGfx(t,s,i){switch(t){case 0:this.regs[C]&1&&(this.regs[j]=i);break;case 2:case 3:case 4:case 5:this.regs[C]&2&&(!(s&1)||!(this.regs[H]&1<>6){case 0:switch(this.an){case 0:return o;case 4:case 5:case 6:case 7:return c+this.an-4;case 8:return this.regs[U]&240|this.regs[G]&15|256}break;case 1:return this.regs[o]&240|this.gtiacol&15|256;case 2:return V[this.gtiacol];case 3:return this.regs[o]&15|this.gtiacol<<4|256}return 256}anySpriteActive(){return this.shiftregs[0]||this.shiftregs[1]||this.shiftregs[2]||this.shiftregs[3]||this.shiftregs[4]||this.shiftregs[5]||this.shiftregs[6]||this.shiftregs[7]}processPlayerMissile(){if(!this.anySpriteActive()){this.evalTrigger(0),this.evalTrigger(1),this.evalTrigger(2),this.evalTrigger(3),this.evalTrigger(4),this.evalTrigger(5),this.evalTrigger(6),this.evalTrigger(7),this.pmcol=-1;return}if(this.an==2){this.shiftObject(0),this.shiftObject(1),this.shiftObject(2),this.shiftObject(3),this.shiftObject(4),this.shiftObject(5),this.shiftObject(6),this.shiftObject(7),this.pmcol=-1;return}let t=(this.regs[u]&15)<<4,s=m[(this.an&7)+8+t],i=this.an-4,a=-1,h=0;for(let r=0;r<4;r++)if(this.shiftObject(r)){i>=0&&(this.readregs[Z+r]|=1<=0&&(this.readregs[$+r]|=1<=0?this.getObjectColor(a):-1}shiftObject(t){let s=(this.shiftregs[t]&2147483648)!=0;return this.shiftregs[t]<<=1,this.evalTrigger(t),s}getObjectColor(t){return this.regs[u]&16&&t>=4?this.regs[D]:this.regs[n+(t&3)]}evalTrigger(t){this.regs[I+t]+this.hbias==this.count&&this.triggerObject(t)}triggerObject(t){let s,i;if(this.pmDebugMask&1<>a&3,i=(this.regs[j]>>a&3)<<6}s&1?i=A(i):i<<=8,s==3?i=A(i):i<<=16,this.shiftregs[t]|=i}}clockPulse1(){this.processPlayerMissile(),this.clockPulse2(),this.count++}clockPulse2(){var t;if(this.pmcol>=0)t=this.pmcol;else{let s=this.getPlayfieldColor();t=s&256?s&255:this.regs[s]}this.rgb=S[t],this.gtiacol2=this.gtiacol2<<1|this.an>>3}clockPulse4(){this.gtiacol=this.gtiacol2&15}static stateToLongString(t){let s="";return s+=`X: ${F(t.count,3)} ANTIC: ${P(t.an,1)} PM: ${P(t.pmcol,3)} +import{X as v,a as F,g as P,r as d,u as R,v as b}from"./chunk-ZTLOJICZ.js";function _(e){let a=e>>4&15,h=e&15,r=a?60:0;a&&(h+=1);let f=((a-1)*25-25)*(2*Math.PI/360),g=256*1.1*Math.pow(h/16,.9),p=r*Math.cos(f),O=r*Math.sin(f);var y=g+.956*p+.621*O,k=g-.272*p-.647*O,w=g-1.107*p+1.704*O;return R(b(0,255,y),b(0,255,k),b(0,255,w))}var I=0;var B=8,E=12,M=13,j=17,n=18,c=22,G=23,U=24,D=25,o=26,u=27,H=28,C=29,K=30,N=31,$=0,Z=4,q=8,x=12,J=16,z=31,L=-9,m=[0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7],V=[n+0,n+1,n+2,n+3,c+0,c+1,c+2,c+3,o,o,o,o,c+0,c+1,c+2,c+3],T=class{constructor(){this.regs=new Uint8Array(32);this.readregs=new Uint8Array(32);this.shiftregs=new Uint32Array(8);this.count=0;this.an=0;this.rgb=0;this.pmcol=0;this.gtiacol=0;this.gtiacol2=0;this.hbias=L;this.pmDebugMask=-1}reset(){this.regs.fill(0),this.readregs.fill(0),this.readregs[20]=15,this.readregs.fill(15,21),this.count=0}saveState(){return d(0,{},this)}loadState(t){d(0,this,t)}setReg(t,s){switch(t){case n:case n+1:case n+2:case n+3:case c:case c+1:case c+2:case c+3:case o:s&=254;break;case K:this.readregs.fill(0,0,16);return}this.regs[t]=s}readReg(t){return t===z?this.readregs[t]&~this.regs[N]:this.readregs[t]}sync(){this.count=0}setBias(t){this.hbias=L+t}updateGfx(t,s,i){switch(t){case 0:this.regs[C]&1&&(this.regs[j]=i);break;case 2:case 3:case 4:case 5:this.regs[C]&2&&(!(s&1)||!(this.regs[H]&1<>6){case 0:switch(this.an){case 0:return o;case 4:case 5:case 6:case 7:return c+this.an-4;case 8:return this.regs[U]&240|this.regs[G]&15|256}break;case 1:return this.regs[o]&240|this.gtiacol&15|256;case 2:return V[this.gtiacol];case 3:return this.regs[o]&15|this.gtiacol<<4|256}return 256}anySpriteActive(){return this.shiftregs[0]||this.shiftregs[1]||this.shiftregs[2]||this.shiftregs[3]||this.shiftregs[4]||this.shiftregs[5]||this.shiftregs[6]||this.shiftregs[7]}processPlayerMissile(){if(!this.anySpriteActive()){this.evalTrigger(0),this.evalTrigger(1),this.evalTrigger(2),this.evalTrigger(3),this.evalTrigger(4),this.evalTrigger(5),this.evalTrigger(6),this.evalTrigger(7),this.pmcol=-1;return}if(this.an==2){this.shiftObject(0),this.shiftObject(1),this.shiftObject(2),this.shiftObject(3),this.shiftObject(4),this.shiftObject(5),this.shiftObject(6),this.shiftObject(7),this.pmcol=-1;return}let t=(this.regs[u]&15)<<4,s=m[(this.an&7)+8+t],i=this.an-4,a=-1,h=0;for(let r=0;r<4;r++)if(this.shiftObject(r)){i>=0&&(this.readregs[Z+r]|=1<=0&&(this.readregs[$+r]|=1<=0?this.getObjectColor(a):-1}shiftObject(t){let s=(this.shiftregs[t]&2147483648)!=0;return this.shiftregs[t]<<=1,this.evalTrigger(t),s}getObjectColor(t){return this.regs[u]&16&&t>=4?this.regs[D]:this.regs[n+(t&3)]}evalTrigger(t){this.regs[I+t]+this.hbias==this.count&&this.triggerObject(t)}triggerObject(t){let s,i;if(this.pmDebugMask&1<>a&3,i=(this.regs[j]>>a&3)<<6}s&1?i=A(i):i<<=8,s==3?i=A(i):i<<=16,this.shiftregs[t]|=i}}clockPulse1(){this.processPlayerMissile(),this.clockPulse2(),this.count++}clockPulse2(){var t;if(this.pmcol>=0)t=this.pmcol;else{let s=this.getPlayfieldColor();t=s&256?s&255:this.regs[s]}this.rgb=S[t],this.gtiacol2=this.gtiacol2<<1|this.an>>3}clockPulse4(){this.gtiacol=this.gtiacol2&15}static stateToLongString(t){let s="";return s+=`X: ${F(t.count,3)} ANTIC: ${P(t.an,1)} PM: ${P(t.pmcol,3)} `,s+=`Write Registers: `,s+=v(t.regs,0,32),s+=`Read Registers: `,s+=v(t.readregs,0,32),s}};function A(e){return e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,e|e<<1}var S=new Uint32Array(256);for(l=0;l<256;l++)S[l]=_(l);var l;export{_ as a,J as b,z as c,T as d}; -//# sourceMappingURL=chunk-IK55UTNM.js.map +//# sourceMappingURL=chunk-UTYUOOT2.js.map diff --git a/gen/chunk-IK55UTNM.js.map b/gen/chunk-UTYUOOT2.js.map similarity index 100% rename from gen/chunk-IK55UTNM.js.map rename to gen/chunk-UTYUOOT2.js.map diff --git a/gen/chunk-XQKNUPDS.js b/gen/chunk-V7REAW7P.js similarity index 97% rename from gen/chunk-XQKNUPDS.js rename to gen/chunk-V7REAW7P.js index 74e9c02d..05325f8c 100644 --- a/gen/chunk-XQKNUPDS.js +++ b/gen/chunk-V7REAW7P.js @@ -1,4 +1,4 @@ -import{A as w,a as b,b as v,y as P}from"./chunk-4WX2XTAI.js";import{Q as S,S as p,W as C}from"./chunk-EK7ZCXAS.js";var o=class{constructor(t){this.loaded=!1;this.preinitted=!1;this.started=!1;this.romtype="cart";this.running=!1;this.initluavars=!1;this.mainElement=t,this.timer=new C(20,this.poll.bind(this))}luacall(t){return this.js_lua_string||(this.js_lua_string=Module.cwrap("_Z13js_lua_stringPKc","string",["string"])),this.js_lua_string(t||"")}_pause(){this.running=!1,this.timer.stop()}pause(){this.loaded&&this.running&&(this.luacall("emu.pause()"),this._pause())}_resume(){this.luacall("emu.unpause()"),this.running=!0,this.timer.start()}resume(){this.loaded&&!this.running&&this._resume()}reset(){this.loaded&&(this.luacall("manager:machine():soft_reset()"),this.running=!0,this.initluavars=!1)}isRunning(){return this.running}bufferConsoleOutput(t){typeof t=="string"&&console.log(t)}startModule(t,e){this.started=!0;var r=this.romfn=this.romfn||e.romfn,n=this.romdata=this.romdata||e.romdata||new p(e.romsize).mem,g=this.romtype=this.romtype||e.romtype,a=this.video=new S(this.mainElement,e.width,e.height);a.create(),$(a.canvas).attr("id","canvas"),console.log("loading",e.jsfile);var u=[e.driver,"-debug","-debugger","none","-verbose","-window","-nokeepaspect","-resolution",a.canvas.width+"x"+a.canvas.height];r&&u.push("-"+g,r),e.extraargs&&(u=u.concat(e.extraargs)),console.log(u),window.JSMESS={},window.Module={arguments:u,screenIsReadOnly:!0,print:this.bufferConsoleOutput,canvas:a.canvas,doNotCaptureKeyboard:!0,keyboardListeningElement:a.canvas,preInit:()=>{console.log("loading FS"),ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="canvas",e.cfgfile&&(FS.mkdir("/cfg"),FS.writeFile("/cfg/"+e.cfgfile,e.cfgdata,{encoding:"utf8"})),e.biosfile&&(FS.mkdir("/roms"),FS.mkdir("/roms/"+e.driver),FS.writeFile("/roms/"+e.biosfile,e.biosdata,{encoding:"binary"})),FS.mkdir("/emulator"),r&&FS.writeFile(r,n,{encoding:"binary"}),e.preInit&&e.preInit(self),this.preinitted=!0},preRun:[()=>{$(a.canvas).click(i=>{a.canvas.focus()}),this.loaded=!0,console.log("about to run...")}]};var d,c,m=$.Deferred(),f=$.Deferred();if(e.cfgfile&&(d=$.get("mame/cfg/"+e.cfgfile,i=>{e.cfgdata=i,console.log("loaded "+e.cfgfile)},"text")),e.biosfile){var s=new XMLHttpRequest;s.open("GET","mame/roms/"+e.biosfile,!0),s.responseType="arraybuffer",s.onload=i=>{e.biosdata=new Uint8Array(s.response),console.log("loaded "+e.biosfile),m.resolve()},s.ontimeout=function(i){throw Error("Timeout loading "+e.biosfile)},s.send()}else m.resolve();c=$.get("mame/debugger.lua",i=>{this.luadebugscript=i,console.log("loaded debugger.lua")},"text");{var l=new XMLHttpRequest;l.open("GET","mame/"+e.jsfile.replace(".js",".wasm"),!0),l.responseType="arraybuffer",l.onload=i=>{console.log("loaded WASM file"),window.Module.wasmBinary=new Uint8Array(l.response),f.resolve()},l.ontimeout=function(i){throw Error("Timeout loading "+e.jsfile)},l.send()}$.when(c,d,m,f).done(()=>{var i=document.createElement("script");i.src="mame/"+e.jsfile,document.getElementsByTagName("head")[0].appendChild(i),console.log("created script element")}),window.mamelua=i=>(this.initlua(),[i,this.luacall(i)])}loadROMFile(t){this.romdata=t,this.preinitted&&this.romfn&&FS.writeFile(this.romfn,t,{encoding:"binary"})}loadRegion(t,e){if(this.loaded&&e.length>0){for(var r='rgn = manager:machine():memory().regions["'+t+`"] +import{A as w,a as b,b as v,y as P}from"./chunk-MZ43WA3W.js";import{Q as S,S as p,W as C}from"./chunk-ZTLOJICZ.js";var o=class{constructor(t){this.loaded=!1;this.preinitted=!1;this.started=!1;this.romtype="cart";this.running=!1;this.initluavars=!1;this.mainElement=t,this.timer=new C(20,this.poll.bind(this))}luacall(t){return this.js_lua_string||(this.js_lua_string=Module.cwrap("_Z13js_lua_stringPKc","string",["string"])),this.js_lua_string(t||"")}_pause(){this.running=!1,this.timer.stop()}pause(){this.loaded&&this.running&&(this.luacall("emu.pause()"),this._pause())}_resume(){this.luacall("emu.unpause()"),this.running=!0,this.timer.start()}resume(){this.loaded&&!this.running&&this._resume()}reset(){this.loaded&&(this.luacall("manager:machine():soft_reset()"),this.running=!0,this.initluavars=!1)}isRunning(){return this.running}bufferConsoleOutput(t){typeof t=="string"&&console.log(t)}startModule(t,e){this.started=!0;var r=this.romfn=this.romfn||e.romfn,n=this.romdata=this.romdata||e.romdata||new p(e.romsize).mem,g=this.romtype=this.romtype||e.romtype,a=this.video=new S(this.mainElement,e.width,e.height);a.create(),$(a.canvas).attr("id","canvas"),console.log("loading",e.jsfile);var u=[e.driver,"-debug","-debugger","none","-verbose","-window","-nokeepaspect","-resolution",a.canvas.width+"x"+a.canvas.height];r&&u.push("-"+g,r),e.extraargs&&(u=u.concat(e.extraargs)),console.log(u),window.JSMESS={},window.Module={arguments:u,screenIsReadOnly:!0,print:this.bufferConsoleOutput,canvas:a.canvas,doNotCaptureKeyboard:!0,keyboardListeningElement:a.canvas,preInit:()=>{console.log("loading FS"),ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="canvas",e.cfgfile&&(FS.mkdir("/cfg"),FS.writeFile("/cfg/"+e.cfgfile,e.cfgdata,{encoding:"utf8"})),e.biosfile&&(FS.mkdir("/roms"),FS.mkdir("/roms/"+e.driver),FS.writeFile("/roms/"+e.biosfile,e.biosdata,{encoding:"binary"})),FS.mkdir("/emulator"),r&&FS.writeFile(r,n,{encoding:"binary"}),e.preInit&&e.preInit(self),this.preinitted=!0},preRun:[()=>{$(a.canvas).click(i=>{a.canvas.focus()}),this.loaded=!0,console.log("about to run...")}]};var d,c,m=$.Deferred(),f=$.Deferred();if(e.cfgfile&&(d=$.get("mame/cfg/"+e.cfgfile,i=>{e.cfgdata=i,console.log("loaded "+e.cfgfile)},"text")),e.biosfile){var s=new XMLHttpRequest;s.open("GET","mame/roms/"+e.biosfile,!0),s.responseType="arraybuffer",s.onload=i=>{e.biosdata=new Uint8Array(s.response),console.log("loaded "+e.biosfile),m.resolve()},s.ontimeout=function(i){throw Error("Timeout loading "+e.biosfile)},s.send()}else m.resolve();c=$.get("mame/debugger.lua",i=>{this.luadebugscript=i,console.log("loaded debugger.lua")},"text");{var l=new XMLHttpRequest;l.open("GET","mame/"+e.jsfile.replace(".js",".wasm"),!0),l.responseType="arraybuffer",l.onload=i=>{console.log("loaded WASM file"),window.Module.wasmBinary=new Uint8Array(l.response),f.resolve()},l.ontimeout=function(i){throw Error("Timeout loading "+e.jsfile)},l.send()}$.when(c,d,m,f).done(()=>{var i=document.createElement("script");i.src="mame/"+e.jsfile,document.getElementsByTagName("head")[0].appendChild(i),console.log("created script element")}),window.mamelua=i=>(this.initlua(),[i,this.luacall(i)])}loadROMFile(t){this.romdata=t,this.preinitted&&this.romfn&&FS.writeFile(this.romfn,t,{encoding:"binary"})}loadRegion(t,e){if(this.loaded&&e.length>0){for(var r='rgn = manager:machine():memory().regions["'+t+`"] `,n=0;n>1,d=this.height-b>>1,p=this.fgColor,M=this.bgColor,l=this.ram,v=this.nameTable,V=this.colorTable,P=this.charPatternTable,G=this.colorTableMask,S=this.patternTableMask,ce=this.spriteAttributeTable,de=this.spritePatternTable,$=(this.registers[1]&2)!==0,H=this.registers[1]&1,Z=($?16:8)<<(H?1:0),j=this.flicker?4:32,J=this.palette,N=!1,Q=!1,Y=31,R,f,D,T,C,F,m;if(t>=d&&t208&&(k-=256),k++;var y=k+Z,U=-1;if(B<8||!a)c>=k&&c=k&&X=64&&c<128&&c>=k&&c>H,Me=de+(me<<3)+pe,E=0;E=0&&O>H,Te=l[Me+(re>=8?16:0)];(Te&128>>(re&7))!==0&&(W[O]===0?W[O]=ge+1:N=!0)}}}z++}I+=4}else ee=!0}z>4&&(Q=!0,Y=B)}var _=h?(c>>3)*40:c>>3<<5,x=c&7;for(R=0;R=o&&R>3)],F=l[V+(T>>3)],m=l[P+(T<<3)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 2:T=l[v+_+(g>>3)],C=((c&192)<<5)+(T<<3),F=l[V+(C&G)+x],m=l[P+(C&S)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 3:T=l[v+_+(g>>3)],x=(c&28)>>2,m=l[P+(T<<3)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 1:T=l[v+_+Math.floor(g/6)],m=l[P+(T<<3)+x],f=(m&128>>g%6)!==0?p:M;break;case 5:T=l[v+_+Math.floor(g/6)],C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(m&128>>g%6)!==0?p:M;break;case 6:T=l[v+_+(g>>3)],x=(c&28)>>2,C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 7:f=(g&4)===0?p:M;break}if(f===0&&(f=M),!h){var se=W[g]-1;se>0&&(f=se)}}else f=M;D=J[f],e[s++]=D}}else for(D=J[M],R=0;R>4,this.bgColor=this.registers[7]&15;break}}setVDPWriteCommand3(t){this.setVDPWriteRegister(t)}writeAddress(t){if(!this.latch)this.addressRegister=this.addressRegister&65280|t;else{switch((t&192)>>6){case 0:this.setReadAddress(t);break;case 1:this.setWriteAddress(t);break;case 2:this.setVDPWriteRegister(t);break;case 3:this.setVDPWriteCommand3(t);break}this.redrawRequired=!0}this.latch=!this.latch}updateMode(t,e){if(this.bitmapMode=(t&2)!==0,this.textMode=(e&16)!==0,this.bitmapMode)switch((e&24)>>3){case 0:this.screenMode=2;break;case 1:this.screenMode=6;break;case 2:this.screenMode=5;break;case 3:this.screenMode=7;break}else switch((e&24)>>3){case 0:this.screenMode=0;break;case 1:this.screenMode=3;break;case 2:this.screenMode=1;break;case 3:this.screenMode=7;break}this.bitmapMode?(this.colorTable=(this.registers[3]&128)<<6,this.charPatternTable=(this.registers[4]&4)<<11,this.updateTableMasks()):(this.colorTable=this.registers[3]<<6,this.charPatternTable=(this.registers[4]&7)<<11),this.nameTable=(this.registers[2]&15)<<10,this.spriteAttributeTable=(this.registers[5]&127)<<7,this.spritePatternTable=(this.registers[6]&7)<<11}updateTableMasks(){this.screenMode===2?(this.colorTableMask=(this.registers[3]&127)<<6|63,this.patternTableMask=(this.registers[4]&3)<<11|this.colorTableMask&2047):this.screenMode===5||this.screenMode===6?(this.colorTableMask=this.ramMask,this.patternTableMask=(this.registers[4]&3)<<11|2047):(this.colorTableMask=this.ramMask,this.patternTableMask=this.ramMask)}writeData(t){this.probe.logVRAMWrite(this.addressRegister,t),this.ram[this.addressRegister++]=t,this.prefetchByte=t,this.addressRegister&=this.ramMask,this.latch=!1,this.redrawRequired=!0}readStatus(){var t=this.statusRegister;return this.statusRegister=31,this.interruptsOn&&this.cru.setVDPInterrupt(!1),this.latch=!1,t}readData(){var t=this.prefetchByte;return this.prefetchByte=this.ram[this.addressRegister++],this.probe.logVRAMRead(this.addressRegister-1,this.prefetchByte),this.addressRegister&=this.ramMask,this.latch=!1,t}getRAM(){return this.ram}colorTableSize(){return this.screenMode===0?32:this.screenMode===2?Math.min(this.colorTableMask+1,6144):0}patternTableSize(){return this.bitmapMode?Math.min(this.patternTableMask+1,6144):2048}getDebugTables(){var t=[["Pattern Table",this.charPatternTable,this.patternTableSize()],["Name Table",this.nameTable,768],["Color Table",this.colorTable,this.colorTableSize()],["Sprite Patterns",this.spritePatternTable,2048],["Sprite Attributes",this.spriteAttributeTable,128]];return t}getRegsString(){for(var e="Registers:",r=0;r>1,d=this.height-b>>1,p=this.fgColor,M=this.bgColor,l=this.ram,v=this.nameTable,V=this.colorTable,P=this.charPatternTable,G=this.colorTableMask,S=this.patternTableMask,ce=this.spriteAttributeTable,de=this.spritePatternTable,$=(this.registers[1]&2)!==0,H=this.registers[1]&1,Z=($?16:8)<<(H?1:0),j=this.flicker?4:32,J=this.palette,N=!1,Q=!1,Y=31,R,f,D,T,C,F,m;if(t>=d&&t208&&(k-=256),k++;var y=k+Z,U=-1;if(B<8||!a)c>=k&&c=k&&X=64&&c<128&&c>=k&&c>H,Me=de+(me<<3)+pe,E=0;E=0&&O>H,Te=l[Me+(re>=8?16:0)];(Te&128>>(re&7))!==0&&(W[O]===0?W[O]=ge+1:N=!0)}}}z++}I+=4}else ee=!0}z>4&&(Q=!0,Y=B)}var _=h?(c>>3)*40:c>>3<<5,x=c&7;for(R=0;R=o&&R>3)],F=l[V+(T>>3)],m=l[P+(T<<3)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 2:T=l[v+_+(g>>3)],C=((c&192)<<5)+(T<<3),F=l[V+(C&G)+x],m=l[P+(C&S)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 3:T=l[v+_+(g>>3)],x=(c&28)>>2,m=l[P+(T<<3)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 1:T=l[v+_+Math.floor(g/6)],m=l[P+(T<<3)+x],f=(m&128>>g%6)!==0?p:M;break;case 5:T=l[v+_+Math.floor(g/6)],C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(m&128>>g%6)!==0?p:M;break;case 6:T=l[v+_+(g>>3)],x=(c&28)>>2,C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 7:f=(g&4)===0?p:M;break}if(f===0&&(f=M),!h){var se=W[g]-1;se>0&&(f=se)}}else f=M;D=J[f],e[s++]=D}}else for(D=J[M],R=0;R>4,this.bgColor=this.registers[7]&15;break}}setVDPWriteCommand3(t){this.setVDPWriteRegister(t)}writeAddress(t){if(!this.latch)this.addressRegister=this.addressRegister&65280|t;else{switch((t&192)>>6){case 0:this.setReadAddress(t);break;case 1:this.setWriteAddress(t);break;case 2:this.setVDPWriteRegister(t);break;case 3:this.setVDPWriteCommand3(t);break}this.redrawRequired=!0}this.latch=!this.latch}updateMode(t,e){if(this.bitmapMode=(t&2)!==0,this.textMode=(e&16)!==0,this.bitmapMode)switch((e&24)>>3){case 0:this.screenMode=2;break;case 1:this.screenMode=6;break;case 2:this.screenMode=5;break;case 3:this.screenMode=7;break}else switch((e&24)>>3){case 0:this.screenMode=0;break;case 1:this.screenMode=3;break;case 2:this.screenMode=1;break;case 3:this.screenMode=7;break}this.bitmapMode?(this.colorTable=(this.registers[3]&128)<<6,this.charPatternTable=(this.registers[4]&4)<<11,this.updateTableMasks()):(this.colorTable=this.registers[3]<<6,this.charPatternTable=(this.registers[4]&7)<<11),this.nameTable=(this.registers[2]&15)<<10,this.spriteAttributeTable=(this.registers[5]&127)<<7,this.spritePatternTable=(this.registers[6]&7)<<11}updateTableMasks(){this.screenMode===2?(this.colorTableMask=(this.registers[3]&127)<<6|63,this.patternTableMask=(this.registers[4]&3)<<11|this.colorTableMask&2047):this.screenMode===5||this.screenMode===6?(this.colorTableMask=this.ramMask,this.patternTableMask=(this.registers[4]&3)<<11|2047):(this.colorTableMask=this.ramMask,this.patternTableMask=this.ramMask)}writeData(t){this.probe.logVRAMWrite(this.addressRegister,t),this.ram[this.addressRegister++]=t,this.prefetchByte=t,this.addressRegister&=this.ramMask,this.latch=!1,this.redrawRequired=!0}readStatus(){var t=this.statusRegister;return this.statusRegister=31,this.interruptsOn&&this.cru.setVDPInterrupt(!1),this.latch=!1,t}readData(){var t=this.prefetchByte;return this.prefetchByte=this.ram[this.addressRegister++],this.probe.logVRAMRead(this.addressRegister-1,this.prefetchByte),this.addressRegister&=this.ramMask,this.latch=!1,t}getRAM(){return this.ram}colorTableSize(){return this.screenMode===0?32:this.screenMode===2?Math.min(this.colorTableMask+1,6144):0}patternTableSize(){return this.bitmapMode?Math.min(this.patternTableMask+1,6144):2048}getDebugTables(){var t=[["Pattern Table",this.charPatternTable,this.patternTableSize()],["Name Table",this.nameTable,768],["Color Table",this.colorTable,this.colorTableSize()],["Sprite Patterns",this.spritePatternTable,2048],["Sprite Attributes",this.spriteAttributeTable,128]];return t}getRegsString(){for(var e="Registers:",r=0;r0&&(e+=A(i[0],20)+": $"+w(i[1],4)+" - $"+w(i[1]+i[2]-1,4)+` `);return e+=A("Address Register",20)+": $"+w(this.addressRegister,4)+` @@ -8,4 +8,4 @@ import{c as ie,k as he,o as ne,r as oe}from"./chunk-4WX2XTAI.js";import{Z as ae, `,this.ramMask!=16383&&(e+=A("RAM Mask",20)+": $"+w(this.ramMask)+` `),e}hexView(t,e,r){for(var s="",i=null,h=t,a=0,n=0;n>2&3)*85,(e>>4&3)*85),this.prefetchByte=e,this.addressRegister&=this.ramMask,this.redrawRequired=!0}else{var s=this.addressRegister;super.writeData(e),this.writeTwiddled(s,e)}this.latch=!1}writeTwiddled(e,r){for(var s=e&16380,i=s*2,h=this.ram[s],a=this.ram[s+1],n=this.ram[s+2],b=this.ram[s+3],o=0;o<8;++o){var d=7-o,p=h>>>d&1|(a>>>d&1)<<1|(n>>>d&1)<<2|(b>>>d&1)<<3;this.vramUntwiddled[i+o]=p}}getState(){var e=super.getState();return e.cram=this.cram.slice(0),e}restoreState(e){super.restoreState(e),this.cram.set(e.cram)}drawScanline(e){this.screenMode==4?this.rasterize_line(e):super.drawScanline(e)}findSprites(e){var r=this.spriteAttributeTable,s=[],i=8,h;for(this.registers[1]&2&&(i=16),h=0;h<64;h++){var a=this.ram[r+h];if(a===208)break;if(a>=240&&(a-=256),e>=a&&e=8)){b=!0;var V=e-M[2],P=h+M[1]*32+V*4,G=P*2+l,S=this.vramUntwiddled[G];if(S!==0){if(o){this.statusRegister|=32;break}this.fb32[r+(s+a-this.registers[8]&255)]=this.cpalette[16+S],o=!0}}}!b&&d>1&&(a+=d-1)}}border_clear(e,r){e=e|0,r=r|0;let s=16+(this.registers[7]&15),i=this.cpalette[s];this.fb32.fill(i,e,e+r)}rasterize_line(e){e|=0;var r=this.registers,s=256,i=this.numVisibleLines,h=this.width-s>>1,a=this.height-i>>1;let n=(e+a)*this.width|0,b=n+h|0;if(!this.displayOn||e<0||e>=i)e=262-a&&this.border_clear((e-262+a)*this.width,this.width);else{var o=e+r[9];o>=224&&(o-=224);let d=this.findSprites(e),p=r[0]&64&&e<16?0:r[8],M=this.nameTable+(o>>>3)*64,l=o&7;this.rasterize_background_line(b,p,M,l),this.rasterize_sprites(e,b,p,d),this.rasterize_foreground_line(b,p,M,l),this.border_clear(n,h),this.border_clear(b+256,h),r[0]&32&&this.border_clear(b,8)}e==i&&(this.statusRegister|=128,this.interruptsOn&&this.cru.setVDPInterrupt(!0)),e<=i?this.lineCounter>0?this.lineCounter--:(this.lineCounter=this.registers[10],this.lineInterruptPending=!0):this.lineCounter=this.registers[10],this.lineInterruptPending&&this.registers[0]&16}getDebugTables(){if(this.screenMode==4){var e=[["Pattern Table",0,16384],["Name Table",this.nameTable,2048],["Sprite Attributes",this.spriteAttributeTable,256]];return e}else return super.getDebugTables()}},le=class extends K{constructor(){super(...arguments);this.cram=new Uint8Array(64);this.cram_latch=0}writeData(e){if(this.writeToCRAM){if(this.addressRegister&1){let r=this.cram_latch+(e<<8),s=u((r&15)*17,(r>>4&15)*17,(r>>8&15)*17),i=this.addressRegister&this.cram.length-1;this.cram[i-1]=this.cram_latch,this.cram[i]=e,this.cpalette[i>>1]=s,this.prefetchByte=e,this.addressRegister&=this.ramMask,this.redrawRequired=!0}else this.cram_latch=e;this.addressRegister++}else super.writeData(e);this.latch=!1}};var be=2,ue=class extends oe{constructor(){super(...arguments);this.cpuFrequency=3579545;this.canvasWidth=304;this.numTotalScanlines=262;this.numVisibleScanlines=240;this.cpuCyclesPerLine=this.cpuFrequency/(262*60);this.sampleRate=262*60*be;this.overscan=!0;this.cpu=new ie}getKeyboardFunction(){return null}init(e,r,s){this.connectCPUMemoryBus(e),this.connectCPUIOBus(r),this.handler=ae(this.inputs,this.getKeyboardMap(),this.getKeyboardFunction()),this.psg=s,this.audioadapter=s&&new he(s.psg,be,this.sampleRate)}connectVideo(e){super.connectVideo(e);var r={setVDPInterrupt:s=>{s&&this.vdpInterrupt()}};this.vdp=this.newVDP(this.pixels,r,!0)}connectProbe(e){super.connectProbe(e),this.vdp.probe=e||this.nullProbe}newVDP(e,r,s){return new L(e,r,s)}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.vdp.drawScanline(this.scanline)}loadState(e){super.loadState(e),this.vdp.restoreState(e.vdp)}saveState(){var e=super.saveState();return e.vdp=this.vdp.getState(),e}reset(){super.reset(),this.vdp.reset(),this.psg.reset()}getDebugCategories(){return["CPU","Stack","VDP"]}getDebugInfo(e,r){if(e==="VDP")return this.vdpStateToLongString(r.vdp)}vdpStateToLongString(e){return this.vdp.getRegsString()}readVRAMAddress(e){return this.vdp.ram[e&16383]}};export{K as a,le as b,ue as c}; -//# sourceMappingURL=chunk-X7YXI42O.js.map +//# sourceMappingURL=chunk-YD7BCC55.js.map diff --git a/gen/chunk-X7YXI42O.js.map b/gen/chunk-YD7BCC55.js.map similarity index 100% rename from gen/chunk-X7YXI42O.js.map rename to gen/chunk-YD7BCC55.js.map diff --git a/gen/chunk-EK7ZCXAS.js b/gen/chunk-ZTLOJICZ.js similarity index 92% rename from gen/chunk-EK7ZCXAS.js rename to gen/chunk-ZTLOJICZ.js index 04df8c9c..d6b2fa65 100644 --- a/gen/chunk-EK7ZCXAS.js +++ b/gen/chunk-ZTLOJICZ.js @@ -1,6 +1,6 @@ function ie(e,t){for(e+="";e.length0?e.substr(0,t):e}function K(e,t){return t||(t=2),t==8?K(e>>16&65535,4)+K(e&65535,4):F(e,t,16)}function fe(e,t){return t||(t=8),F(e,t,2)}function F(e,t,r){try{for(var i=e.toString(r).toUpperCase();i.length=0)for(;n'+u+""),o+=u,n++,a++}for(;a>6)+3,_=(p&63)+8):(b=i[p&31],_=(p>>5)+1),v=0;v=192&&n<224)n=(n&31)<<6|e[i++]&63;else if(n=(n&15)<<12|(e[i]&63)<<6|e[i+1]&63,i+=2,n==65279)continue;t+=String.fromCharCode(n)}return t}var H=[".CHR",".BIN",".DAT",".PAL",".NAM",".RLE",".LZ4",".LZH",".LZSA",".NSF"];function k(e){let t=e instanceof Uint8Array?e:Uint8Array.from(e);if(typeof TextDecoder!="undefined")try{return new TextDecoder("utf-8",{fatal:!0}).decode(t),!0}catch(s){return!1}for(var r=0;r=194&&s<=223)i=1,n=s&31,a=128;else if(s>=224&&s<=239)i=2,n=s&15,a=2048;else if(s>=240&&s<=244)i=3,n=s&7,a=65536;else return!1;if(r+i>=t.length)return!1;for(var o=1;o<=i;o++){let u=t[r+o];if(u<128||u>191)return!1;n=n<<6|u&63}if(n1114111||n>=55296&&n<=57343)return!1;r+=i+1}return!0}function ge(e,t){if(e){let o=e.toUpperCase();for(var r of H)if(o.endsWith(r))return!0}if(!t||t.length===0)return!1;let i=t instanceof Uint8Array?t:Uint8Array.from(t);for(var n=0,a=0;a0&&n*20>i.length?!0:!k(i)}function de(e,t,r){for(var i=r||9,n=t.length,a=e._malloc(n+1),o=0;o0&&(i+=" "),i+=e&a?t[n]:"-"}return i}function ve(e){return(e&255)<<16|e>>16&255|e&65280}function be(e,t,r){return e&255|(t&255)<<8|(r&255)<<16|4278190080}function C(e,t,r){return rt?t:r}function _e(e){return e.length==0?"":(e.match(/^[a-zA-Z_]/)||(e="_"+e),e.replace(/\W+/g,"_"))}function Ke(e){for(var t=0,r=e[t++],i=[],n=r;t{var i=document.createElement("script");i.onload=t,i.onerror=r,i.src=e,document.getElementsByTagName("head")[0].appendChild(i)})}var z=Y;function Ce(e){return z(e)}function Pe(e){e.startsWith("?")&&(e=e.substr(1));var t=e.split("&");if(!t||t.length==0)return{};for(var r={},i=0;i>17,e^=e<<5,(V=e)&255}function Ie(){return V}function Ge(e){V=e}function Q(e,t,r,i){var n=e.createElement("canvas");return n.width=r,n.height=i,n.classList.add("emuvideo"),n.tabIndex=0,t.appendChild(n),n}function U(e){return e.key!=null&&e.key.length==1?e.key.charCodeAt(0):e.keyCode}function q(e,t){e.onkeydown=r=>{let i=N(r);t(r.which,U(r),1|i),i||r.preventDefault()},e.onkeyup=r=>{t(r.which,U(r),64|N(r))}}var E=class{constructor(t,r,i,n){this.paddle_x=128;this.paddle_y=128;this.paddle_buttons=[!1,!1,!1];this.mainElement=t,this.width=r,this.height=i,this.options=n}setRotate(t){var r=this.canvas;t?(r.style.transform="rotate("+t+"deg)",r.width{var i=ne(t,r),n=Math.round(i.x*255/this.canvas.width),a=Math.round(i.y*255/this.canvas.height);this.paddle_x=C(0,255,n),this.paddle_y=C(0,255,a)}).mousedown(r=>{this.paddle_buttons[0]=!r.shiftKey&&!r.altKey,this.paddle_buttons[1]=r.shiftKey&&!r.altKey,this.paddle_buttons[2]=r.altKey&&!r.shiftKey}).mouseup(r=>{this.paddle_buttons.fill(!1)})}},P=class extends E{constructor(){super(...arguments);this.persistenceAlpha=.5;this.jitter=1;this.gamma=.8;this.COLORS=["#111111","#1111ff","#11ff11","#11ffff","#ff1111","#ff11ff","#ffff11","#ffffff"]}create(){super.create(),this.sx=this.width/1024,this.sy=this.height/1024}clear(){var r=this.ctx;r.globalCompositeOperation="source-over",r.globalAlpha=this.persistenceAlpha,r.fillStyle="#000000",r.fillRect(0,0,this.width,this.height),r.globalAlpha=1,r.globalCompositeOperation="lighter"}drawLine(r,i,n,a,o,s){var u=this.ctx,f=this.sx,c=this.sy;if(o>0){var y=Math.pow(o/255,this.gamma);u.globalAlpha=y,u.lineWidth=3,u.beginPath();var m=this.jitter*(Math.random()-.5),g=this.jitter*(Math.random()-.5);r+=m,n+=m,i+=g,a+=g,u.moveTo(r*f,this.height-i*c),r==n&&i==a?u.lineTo(n*f+1,this.height-a*c):u.lineTo(n*f,this.height-a*c),u.strokeStyle=this.COLORS[s&7],u.stroke()}}};function Be(e,t,r,i){e!=null&&e.setLineDash&&(e.fillStyle="rgba(0,0,0,0.25)",e.fillRect(t-2,0,5,32767),e.fillRect(0,r-2,32767,5),e.lineWidth=i,e.strokeStyle="rgba(255,255,255,0.75)",e.setLineDash([i*2,i*2]),e.beginPath(),e.moveTo(t,0),e.lineTo(t,32767),e.moveTo(0,r),e.lineTo(32767,r),e.stroke())}var He=E,ke=P;var S=class{constructor(t){this.mem=new Uint8Array(new ArrayBuffer(t))}},R=class e extends Error{constructor(r,i){super(r);this.squelchError=!0;this.$loc=i,Object.setPrototypeOf(this,e.prototype)}},O=()=>{};function We(e){O=e}function Xe(e){O(e)}var j=!1,M=class{constructor(t,r){this.running=!1;this.pulsing=!1;this.nextts=0;this.maxCatchupFrames=3;this.useReqAnimFrame=j&&typeof window.requestAnimationFrame=="function";this.frameRate=t,this.intervalMsec=1e3/t,this.callback=r}scheduleFrame(t){var r=i=>{try{this.nextFrame(this.useReqAnimFrame?i:Date.now())}catch(n){throw this.running=!1,this.pulsing=!1,n}};this.useReqAnimFrame?window.requestAnimationFrame(r):setTimeout(r,t)}nextFrame(t){t>this.nextts&&(this.running&&this.callback(),this.nframes==0&&(this.startts=t),this.nframes++==300&&console.log("Avg framerate: "+this.nframes*1e3/(t-this.startts)+" fps")),this.nextts+=this.intervalMsec,t-this.nextts>this.intervalMsec*this.maxCatchupFrames&&(this.nextts=t),this.running?this.scheduleFrame(this.nextts-t):this.pulsing=!1}isRunning(){return this.running}start(){this.running||(this.running=!0,this.nextts=0,this.nframes=0,this.pulsing||(this.scheduleFrame(0),this.pulsing=!0))}stop(){this.running=!1}},Ze=M;function Ye(e,t,r){for(var i="",n=e.BYTES_PER_ELEMENT||1,a=Math.ceil(16/n),o=e instanceof Float32Array||e instanceof Float64Array,s=0;s'+u+""),o+=u,n++,a++}for(;a>6)+3,_=(p&63)+8):(b=i[p&31],_=(p>>5)+1),v=0;v=192&&n<224)n=(n&31)<<6|e[i++]&63;else if(n=(n&15)<<12|(e[i]&63)<<6|e[i+1]&63,i+=2,n==65279)continue;t+=String.fromCharCode(n)}return t}var H=[".CHR",".BIN",".DAT",".PAL",".NAM",".RLE",".LZ4",".LZH",".LZSA",".NSF"];function k(e){let t=e instanceof Uint8Array?e:Uint8Array.from(e);if(typeof TextDecoder!="undefined")try{return new TextDecoder("utf-8",{fatal:!0}).decode(t),!0}catch(s){return!1}for(var r=0;r=194&&s<=223)i=1,n=s&31,a=128;else if(s>=224&&s<=239)i=2,n=s&15,a=2048;else if(s>=240&&s<=244)i=3,n=s&7,a=65536;else return!1;if(r+i>=t.length)return!1;for(var o=1;o<=i;o++){let u=t[r+o];if(u<128||u>191)return!1;n=n<<6|u&63}if(n1114111||n>=55296&&n<=57343)return!1;r+=i+1}return!0}function ge(e,t){if(e){let o=e.toUpperCase();for(var r of H)if(o.endsWith(r))return!0}if(!t||t.length===0)return!1;let i=t instanceof Uint8Array?t:Uint8Array.from(t);for(var n=0,a=0;a0&&n*20>i.length?!0:!k(i)}function de(e,t,r){for(var i=r||9,n=t.length,a=e._malloc(n+1),o=0;o0&&(i+=" "),i+=e&a?t[n]:"-"}return i}function ve(e){return(e&255)<<16|e>>16&255|e&65280}function be(e,t,r){return e&255|(t&255)<<8|(r&255)<<16|4278190080}function C(e,t,r){return rt?t:r}function _e(e){return e.length==0?"":(e.match(/^[a-zA-Z_]/)||(e="_"+e),e.replace(/\W+/g,"_"))}function Ke(e){for(var t=0,r=e[t++],i=[],n=r;t{var i=document.createElement("script");i.onload=t,i.onerror=r,i.src=e,document.getElementsByTagName("head")[0].appendChild(i)})}var z=Y;function Ce(e){return z(e)}function Pe(e){e.startsWith("?")&&(e=e.substr(1));var t=e.split("&");if(!t||t.length==0)return{};for(var r={},i=0;i>17,e^=e<<5,(V=e)&255}function Ie(){return V}function Ge(e){V=e}function Q(e,t,r,i){var n=e.createElement("canvas");return n.width=r,n.height=i,n.classList.add("emuvideo"),n.tabIndex=0,t.appendChild(n),n}function U(e){return e.key!=null&&e.key.length==1?e.key.charCodeAt(0):e.keyCode}function q(e,t){e.onkeydown=r=>{let i=N(r);t(r.which,U(r),1|i),i||r.preventDefault()},e.onkeyup=r=>{t(r.which,U(r),64|N(r))}}var E=class{constructor(t,r,i,n){this.paddle_x=128;this.paddle_y=128;this.paddle_buttons=[!1,!1,!1];this.mainElement=t,this.width=r,this.height=i,this.options=n}setRotate(t){var r=this.canvas;t?(r.style.transform="rotate("+t+"deg)",r.width{var i=ne(t,r),n=Math.round(i.x*255/this.canvas.width),a=Math.round(i.y*255/this.canvas.height);this.paddle_x=C(0,255,n),this.paddle_y=C(0,255,a)}).mousedown(r=>{this.paddle_buttons[0]=!r.shiftKey&&!r.altKey,this.paddle_buttons[1]=r.shiftKey&&!r.altKey,this.paddle_buttons[2]=r.altKey&&!r.shiftKey}).mouseup(r=>{this.paddle_buttons.fill(!1)})}},P=class extends E{constructor(){super(...arguments);this.persistenceAlpha=.5;this.jitter=1;this.gamma=.8;this.COLORS=["#111111","#1111ff","#11ff11","#11ffff","#ff1111","#ff11ff","#ffff11","#ffffff"]}create(){super.create(),this.sx=this.width/1024,this.sy=this.height/1024}clear(){var r=this.ctx;r.globalCompositeOperation="source-over",r.globalAlpha=this.persistenceAlpha,r.fillStyle="#000000",r.fillRect(0,0,this.width,this.height),r.globalAlpha=1,r.globalCompositeOperation="lighter"}drawLine(r,i,n,a,o,s){var u=this.ctx,f=this.sx,c=this.sy;if(o>0){var y=Math.pow(o/255,this.gamma);u.globalAlpha=y,u.lineWidth=3,u.beginPath();var m=this.jitter*(Math.random()-.5),g=this.jitter*(Math.random()-.5);r+=m,n+=m,i+=g,a+=g,u.moveTo(r*f,this.height-i*c),r==n&&i==a?u.lineTo(n*f+1,this.height-a*c):u.lineTo(n*f,this.height-a*c),u.strokeStyle=this.COLORS[s&7],u.stroke()}}};function Be(e,t,r,i){e!=null&&e.setLineDash&&(e.fillStyle="rgba(0,0,0,0.25)",e.fillRect(t-2,0,5,32767),e.fillRect(0,r-2,32767,5),e.lineWidth=i,e.strokeStyle="rgba(255,255,255,0.75)",e.setLineDash([i*2,i*2]),e.beginPath(),e.moveTo(t,0),e.lineTo(t,32767),e.moveTo(0,r),e.lineTo(32767,r),e.stroke())}var He=E,ke=P;var S=class{constructor(t){this.mem=new Uint8Array(new ArrayBuffer(t))}},R=class e extends Error{constructor(r,i,n=!1){super(r);this.squelchError=!0;this.$loc=i,this.normal=n,Object.setPrototypeOf(this,e.prototype)}},O=()=>{};function We(e){O=e}function Xe(e){O(e)}var j=!1,M=class{constructor(t,r){this.running=!1;this.pulsing=!1;this.nextts=0;this.maxCatchupFrames=3;this.useReqAnimFrame=j&&typeof window.requestAnimationFrame=="function";this.frameRate=t,this.intervalMsec=1e3/t,this.callback=r}scheduleFrame(t){var r=i=>{try{this.nextFrame(this.useReqAnimFrame?i:Date.now())}catch(n){throw this.running=!1,this.pulsing=!1,n}};this.useReqAnimFrame?window.requestAnimationFrame(r):setTimeout(r,t)}nextFrame(t){t>this.nextts&&(this.running&&this.callback(),this.nframes==0&&(this.startts=t),this.nframes++==300&&console.log("Avg framerate: "+this.nframes*1e3/(t-this.startts)+" fps")),this.nextts+=this.intervalMsec,t-this.nextts>this.intervalMsec*this.maxCatchupFrames&&(this.nextts=t),this.running?this.scheduleFrame(this.nextts-t):this.pulsing=!1}isRunning(){return this.running}start(){this.running||(this.running=!0,this.nextts=0,this.nframes=0,this.pulsing||(this.scheduleFrame(0),this.pulsing=!0))}stop(){this.running=!1}},Ze=M;function Ye(e,t,r){for(var i="",n=e.BYTES_PER_ELEMENT||1,a=Math.ceil(16/n),o=e instanceof Float32Array||e instanceof Float64Array,s=0;s{if(!t){r(null,n,a,o);return}var s=t[n];if(s||(s=t[0]),r&&(s||i)&&r(s,n,a,o),s){var u=s.mask;u<0&&(u=-u,o&65&&(o^=65)),o&1?e[s.index]|=u:o&64&&(e[s.index]&=~u)}}}function Qe(e,t,r,i,n){var a=ee(t,r,i,n);return e.setKeyboardEvents(a),new w(a)}function qe(e){for(var t=new Map,r=0;r{console.log("Gamepad connected:",r),this.reset()}),window.addEventListener("gamepaddisconnected",r=>{console.log("Gamepad disconnected:",r),this.reset()})}reset(){var r,i;if(typeof navigator.getGamepads=="function"){let n=(r=navigator.getGamepads())==null?void 0:r.length;this.state=new Array(n),this.lastState=new Array(n);for(var t=0;t0}}start(){this.reset()}stop(){this.active=!1}poll(){if(this.active){var t=navigator.getGamepads&&navigator.getGamepads();if(t)for(var r=0;rt)throw Error("Data too long, "+e.length+" > "+t);var i=new S(t);return r?i.mem.set(e,t-e.length):i.mem.set(e),i.mem}function re(e,t){var r=this;function i(){var n="";t&&t.gmask&&(n+="a&="+t.gmask+";");for(var a=0;a="+s+" && a<="+u+"){",f&&(n+="a&="+f+";"),n+="return this.__fn"+a+`(a,v)&0xff;} `}return n+="return "+((t==null?void 0:t.defaultval)|0)+";",new Function("a","v",n)}return i().bind(r)}function je(e,t){return new re(e,t)}function ne(e,t){var i=e.getBoundingClientRect(),n=window.getComputedStyle(e),a=parseFloat(n.borderLeftWidth)+parseFloat(n.paddingLeft),o=parseFloat(n.borderRightWidth)+parseFloat(n.paddingRight),s=parseFloat(n.borderTopWidth)+parseFloat(n.paddingTop),u=parseFloat(n.borderBottomWidth)+parseFloat(n.paddingBottom),f=i.width-a-o,c=i.height-s-u,y=e.width/Math.floor(f-2*.5),m=e.height/Math.floor(c-2*.5),g=(t.clientX-.5-i.left-a)*y,L=(t.clientY-.5-i.top-s)*m;return{x:Math.max(0,Math.min(e.width,g)),y:Math.max(0,Math.min(e.height,L))}}export{ie as a,oe as b,ae as c,se as d,ue as e,le as f,K as g,fe as h,ce as i,he as j,pe as k,me as l,I as m,G as n,B as o,ge as p,de as q,ye as r,xe as s,ve as t,be as u,C as v,_e as w,Ke as x,Ae as y,W as z,Ve as A,Ee as B,Le as C,Te as D,Ce as E,Pe as F,Se as G,Me as H,we as I,De as J,Ne as K,Oe as L,Ie as M,Ge as N,Q as O,Be as P,He as Q,ke as R,S,R as T,We as U,Xe as V,Ze as W,Ye as X,l as Y,ee as Z,Qe as _,qe as $,w as aa,$e as ba,je as ca,ne as da}; -//# sourceMappingURL=chunk-EK7ZCXAS.js.map +//# sourceMappingURL=chunk-ZTLOJICZ.js.map diff --git a/gen/chunk-EK7ZCXAS.js.map b/gen/chunk-ZTLOJICZ.js.map similarity index 58% rename from gen/chunk-EK7ZCXAS.js.map rename to gen/chunk-ZTLOJICZ.js.map index 33ed8886..0c04c127 100644 --- a/gen/chunk-EK7ZCXAS.js.map +++ b/gen/chunk-ZTLOJICZ.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/common/util.ts", "../src/common/emu.ts"], - "sourcesContent": ["\nexport function lpad(s:string, n:number):string {\n s += ''; // convert to string\n while (s.length 0) ? s.substr(0, pos) : s;\n}\n\nexport function hex(v:number, nd?:number) {\n if (!nd) nd = 2;\n if (nd == 8) {\n return hex((v>>16)&0xffff,4) + hex(v&0xffff,4);\n } else {\n return toradix(v,nd,16);\n }\n}\n\nexport function tobin(v:number, nd?:number) {\n if (!nd) nd = 8;\n return toradix(v,nd,2);\n}\n\nexport function toradix(v:number, nd:number, radix:number) {\n try {\n var s = v.toString(radix).toUpperCase();\n while (s.length < nd)\n s = \"0\" + s;\n return s;\n } catch (e) {\n return v+\"\";\n }\n}\n\nexport function arrayCompare(a:ArrayLike, b:ArrayLike):boolean {\n if (a == null && b == null) return true;\n if (a == null) return false;\n if (b == null) return false;\n if (typeof a.length != 'number' || typeof b.length != 'number') return false;\n if (a.length != b.length) return false;\n for (var i=0; i= 0) {\n while (i < s1.length && split1[i].indexOf(\"\\n\") < 0)\n i++;\n }\n if (w1 != w2) {\n w2 = '' + w2 + '';\n }\n result += w2;\n i++;\n j++;\n }\n while (j < split2.length) {\n result += split2[j++];\n }\n return result;\n}\n\nexport function lzgmini() {\n\n // Constants\n var LZG_HEADER_SIZE = 16;\n var LZG_METHOD_COPY = 0;\n var LZG_METHOD_LZG1 = 1;\n\n // LUT for decoding the copy length parameter\n var LZG_LENGTH_DECODE_LUT = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,\n 20,21,22,23,24,25,26,27,28,29,35,48,72,128];\n\n // Decoded data (produced by the decode() method)\n var outdata = null;\n\n // Calculate the checksum\n var calcChecksum = function(data) {\n var a = 1;\n var b = 0;\n var i = LZG_HEADER_SIZE;\n while (i < data.length)\n {\n a = (a + (data[i] & 0xff)) & 0xffff;\n b = (b + a) & 0xffff;\n i++;\n }\n return (b << 16) | a;\n }\n\n // Decode LZG coded data. The function returns the size of the decoded data.\n // Use any of the get* methods to retrieve the decoded data.\n this.decode = function(data:number[]):number[] {\n // Start by clearing the decompressed array in this object\n outdata = null;\n\n // Check magic ID\n if ((data.length < LZG_HEADER_SIZE) || (data[0] != 76) ||\n (data[1] != 90) || (data[2] != 71))\n {\n return null;\n }\n \n // what's the length?\n var uncomplen = data[6] | (data[5]<<8) | (data[4]<<16) | (data[3]<<24);\n\n // Calculate & check the checksum\n var checksum = ((data[11] & 0xff) << 24) |\n ((data[12] & 0xff) << 16) |\n ((data[13] & 0xff) << 8) |\n (data[14] & 0xff);\n if (calcChecksum(data) != checksum)\n {\n return null;\n }\n\n var dst = new Array();\n // Check which method to use\n var method = data[15] & 0xff;\n if (method == LZG_METHOD_LZG1)\n {\n // Get marker symbols\n var m1 = data[16] & 0xff;\n var m2 = data[17] & 0xff;\n var m3 = data[18] & 0xff;\n var m4 = data[19] & 0xff;\n\n // Main decompression loop\n var symbol, b, b2, b3, len, offset;\n var dstlen = 0;\n var k = LZG_HEADER_SIZE + 4;\n var datalen = data.length;\n while (k <= datalen)\n {\n symbol = data[k++] & 0xff;\n if ((symbol != m1) && (symbol != m2) && (symbol != m3) && (symbol != m4))\n {\n // Literal copy\n dst[dstlen++] = symbol;\n }\n else\n {\n b = data[k++] & 0xff;\n if (b != 0)\n {\n // Decode offset / length parameters\n if (symbol == m1)\n {\n // marker1 - \"Distant copy\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n b2 = data[k++] & 0xff;\n b3 = data[k++] & 0xff;\n offset = (((b & 0xe0) << 11) | (b2 << 8) | b3) + 2056;\n }\n else if (symbol == m2)\n {\n // marker2 - \"Medium copy\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n b2 = data[k++] & 0xff;\n offset = (((b & 0xe0) << 3) | b2) + 8;\n }\n else if (symbol == m3)\n {\n // marker3 - \"Short copy\"\n len = (b >> 6) + 3;\n offset = (b & 63) + 8;\n }\n else\n {\n // marker4 - \"Near copy (incl. RLE)\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n offset = (b >> 5) + 1;\n }\n\n // Copy the corresponding data from the history window\n for (i = 0; i < len; i++)\n {\n dst[dstlen] = dst[dstlen-offset];\n dstlen++;\n }\n }\n else\n {\n // Literal copy (single occurance of a marker symbol)\n dst[dstlen++] = symbol;\n }\n }\n }\n\n }\n else if (method == LZG_METHOD_COPY)\n {\n // Plain copy\n var dstlen = 0;\n var datalen = data.length;\n for (var i = LZG_HEADER_SIZE; i < datalen; i++)\n {\n dst[dstlen++] = data[i] & 0xff;\n }\n }\n else\n {\n // Unknown method\n return null;\n }\n // Store the decompressed data in the lzgmini object for later retrieval\n if (dst.length < uncomplen) return null; // data too short\n outdata = dst.slice(0, uncomplen);\n return outdata;\n }\n\n // Get the decoded byte array\n this.getByteArray = function():number[]\n {\n return outdata;\n }\n\n // Get the decoded string from a Latin 1 (or ASCII) encoded array\n this.getStringLatin1 = function():string {\n return byteArrayToString(outdata);\n }\n\n // Get the decoded string from an UTF-8 encoded array\n this.getStringUTF8 = function():string {\n return byteArrayToUTF8(outdata);\n }\n}\n\nexport function stringToByteArray(s:string) : Uint8Array {\n var a = new Uint8Array(s.length);\n for (var i=0; i= 192) && (c < 224)) {\n c = ((c & 31) << 6) | (data[i++] & 63);\n } else {\n c = ((c & 15) << 12) | ((data[i] & 63) << 6) | (data[i+1] & 63);\n i += 2;\n if (c == 0xfeff) continue; // ignore BOM\n }\n str += String.fromCharCode(c);\n }\n }\n return str;\n}\n\nexport function removeBOM(s:string) {\n if (s.charCodeAt(0) === 0xFEFF) {\n s = s.substr(1);\n }\n return s;\n}\n\n// File extensions that are always treated as binary, regardless of content.\nconst BINARY_EXTS = ['.CHR', '.BIN', '.DAT', '.PAL', '.NAM', '.RLE', '.LZ4', '.LZH', '.LZSA', '.NSF'];\n\n/**\n * Strict RFC 3629 UTF-8 validation. Unlike decoding with replacement, this\n * rejects truncated sequences, overlong encodings, surrogate halves and code\n * points above U+10FFFF -- the cases that silently corrupt bytes when a file\n * is round-tripped through a JavaScript string.\n */\nexport function isValidUTF8(data: number[] | Uint8Array): boolean {\n const bytes = data instanceof Uint8Array ? data : Uint8Array.from(data);\n if (typeof TextDecoder !== 'undefined') {\n try {\n new TextDecoder('utf-8', { fatal: true }).decode(bytes);\n return true;\n } catch (e) {\n return false;\n }\n }\n // Fallback for environments without TextDecoder.\n for (var i = 0; i < bytes.length;) {\n const b = bytes[i];\n if (b < 0x80) { i++; continue; }\n var extra: number, cp: number, min: number;\n if (b >= 0xc2 && b <= 0xdf) { extra = 1; cp = b & 0x1f; min = 0x80; }\n else if (b >= 0xe0 && b <= 0xef) { extra = 2; cp = b & 0x0f; min = 0x800; }\n else if (b >= 0xf0 && b <= 0xf4) { extra = 3; cp = b & 0x07; min = 0x10000; }\n else return false; // stray continuation byte or invalid lead\n if (i + extra >= bytes.length) return false; // truncated\n for (var k = 1; k <= extra; k++) {\n const c = bytes[i + k];\n if (c < 0x80 || c > 0xbf) return false;\n cp = (cp << 6) | (c & 0x3f);\n }\n if (cp < min || cp > 0x10ffff || (cp >= 0xd800 && cp <= 0xdfff)) return false;\n i += extra + 1;\n }\n return true;\n}\n\nexport function isProbablyBinary(path:string, data?:number[] | Uint8Array) : boolean {\n // a known binary extension is a strong enough signal on its own\n if (path) {\n const upper = path.toUpperCase();\n for (var ext of BINARY_EXTS) {\n if (upper.endsWith(ext)) return true;\n }\n }\n if (!data || data.length === 0) return false;\n const bytes = data instanceof Uint8Array ? data : Uint8Array.from(data);\n // NUL never occurs in text; other C0 controls (apart from tab/LF/VT/FF/CR)\n // are a soft signal -- a stray one shows up in source (escape sequences,\n // form feeds), a steady stream means binary.\n var controls = 0;\n for (var i = 0; i < bytes.length; i++) {\n const c = bytes[i];\n if (c === 0x00) return true;\n if (c < 0x20) {\n if (c !== 0x09 && c !== 0x0a && c !== 0x0b && c !== 0x0c && c !== 0x0d) controls++;\n } else if (c === 0x7f) {\n controls++;\n }\n }\n if (controls > 0 && controls * 20 > bytes.length) return true; // >5% control bytes\n // otherwise anything that isn't valid UTF-8 is binary\n return !isValidUTF8(bytes);\n}\n\n// need to load liblzg.js first\nexport function compressLZG(em_module, inBuffer:number[], levelArg?:boolean) : Uint8Array {\n var level = levelArg || 9;\n var inLen = inBuffer.length;\n var inPtr = em_module._malloc(inLen + 1);\n for (var i = 0; i < inLen; i++) {\n em_module.setValue(inPtr + i, inBuffer[i], 'i8');\n }\n var maxEncSize = em_module._LZG_MaxEncodedSize(inLen);\n var outPtr = em_module._malloc(maxEncSize + 1);\n var compLen = em_module.ccall('compress_lzg', 'number', ['number', 'number', 'number', 'number', 'number'], [level, inPtr, inLen, maxEncSize, outPtr]);\n em_module._free(inPtr);\n var outBuffer = new Uint8Array(compLen);\n for (var i = 0; i < compLen; i++) {\n outBuffer[i] = em_module.getValue(outPtr + i, 'i8');\n }\n em_module._free(outPtr);\n return outBuffer;\n}\n\n// only does primitives, 1D arrays and no recursion\nexport function safe_extend(deep, dest, src) {\n // TODO: deep ignored\n for (var key in src) {\n var val = src[key];\n var type = typeof(val);\n if (val === null || type == 'undefined') {\n dest[key] = val;\n } else if (type == 'function') {\n // ignore function\n } else if (type == 'object') {\n if (val['slice']) { // array?\n dest[key] = val.slice();\n } else {\n // ignore object\n }\n } else {\n dest[key] = val;\n }\n }\n return dest;\n}\n\nexport function printFlags(val:number, names:string[], r2l:boolean) {\n var s = '';\n for (var i=0; i 0) s += \" \";\n s += (val & bit) ? names[i] : \"-\";\n }\n }\n return s;\n}\n\nexport function rgb2bgr(x) {\n return ((x&0xff)<<16) | ((x>>16)&0xff) | (x&0x00ff00);\n}\n\nexport function RGBA(r:number,g:number,b:number) {\n return (r&0xff) | ((g&0xff)<<8) | ((b&0xff)<<16) | 0xff000000;\n}\n\nexport function clamp(minv:number, maxv:number, v:number) {\n return (v < minv) ? minv : (v > maxv) ? maxv : v;\n}\n\nexport function safeident(s : string) : string {\n // if starts with non-alpha character, prefix with '_'\n if (s.length == 0) return '';\n if (!s.match(/^[a-zA-Z_]/)) s = '_' + s;\n return s.replace(/\\W+/g, \"_\");\n}\n\nexport function rle_unpack(src : Uint8Array) : Uint8Array {\n var i = 0;\n var tag = src[i++];\n var dest = [];\n var data = tag;\n while (i < src.length) {\n var ch = src[i++];\n if (ch == tag) {\n var count = src[i++];\n for (var j=0; jvoid, datatype:'text'|'arraybuffer') {\n var oReq = new XMLHttpRequest();\n oReq.open(\"GET\", url, true);\n oReq.responseType = datatype;\n oReq.onload = function (oEvent) {\n if (oReq.status == 200) {\n var data = oReq.response;\n if (data instanceof ArrayBuffer) {\n data = new Uint8Array(data);\n }\n success(data);\n } else if (oReq.status == 404) {\n success(null);\n } else {\n throw Error(\"Error \" + oReq.status + \" loading \" + url);\n }\n }\n oReq.onerror = function (oEvent) {\n success(null);\n }\n oReq.ontimeout = function (oEvent) {\n throw Error(\"Timeout loading \" + url);\n }\n oReq.send(null);\n}\n\n// get platform ID without . emulator\nexport function getBasePlatform(platform : string) : string {\n return platform.split('.')[0];\n}\n\n// get platform ID without - specialization\nfunction getRootPlatform(platform : string) : string {\n return platform.split('-')[0];\n}\n\n// get platform ID without emulator or specialization\nexport function getRootBasePlatform(platform : string) : string {\n return getRootPlatform(getBasePlatform(platform));\n}\n\nexport function isArray(obj: any) : obj is ArrayLike {\n return obj != null && (Array.isArray(obj) || isTypedArray(obj));\n}\n\nexport function isTypedArray(obj: any) : obj is ArrayLike {\n return obj != null && obj['BYTES_PER_ELEMENT'];\n}\n\nexport function convertDataToUint8Array(data: string|Uint8Array) : Uint8Array {\n return (typeof data === 'string') ? stringToByteArray(data) : data;\n}\n\nexport function convertDataToString(data: string|Uint8Array) : string {\n return (data instanceof Uint8Array) ? byteArrayToUTF8(data) : data;\n}\n\nexport function byteToASCII(b: number) : string {\n if (b < 32)\n return String.fromCharCode(b + 0x2400);\n else\n return String.fromCharCode(b);\n}\n\nexport type ScriptLoader = (scriptfn:string) => Promise;\n\nfunction loadScriptTag(scriptfn:string) : Promise {\n return new Promise( (resolve, reject) => {\n var script = document.createElement('script');\n script.onload = resolve;\n script.onerror = reject;\n script.src = scriptfn;\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n}\n\nlet scriptLoader : ScriptLoader = loadScriptTag;\n\n/** Load a script into the global scope. Headless hosts replace the loader (see setScriptLoader). */\nexport function loadScript(scriptfn:string) : Promise {\n return scriptLoader(scriptfn);\n}\n\n/** Replace how loadScript() loads scripts; returns the previous loader. */\nexport function setScriptLoader(loader:ScriptLoader) : ScriptLoader {\n const prev = scriptLoader;\n scriptLoader = loader;\n return prev;\n}\n\nexport function decodeQueryString(qs : string) : {} {\n if (qs.startsWith('?')) qs = qs.substr(1);\n var a = qs.split('&');\n if (!a || a.length == 0)\n return {};\n var b = {};\n for (var i = 0; i < a.length; ++i) {\n var p = a[i].split('=', 2);\n if (p.length == 1)\n b[p[0]] = \"\";\n else\n b[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\n }\n return b;\n}\n\nexport function parseBool(s : string) : boolean {\n if (!s) return false;\n if (s == 'false' || s == '0') return false;\n if (s == 'true' || s == '1') return true;\n return s ? true : false;\n}\n\n///\n\nexport class XMLParseError extends Error {\n}\n\nexport interface XMLNode {\n type: string;\n text: string | null;\n children: XMLNode[];\n attrs: { [id: string]: string };\n obj: any;\n}\n\nexport type XMLVisitFunction = (node: XMLNode) => any;\n\nfunction escapeXML(s: string): string {\n if (s.indexOf('&') >= 0) {\n return s.replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/&/g, '&');\n } else {\n return s;\n }\n}\n\nexport function parseXMLPoorly(s: string, openfn?: XMLVisitFunction, closefn?: XMLVisitFunction): XMLNode {\n const tag_re = /[<]([/]?)([?a-z_-]+)([^>]*)[>]+|(\\s*[^<]+)/gi;\n const attr_re = /\\s*(\\w+)=\"(.*?)\"\\s*/gi;\n var fm: RegExpMatchArray;\n var stack: XMLNode[] = [];\n var top: XMLNode;\n\n function closetop() {\n top = stack.pop();\n if (top == null || top.type != ident) throw new XMLParseError(\"mismatch close tag: \" + ident);\n if (closefn) {\n top.obj = closefn(top);\n }\n if (stack.length == 0) throw new XMLParseError(\"close tag without open: \" + ident);\n stack[stack.length - 1].children.push(top);\n }\n function parseattrs(as: string): { [id: string]: string } {\n var am;\n var attrs = {};\n if (as != null) {\n while (am = attr_re.exec(as)) {\n attrs[am[1]] = escapeXML(am[2]);\n }\n }\n return attrs;\n }\n while (fm = tag_re.exec(s)) {\n var [_m0, close, ident, attrs, content] = fm;\n //console.log(stack.length, close, ident, attrs, content);\n if (close) {\n closetop();\n } else if (ident) {\n var node = { type: ident, text: null, children: [], attrs: parseattrs(attrs), obj: null };\n stack.push(node);\n if (attrs) {\n parseattrs(attrs);\n }\n if (openfn) {\n node.obj = openfn(node);\n }\n if (attrs && attrs.endsWith('/')) closetop();\n } else if (content != null) {\n if (stack.length == 0) throw new XMLParseError(\"content without element\");\n var txt = escapeXML(content as string).trim();\n if (txt.length) stack[stack.length - 1].text = txt;\n }\n }\n if (stack.length != 1) throw new XMLParseError(\"tag not closed\");\n if (stack[0].type != '?xml') throw new XMLParseError(\"?xml needs to be first element\");\n return top;\n}\n\nexport function escapeHTML(s: string): string {\n return s.replace(/[&]/g, '&').replace(/[<]/g, '<').replace(/[>]/g, '>');\n}\n\n// lame factorization for displaying bitmaps\n// returns a > b such that a * b == x (or higher), a >= mina, b >= minb\nexport function findIntegerFactors(x: number, mina: number, minb: number, aspect: number) : {a: number, b: number} {\n let a = x;\n let b = 1;\n if (minb > 1 && minb < a) {\n a = Math.ceil(x / minb);\n b = minb;\n }\n while (a > b) {\n let a2 = a;\n let b2 = b;\n if ((a & 1) == 0) {\n b2 = b * 2;\n a2 = a / 2;\n }\n if ((a % 3) == 0) {\n b2 = b * 3;\n a2 = a / 3;\n }\n if ((a % 5) == 0) {\n b2 = b * 5;\n a2 = a / 5;\n }\n if (a2 < mina) break;\n if (a2 < b2 * aspect) break;\n a = a2;\n b = b2;\n }\n return {a, b};\n}\n\nexport class FileDataCache {\n maxSize : number = 8000000;\n size : number;\n cache : Map;\n constructor() {\n this.reset();\n }\n get(key : string) : string|Uint8Array {\n return this.cache.get(key);\n }\n put(key : string, value : string|Uint8Array) {\n this.cache.set(key, value);\n this.size += value.length;\n if (this.size > this.maxSize) {\n console.log('cache reset', this);\n this.reset();\n }\n }\n reset() {\n this.cache = new Map();\n this.size = 0;\n }\n}\n\nexport function coerceToArray(arrobj: any) : T[] {\n if (Array.isArray(arrobj)) return arrobj;\n else if (arrobj != null && typeof arrobj[Symbol.iterator] === 'function') return Array.from(arrobj);\n else if (typeof arrobj === 'object') return Array.from(Object.values(arrobj))\n else throw new Error(`Expected array or object, got \"${arrobj}\"`);\n}\n\nexport function replaceAll(s:string, search:string, replace:string) : string {\n if (s == '') return '';\n if (search == '') return s;\n return s.split(search).join(replace);\n}\n\nexport function isProductionHost() : boolean {\n return typeof window != 'undefined' && window.location.host.endsWith('8bitworkshop.com');\n}\n\nexport function getCookie(name: string) : string {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for(var i=0;i < ca.length;i++) {\n var c = ca[i];\n while (c.charAt(0)==' ') c = c.substring(1,c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n }\n return null;\n}\n\n", "\nimport type { ControlHint } from \"./controls\";\nimport { hex, clamp, lpad } from \"./util\";\nimport { SourceLocation } from \"./workertypes\";\n\n// Emulator classes\n// Most of this stuff helps emulators use the DOM\n// and do keyboard/mouse/gamepad/timer handling, etc.\n\nexport var PLATFORMS = {};\n\nvar _random_state = 1;\n\nexport function noise() {\n let x = _random_state;\n x ^= x << 13;\n x ^= x >> 17;\n x ^= x << 5;\n return (_random_state = x) & 0xff;\n}\n\nexport function getNoiseSeed() {\n return _random_state;\n}\n\nexport function setNoiseSeed(x: number) {\n _random_state = x;\n}\n\ntype KeyboardCallback = (which: number, charCode: number, flags: KeyFlags) => void;\n\nexport function __createCanvas(doc: HTMLDocument, mainElement: HTMLElement, width: number, height: number): HTMLCanvasElement {\n var canvas = doc.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n canvas.classList.add(\"emuvideo\");\n canvas.tabIndex = 0; // Make it focusable and tabbable\n mainElement.appendChild(canvas);\n return canvas;\n}\n\nexport enum KeyFlags {\n KeyDown = 1,\n Shift = 2,\n Ctrl = 4,\n Alt = 8,\n Meta = 16,\n KeyUp = 64,\n KeyPress = 128,\n}\n\n// KeyboardEvent.key is layout- and shift-aware, so it holds the character actually\n// typed (\"(\", \"+\", \"\\\"\") where keyCode does not. Non-printable keys have multi-char\n// names (\"Enter\", \"Backspace\", \"ArrowLeft\") so fall back to keyCode for those.\nexport function _charCodeOf(e: KeyboardEvent): number {\n return e.key != null && e.key.length == 1 ? e.key.charCodeAt(0) : e.keyCode;\n}\n\n// TODO: don't use which/keyCode anymore?\nexport function _setKeyboardEvents(canvas: HTMLElement, callback: KeyboardCallback) {\n canvas.onkeydown = (e) => {\n let flags = _metakeyflags(e);\n callback(e.which, _charCodeOf(e), KeyFlags.KeyDown | flags);\n if (!flags) e.preventDefault(); // eat all keys that don't have a modifier\n };\n canvas.onkeyup = (e) => {\n callback(e.which, _charCodeOf(e), KeyFlags.KeyUp | _metakeyflags(e));\n };\n};\n\ntype VideoCanvasOptions = { rotate?: number, overscan?: boolean, aspect?: number };\n\nclass RasterVideoImpl {\n\n mainElement: HTMLElement;\n width: number;\n height: number;\n options: VideoCanvasOptions;\n\n constructor(mainElement: HTMLElement, width: number, height: number, options?: VideoCanvasOptions) {\n this.mainElement = mainElement;\n this.width = width;\n this.height = height;\n this.options = options;\n }\n\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n imageData: ImageData;\n datau32: Uint32Array;\n vcanvas: JQuery;\n\n // Start paddles/joystick centered in [0,255] range.\n paddle_x = 128;\n paddle_y = 128;\n // Platforms can support up to three buttons.\n paddle_buttons: boolean[] = [false, false, false];\n\n setRotate(rotate: number) {\n var canvas = this.canvas;\n if (rotate) {\n // TODO: aspect ratio?\n canvas.style.transform = \"rotate(\" + rotate + \"deg)\";\n if (canvas.width < canvas.height)\n canvas.style.paddingLeft = canvas.style.paddingRight = \"10%\";\n } else {\n canvas.style.transform = null;\n canvas.style.paddingLeft = canvas.style.paddingRight = null;\n }\n }\n\n create(doc?: HTMLDocument) {\n var canvas;\n this.canvas = canvas = __createCanvas(doc || document, this.mainElement, this.width, this.height);\n this.vcanvas = $(canvas);\n if (this.options && this.options.rotate) {\n this.setRotate(this.options.rotate);\n }\n if (this.options && this.options.overscan) {\n this.vcanvas.css('padding', '0px');\n }\n if (this.options && this.options.aspect) {\n console.log(this.options);\n this.vcanvas.css('aspect-ratio', this.options.aspect + \"\");\n }\n this.ctx = canvas.getContext('2d');\n this.imageData = this.ctx.createImageData(this.width, this.height);\n this.datau32 = new Uint32Array(this.imageData.data.buffer);\n }\n\n setKeyboardEvents(callback) {\n _setKeyboardEvents(this.canvas, callback);\n }\n\n getFrameData() { return this.datau32; }\n\n getContext() { return this.ctx; }\n\n updateFrame(sx?: number, sy?: number, dx?: number, dy?: number, w?: number, h?: number) {\n if (w && h)\n this.ctx.putImageData(this.imageData, sx, sy, dx, dy, w, h);\n else\n this.ctx.putImageData(this.imageData, 0, 0);\n }\n\n clearRect(dx: number, dy: number, w: number, h: number) {\n var ctx = this.ctx;\n ctx.fillStyle = '#000000';\n ctx.fillRect(dx, dy, w, h);\n }\n\n setupMouseEvents(el?: HTMLCanvasElement) {\n if (!el) el = this.canvas;\n $(el).mousemove((e) => {\n var pos = getMousePos(el, e);\n var new_x = Math.round(pos.x * 255 / this.canvas.width);\n var new_y = Math.round(pos.y * 255 / this.canvas.height);\n this.paddle_x = clamp(0, 255, new_x);\n this.paddle_y = clamp(0, 255, new_y);\n }).mousedown((e) => {\n // TODO Allows users to specify mapping in settings.\n this.paddle_buttons[0] = !e.shiftKey && !e.altKey;\n this.paddle_buttons[1] = e.shiftKey && !e.altKey;\n this.paddle_buttons[2] = e.altKey && !e.shiftKey;\n }).mouseup((e) => {\n this.paddle_buttons.fill(false);\n });\n };\n}\n\nclass VectorVideoImpl extends RasterVideoImpl {\n\n persistenceAlpha = 0.5;\n jitter = 1.0;\n gamma = 0.8;\n sx: number;\n sy: number;\n\n create() {\n super.create();\n this.sx = this.width / 1024.0;\n this.sy = this.height / 1024.0;\n }\n\n clear() {\n var ctx = this.ctx;\n ctx.globalCompositeOperation = 'source-over';\n ctx.globalAlpha = this.persistenceAlpha;\n ctx.fillStyle = '#000000';\n ctx.fillRect(0, 0, this.width, this.height);\n ctx.globalAlpha = 1.0;\n ctx.globalCompositeOperation = 'lighter';\n }\n\n COLORS = [\n '#111111',\n '#1111ff',\n '#11ff11',\n '#11ffff',\n '#ff1111',\n '#ff11ff',\n '#ffff11',\n '#ffffff'\n ];\n\n drawLine(x1: number, y1: number, x2: number, y2: number, intensity: number, color: number) {\n var ctx = this.ctx;\n var sx = this.sx;\n var sy = this.sy;\n //console.log(x1,y1,x2,y2,intensity,color);\n if (intensity > 0) {\n // TODO: landscape vs portrait\n var alpha = Math.pow(intensity / 255.0, this.gamma);\n ctx.globalAlpha = alpha;\n ctx.lineWidth = 3;\n ctx.beginPath();\n // TODO: bright dots\n var jx = this.jitter * (Math.random() - 0.5);\n var jy = this.jitter * (Math.random() - 0.5);\n x1 += jx;\n x2 += jx;\n y1 += jy;\n y2 += jy;\n ctx.moveTo(x1 * sx, this.height - y1 * sy);\n if (x1 == x2 && y1 == y2)\n ctx.lineTo(x2 * sx + 1, this.height - y2 * sy);\n else\n ctx.lineTo(x2 * sx, this.height - y2 * sy);\n ctx.strokeStyle = this.COLORS[color & 7];\n ctx.stroke();\n }\n }\n}\n\nexport function drawCrosshair(ctx: CanvasRenderingContext2D, x: number, y: number, width: number) {\n if (!ctx?.setLineDash) return; // for unit testing\n ctx.fillStyle = 'rgba(0,0,0,0.25)';\n ctx.fillRect(x - 2, 0, 5, 32767);\n ctx.fillRect(0, y - 2, 32767, 5);\n ctx.lineWidth = width;\n ctx.strokeStyle = 'rgba(255,255,255,0.75)';\n ctx.setLineDash([width * 2, width * 2]);\n ctx.beginPath();\n ctx.moveTo(x, 0);\n ctx.lineTo(x, 32767);\n ctx.moveTo(0, y);\n ctx.lineTo(32767, y);\n ctx.stroke();\n}\n\n// Platforms construct video and timers through these bindings, so a headless\n// host can swap in stand-ins with setVideoClasses (see src/tools/emutarget.ts).\nexport type RasterVideo = RasterVideoImpl;\nexport let RasterVideo = RasterVideoImpl;\nexport type VectorVideo = VectorVideoImpl;\nexport let VectorVideo = VectorVideoImpl;\n\nexport interface VideoClasses {\n RasterVideo: typeof RasterVideoImpl;\n VectorVideo: typeof VectorVideoImpl;\n AnimationTimer: typeof AnimationTimerImpl;\n}\n\n/** Replace the classes platforms construct; returns the previous ones. */\nexport function setVideoClasses(classes: Partial): VideoClasses {\n const previous = { RasterVideo, VectorVideo, AnimationTimer };\n if (classes.RasterVideo) RasterVideo = classes.RasterVideo;\n if (classes.VectorVideo) VectorVideo = classes.VectorVideo;\n if (classes.AnimationTimer) AnimationTimer = classes.AnimationTimer;\n return previous;\n}\n\nexport class RAM {\n mem: Uint8Array;\n constructor(size: number) {\n this.mem = new Uint8Array(new ArrayBuffer(size));\n }\n}\n\nexport class EmuHalt extends Error {\n $loc: SourceLocation;\n squelchError = true;\n constructor(msg: string, loc?: SourceLocation) {\n super(msg);\n this.$loc = loc;\n Object.setPrototypeOf(this, EmuHalt.prototype);\n }\n}\n\n// Platforms call haltEmulation() when the program ends or the CPU stops.\n// The host (IDE, extension) installs a handler; headless runs ignore it.\nvar haltHandler: (err?: EmuHalt) => void = () => { };\n\nexport function setHaltHandler(handler: (err?: EmuHalt) => void) {\n haltHandler = handler;\n}\n\nexport function haltEmulation(err?: EmuHalt) {\n haltHandler(err);\n}\n\nexport var useRequestAnimationFrame: boolean = false;\n\nclass AnimationTimerImpl {\n\n callback;\n running: boolean = false;\n pulsing: boolean = false;\n nextts = 0;\n nframes;\n startts; // for FPS calc\n frameRate;\n intervalMsec;\n // If a frame is this many intervals late, resync the clock instead of running\n // back-to-back frames to catch up. Catching up floods frame-locked audio (the\n // producer generates many frames of samples at once), so a real-time emulator\n // should drop the missed time rather than burst.\n maxCatchupFrames = 3;\n useReqAnimFrame = useRequestAnimationFrame && typeof window.requestAnimationFrame === 'function'; // need for unit test\n\n constructor(frequencyHz: number, callback: () => void) {\n this.frameRate = frequencyHz;\n this.intervalMsec = 1000.0 / frequencyHz;\n this.callback = callback;\n }\n\n scheduleFrame(msec: number) {\n var fn = (timestamp) => {\n try {\n this.nextFrame(this.useReqAnimFrame ? timestamp : Date.now());\n } catch (e) {\n this.running = false;\n this.pulsing = false;\n throw e;\n }\n }\n if (this.useReqAnimFrame)\n window.requestAnimationFrame(fn);\n else\n setTimeout(fn, msec);\n }\n\n nextFrame(ts: number) {\n if (ts > this.nextts) {\n if (this.running) {\n this.callback();\n }\n if (this.nframes == 0)\n this.startts = ts;\n if (this.nframes++ == 300) {\n console.log(\"Avg framerate: \" + this.nframes * 1000 / (ts - this.startts) + \" fps\");\n }\n }\n this.nextts += this.intervalMsec;\n // too far behind to catch up smoothly? resync instead of bursting\n if ((ts - this.nextts) > this.intervalMsec * this.maxCatchupFrames) {\n //console.log(ts - this.nextts, 'msec skipped');\n this.nextts = ts;\n }\n if (this.running) {\n this.scheduleFrame(this.nextts - ts);\n } else {\n this.pulsing = false;\n }\n }\n isRunning() {\n return this.running;\n }\n start() {\n if (!this.running) {\n this.running = true;\n this.nextts = 0;\n this.nframes = 0;\n if (!this.pulsing) {\n this.scheduleFrame(0);\n this.pulsing = true;\n }\n }\n }\n stop() {\n this.running = false;\n }\n}\n\nexport type AnimationTimer = AnimationTimerImpl;\nexport let AnimationTimer = AnimationTimerImpl;\n\n// TODO: move to util?\n\nexport function dumpRAM(ram: ArrayLike, ramofs: number, ramlen: number): string {\n var s = \"\";\n var bpel = ram['BYTES_PER_ELEMENT'] || 1;\n var perline = Math.ceil(16 / bpel);\n var isFloat = ram instanceof Float32Array || ram instanceof Float64Array;\n // TODO: show scrollable RAM for other platforms\n for (var ofs = 0; ofs < ramlen; ofs += perline) {\n s += '$' + hex(ofs + ramofs) + ':';\n for (var i = 0; i < perline; i++) {\n if (ofs + i < ram.length) {\n if (i == perline / 2) s += \" \";\n if (isFloat) s += \" \" + ram[ofs + i].toPrecision(bpel * 2);\n else s += \" \" + hex(ram[ofs + i], bpel * 2);\n }\n }\n s += \"\\n\";\n }\n return s;\n}\n\nexport interface KeyDef {\n c: number,\t// key code\n n: string,\t// name\n // for gamepad\n plyr?: number,\n xaxis?: number,\n yaxis?: number,\n button?: number\n};\n\nexport interface KeyMapEntry {\n index: number;\n mask: number;\n def: KeyDef;\n}\n\ntype KeyCodeMap = Map;\n\nexport const Keys = {\n ANYKEY: { c: 0, n: \"?\" },\n // https://w3c.github.io/gamepad/#remapping\n // gamepad and keyboard (player 0)\n UP: { c: 38, n: \"Up\", plyr: 0, button: 12, yaxis: -1 },\n DOWN: { c: 40, n: \"Down\", plyr: 0, button: 13, yaxis: 1 },\n LEFT: { c: 37, n: \"Left\", plyr: 0, button: 14, xaxis: -1 },\n RIGHT: { c: 39, n: \"Right\", plyr: 0, button: 15, xaxis: 1 },\n A: { c: 32, n: \"Space\", plyr: 0, button: 0 },\n B: { c: 16, n: \"Shift\", plyr: 0, button: 1 },\n GP_A: { c: 88, n: \"X\", plyr: 0, button: 0 },\n GP_B: { c: 90, n: \"Z\", plyr: 0, button: 1 },\n GP_C: { c: 86, n: \"V\", plyr: 0, button: 2 },\n GP_D: { c: 67, n: \"C\", plyr: 0, button: 3 },\n SELECT: { c: 220, n: \"\\\\\", plyr: 0, button: 8 },\n START: { c: 13, n: \"Enter\", plyr: 0, button: 9 },\n OPTION: { c: 8, n: \"Bcksp\", plyr: 0, button: 10 },\n // gamepad and keyboard (player 1)\n P2_UP: { c: 87, n: \"W\", plyr: 1, button: 12, yaxis: -1 },\n P2_DOWN: { c: 83, n: \"S\", plyr: 1, button: 13, yaxis: 1 },\n P2_LEFT: { c: 65, n: \"A\", plyr: 1, button: 14, xaxis: -1 },\n P2_RIGHT: { c: 68, n: \"D\", plyr: 1, button: 15, xaxis: 1 },\n P2_A: { c: 84, n: \"T\", plyr: 1, button: 0 },\n P2_B: { c: 82, n: \"R\", plyr: 1, button: 1 },\n P2_GP_A: { c: 69, n: \"E\", plyr: 1, button: 0 },\n P2_GP_B: { c: 82, n: \"R\", plyr: 1, button: 1 },\n P2_GP_C: { c: 84, n: \"T\", plyr: 1, button: 2 },\n P2_GP_D: { c: 89, n: \"Y\", plyr: 1, button: 3 },\n P2_SELECT: { c: 70, n: \"F\", plyr: 1, button: 8 },\n P2_START: { c: 71, n: \"G\", plyr: 1, button: 9 },\n // keyboard only\n VK_ESCAPE: { c: 27, n: \"Esc\" },\n VK_F1: { c: 112, n: \"F1\" },\n VK_F2: { c: 113, n: \"F2\" },\n VK_F3: { c: 114, n: \"F3\" },\n VK_F4: { c: 115, n: \"F4\" },\n VK_F5: { c: 116, n: \"F5\" },\n VK_F6: { c: 117, n: \"F6\" },\n VK_F7: { c: 118, n: \"F7\" },\n VK_F8: { c: 119, n: \"F8\" },\n VK_F9: { c: 120, n: \"F9\" },\n VK_F10: { c: 121, n: \"F10\" },\n VK_F11: { c: 122, n: \"F11\" },\n VK_F12: { c: 123, n: \"F12\" },\n VK_SCROLL_LOCK: { c: 145, n: \"ScrLck\" },\n VK_PAUSE: { c: 19, n: \"Pause\" },\n VK_QUOTE: { c: 222, n: \"'\" },\n VK_1: { c: 49, n: \"1\" },\n VK_2: { c: 50, n: \"2\" },\n VK_3: { c: 51, n: \"3\" },\n VK_4: { c: 52, n: \"4\" },\n VK_5: { c: 53, n: \"5\" },\n VK_6: { c: 54, n: \"6\" },\n VK_7: { c: 55, n: \"7\" },\n VK_8: { c: 56, n: \"8\" },\n VK_9: { c: 57, n: \"9\" },\n VK_0: { c: 48, n: \"0\" },\n VK_MINUS: { c: 189, n: \"-\" },\n VK_MINUS2: { c: 173, n: \"-\" },\n VK_EQUALS: { c: 187, n: \"=\" },\n VK_EQUALS2: { c: 61, n: \"=\" },\n VK_BACK_SPACE: { c: 8, n: \"Bkspc\" },\n VK_TAB: { c: 9, n: \"Tab\" },\n VK_Q: { c: 81, n: \"Q\" },\n VK_W: { c: 87, n: \"W\" },\n VK_E: { c: 69, n: \"E\" },\n VK_R: { c: 82, n: \"R\" },\n VK_T: { c: 84, n: \"T\" },\n VK_Y: { c: 89, n: \"Y\" },\n VK_U: { c: 85, n: \"U\" },\n VK_I: { c: 73, n: \"I\" },\n VK_O: { c: 79, n: \"O\" },\n VK_P: { c: 80, n: \"P\" },\n VK_ACUTE: { c: 219, n: \"\u00B4\" },\n VK_OPEN_BRACKET: { c: 219, n: \"[\" },\n VK_CLOSE_BRACKET: { c: 221, n: \"]\" },\n VK_CAPS_LOCK: { c: 20, n: \"CpsLck\" },\n VK_A: { c: 65, n: \"A\" },\n VK_S: { c: 83, n: \"S\" },\n VK_D: { c: 68, n: \"D\" },\n VK_F: { c: 70, n: \"F\" },\n VK_G: { c: 71, n: \"G\" },\n VK_H: { c: 72, n: \"H\" },\n VK_J: { c: 74, n: \"J\" },\n VK_K: { c: 75, n: \"K\" },\n VK_L: { c: 76, n: \"L\" },\n VK_CEDILLA: { c: 186, n: \"\u00C7\" },\n VK_TILDE: { c: 222, n: \"~\" },\n VK_ENTER: { c: 13, n: \"Enter\" },\n VK_SHIFT: { c: 16, n: \"Shift\" },\n VK_BACK_SLASH: { c: 220, n: \"\\\\\" },\n VK_Z: { c: 90, n: \"Z\" },\n VK_X: { c: 88, n: \"X\" },\n VK_C: { c: 67, n: \"C\" },\n VK_V: { c: 86, n: \"V\" },\n VK_B: { c: 66, n: \"B\" },\n VK_N: { c: 78, n: \"N\" },\n VK_M: { c: 77, n: \"M\" },\n VK_COMMA: { c: 188, n: \"] =\" },\n VK_PERIOD: { c: 190, n: \".\" },\n VK_SEMICOLON: { c: 59, n: \";\" },\n VK_SLASH: { c: 191, n: \"/\" },\n VK_CONTROL: { c: 17, n: \"Ctrl\" },\n VK_ALT: { c: 18, n: \"Alt\" },\n VK_COMMAND: { c: 224, n: \"Cmd\" },\n VK_SPACE: { c: 32, n: \"Space\" },\n VK_INSERT: { c: 45, n: \"Ins\" },\n VK_DELETE: { c: 46, n: \"Del\" },\n VK_HOME: { c: 36, n: \"Home\" },\n VK_END: { c: 35, n: \"End\" },\n VK_PAGE_UP: { c: 33, n: \"PgUp\" },\n VK_PAGE_DOWN: { c: 34, n: \"PgDown\" },\n VK_UP: { c: 38, n: \"Up\" },\n VK_DOWN: { c: 40, n: \"Down\" },\n VK_LEFT: { c: 37, n: \"Left\" },\n VK_RIGHT: { c: 39, n: \"Right\" },\n VK_NUM_LOCK: { c: 144, n: \"Num\" },\n VK_DIVIDE: { c: 111, n: \"Num /\" },\n VK_MULTIPLY: { c: 106, n: \"Num *\" },\n VK_SUBTRACT: { c: 109, n: \"Num -\" },\n VK_ADD: { c: 107, n: \"Num +\" },\n VK_DECIMAL: { c: 194, n: \"Num .\" },\n VK_NUMPAD0: { c: 96, n: \"Num 0\" },\n VK_NUMPAD1: { c: 97, n: \"Num 1\" },\n VK_NUMPAD2: { c: 98, n: \"Num 2\" },\n VK_NUMPAD3: { c: 99, n: \"Num 3\" },\n VK_NUMPAD4: { c: 100, n: \"Num 4\" },\n VK_NUMPAD5: { c: 101, n: \"Num 5\" },\n VK_NUMPAD6: { c: 102, n: \"Num 6\" },\n VK_NUMPAD7: { c: 103, n: \"Num 7\" },\n VK_NUMPAD8: { c: 104, n: \"Num 8\" },\n VK_NUMPAD9: { c: 105, n: \"Num 9\" },\n VK_NUMPAD_CENTER: { c: 12, n: \"Num Cntr\" }\n};\n\nfunction _metakeyflags(e) {\n return (e.shiftKey ? KeyFlags.Shift : 0) |\n (e.ctrlKey ? KeyFlags.Ctrl : 0) |\n (e.altKey ? KeyFlags.Alt : 0) |\n (e.metaKey ? KeyFlags.Meta : 0);\n}\n\ntype KeyMapFunction = (o: KeyMapEntry, key: number, code: number, flags: number) => void;\n\n// the key map of the most recent keyboard handler, so a host can show the\n// controls (the VS Code emulator panel does)\nvar lastKeycodeMap: KeyCodeMap = null;\n\nexport function getLastKeycodeMap(): KeyCodeMap {\n return lastKeycodeMap;\n}\n\nexport function clearLastKeycodeMap() {\n lastKeycodeMap = null;\n}\n\n// what each controller key does, in the order the hint lists them\nconst CONTROL_LABELS: [KeyDef[], string, string][] = [\n [[Keys.UP, Keys.DOWN, Keys.LEFT, Keys.RIGHT], '\\u2190\\u2191\\u2193\\u2192', 'Joystick'],\n [[Keys.A], 'Space', 'Button A'],\n [[Keys.B], 'Shift', 'Button B'],\n [[Keys.GP_A, Keys.GP_B, Keys.GP_C, Keys.GP_D], 'X Z V C', 'Buttons'],\n [[Keys.START], 'Enter', 'Start'],\n [[Keys.SELECT], '\\\\', 'Select'],\n [[Keys.OPTION], 'Backspace', 'Option'],\n [[Keys.P2_UP, Keys.P2_DOWN, Keys.P2_LEFT, Keys.P2_RIGHT], 'W A S D', 'Player 2'],\n];\n\n/**\n * Control hints generated from a key map, for platforms with no hand-written\n * ones in PLATFORM_CONTROLS (src/common/controls.ts).\n */\nexport function describeControls(map: KeyCodeMap): ControlHint[] {\n if (!map) return [];\n var defs = new Set();\n for (var k of Object.keys(map)) {\n var o: KeyMapEntry = map[k];\n if (o && o.def) defs.add(o.def);\n }\n var hints: ControlHint[] = [];\n for (var [keys, label, action] of CONTROL_LABELS) {\n if (keys.some(key => defs.has(key))) {\n hints.push({ keys: [label], action });\n for (var key of keys) defs.delete(key);\n }\n }\n // the rest (coin, number keys) by name; player 2's buttons go unlisted\n var p2 = new Set(Object.keys(Keys).filter(k => k.startsWith('P2_')).map(k => Keys[k]));\n var others = [...defs].filter(d => d !== Keys.ANYKEY && !p2.has(d)).map(d => d.n);\n if (others.length) hints.push({ keys: others.slice(0, 6), action: 'Other' });\n return hints;\n}\n\nexport function newKeyboardHandler(switches: number[] | Uint8Array, map: KeyCodeMap, func?: KeyMapFunction, alwaysfunc?: boolean) {\n if (map) lastKeycodeMap = map;\n return (key: number, code: number, flags: number) => {\n if (!map) {\n func(null, key, code, flags);\n return;\n }\n var o: KeyMapEntry = map[key];\n if (!o) o = map[0];\n if (func && (o || alwaysfunc)) {\n func(o, key, code, flags);\n }\n if (o) {\n //console.log(key,code,flags,o);\n var mask = o.mask;\n if (mask < 0) { // negative mask == active low\n mask = -mask;\n if (flags & (KeyFlags.KeyDown | KeyFlags.KeyUp))\n flags ^= KeyFlags.KeyDown | KeyFlags.KeyUp;\n }\n if (flags & KeyFlags.KeyDown) {\n switches[o.index] |= mask;\n } else if (flags & KeyFlags.KeyUp) {\n switches[o.index] &= ~mask;\n }\n }\n };\n}\n\nexport function setKeyboardFromMap(video: RasterVideo, switches: number[] | Uint8Array, map: KeyCodeMap, func?: KeyMapFunction, alwaysfunc?: boolean) {\n var handler = newKeyboardHandler(switches, map, func, alwaysfunc);\n video.setKeyboardEvents(handler);\n return new ControllerPoller(handler);\n}\n\nexport function makeKeycodeMap(table: [KeyDef, number, number][]): KeyCodeMap {\n var map = new Map();\n for (var i = 0; i < table.length; i++) {\n var entry = table[i];\n var val: KeyMapEntry = { index: entry[1], mask: entry[2], def: entry[0] };\n map[entry[0].c] = val;\n }\n return map;\n}\n\n// TODO: P2_GP_B and P2_GP_C share keycodes with P2_B and P2_A, so they can't\n// be listed here without button 1/2 double-binding on player 2.\nconst DEFAULT_CONTROLLER_KEYS: KeyDef[] = [\n Keys.UP, Keys.DOWN, Keys.LEFT, Keys.RIGHT, Keys.A, Keys.B, Keys.SELECT, Keys.START,\n Keys.GP_A, Keys.GP_B, Keys.GP_C, Keys.GP_D, Keys.OPTION,\n Keys.P2_UP, Keys.P2_DOWN, Keys.P2_LEFT, Keys.P2_RIGHT, Keys.P2_A, Keys.P2_B, Keys.P2_SELECT, Keys.P2_START,\n Keys.P2_GP_A, Keys.P2_GP_D,\n];\n\n// Gamepad helper\nexport class ControllerPoller {\n active = false;\n handler;\n state: Int32Array[];\n lastState: Int32Array[];\n AXIS0 = 24; // first joystick axis index\n constructor(handler: (key, code, flags) => void) {\n this.handler = handler;\n window.addEventListener(\"gamepadconnected\", (event) => {\n console.log(\"Gamepad connected:\", event);\n this.reset();\n });\n window.addEventListener(\"gamepaddisconnected\", (event) => {\n console.log(\"Gamepad disconnected:\", event);\n this.reset();\n });\n }\n reset() {\n if (typeof navigator.getGamepads === 'function') {\n let numGamepads = navigator.getGamepads()?.length;\n this.state = new Array(numGamepads);\n this.lastState = new Array(numGamepads);\n for (var i = 0; i < numGamepads; i++) {\n this.state[i] = new Int32Array(64);\n this.lastState[i] = new Int32Array(64);\n }\n this.active = this.state?.length > 0;\n }\n }\n start() {\n this.reset();\n }\n stop() {\n this.active = false;\n }\n poll() {\n if (!this.active) return;\n var gamepads = navigator.getGamepads && navigator.getGamepads();\n if (!gamepads) return;\n for (var gpi = 0; gpi < gamepads.length; gpi++) {\n let state = this.state[gpi];\n let lastState = this.lastState[gpi];\n var gp = gamepads[gpi];\n if (gp) {\n for (var i = 0; i < gp.axes.length; i++) {\n var k = i + this.AXIS0;\n state[k] = Math.round(gp.axes[i]);\n if (state[k] != lastState[k]) {\n this.handleStateChange(gpi, k);\n }\n }\n for (var i = 0; i < gp.buttons.length; i++) {\n state[i] = gp.buttons[i].pressed ? 1 : 0;\n if (state[i] != lastState[i]) {\n this.handleStateChange(gpi, i);\n }\n }\n lastState.set(state);\n }\n }\n }\n handleStateChange(gpi: number, k: number) {\n var axis = k - this.AXIS0;\n var state = this.state[gpi][k];\n var lastState = this.lastState[gpi][k];\n // TODO: this is slow\n for (var def of DEFAULT_CONTROLLER_KEYS) {\n // is this a gamepad entry? same player #?\n if (!def || def.plyr != gpi) continue;\n // does this key map to the button/axis that changed?\n // an axis has to be compared against the direction the key stands for,\n // so that e.g. a left-to-right flick releases LEFT and presses RIGHT\n var active: boolean, wasActive: boolean;\n if (def.button != null && k == def.button) {\n active = state != 0;\n wasActive = lastState != 0;\n } else if (axis == 0 && def.xaxis != null) {\n active = def.xaxis == state;\n wasActive = def.xaxis == lastState;\n } else if (axis == 1 && def.yaxis != null) {\n active = def.yaxis == state;\n wasActive = def.yaxis == lastState;\n } else {\n continue;\n }\n // don't break -- several keys can share a button (e.g. A and GP_A)\n //console.log(\"Gamepad\", gpi, def.c, state);\n if (active && !wasActive) {\n this.handler(def.c, 0, KeyFlags.KeyDown);\n } else if (!active && wasActive) {\n this.handler(def.c, 0, KeyFlags.KeyUp);\n }\n }\n }\n}\n\n// handy for loadROM()\nexport function padBytes(data: Uint8Array | number[], len: number, padstart?: boolean): Uint8Array {\n if (data.length > len) {\n throw Error(\"Data too long, \" + data.length + \" > \" + len);\n }\n var r = new RAM(len);\n if (padstart)\n r.mem.set(data, len - data.length);\n else\n r.mem.set(data);\n return r.mem;\n}\n\ntype AddressReadWriteFn = ((a: number) => number) | ((a: number, v: number) => void);\ntype AddressDecoderEntry = [number, number, number, AddressReadWriteFn];\ntype AddressDecoderOptions = { gmask?: number, defaultval?: number };\n\n// TODO: better performance, check values\nexport function AddressDecoder(table: AddressDecoderEntry[], options?: AddressDecoderOptions) {\n var self = this;\n function makeFunction() {\n var s = \"\";\n if (options && options.gmask) {\n s += \"a&=\" + options.gmask + \";\";\n }\n for (var i = 0; i < table.length; i++) {\n var entry = table[i];\n var start = entry[0] | 0;\n var end = entry[1] | 0;\n var mask = entry[2] | 0;\n var func = entry[3];\n self['__fn' + i] = func;\n s += \"if (a>=\" + start + \" && a<=\" + end + \"){\";\n if (mask) s += \"a&=\" + mask + \";\";\n s += \"return this.__fn\" + i + \"(a,v)&0xff;}\\n\";\n }\n s += \"return \" + (options?.defaultval | 0) + \";\";\n return new Function('a', 'v', s);\n }\n return makeFunction().bind(self);\n}\n\nexport function newAddressDecoder(table: AddressDecoderEntry[], options?: AddressDecoderOptions): (a: number, v?: number) => number {\n return new (AddressDecoder as any)(table, options);\n}\n\n\n// https://stackoverflow.com/questions/17130395/real-mouse-position-in-canvas\nexport function getMousePos(canvas: HTMLCanvasElement, evt): { x: number, y: number } {\n // Improves reachability of min and max values at edges of canvas. Without delta,\n // min and max values would be represented by 1/2 as many pixels as other values.\n const delta = .5;\n // Canvas HTML element has integer `width` and `height`, but getBoundingClientRect() pos & size\n // are scaled to non-integer values. Mouse events return integer x/y values in the range\n // [Math.floor(rect.left/top), Math.floor(rect.left/top) + Math.floor(rect.width/height)],\n // which may not be the same as [Math.floor(rect.left/top), Math.floor(rect.right/bottom)].\n var rect = canvas.getBoundingClientRect(), // abs. size of element\n // Ignore canvas borders and padding, so mouse position is relative to canvas content.\n style = window.getComputedStyle(canvas),\n left = parseFloat(style.borderLeftWidth) + parseFloat(style.paddingLeft),\n right = parseFloat(style.borderRightWidth) + parseFloat(style.paddingRight),\n top = parseFloat(style.borderTopWidth) + parseFloat(style.paddingTop),\n bottom = parseFloat(style.borderBottomWidth) + parseFloat(style.paddingBottom),\n width = rect.width - left - right,\n height = rect.height - top - bottom,\n\n // Determine scale factors to map mouse coordinates to canvas coordinates.\n scaleX = canvas.width / Math.floor(width - 2 * delta),\n scaleY = canvas.height / Math.floor(height - 2 * delta),\n\n // Scale coordinates after they've been adjusted to be relative to canvas content.\n x = (evt.clientX - delta - rect.left - left) * scaleX,\n y = (evt.clientY - delta - rect.top - top) * scaleY;\n return {\n // Clamp to [0, canvas.width/height] to prevent non-integer rect position\n // and size, and potentially `delta`, from returning out of bounds values.\n x: Math.max(0, Math.min(canvas.width, x)),\n y: Math.max(0, Math.min(canvas.height, y))\n }\n}\n\n\n"], - "mappings": "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", - "names": ["lpad", "s", "n", "rpad", "byte2signed", "b", "getFilenameForPath", "toks", "getFolderForPath", "getFilenamePrefix", "pos", "hex", "v", "nd", "toradix", "tobin", "radix", "e", "arrayCompare", "a", "i", "invertMap", "m", "r", "k", "highlightDifferences", "s1", "s2", "split1", "split2", "j", "result", "w1", "w2", "lzgmini", "LZG_HEADER_SIZE", "LZG_METHOD_COPY", "LZG_METHOD_LZG1", "LZG_LENGTH_DECODE_LUT", "outdata", "calcChecksum", "data", "uncomplen", "checksum", "dst", "method", "m1", "m2", "m3", "m4", "symbol", "b2", "b3", "len", "offset", "dstlen", "datalen", "byteArrayToString", "byteArrayToUTF8", "stringToByteArray", "str", "charLUT", "c", "BINARY_EXTS", "isValidUTF8", "data", "bytes", "e", "i", "b", "extra", "cp", "min", "k", "c", "isProbablyBinary", "path", "upper", "ext", "controls", "compressLZG", "em_module", "inBuffer", "levelArg", "level", "inLen", "inPtr", "maxEncSize", "outPtr", "compLen", "outBuffer", "safe_extend", "deep", "dest", "src", "key", "val", "type", "printFlags", "names", "r2l", "s", "bit", "rgb2bgr", "x", "RGBA", "r", "g", "clamp", "minv", "maxv", "v", "safeident", "rle_unpack", "tag", "ch", "count", "j", "getWithBinary", "url", "success", "datatype", "oReq", "oEvent", "getBasePlatform", "platform", "getRootPlatform", "getRootBasePlatform", "isArray", "obj", "isTypedArray", "convertDataToUint8Array", "stringToByteArray", "byteToASCII", "b", "loadScriptTag", "scriptfn", "resolve", "reject", "script", "scriptLoader", "loadScript", "decodeQueryString", "qs", "a", "b", "p", "parseBool", "s", "replaceAll", "s", "search", "replace", "isProductionHost", "getCookie", "name", "nameEQ", "ca", "c", "PLATFORMS", "_random_state", "noise", "x", "getNoiseSeed", "setNoiseSeed", "__createCanvas", "doc", "mainElement", "width", "height", "canvas", "_charCodeOf", "_setKeyboardEvents", "canvas", "callback", "e", "flags", "_metakeyflags", "RasterVideoImpl", "mainElement", "width", "height", "options", "rotate", "doc", "__createCanvas", "sx", "sy", "dx", "dy", "w", "h", "ctx", "el", "pos", "getMousePos", "new_x", "new_y", "clamp", "VectorVideoImpl", "x1", "y1", "x2", "y2", "intensity", "color", "alpha", "jx", "jy", "drawCrosshair", "x", "y", "RasterVideo", "VectorVideo", "RAM", "size", "EmuHalt", "_EmuHalt", "msg", "loc", "haltHandler", "setHaltHandler", "handler", "haltEmulation", "err", "useRequestAnimationFrame", "AnimationTimerImpl", "frequencyHz", "callback", "msec", "fn", "timestamp", "e", "ts", "AnimationTimer", "dumpRAM", "ram", "ramofs", "ramlen", "s", "bpel", "perline", "isFloat", "ofs", "hex", "i", "Keys", "_metakeyflags", "lastKeycodeMap", "CONTROL_LABELS", "Keys", "newKeyboardHandler", "switches", "map", "func", "alwaysfunc", "lastKeycodeMap", "key", "code", "flags", "o", "mask", "setKeyboardFromMap", "video", "handler", "ControllerPoller", "makeKeycodeMap", "table", "i", "entry", "val", "DEFAULT_CONTROLLER_KEYS", "Keys", "event", "_a", "_b", "numGamepads", "gamepads", "gpi", "state", "lastState", "gp", "k", "axis", "def", "active", "wasActive", "padBytes", "data", "len", "padstart", "r", "RAM", "AddressDecoder", "options", "self", "makeFunction", "s", "start", "end", "newAddressDecoder", "getMousePos", "canvas", "evt", "rect", "style", "left", "right", "top", "bottom", "width", "height", "scaleX", "scaleY", "x", "y"] + "sourcesContent": ["\nexport function lpad(s:string, n:number):string {\n s += ''; // convert to string\n while (s.length 0) ? s.substr(0, pos) : s;\n}\n\nexport function hex(v:number, nd?:number) {\n if (!nd) nd = 2;\n if (nd == 8) {\n return hex((v>>16)&0xffff,4) + hex(v&0xffff,4);\n } else {\n return toradix(v,nd,16);\n }\n}\n\nexport function tobin(v:number, nd?:number) {\n if (!nd) nd = 8;\n return toradix(v,nd,2);\n}\n\nexport function toradix(v:number, nd:number, radix:number) {\n try {\n var s = v.toString(radix).toUpperCase();\n while (s.length < nd)\n s = \"0\" + s;\n return s;\n } catch (e) {\n return v+\"\";\n }\n}\n\nexport function arrayCompare(a:ArrayLike, b:ArrayLike):boolean {\n if (a == null && b == null) return true;\n if (a == null) return false;\n if (b == null) return false;\n if (typeof a.length != 'number' || typeof b.length != 'number') return false;\n if (a.length != b.length) return false;\n for (var i=0; i= 0) {\n while (i < s1.length && split1[i].indexOf(\"\\n\") < 0)\n i++;\n }\n if (w1 != w2) {\n w2 = '' + w2 + '';\n }\n result += w2;\n i++;\n j++;\n }\n while (j < split2.length) {\n result += split2[j++];\n }\n return result;\n}\n\nexport function lzgmini() {\n\n // Constants\n var LZG_HEADER_SIZE = 16;\n var LZG_METHOD_COPY = 0;\n var LZG_METHOD_LZG1 = 1;\n\n // LUT for decoding the copy length parameter\n var LZG_LENGTH_DECODE_LUT = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,\n 20,21,22,23,24,25,26,27,28,29,35,48,72,128];\n\n // Decoded data (produced by the decode() method)\n var outdata = null;\n\n // Calculate the checksum\n var calcChecksum = function(data) {\n var a = 1;\n var b = 0;\n var i = LZG_HEADER_SIZE;\n while (i < data.length)\n {\n a = (a + (data[i] & 0xff)) & 0xffff;\n b = (b + a) & 0xffff;\n i++;\n }\n return (b << 16) | a;\n }\n\n // Decode LZG coded data. The function returns the size of the decoded data.\n // Use any of the get* methods to retrieve the decoded data.\n this.decode = function(data:number[]):number[] {\n // Start by clearing the decompressed array in this object\n outdata = null;\n\n // Check magic ID\n if ((data.length < LZG_HEADER_SIZE) || (data[0] != 76) ||\n (data[1] != 90) || (data[2] != 71))\n {\n return null;\n }\n \n // what's the length?\n var uncomplen = data[6] | (data[5]<<8) | (data[4]<<16) | (data[3]<<24);\n\n // Calculate & check the checksum\n var checksum = ((data[11] & 0xff) << 24) |\n ((data[12] & 0xff) << 16) |\n ((data[13] & 0xff) << 8) |\n (data[14] & 0xff);\n if (calcChecksum(data) != checksum)\n {\n return null;\n }\n\n var dst = new Array();\n // Check which method to use\n var method = data[15] & 0xff;\n if (method == LZG_METHOD_LZG1)\n {\n // Get marker symbols\n var m1 = data[16] & 0xff;\n var m2 = data[17] & 0xff;\n var m3 = data[18] & 0xff;\n var m4 = data[19] & 0xff;\n\n // Main decompression loop\n var symbol, b, b2, b3, len, offset;\n var dstlen = 0;\n var k = LZG_HEADER_SIZE + 4;\n var datalen = data.length;\n while (k <= datalen)\n {\n symbol = data[k++] & 0xff;\n if ((symbol != m1) && (symbol != m2) && (symbol != m3) && (symbol != m4))\n {\n // Literal copy\n dst[dstlen++] = symbol;\n }\n else\n {\n b = data[k++] & 0xff;\n if (b != 0)\n {\n // Decode offset / length parameters\n if (symbol == m1)\n {\n // marker1 - \"Distant copy\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n b2 = data[k++] & 0xff;\n b3 = data[k++] & 0xff;\n offset = (((b & 0xe0) << 11) | (b2 << 8) | b3) + 2056;\n }\n else if (symbol == m2)\n {\n // marker2 - \"Medium copy\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n b2 = data[k++] & 0xff;\n offset = (((b & 0xe0) << 3) | b2) + 8;\n }\n else if (symbol == m3)\n {\n // marker3 - \"Short copy\"\n len = (b >> 6) + 3;\n offset = (b & 63) + 8;\n }\n else\n {\n // marker4 - \"Near copy (incl. RLE)\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n offset = (b >> 5) + 1;\n }\n\n // Copy the corresponding data from the history window\n for (i = 0; i < len; i++)\n {\n dst[dstlen] = dst[dstlen-offset];\n dstlen++;\n }\n }\n else\n {\n // Literal copy (single occurance of a marker symbol)\n dst[dstlen++] = symbol;\n }\n }\n }\n\n }\n else if (method == LZG_METHOD_COPY)\n {\n // Plain copy\n var dstlen = 0;\n var datalen = data.length;\n for (var i = LZG_HEADER_SIZE; i < datalen; i++)\n {\n dst[dstlen++] = data[i] & 0xff;\n }\n }\n else\n {\n // Unknown method\n return null;\n }\n // Store the decompressed data in the lzgmini object for later retrieval\n if (dst.length < uncomplen) return null; // data too short\n outdata = dst.slice(0, uncomplen);\n return outdata;\n }\n\n // Get the decoded byte array\n this.getByteArray = function():number[]\n {\n return outdata;\n }\n\n // Get the decoded string from a Latin 1 (or ASCII) encoded array\n this.getStringLatin1 = function():string {\n return byteArrayToString(outdata);\n }\n\n // Get the decoded string from an UTF-8 encoded array\n this.getStringUTF8 = function():string {\n return byteArrayToUTF8(outdata);\n }\n}\n\nexport function stringToByteArray(s:string) : Uint8Array {\n var a = new Uint8Array(s.length);\n for (var i=0; i= 192) && (c < 224)) {\n c = ((c & 31) << 6) | (data[i++] & 63);\n } else {\n c = ((c & 15) << 12) | ((data[i] & 63) << 6) | (data[i+1] & 63);\n i += 2;\n if (c == 0xfeff) continue; // ignore BOM\n }\n str += String.fromCharCode(c);\n }\n }\n return str;\n}\n\nexport function removeBOM(s:string) {\n if (s.charCodeAt(0) === 0xFEFF) {\n s = s.substr(1);\n }\n return s;\n}\n\n// File extensions that are always treated as binary, regardless of content.\nconst BINARY_EXTS = ['.CHR', '.BIN', '.DAT', '.PAL', '.NAM', '.RLE', '.LZ4', '.LZH', '.LZSA', '.NSF'];\n\n/**\n * Strict RFC 3629 UTF-8 validation. Unlike decoding with replacement, this\n * rejects truncated sequences, overlong encodings, surrogate halves and code\n * points above U+10FFFF -- the cases that silently corrupt bytes when a file\n * is round-tripped through a JavaScript string.\n */\nexport function isValidUTF8(data: number[] | Uint8Array): boolean {\n const bytes = data instanceof Uint8Array ? data : Uint8Array.from(data);\n if (typeof TextDecoder !== 'undefined') {\n try {\n new TextDecoder('utf-8', { fatal: true }).decode(bytes);\n return true;\n } catch (e) {\n return false;\n }\n }\n // Fallback for environments without TextDecoder.\n for (var i = 0; i < bytes.length;) {\n const b = bytes[i];\n if (b < 0x80) { i++; continue; }\n var extra: number, cp: number, min: number;\n if (b >= 0xc2 && b <= 0xdf) { extra = 1; cp = b & 0x1f; min = 0x80; }\n else if (b >= 0xe0 && b <= 0xef) { extra = 2; cp = b & 0x0f; min = 0x800; }\n else if (b >= 0xf0 && b <= 0xf4) { extra = 3; cp = b & 0x07; min = 0x10000; }\n else return false; // stray continuation byte or invalid lead\n if (i + extra >= bytes.length) return false; // truncated\n for (var k = 1; k <= extra; k++) {\n const c = bytes[i + k];\n if (c < 0x80 || c > 0xbf) return false;\n cp = (cp << 6) | (c & 0x3f);\n }\n if (cp < min || cp > 0x10ffff || (cp >= 0xd800 && cp <= 0xdfff)) return false;\n i += extra + 1;\n }\n return true;\n}\n\nexport function isProbablyBinary(path:string, data?:number[] | Uint8Array) : boolean {\n // a known binary extension is a strong enough signal on its own\n if (path) {\n const upper = path.toUpperCase();\n for (var ext of BINARY_EXTS) {\n if (upper.endsWith(ext)) return true;\n }\n }\n if (!data || data.length === 0) return false;\n const bytes = data instanceof Uint8Array ? data : Uint8Array.from(data);\n // NUL never occurs in text; other C0 controls (apart from tab/LF/VT/FF/CR)\n // are a soft signal -- a stray one shows up in source (escape sequences,\n // form feeds), a steady stream means binary.\n var controls = 0;\n for (var i = 0; i < bytes.length; i++) {\n const c = bytes[i];\n if (c === 0x00) return true;\n if (c < 0x20) {\n if (c !== 0x09 && c !== 0x0a && c !== 0x0b && c !== 0x0c && c !== 0x0d) controls++;\n } else if (c === 0x7f) {\n controls++;\n }\n }\n if (controls > 0 && controls * 20 > bytes.length) return true; // >5% control bytes\n // otherwise anything that isn't valid UTF-8 is binary\n return !isValidUTF8(bytes);\n}\n\n// need to load liblzg.js first\nexport function compressLZG(em_module, inBuffer:number[], levelArg?:boolean) : Uint8Array {\n var level = levelArg || 9;\n var inLen = inBuffer.length;\n var inPtr = em_module._malloc(inLen + 1);\n for (var i = 0; i < inLen; i++) {\n em_module.setValue(inPtr + i, inBuffer[i], 'i8');\n }\n var maxEncSize = em_module._LZG_MaxEncodedSize(inLen);\n var outPtr = em_module._malloc(maxEncSize + 1);\n var compLen = em_module.ccall('compress_lzg', 'number', ['number', 'number', 'number', 'number', 'number'], [level, inPtr, inLen, maxEncSize, outPtr]);\n em_module._free(inPtr);\n var outBuffer = new Uint8Array(compLen);\n for (var i = 0; i < compLen; i++) {\n outBuffer[i] = em_module.getValue(outPtr + i, 'i8');\n }\n em_module._free(outPtr);\n return outBuffer;\n}\n\n// only does primitives, 1D arrays and no recursion\nexport function safe_extend(deep, dest, src) {\n // TODO: deep ignored\n for (var key in src) {\n var val = src[key];\n var type = typeof(val);\n if (val === null || type == 'undefined') {\n dest[key] = val;\n } else if (type == 'function') {\n // ignore function\n } else if (type == 'object') {\n if (val['slice']) { // array?\n dest[key] = val.slice();\n } else {\n // ignore object\n }\n } else {\n dest[key] = val;\n }\n }\n return dest;\n}\n\nexport function printFlags(val:number, names:string[], r2l:boolean) {\n var s = '';\n for (var i=0; i 0) s += \" \";\n s += (val & bit) ? names[i] : \"-\";\n }\n }\n return s;\n}\n\nexport function rgb2bgr(x) {\n return ((x&0xff)<<16) | ((x>>16)&0xff) | (x&0x00ff00);\n}\n\nexport function RGBA(r:number,g:number,b:number) {\n return (r&0xff) | ((g&0xff)<<8) | ((b&0xff)<<16) | 0xff000000;\n}\n\nexport function clamp(minv:number, maxv:number, v:number) {\n return (v < minv) ? minv : (v > maxv) ? maxv : v;\n}\n\nexport function safeident(s : string) : string {\n // if starts with non-alpha character, prefix with '_'\n if (s.length == 0) return '';\n if (!s.match(/^[a-zA-Z_]/)) s = '_' + s;\n return s.replace(/\\W+/g, \"_\");\n}\n\nexport function rle_unpack(src : Uint8Array) : Uint8Array {\n var i = 0;\n var tag = src[i++];\n var dest = [];\n var data = tag;\n while (i < src.length) {\n var ch = src[i++];\n if (ch == tag) {\n var count = src[i++];\n for (var j=0; jvoid, datatype:'text'|'arraybuffer') {\n var oReq = new XMLHttpRequest();\n oReq.open(\"GET\", url, true);\n oReq.responseType = datatype;\n oReq.onload = function (oEvent) {\n if (oReq.status == 200) {\n var data = oReq.response;\n if (data instanceof ArrayBuffer) {\n data = new Uint8Array(data);\n }\n success(data);\n } else if (oReq.status == 404) {\n success(null);\n } else {\n throw Error(\"Error \" + oReq.status + \" loading \" + url);\n }\n }\n oReq.onerror = function (oEvent) {\n success(null);\n }\n oReq.ontimeout = function (oEvent) {\n throw Error(\"Timeout loading \" + url);\n }\n oReq.send(null);\n}\n\n// get platform ID without . emulator\nexport function getBasePlatform(platform : string) : string {\n return platform.split('.')[0];\n}\n\n// get platform ID without - specialization\nfunction getRootPlatform(platform : string) : string {\n return platform.split('-')[0];\n}\n\n// get platform ID without emulator or specialization\nexport function getRootBasePlatform(platform : string) : string {\n return getRootPlatform(getBasePlatform(platform));\n}\n\nexport function isArray(obj: any) : obj is ArrayLike {\n return obj != null && (Array.isArray(obj) || isTypedArray(obj));\n}\n\nexport function isTypedArray(obj: any) : obj is ArrayLike {\n return obj != null && obj['BYTES_PER_ELEMENT'];\n}\n\nexport function convertDataToUint8Array(data: string|Uint8Array) : Uint8Array {\n return (typeof data === 'string') ? stringToByteArray(data) : data;\n}\n\nexport function convertDataToString(data: string|Uint8Array) : string {\n return (data instanceof Uint8Array) ? byteArrayToUTF8(data) : data;\n}\n\nexport function byteToASCII(b: number) : string {\n if (b < 32)\n return String.fromCharCode(b + 0x2400);\n else\n return String.fromCharCode(b);\n}\n\nexport type ScriptLoader = (scriptfn:string) => Promise;\n\nfunction loadScriptTag(scriptfn:string) : Promise {\n return new Promise( (resolve, reject) => {\n var script = document.createElement('script');\n script.onload = resolve;\n script.onerror = reject;\n script.src = scriptfn;\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n}\n\nlet scriptLoader : ScriptLoader = loadScriptTag;\n\n/** Load a script into the global scope. Headless hosts replace the loader (see setScriptLoader). */\nexport function loadScript(scriptfn:string) : Promise {\n return scriptLoader(scriptfn);\n}\n\n/** Replace how loadScript() loads scripts; returns the previous loader. */\nexport function setScriptLoader(loader:ScriptLoader) : ScriptLoader {\n const prev = scriptLoader;\n scriptLoader = loader;\n return prev;\n}\n\nexport function decodeQueryString(qs : string) : {} {\n if (qs.startsWith('?')) qs = qs.substr(1);\n var a = qs.split('&');\n if (!a || a.length == 0)\n return {};\n var b = {};\n for (var i = 0; i < a.length; ++i) {\n var p = a[i].split('=', 2);\n if (p.length == 1)\n b[p[0]] = \"\";\n else\n b[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\n }\n return b;\n}\n\nexport function parseBool(s : string) : boolean {\n if (!s) return false;\n if (s == 'false' || s == '0') return false;\n if (s == 'true' || s == '1') return true;\n return s ? true : false;\n}\n\n///\n\nexport class XMLParseError extends Error {\n}\n\nexport interface XMLNode {\n type: string;\n text: string | null;\n children: XMLNode[];\n attrs: { [id: string]: string };\n obj: any;\n}\n\nexport type XMLVisitFunction = (node: XMLNode) => any;\n\nfunction escapeXML(s: string): string {\n if (s.indexOf('&') >= 0) {\n return s.replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/&/g, '&');\n } else {\n return s;\n }\n}\n\nexport function parseXMLPoorly(s: string, openfn?: XMLVisitFunction, closefn?: XMLVisitFunction): XMLNode {\n const tag_re = /[<]([/]?)([?a-z_-]+)([^>]*)[>]+|(\\s*[^<]+)/gi;\n const attr_re = /\\s*(\\w+)=\"(.*?)\"\\s*/gi;\n var fm: RegExpMatchArray;\n var stack: XMLNode[] = [];\n var top: XMLNode;\n\n function closetop() {\n top = stack.pop();\n if (top == null || top.type != ident) throw new XMLParseError(\"mismatch close tag: \" + ident);\n if (closefn) {\n top.obj = closefn(top);\n }\n if (stack.length == 0) throw new XMLParseError(\"close tag without open: \" + ident);\n stack[stack.length - 1].children.push(top);\n }\n function parseattrs(as: string): { [id: string]: string } {\n var am;\n var attrs = {};\n if (as != null) {\n while (am = attr_re.exec(as)) {\n attrs[am[1]] = escapeXML(am[2]);\n }\n }\n return attrs;\n }\n while (fm = tag_re.exec(s)) {\n var [_m0, close, ident, attrs, content] = fm;\n //console.log(stack.length, close, ident, attrs, content);\n if (close) {\n closetop();\n } else if (ident) {\n var node = { type: ident, text: null, children: [], attrs: parseattrs(attrs), obj: null };\n stack.push(node);\n if (attrs) {\n parseattrs(attrs);\n }\n if (openfn) {\n node.obj = openfn(node);\n }\n if (attrs && attrs.endsWith('/')) closetop();\n } else if (content != null) {\n if (stack.length == 0) throw new XMLParseError(\"content without element\");\n var txt = escapeXML(content as string).trim();\n if (txt.length) stack[stack.length - 1].text = txt;\n }\n }\n if (stack.length != 1) throw new XMLParseError(\"tag not closed\");\n if (stack[0].type != '?xml') throw new XMLParseError(\"?xml needs to be first element\");\n return top;\n}\n\nexport function escapeHTML(s: string): string {\n return s.replace(/[&]/g, '&').replace(/[<]/g, '<').replace(/[>]/g, '>');\n}\n\n// lame factorization for displaying bitmaps\n// returns a > b such that a * b == x (or higher), a >= mina, b >= minb\nexport function findIntegerFactors(x: number, mina: number, minb: number, aspect: number) : {a: number, b: number} {\n let a = x;\n let b = 1;\n if (minb > 1 && minb < a) {\n a = Math.ceil(x / minb);\n b = minb;\n }\n while (a > b) {\n let a2 = a;\n let b2 = b;\n if ((a & 1) == 0) {\n b2 = b * 2;\n a2 = a / 2;\n }\n if ((a % 3) == 0) {\n b2 = b * 3;\n a2 = a / 3;\n }\n if ((a % 5) == 0) {\n b2 = b * 5;\n a2 = a / 5;\n }\n if (a2 < mina) break;\n if (a2 < b2 * aspect) break;\n a = a2;\n b = b2;\n }\n return {a, b};\n}\n\nexport class FileDataCache {\n maxSize : number = 8000000;\n size : number;\n cache : Map;\n constructor() {\n this.reset();\n }\n get(key : string) : string|Uint8Array {\n return this.cache.get(key);\n }\n put(key : string, value : string|Uint8Array) {\n this.cache.set(key, value);\n this.size += value.length;\n if (this.size > this.maxSize) {\n console.log('cache reset', this);\n this.reset();\n }\n }\n reset() {\n this.cache = new Map();\n this.size = 0;\n }\n}\n\nexport function coerceToArray(arrobj: any) : T[] {\n if (Array.isArray(arrobj)) return arrobj;\n else if (arrobj != null && typeof arrobj[Symbol.iterator] === 'function') return Array.from(arrobj);\n else if (typeof arrobj === 'object') return Array.from(Object.values(arrobj))\n else throw new Error(`Expected array or object, got \"${arrobj}\"`);\n}\n\nexport function replaceAll(s:string, search:string, replace:string) : string {\n if (s == '') return '';\n if (search == '') return s;\n return s.split(search).join(replace);\n}\n\nexport function isProductionHost() : boolean {\n return typeof window != 'undefined' && window.location.host.endsWith('8bitworkshop.com');\n}\n\nexport function getCookie(name: string) : string {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for(var i=0;i < ca.length;i++) {\n var c = ca[i];\n while (c.charAt(0)==' ') c = c.substring(1,c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n }\n return null;\n}\n\n", "\nimport type { ControlHint } from \"./controls\";\nimport { hex, clamp, lpad } from \"./util\";\nimport { SourceLocation } from \"./workertypes\";\n\n// Emulator classes\n// Most of this stuff helps emulators use the DOM\n// and do keyboard/mouse/gamepad/timer handling, etc.\n\nexport var PLATFORMS = {};\n\nvar _random_state = 1;\n\nexport function noise() {\n let x = _random_state;\n x ^= x << 13;\n x ^= x >> 17;\n x ^= x << 5;\n return (_random_state = x) & 0xff;\n}\n\nexport function getNoiseSeed() {\n return _random_state;\n}\n\nexport function setNoiseSeed(x: number) {\n _random_state = x;\n}\n\ntype KeyboardCallback = (which: number, charCode: number, flags: KeyFlags) => void;\n\nexport function __createCanvas(doc: HTMLDocument, mainElement: HTMLElement, width: number, height: number): HTMLCanvasElement {\n var canvas = doc.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n canvas.classList.add(\"emuvideo\");\n canvas.tabIndex = 0; // Make it focusable and tabbable\n mainElement.appendChild(canvas);\n return canvas;\n}\n\nexport enum KeyFlags {\n KeyDown = 1,\n Shift = 2,\n Ctrl = 4,\n Alt = 8,\n Meta = 16,\n KeyUp = 64,\n KeyPress = 128,\n}\n\n// KeyboardEvent.key is layout- and shift-aware, so it holds the character actually\n// typed (\"(\", \"+\", \"\\\"\") where keyCode does not. Non-printable keys have multi-char\n// names (\"Enter\", \"Backspace\", \"ArrowLeft\") so fall back to keyCode for those.\nexport function _charCodeOf(e: KeyboardEvent): number {\n return e.key != null && e.key.length == 1 ? e.key.charCodeAt(0) : e.keyCode;\n}\n\n// TODO: don't use which/keyCode anymore?\nexport function _setKeyboardEvents(canvas: HTMLElement, callback: KeyboardCallback) {\n canvas.onkeydown = (e) => {\n let flags = _metakeyflags(e);\n callback(e.which, _charCodeOf(e), KeyFlags.KeyDown | flags);\n if (!flags) e.preventDefault(); // eat all keys that don't have a modifier\n };\n canvas.onkeyup = (e) => {\n callback(e.which, _charCodeOf(e), KeyFlags.KeyUp | _metakeyflags(e));\n };\n};\n\ntype VideoCanvasOptions = { rotate?: number, overscan?: boolean, aspect?: number };\n\nclass RasterVideoImpl {\n\n mainElement: HTMLElement;\n width: number;\n height: number;\n options: VideoCanvasOptions;\n\n constructor(mainElement: HTMLElement, width: number, height: number, options?: VideoCanvasOptions) {\n this.mainElement = mainElement;\n this.width = width;\n this.height = height;\n this.options = options;\n }\n\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n imageData: ImageData;\n datau32: Uint32Array;\n vcanvas: JQuery;\n\n // Start paddles/joystick centered in [0,255] range.\n paddle_x = 128;\n paddle_y = 128;\n // Platforms can support up to three buttons.\n paddle_buttons: boolean[] = [false, false, false];\n\n setRotate(rotate: number) {\n var canvas = this.canvas;\n if (rotate) {\n // TODO: aspect ratio?\n canvas.style.transform = \"rotate(\" + rotate + \"deg)\";\n if (canvas.width < canvas.height)\n canvas.style.paddingLeft = canvas.style.paddingRight = \"10%\";\n } else {\n canvas.style.transform = null;\n canvas.style.paddingLeft = canvas.style.paddingRight = null;\n }\n }\n\n create(doc?: HTMLDocument) {\n var canvas;\n this.canvas = canvas = __createCanvas(doc || document, this.mainElement, this.width, this.height);\n this.vcanvas = $(canvas);\n if (this.options && this.options.rotate) {\n this.setRotate(this.options.rotate);\n }\n if (this.options && this.options.overscan) {\n this.vcanvas.css('padding', '0px');\n }\n if (this.options && this.options.aspect) {\n console.log(this.options);\n this.vcanvas.css('aspect-ratio', this.options.aspect + \"\");\n }\n this.ctx = canvas.getContext('2d');\n this.imageData = this.ctx.createImageData(this.width, this.height);\n this.datau32 = new Uint32Array(this.imageData.data.buffer);\n }\n\n setKeyboardEvents(callback) {\n _setKeyboardEvents(this.canvas, callback);\n }\n\n getFrameData() { return this.datau32; }\n\n getContext() { return this.ctx; }\n\n updateFrame(sx?: number, sy?: number, dx?: number, dy?: number, w?: number, h?: number) {\n if (w && h)\n this.ctx.putImageData(this.imageData, sx, sy, dx, dy, w, h);\n else\n this.ctx.putImageData(this.imageData, 0, 0);\n }\n\n clearRect(dx: number, dy: number, w: number, h: number) {\n var ctx = this.ctx;\n ctx.fillStyle = '#000000';\n ctx.fillRect(dx, dy, w, h);\n }\n\n setupMouseEvents(el?: HTMLCanvasElement) {\n if (!el) el = this.canvas;\n $(el).mousemove((e) => {\n var pos = getMousePos(el, e);\n var new_x = Math.round(pos.x * 255 / this.canvas.width);\n var new_y = Math.round(pos.y * 255 / this.canvas.height);\n this.paddle_x = clamp(0, 255, new_x);\n this.paddle_y = clamp(0, 255, new_y);\n }).mousedown((e) => {\n // TODO Allows users to specify mapping in settings.\n this.paddle_buttons[0] = !e.shiftKey && !e.altKey;\n this.paddle_buttons[1] = e.shiftKey && !e.altKey;\n this.paddle_buttons[2] = e.altKey && !e.shiftKey;\n }).mouseup((e) => {\n this.paddle_buttons.fill(false);\n });\n };\n}\n\nclass VectorVideoImpl extends RasterVideoImpl {\n\n persistenceAlpha = 0.5;\n jitter = 1.0;\n gamma = 0.8;\n sx: number;\n sy: number;\n\n create() {\n super.create();\n this.sx = this.width / 1024.0;\n this.sy = this.height / 1024.0;\n }\n\n clear() {\n var ctx = this.ctx;\n ctx.globalCompositeOperation = 'source-over';\n ctx.globalAlpha = this.persistenceAlpha;\n ctx.fillStyle = '#000000';\n ctx.fillRect(0, 0, this.width, this.height);\n ctx.globalAlpha = 1.0;\n ctx.globalCompositeOperation = 'lighter';\n }\n\n COLORS = [\n '#111111',\n '#1111ff',\n '#11ff11',\n '#11ffff',\n '#ff1111',\n '#ff11ff',\n '#ffff11',\n '#ffffff'\n ];\n\n drawLine(x1: number, y1: number, x2: number, y2: number, intensity: number, color: number) {\n var ctx = this.ctx;\n var sx = this.sx;\n var sy = this.sy;\n //console.log(x1,y1,x2,y2,intensity,color);\n if (intensity > 0) {\n // TODO: landscape vs portrait\n var alpha = Math.pow(intensity / 255.0, this.gamma);\n ctx.globalAlpha = alpha;\n ctx.lineWidth = 3;\n ctx.beginPath();\n // TODO: bright dots\n var jx = this.jitter * (Math.random() - 0.5);\n var jy = this.jitter * (Math.random() - 0.5);\n x1 += jx;\n x2 += jx;\n y1 += jy;\n y2 += jy;\n ctx.moveTo(x1 * sx, this.height - y1 * sy);\n if (x1 == x2 && y1 == y2)\n ctx.lineTo(x2 * sx + 1, this.height - y2 * sy);\n else\n ctx.lineTo(x2 * sx, this.height - y2 * sy);\n ctx.strokeStyle = this.COLORS[color & 7];\n ctx.stroke();\n }\n }\n}\n\nexport function drawCrosshair(ctx: CanvasRenderingContext2D, x: number, y: number, width: number) {\n if (!ctx?.setLineDash) return; // for unit testing\n ctx.fillStyle = 'rgba(0,0,0,0.25)';\n ctx.fillRect(x - 2, 0, 5, 32767);\n ctx.fillRect(0, y - 2, 32767, 5);\n ctx.lineWidth = width;\n ctx.strokeStyle = 'rgba(255,255,255,0.75)';\n ctx.setLineDash([width * 2, width * 2]);\n ctx.beginPath();\n ctx.moveTo(x, 0);\n ctx.lineTo(x, 32767);\n ctx.moveTo(0, y);\n ctx.lineTo(32767, y);\n ctx.stroke();\n}\n\n// Platforms construct video and timers through these bindings, so a headless\n// host can swap in stand-ins with setVideoClasses (see src/tools/emutarget.ts).\nexport type RasterVideo = RasterVideoImpl;\nexport let RasterVideo = RasterVideoImpl;\nexport type VectorVideo = VectorVideoImpl;\nexport let VectorVideo = VectorVideoImpl;\n\nexport interface VideoClasses {\n RasterVideo: typeof RasterVideoImpl;\n VectorVideo: typeof VectorVideoImpl;\n AnimationTimer: typeof AnimationTimerImpl;\n}\n\n/** Replace the classes platforms construct; returns the previous ones. */\nexport function setVideoClasses(classes: Partial): VideoClasses {\n const previous = { RasterVideo, VectorVideo, AnimationTimer };\n if (classes.RasterVideo) RasterVideo = classes.RasterVideo;\n if (classes.VectorVideo) VectorVideo = classes.VectorVideo;\n if (classes.AnimationTimer) AnimationTimer = classes.AnimationTimer;\n return previous;\n}\n\nexport class RAM {\n mem: Uint8Array;\n constructor(size: number) {\n this.mem = new Uint8Array(new ArrayBuffer(size));\n }\n}\n\nexport class EmuHalt extends Error {\n $loc: SourceLocation;\n squelchError = true;\n /**\n * true when the program stopped by design (e.g. a semihost exit), as opposed\n * to a fault the CPU reported (illegal opcode, watchdog, bad ROM). Hosts can\n * use this to tell \"the program ended\" from \"the emulator gave up\".\n */\n normal: boolean;\n constructor(msg: string, loc?: SourceLocation, normal = false) {\n super(msg);\n this.$loc = loc;\n this.normal = normal;\n Object.setPrototypeOf(this, EmuHalt.prototype);\n }\n}\n\n// Platforms call haltEmulation() when the program ends or the CPU stops.\n// The host (IDE, extension) installs a handler; headless runs ignore it.\nvar haltHandler: (err?: EmuHalt) => void = () => { };\n\nexport function setHaltHandler(handler: (err?: EmuHalt) => void) {\n haltHandler = handler;\n}\n\nexport function haltEmulation(err?: EmuHalt) {\n haltHandler(err);\n}\n\nexport var useRequestAnimationFrame: boolean = false;\n\nclass AnimationTimerImpl {\n\n callback;\n running: boolean = false;\n pulsing: boolean = false;\n nextts = 0;\n nframes;\n startts; // for FPS calc\n frameRate;\n intervalMsec;\n // If a frame is this many intervals late, resync the clock instead of running\n // back-to-back frames to catch up. Catching up floods frame-locked audio (the\n // producer generates many frames of samples at once), so a real-time emulator\n // should drop the missed time rather than burst.\n maxCatchupFrames = 3;\n useReqAnimFrame = useRequestAnimationFrame && typeof window.requestAnimationFrame === 'function'; // need for unit test\n\n constructor(frequencyHz: number, callback: () => void) {\n this.frameRate = frequencyHz;\n this.intervalMsec = 1000.0 / frequencyHz;\n this.callback = callback;\n }\n\n scheduleFrame(msec: number) {\n var fn = (timestamp) => {\n try {\n this.nextFrame(this.useReqAnimFrame ? timestamp : Date.now());\n } catch (e) {\n this.running = false;\n this.pulsing = false;\n throw e;\n }\n }\n if (this.useReqAnimFrame)\n window.requestAnimationFrame(fn);\n else\n setTimeout(fn, msec);\n }\n\n nextFrame(ts: number) {\n if (ts > this.nextts) {\n if (this.running) {\n this.callback();\n }\n if (this.nframes == 0)\n this.startts = ts;\n if (this.nframes++ == 300) {\n console.log(\"Avg framerate: \" + this.nframes * 1000 / (ts - this.startts) + \" fps\");\n }\n }\n this.nextts += this.intervalMsec;\n // too far behind to catch up smoothly? resync instead of bursting\n if ((ts - this.nextts) > this.intervalMsec * this.maxCatchupFrames) {\n //console.log(ts - this.nextts, 'msec skipped');\n this.nextts = ts;\n }\n if (this.running) {\n this.scheduleFrame(this.nextts - ts);\n } else {\n this.pulsing = false;\n }\n }\n isRunning() {\n return this.running;\n }\n start() {\n if (!this.running) {\n this.running = true;\n this.nextts = 0;\n this.nframes = 0;\n if (!this.pulsing) {\n this.scheduleFrame(0);\n this.pulsing = true;\n }\n }\n }\n stop() {\n this.running = false;\n }\n}\n\nexport type AnimationTimer = AnimationTimerImpl;\nexport let AnimationTimer = AnimationTimerImpl;\n\n// TODO: move to util?\n\nexport function dumpRAM(ram: ArrayLike, ramofs: number, ramlen: number): string {\n var s = \"\";\n var bpel = ram['BYTES_PER_ELEMENT'] || 1;\n var perline = Math.ceil(16 / bpel);\n var isFloat = ram instanceof Float32Array || ram instanceof Float64Array;\n // TODO: show scrollable RAM for other platforms\n for (var ofs = 0; ofs < ramlen; ofs += perline) {\n s += '$' + hex(ofs + ramofs) + ':';\n for (var i = 0; i < perline; i++) {\n if (ofs + i < ram.length) {\n if (i == perline / 2) s += \" \";\n if (isFloat) s += \" \" + ram[ofs + i].toPrecision(bpel * 2);\n else s += \" \" + hex(ram[ofs + i], bpel * 2);\n }\n }\n s += \"\\n\";\n }\n return s;\n}\n\nexport interface KeyDef {\n c: number,\t// key code\n n: string,\t// name\n // for gamepad\n plyr?: number,\n xaxis?: number,\n yaxis?: number,\n button?: number\n};\n\nexport interface KeyMapEntry {\n index: number;\n mask: number;\n def: KeyDef;\n}\n\ntype KeyCodeMap = Map;\n\nexport const Keys = {\n ANYKEY: { c: 0, n: \"?\" },\n // https://w3c.github.io/gamepad/#remapping\n // gamepad and keyboard (player 0)\n UP: { c: 38, n: \"Up\", plyr: 0, button: 12, yaxis: -1 },\n DOWN: { c: 40, n: \"Down\", plyr: 0, button: 13, yaxis: 1 },\n LEFT: { c: 37, n: \"Left\", plyr: 0, button: 14, xaxis: -1 },\n RIGHT: { c: 39, n: \"Right\", plyr: 0, button: 15, xaxis: 1 },\n A: { c: 32, n: \"Space\", plyr: 0, button: 0 },\n B: { c: 16, n: \"Shift\", plyr: 0, button: 1 },\n GP_A: { c: 88, n: \"X\", plyr: 0, button: 0 },\n GP_B: { c: 90, n: \"Z\", plyr: 0, button: 1 },\n GP_C: { c: 86, n: \"V\", plyr: 0, button: 2 },\n GP_D: { c: 67, n: \"C\", plyr: 0, button: 3 },\n SELECT: { c: 220, n: \"\\\\\", plyr: 0, button: 8 },\n START: { c: 13, n: \"Enter\", plyr: 0, button: 9 },\n OPTION: { c: 8, n: \"Bcksp\", plyr: 0, button: 10 },\n // gamepad and keyboard (player 1)\n P2_UP: { c: 87, n: \"W\", plyr: 1, button: 12, yaxis: -1 },\n P2_DOWN: { c: 83, n: \"S\", plyr: 1, button: 13, yaxis: 1 },\n P2_LEFT: { c: 65, n: \"A\", plyr: 1, button: 14, xaxis: -1 },\n P2_RIGHT: { c: 68, n: \"D\", plyr: 1, button: 15, xaxis: 1 },\n P2_A: { c: 84, n: \"T\", plyr: 1, button: 0 },\n P2_B: { c: 82, n: \"R\", plyr: 1, button: 1 },\n P2_GP_A: { c: 69, n: \"E\", plyr: 1, button: 0 },\n P2_GP_B: { c: 82, n: \"R\", plyr: 1, button: 1 },\n P2_GP_C: { c: 84, n: \"T\", plyr: 1, button: 2 },\n P2_GP_D: { c: 89, n: \"Y\", plyr: 1, button: 3 },\n P2_SELECT: { c: 70, n: \"F\", plyr: 1, button: 8 },\n P2_START: { c: 71, n: \"G\", plyr: 1, button: 9 },\n // keyboard only\n VK_ESCAPE: { c: 27, n: \"Esc\" },\n VK_F1: { c: 112, n: \"F1\" },\n VK_F2: { c: 113, n: \"F2\" },\n VK_F3: { c: 114, n: \"F3\" },\n VK_F4: { c: 115, n: \"F4\" },\n VK_F5: { c: 116, n: \"F5\" },\n VK_F6: { c: 117, n: \"F6\" },\n VK_F7: { c: 118, n: \"F7\" },\n VK_F8: { c: 119, n: \"F8\" },\n VK_F9: { c: 120, n: \"F9\" },\n VK_F10: { c: 121, n: \"F10\" },\n VK_F11: { c: 122, n: \"F11\" },\n VK_F12: { c: 123, n: \"F12\" },\n VK_SCROLL_LOCK: { c: 145, n: \"ScrLck\" },\n VK_PAUSE: { c: 19, n: \"Pause\" },\n VK_QUOTE: { c: 222, n: \"'\" },\n VK_1: { c: 49, n: \"1\" },\n VK_2: { c: 50, n: \"2\" },\n VK_3: { c: 51, n: \"3\" },\n VK_4: { c: 52, n: \"4\" },\n VK_5: { c: 53, n: \"5\" },\n VK_6: { c: 54, n: \"6\" },\n VK_7: { c: 55, n: \"7\" },\n VK_8: { c: 56, n: \"8\" },\n VK_9: { c: 57, n: \"9\" },\n VK_0: { c: 48, n: \"0\" },\n VK_MINUS: { c: 189, n: \"-\" },\n VK_MINUS2: { c: 173, n: \"-\" },\n VK_EQUALS: { c: 187, n: \"=\" },\n VK_EQUALS2: { c: 61, n: \"=\" },\n VK_BACK_SPACE: { c: 8, n: \"Bkspc\" },\n VK_TAB: { c: 9, n: \"Tab\" },\n VK_Q: { c: 81, n: \"Q\" },\n VK_W: { c: 87, n: \"W\" },\n VK_E: { c: 69, n: \"E\" },\n VK_R: { c: 82, n: \"R\" },\n VK_T: { c: 84, n: \"T\" },\n VK_Y: { c: 89, n: \"Y\" },\n VK_U: { c: 85, n: \"U\" },\n VK_I: { c: 73, n: \"I\" },\n VK_O: { c: 79, n: \"O\" },\n VK_P: { c: 80, n: \"P\" },\n VK_ACUTE: { c: 219, n: \"\u00B4\" },\n VK_OPEN_BRACKET: { c: 219, n: \"[\" },\n VK_CLOSE_BRACKET: { c: 221, n: \"]\" },\n VK_CAPS_LOCK: { c: 20, n: \"CpsLck\" },\n VK_A: { c: 65, n: \"A\" },\n VK_S: { c: 83, n: \"S\" },\n VK_D: { c: 68, n: \"D\" },\n VK_F: { c: 70, n: \"F\" },\n VK_G: { c: 71, n: \"G\" },\n VK_H: { c: 72, n: \"H\" },\n VK_J: { c: 74, n: \"J\" },\n VK_K: { c: 75, n: \"K\" },\n VK_L: { c: 76, n: \"L\" },\n VK_CEDILLA: { c: 186, n: \"\u00C7\" },\n VK_TILDE: { c: 222, n: \"~\" },\n VK_ENTER: { c: 13, n: \"Enter\" },\n VK_SHIFT: { c: 16, n: \"Shift\" },\n VK_BACK_SLASH: { c: 220, n: \"\\\\\" },\n VK_Z: { c: 90, n: \"Z\" },\n VK_X: { c: 88, n: \"X\" },\n VK_C: { c: 67, n: \"C\" },\n VK_V: { c: 86, n: \"V\" },\n VK_B: { c: 66, n: \"B\" },\n VK_N: { c: 78, n: \"N\" },\n VK_M: { c: 77, n: \"M\" },\n VK_COMMA: { c: 188, n: \"] =\" },\n VK_PERIOD: { c: 190, n: \".\" },\n VK_SEMICOLON: { c: 59, n: \";\" },\n VK_SLASH: { c: 191, n: \"/\" },\n VK_CONTROL: { c: 17, n: \"Ctrl\" },\n VK_ALT: { c: 18, n: \"Alt\" },\n VK_COMMAND: { c: 224, n: \"Cmd\" },\n VK_SPACE: { c: 32, n: \"Space\" },\n VK_INSERT: { c: 45, n: \"Ins\" },\n VK_DELETE: { c: 46, n: \"Del\" },\n VK_HOME: { c: 36, n: \"Home\" },\n VK_END: { c: 35, n: \"End\" },\n VK_PAGE_UP: { c: 33, n: \"PgUp\" },\n VK_PAGE_DOWN: { c: 34, n: \"PgDown\" },\n VK_UP: { c: 38, n: \"Up\" },\n VK_DOWN: { c: 40, n: \"Down\" },\n VK_LEFT: { c: 37, n: \"Left\" },\n VK_RIGHT: { c: 39, n: \"Right\" },\n VK_NUM_LOCK: { c: 144, n: \"Num\" },\n VK_DIVIDE: { c: 111, n: \"Num /\" },\n VK_MULTIPLY: { c: 106, n: \"Num *\" },\n VK_SUBTRACT: { c: 109, n: \"Num -\" },\n VK_ADD: { c: 107, n: \"Num +\" },\n VK_DECIMAL: { c: 194, n: \"Num .\" },\n VK_NUMPAD0: { c: 96, n: \"Num 0\" },\n VK_NUMPAD1: { c: 97, n: \"Num 1\" },\n VK_NUMPAD2: { c: 98, n: \"Num 2\" },\n VK_NUMPAD3: { c: 99, n: \"Num 3\" },\n VK_NUMPAD4: { c: 100, n: \"Num 4\" },\n VK_NUMPAD5: { c: 101, n: \"Num 5\" },\n VK_NUMPAD6: { c: 102, n: \"Num 6\" },\n VK_NUMPAD7: { c: 103, n: \"Num 7\" },\n VK_NUMPAD8: { c: 104, n: \"Num 8\" },\n VK_NUMPAD9: { c: 105, n: \"Num 9\" },\n VK_NUMPAD_CENTER: { c: 12, n: \"Num Cntr\" }\n};\n\nfunction _metakeyflags(e) {\n return (e.shiftKey ? KeyFlags.Shift : 0) |\n (e.ctrlKey ? KeyFlags.Ctrl : 0) |\n (e.altKey ? KeyFlags.Alt : 0) |\n (e.metaKey ? KeyFlags.Meta : 0);\n}\n\ntype KeyMapFunction = (o: KeyMapEntry, key: number, code: number, flags: number) => void;\n\n// the key map of the most recent keyboard handler, so a host can show the\n// controls (the VS Code emulator panel does)\nvar lastKeycodeMap: KeyCodeMap = null;\n\nexport function getLastKeycodeMap(): KeyCodeMap {\n return lastKeycodeMap;\n}\n\nexport function clearLastKeycodeMap() {\n lastKeycodeMap = null;\n}\n\n// what each controller key does, in the order the hint lists them\nconst CONTROL_LABELS: [KeyDef[], string, string][] = [\n [[Keys.UP, Keys.DOWN, Keys.LEFT, Keys.RIGHT], '\\u2190\\u2191\\u2193\\u2192', 'Joystick'],\n [[Keys.A], 'Space', 'Button A'],\n [[Keys.B], 'Shift', 'Button B'],\n [[Keys.GP_A, Keys.GP_B, Keys.GP_C, Keys.GP_D], 'X Z V C', 'Buttons'],\n [[Keys.START], 'Enter', 'Start'],\n [[Keys.SELECT], '\\\\', 'Select'],\n [[Keys.OPTION], 'Backspace', 'Option'],\n [[Keys.P2_UP, Keys.P2_DOWN, Keys.P2_LEFT, Keys.P2_RIGHT], 'W A S D', 'Player 2'],\n];\n\n/**\n * Control hints generated from a key map, for platforms with no hand-written\n * ones in PLATFORM_CONTROLS (src/common/controls.ts).\n */\nexport function describeControls(map: KeyCodeMap): ControlHint[] {\n if (!map) return [];\n var defs = new Set();\n for (var k of Object.keys(map)) {\n var o: KeyMapEntry = map[k];\n if (o && o.def) defs.add(o.def);\n }\n var hints: ControlHint[] = [];\n for (var [keys, label, action] of CONTROL_LABELS) {\n if (keys.some(key => defs.has(key))) {\n hints.push({ keys: [label], action });\n for (var key of keys) defs.delete(key);\n }\n }\n // the rest (coin, number keys) by name; player 2's buttons go unlisted\n var p2 = new Set(Object.keys(Keys).filter(k => k.startsWith('P2_')).map(k => Keys[k]));\n var others = [...defs].filter(d => d !== Keys.ANYKEY && !p2.has(d)).map(d => d.n);\n if (others.length) hints.push({ keys: others.slice(0, 6), action: 'Other' });\n return hints;\n}\n\nexport function newKeyboardHandler(switches: number[] | Uint8Array, map: KeyCodeMap, func?: KeyMapFunction, alwaysfunc?: boolean) {\n if (map) lastKeycodeMap = map;\n return (key: number, code: number, flags: number) => {\n if (!map) {\n func(null, key, code, flags);\n return;\n }\n var o: KeyMapEntry = map[key];\n if (!o) o = map[0];\n if (func && (o || alwaysfunc)) {\n func(o, key, code, flags);\n }\n if (o) {\n //console.log(key,code,flags,o);\n var mask = o.mask;\n if (mask < 0) { // negative mask == active low\n mask = -mask;\n if (flags & (KeyFlags.KeyDown | KeyFlags.KeyUp))\n flags ^= KeyFlags.KeyDown | KeyFlags.KeyUp;\n }\n if (flags & KeyFlags.KeyDown) {\n switches[o.index] |= mask;\n } else if (flags & KeyFlags.KeyUp) {\n switches[o.index] &= ~mask;\n }\n }\n };\n}\n\nexport function setKeyboardFromMap(video: RasterVideo, switches: number[] | Uint8Array, map: KeyCodeMap, func?: KeyMapFunction, alwaysfunc?: boolean) {\n var handler = newKeyboardHandler(switches, map, func, alwaysfunc);\n video.setKeyboardEvents(handler);\n return new ControllerPoller(handler);\n}\n\nexport function makeKeycodeMap(table: [KeyDef, number, number][]): KeyCodeMap {\n var map = new Map();\n for (var i = 0; i < table.length; i++) {\n var entry = table[i];\n var val: KeyMapEntry = { index: entry[1], mask: entry[2], def: entry[0] };\n map[entry[0].c] = val;\n }\n return map;\n}\n\n// TODO: P2_GP_B and P2_GP_C share keycodes with P2_B and P2_A, so they can't\n// be listed here without button 1/2 double-binding on player 2.\nconst DEFAULT_CONTROLLER_KEYS: KeyDef[] = [\n Keys.UP, Keys.DOWN, Keys.LEFT, Keys.RIGHT, Keys.A, Keys.B, Keys.SELECT, Keys.START,\n Keys.GP_A, Keys.GP_B, Keys.GP_C, Keys.GP_D, Keys.OPTION,\n Keys.P2_UP, Keys.P2_DOWN, Keys.P2_LEFT, Keys.P2_RIGHT, Keys.P2_A, Keys.P2_B, Keys.P2_SELECT, Keys.P2_START,\n Keys.P2_GP_A, Keys.P2_GP_D,\n];\n\n// Gamepad helper\nexport class ControllerPoller {\n active = false;\n handler;\n state: Int32Array[];\n lastState: Int32Array[];\n AXIS0 = 24; // first joystick axis index\n constructor(handler: (key, code, flags) => void) {\n this.handler = handler;\n window.addEventListener(\"gamepadconnected\", (event) => {\n console.log(\"Gamepad connected:\", event);\n this.reset();\n });\n window.addEventListener(\"gamepaddisconnected\", (event) => {\n console.log(\"Gamepad disconnected:\", event);\n this.reset();\n });\n }\n reset() {\n if (typeof navigator.getGamepads === 'function') {\n let numGamepads = navigator.getGamepads()?.length;\n this.state = new Array(numGamepads);\n this.lastState = new Array(numGamepads);\n for (var i = 0; i < numGamepads; i++) {\n this.state[i] = new Int32Array(64);\n this.lastState[i] = new Int32Array(64);\n }\n this.active = this.state?.length > 0;\n }\n }\n start() {\n this.reset();\n }\n stop() {\n this.active = false;\n }\n poll() {\n if (!this.active) return;\n var gamepads = navigator.getGamepads && navigator.getGamepads();\n if (!gamepads) return;\n for (var gpi = 0; gpi < gamepads.length; gpi++) {\n let state = this.state[gpi];\n let lastState = this.lastState[gpi];\n var gp = gamepads[gpi];\n if (gp) {\n for (var i = 0; i < gp.axes.length; i++) {\n var k = i + this.AXIS0;\n state[k] = Math.round(gp.axes[i]);\n if (state[k] != lastState[k]) {\n this.handleStateChange(gpi, k);\n }\n }\n for (var i = 0; i < gp.buttons.length; i++) {\n state[i] = gp.buttons[i].pressed ? 1 : 0;\n if (state[i] != lastState[i]) {\n this.handleStateChange(gpi, i);\n }\n }\n lastState.set(state);\n }\n }\n }\n handleStateChange(gpi: number, k: number) {\n var axis = k - this.AXIS0;\n var state = this.state[gpi][k];\n var lastState = this.lastState[gpi][k];\n // TODO: this is slow\n for (var def of DEFAULT_CONTROLLER_KEYS) {\n // is this a gamepad entry? same player #?\n if (!def || def.plyr != gpi) continue;\n // does this key map to the button/axis that changed?\n // an axis has to be compared against the direction the key stands for,\n // so that e.g. a left-to-right flick releases LEFT and presses RIGHT\n var active: boolean, wasActive: boolean;\n if (def.button != null && k == def.button) {\n active = state != 0;\n wasActive = lastState != 0;\n } else if (axis == 0 && def.xaxis != null) {\n active = def.xaxis == state;\n wasActive = def.xaxis == lastState;\n } else if (axis == 1 && def.yaxis != null) {\n active = def.yaxis == state;\n wasActive = def.yaxis == lastState;\n } else {\n continue;\n }\n // don't break -- several keys can share a button (e.g. A and GP_A)\n //console.log(\"Gamepad\", gpi, def.c, state);\n if (active && !wasActive) {\n this.handler(def.c, 0, KeyFlags.KeyDown);\n } else if (!active && wasActive) {\n this.handler(def.c, 0, KeyFlags.KeyUp);\n }\n }\n }\n}\n\n// handy for loadROM()\nexport function padBytes(data: Uint8Array | number[], len: number, padstart?: boolean): Uint8Array {\n if (data.length > len) {\n throw Error(\"Data too long, \" + data.length + \" > \" + len);\n }\n var r = new RAM(len);\n if (padstart)\n r.mem.set(data, len - data.length);\n else\n r.mem.set(data);\n return r.mem;\n}\n\ntype AddressReadWriteFn = ((a: number) => number) | ((a: number, v: number) => void);\ntype AddressDecoderEntry = [number, number, number, AddressReadWriteFn];\ntype AddressDecoderOptions = { gmask?: number, defaultval?: number };\n\n// TODO: better performance, check values\nexport function AddressDecoder(table: AddressDecoderEntry[], options?: AddressDecoderOptions) {\n var self = this;\n function makeFunction() {\n var s = \"\";\n if (options && options.gmask) {\n s += \"a&=\" + options.gmask + \";\";\n }\n for (var i = 0; i < table.length; i++) {\n var entry = table[i];\n var start = entry[0] | 0;\n var end = entry[1] | 0;\n var mask = entry[2] | 0;\n var func = entry[3];\n self['__fn' + i] = func;\n s += \"if (a>=\" + start + \" && a<=\" + end + \"){\";\n if (mask) s += \"a&=\" + mask + \";\";\n s += \"return this.__fn\" + i + \"(a,v)&0xff;}\\n\";\n }\n s += \"return \" + (options?.defaultval | 0) + \";\";\n return new Function('a', 'v', s);\n }\n return makeFunction().bind(self);\n}\n\nexport function newAddressDecoder(table: AddressDecoderEntry[], options?: AddressDecoderOptions): (a: number, v?: number) => number {\n return new (AddressDecoder as any)(table, options);\n}\n\n\n// https://stackoverflow.com/questions/17130395/real-mouse-position-in-canvas\nexport function getMousePos(canvas: HTMLCanvasElement, evt): { x: number, y: number } {\n // Improves reachability of min and max values at edges of canvas. Without delta,\n // min and max values would be represented by 1/2 as many pixels as other values.\n const delta = .5;\n // Canvas HTML element has integer `width` and `height`, but getBoundingClientRect() pos & size\n // are scaled to non-integer values. Mouse events return integer x/y values in the range\n // [Math.floor(rect.left/top), Math.floor(rect.left/top) + Math.floor(rect.width/height)],\n // which may not be the same as [Math.floor(rect.left/top), Math.floor(rect.right/bottom)].\n var rect = canvas.getBoundingClientRect(), // abs. size of element\n // Ignore canvas borders and padding, so mouse position is relative to canvas content.\n style = window.getComputedStyle(canvas),\n left = parseFloat(style.borderLeftWidth) + parseFloat(style.paddingLeft),\n right = parseFloat(style.borderRightWidth) + parseFloat(style.paddingRight),\n top = parseFloat(style.borderTopWidth) + parseFloat(style.paddingTop),\n bottom = parseFloat(style.borderBottomWidth) + parseFloat(style.paddingBottom),\n width = rect.width - left - right,\n height = rect.height - top - bottom,\n\n // Determine scale factors to map mouse coordinates to canvas coordinates.\n scaleX = canvas.width / Math.floor(width - 2 * delta),\n scaleY = canvas.height / Math.floor(height - 2 * delta),\n\n // Scale coordinates after they've been adjusted to be relative to canvas content.\n x = (evt.clientX - delta - rect.left - left) * scaleX,\n y = (evt.clientY - delta - rect.top - top) * scaleY;\n return {\n // Clamp to [0, canvas.width/height] to prevent non-integer rect position\n // and size, and potentially `delta`, from returning out of bounds values.\n x: Math.max(0, Math.min(canvas.width, x)),\n y: Math.max(0, Math.min(canvas.height, y))\n }\n}\n\n\n"], + "mappings": "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", + "names": ["lpad", "s", "n", "rpad", "byte2signed", "b", "getFilenameForPath", "toks", "getFolderForPath", "getFilenamePrefix", "pos", "hex", "v", "nd", "toradix", "tobin", "radix", "e", "arrayCompare", "a", "i", "invertMap", "m", "r", "k", "highlightDifferences", "s1", "s2", "split1", "split2", "j", "result", "w1", "w2", "lzgmini", "LZG_HEADER_SIZE", "LZG_METHOD_COPY", "LZG_METHOD_LZG1", "LZG_LENGTH_DECODE_LUT", "outdata", "calcChecksum", "data", "uncomplen", "checksum", "dst", "method", "m1", "m2", "m3", "m4", "symbol", "b2", "b3", "len", "offset", "dstlen", "datalen", "byteArrayToString", "byteArrayToUTF8", "stringToByteArray", "str", "charLUT", "c", "BINARY_EXTS", "isValidUTF8", "data", "bytes", "e", "i", "b", "extra", "cp", "min", "k", "c", "isProbablyBinary", "path", "upper", "ext", "controls", "compressLZG", "em_module", "inBuffer", "levelArg", "level", "inLen", "inPtr", "maxEncSize", "outPtr", "compLen", "outBuffer", "safe_extend", "deep", "dest", "src", "key", "val", "type", "printFlags", "names", "r2l", "s", "bit", "rgb2bgr", "x", "RGBA", "r", "g", "clamp", "minv", "maxv", "v", "safeident", "rle_unpack", "tag", "ch", "count", "j", "getWithBinary", "url", "success", "datatype", "oReq", "oEvent", "getBasePlatform", "platform", "getRootPlatform", "getRootBasePlatform", "isArray", "obj", "isTypedArray", "convertDataToUint8Array", "stringToByteArray", "byteToASCII", "b", "loadScriptTag", "scriptfn", "resolve", "reject", "script", "scriptLoader", "loadScript", "decodeQueryString", "qs", "a", "b", "p", "parseBool", "s", "replaceAll", "s", "search", "replace", "isProductionHost", "getCookie", "name", "nameEQ", "ca", "c", "PLATFORMS", "_random_state", "noise", "x", "getNoiseSeed", "setNoiseSeed", "__createCanvas", "doc", "mainElement", "width", "height", "canvas", "_charCodeOf", "_setKeyboardEvents", "canvas", "callback", "e", "flags", "_metakeyflags", "RasterVideoImpl", "mainElement", "width", "height", "options", "rotate", "doc", "__createCanvas", "sx", "sy", "dx", "dy", "w", "h", "ctx", "el", "pos", "getMousePos", "new_x", "new_y", "clamp", "VectorVideoImpl", "x1", "y1", "x2", "y2", "intensity", "color", "alpha", "jx", "jy", "drawCrosshair", "x", "y", "RasterVideo", "VectorVideo", "RAM", "size", "EmuHalt", "_EmuHalt", "msg", "loc", "normal", "haltHandler", "setHaltHandler", "handler", "haltEmulation", "err", "useRequestAnimationFrame", "AnimationTimerImpl", "frequencyHz", "callback", "msec", "fn", "timestamp", "e", "ts", "AnimationTimer", "dumpRAM", "ram", "ramofs", "ramlen", "s", "bpel", "perline", "isFloat", "ofs", "hex", "i", "Keys", "_metakeyflags", "lastKeycodeMap", "CONTROL_LABELS", "Keys", "newKeyboardHandler", "switches", "map", "func", "alwaysfunc", "lastKeycodeMap", "key", "code", "flags", "o", "mask", "setKeyboardFromMap", "video", "handler", "ControllerPoller", "makeKeycodeMap", "table", "i", "entry", "val", "DEFAULT_CONTROLLER_KEYS", "Keys", "event", "_a", "_b", "numGamepads", "gamepads", "gpi", "state", "lastState", "gp", "k", "axis", "def", "active", "wasActive", "padBytes", "data", "len", "padstart", "r", "RAM", "AddressDecoder", "options", "self", "makeFunction", "s", "start", "end", "newAddressDecoder", "getMousePos", "canvas", "evt", "rect", "style", "left", "right", "top", "bottom", "width", "height", "scaleX", "scaleY", "x", "y"] } diff --git a/gen/coleco-5FRFBIFB.js b/gen/coleco-FZQ3SEAK.js similarity index 94% rename from gen/coleco-5FRFBIFB.js rename to gen/coleco-FZQ3SEAK.js index e5cb7de7..4c22e1b5 100644 --- a/gen/coleco-5FRFBIFB.js +++ b/gen/coleco-FZQ3SEAK.js @@ -1,4 +1,4 @@ -import{c as h}from"./chunk-X7YXI42O.js";import{b as m}from"./chunk-XQKNUPDS.js";import{H as M,d as D,f as E}from"./chunk-4WX2XTAI.js";import{b as n}from"./chunk-UACHXWHT.js";import{$ as f,K as r,Y as e,ca as g,l as a,m as c}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var x=f([[e.UP,0,1],[e.DOWN,0,4],[e.LEFT,0,8],[e.RIGHT,0,2],[e.A,0,64],[e.B,1,64],[e.GP_A,0,64],[e.GP_B,1,64],[e.P2_UP,2,1],[e.P2_DOWN,2,4],[e.P2_LEFT,2,8],[e.P2_RIGHT,2,2],[e.P2_A,2,64],[e.P2_B,3,64]]),t=class extends h{constructor(){super();this.defaultROMSize=32768;this.ram=new Uint8Array(1024);this.read=g([[0,8191,8191,A=>this.bios?this.bios[A]:0],[24576,32767,1023,A=>this.ram[A]],[32768,65535,32767,A=>this.rom?this.rom[A]:0]]);this.write=g([[24576,32767,1023,(A,B)=>{this.ram[A]=B}]]);this.init(this,this.newIOBus(),new E(new D)),this.bios=new a().decode(c(atob(I)))}getKeyboardMap(){return x}vdpInterrupt(){this.probe.logInterrupt(0),this.cpu.NMI()}newIOBus(){return{read:A=>{switch(A&=255,A){case 252:return this.inputs[this.keypadMode?1:0]^255;case 255:return this.inputs[this.keypadMode?3:2]^255}return A>=160&&A<=191?A&1?this.vdp.readStatus():this.vdp.readData():0},write:(A,B)=>{switch(A&=255,B&=255,A>>4){case 8:case 9:this.keypadMode=!0;break;case 12:case 13:this.keypadMode=!1;break;case 10:case 11:return A&1?this.vdp.writeAddress(B):this.vdp.writeData(B);case 15:this.psg.setData(B);break}}}}loadState(A){super.loadState(A),this.keypadMode=A.kpm}saveState(){var A=super.saveState();return A.kpm=this.keypadMode,A}reset(){super.reset(),this.keypadMode=!1}},I=` +import{c as h}from"./chunk-YD7BCC55.js";import{b as m}from"./chunk-V7REAW7P.js";import{H as M,d as D,f as E}from"./chunk-MZ43WA3W.js";import{b as n}from"./chunk-UACHXWHT.js";import{$ as f,K as r,Y as e,ca as g,l as a,m as c}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var x=f([[e.UP,0,1],[e.DOWN,0,4],[e.LEFT,0,8],[e.RIGHT,0,2],[e.A,0,64],[e.B,1,64],[e.GP_A,0,64],[e.GP_B,1,64],[e.P2_UP,2,1],[e.P2_DOWN,2,4],[e.P2_LEFT,2,8],[e.P2_RIGHT,2,2],[e.P2_A,2,64],[e.P2_B,3,64]]),t=class extends h{constructor(){super();this.defaultROMSize=32768;this.ram=new Uint8Array(1024);this.read=g([[0,8191,8191,A=>this.bios?this.bios[A]:0],[24576,32767,1023,A=>this.ram[A]],[32768,65535,32767,A=>this.rom?this.rom[A]:0]]);this.write=g([[24576,32767,1023,(A,B)=>{this.ram[A]=B}]]);this.init(this,this.newIOBus(),new E(new D)),this.bios=new a().decode(c(atob(I)))}getKeyboardMap(){return x}vdpInterrupt(){this.probe.logInterrupt(0),this.cpu.NMI()}newIOBus(){return{read:A=>{switch(A&=255,A){case 252:return this.inputs[this.keypadMode?1:0]^255;case 255:return this.inputs[this.keypadMode?3:2]^255}return A>=160&&A<=191?A&1?this.vdp.readStatus():this.vdp.readData():0},write:(A,B)=>{switch(A&=255,B&=255,A>>4){case 8:case 9:this.keypadMode=!0;break;case 12:case 13:this.keypadMode=!1;break;case 10:case 11:return A&1?this.vdp.writeAddress(B):this.vdp.writeData(B);case 15:this.psg.setData(B);break}}}}loadState(A){super.loadState(A),this.keypadMode=A.kpm}saveState(){var A=super.saveState();return A.kpm=this.keypadMode,A}reset(){super.reset(),this.keypadMode=!1}},I=` TFpHAAAgAAAAB7djQcnHAQEDBgcx/3MYawAAAMMMgAehB+EPB+USB+UVB+UYB+UbB+UeB+QHHAZm IYA8igUCBYIAKgCAff5VIAl8/qogBCoKgOnHAwkfgICAAAMFT6CgB4LgByEH4WDAYMBABlggQIAg B+HAwOCgYAMGKweBQAYxBphAQEAG+KBABnAGEuAGUAabB+QA4AflBkggIAYyB+FgoKCgwAZdwAY5 @@ -34,4 +34,4 @@ PANDTwNjYHAGWShQAwKHOBA4A8LZA0IIeAaZOEREKChsADBAIBA4BqkoA4KfA0KIVFQDIvg4QANi FwAGaQNjr3gHIwZYEAAGEEAwCDBABgkHoTAIBlEIFANIAlAgBiAAfAdhAwJ3B0IGfwMDjgPmiAcB A8SRHAYnBihQAwK9BwFgEAODTQPjNXgDAmgHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8H HwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBwM=`;var Q=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],o=class extends M{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"BIOS",start:0,size:8192,type:"rom"},{name:"Cartridge Header",start:32768,size:256,type:"rom"}]}}}newMachine(){return new t}getPresets(){return Q}readAddress(A){return this.machine.read(A)}readVRAMAddress(A){return this.machine.readVRAMAddress(A)}showHelp(){return"https://8bitworkshop.com/docs/platforms/coleco/"}},i=class extends m{constructor(){super(...arguments);this.getToolForFilename=n}start(){this.startModule(this.mainElement,{jsfile:"mame8bitws.js",cfgfile:"coleco.cfg",biosfile:"coleco/313 10031-4005 73108a.u2",driver:"coleco",width:280*2,height:432,romfn:"/emulator/cart.rom",romsize:32768,preInit:function(A){}})}loadROM(A,B){this.loadROMFile(B),this.loadRegion(":coleco_cart:rom",B)}getPresets(){return Q}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}};r["coleco.mame"]=i;r.coleco=o;export{Q as ColecoVision_PRESETS}; -//# sourceMappingURL=coleco-5FRFBIFB.js.map +//# sourceMappingURL=coleco-FZQ3SEAK.js.map diff --git a/gen/coleco-5FRFBIFB.js.map b/gen/coleco-FZQ3SEAK.js.map similarity index 100% rename from gen/coleco-5FRFBIFB.js.map rename to gen/coleco-FZQ3SEAK.js.map diff --git a/gen/common/cpu/ARM.js b/gen/common/cpu/ARM.js index 8d1e7ea5..99bf4532 100644 --- a/gen/common/cpu/ARM.js +++ b/gen/common/cpu/ARM.js @@ -3548,7 +3548,7 @@ ARMCore.prototype.compileArm = function (instruction) { // test for UDF instruction if ((instruction & 0xfff000f0) == (0xe7f000f0 | 0)) { var immediate = instruction & 0x0000000f; // TODO: full range - throw new emu_1.EmuHalt("Program exited (" + immediate + ")"); + throw new emu_1.EmuHalt("Program exited (" + immediate + ")", undefined, true); } var address = function () { throw new emu_1.EmuHalt("Unimplemented memory access: 0x" + instruction.toString(16)); diff --git a/gen/common/cpu/ARM.js.map b/gen/common/cpu/ARM.js.map index 1d7b6432..aceec995 100644 --- a/gen/common/cpu/ARM.js.map +++ b/gen/common/cpu/ARM.js.map @@ -1 +1 @@ -{"version":3,"file":"ARM.js","sourceRoot":"","sources":["../../../src/common/cpu/ARM.ts"],"names":[],"mappings":"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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE3B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC/C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACzG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrF,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,UAAS,OAAgB;IACtD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,MAAM,GAAG,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC;IACzC,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAE,IAAI,CAAC,IAAsB,CAAC,OAAO,EAAE,CAAC;YACpE,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,CAAC;QACP,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAS,OAAgB;IAC/D,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAI,IAAI,CAAC,IAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IACzB,IAAI,CAAC,IAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAS,OAAgB;IACjE,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAI,IAAI,CAAC,IAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IACzB,IAAI,CAAC,IAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,IAAc;IACrD,QAAQ,IAAI,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,SAAS,CAAC;QACvB,KAAK,OAAO,CAAC,WAAW;YACvB,sBAAsB;YACtB,OAAO,YAAY,CAAC,SAAS,CAAC;QAC/B,KAAK,OAAO,CAAC,QAAQ;YACpB,OAAO,YAAY,CAAC,QAAQ,CAAC;QAC9B,KAAK,OAAO,CAAC,QAAQ;YACpB,OAAO,YAAY,CAAC,QAAQ,CAAC;QAC9B,KAAK,OAAO,CAAC,eAAe;YAC3B,OAAO,YAAY,CAAC,eAAe,CAAC;QACrC,KAAK,OAAO,CAAC,UAAU;YACtB,OAAO,YAAY,CAAC,UAAU,CAAC;QAChC,KAAK,OAAO,CAAC,cAAc;YAC1B,OAAO,YAAY,CAAC,cAAc,CAAC;QACpC;YACC,MAAM,IAAI,aAAO,CAAC,oBAAoB,GAAG,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAC1E,CAAC;AACF,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,OAAO;IAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC;YACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,eAAe,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAClD,CAAC;IACF,CAAC;AAEF,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,OAAO;IAC9C,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,gCAAgC;QAChC,OAAO;IACR,CAAC;IACD,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACpE,0BAA0B;QAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACxB,oBAAoB;YACpB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClE,IAAI,UAAU,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,UAAU,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACrB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG;IAC5B,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACxE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,IAAI;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IACnC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAE/B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG;IAC3B,OAAO,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;AAC3E,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG;IAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC;IACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG;IAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC;IACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC;IACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAS,WAAW;IAC7C,IAAI,IAAI,GAAqB;QAC5B,MAAM,IAAI,aAAO,CAAC,yBAAyB,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACvB,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,CAAC,KAAK,GAAG;QACZ,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;QACtD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACvD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACvD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACrE,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpE,CAAC;QACD,KAAK;QACL,IAAI;QACJ,IAAI;KACJ,CAAA;AACF,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAS,SAAS,EAAE,SAAS,EAAE,EAAE;IACzE,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,QAAQ,SAAS,EAAE,CAAC;QACpB,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;oBAC3C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC1D,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,8BAA8B;gBAC9B,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC;YACH,CAAC;YACD,MAAM;QACP,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;oBAC5C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;oBACvB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;gBAC7C,CAAC,CAAC;YACH,CAAC;YACD,MAAM;QACP,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;oBAC3C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,GAAG;oBACT,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;oBAC5C,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;wBACzB,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACP,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;oBACxB,CAAC;gBACF,CAAC,CAAC;YACH,CAAC;YACD,MAAM;QACP,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;oBAC/E,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM;gBACN,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpE,GAAG,CAAC,eAAe,GAAI,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;gBAC9C,CAAC,CAAC;YACH,CAAC;YACD,MAAM;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,WAAW;IAClD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAErB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;QAC9C,KAAK;QACL,IAAI,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;QAC3B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC;QACzG,IAAI,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;QACtC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;QACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC9C,MAAM;gBACN,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;gBAClC,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChD,SAAS,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBACxE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC1E,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;gBACrD,MAAM;gBACN,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YAChC,CAAC;QACF,CAAC;aAAM,CAAC;YACP,+BAA+B;YAC/B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAE1C,wBAAwB;YACxB,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;YACzC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;YAClC,IAAI,OAAO,GAAG;gBACb,MAAM,IAAI,aAAO,CAAC,6BAA6B,CAAC,CAAC;YAClD,CAAC,CAAC;YACF,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBAC9B,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,MAAM,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,uCAAuC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACvF,CAAC;YACF,CAAC;iBAAM,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzC,QAAQ,GAAG,IAAI,CAAC;gBAChB,QAAQ,SAAS,EAAE,CAAC;oBACpB,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;gBACP,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,QAAQ,MAAM,EAAE,CAAC;gBACjB,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;YACP,CAAC;YACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;QAChC,CAAC;IACF,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;QACrD,mBAAmB;QACnB,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;QAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;QAC1C,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;YACZ,KAAK,UAAU;gBACd,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC9C,aAAa;oBACb,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBACzC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBAClC,QAAQ,WAAW,GAAG,UAAU,EAAE,CAAC;wBACnC,KAAK,UAAU;4BACd,MAAM;4BACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BACvD,MAAM;wBACP,KAAK,UAAU;4BACd,OAAO;4BACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BACxD,MAAM;wBACP,KAAK,UAAU;4BACd,MAAM;4BACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC3D,MAAK;wBACN,KAAK,UAAU;4BACd,OAAO;4BACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC5D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;oBACP,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACP,yCAAyC;oBACzC,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,QAAQ,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,QAAQ,GAAG,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBAC7C,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBAEjC,IAAI,OAAyB,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACP,IAAI,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;wBACpC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC/F,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACvF,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;oBAE3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC9C,IAAI,IAAI,EAAE,CAAC;4BACV,8BAA8B;4BAC9B,IAAI,CAAC,EAAE,CAAC;gCACP,IAAI,CAAC,EAAE,CAAC;oCACP,QAAQ;oCACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC3D,CAAC;qCAAM,CAAC;oCACP,OAAO;oCACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1D,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,IAAI,CAAC,EAAE,CAAC;oCACP,QAAQ;oCACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC3D,CAAC;4BACF,CAAC;wBACF,CAAC;6BAAM,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;4BACpB,OAAO;4BACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;wBAC1D,CAAC;oBACF,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC;gBACpD,CAAC;gBACD,MAAM;YACP,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU;gBACd,UAAU;gBACV,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,2BAA2B;gBAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC,mBAAmB;oBAC7D,MAAM,IAAI,aAAO,CAAC,kBAAkB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;gBACzD,CAAC;gBAED,IAAI,OAAO,GAAqB;oBAC/B,MAAM,IAAI,aAAO,CAAC,iCAAiC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,CAAC,CAAC;gBACF,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE,CAAC;oBAC/B,kHAAkH;oBAClH,WAAW,IAAI,UAAU,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC;oBACP,kBAAkB;oBAClB,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBAClC,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;oBACzC,IAAI,cAAc,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBAErD,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;wBACjC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;wBACnE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,uCAAuC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAClG,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACvF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,YAAY;oBACZ,IAAI,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;oBACtC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5F,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,MAAM;wBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,MAAM;wBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;gBACF,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACpE,MAAM;YACP,KAAK,UAAU;gBACd,sBAAsB;gBACtB,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;gBAClC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE1C,IAAI,OAAyB,CAAC;gBAC9B,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,EAAE,CAAC;oBACP,IAAI,CAAC,EAAE,CAAC;wBACP,SAAS,GAAG,CAAC,CAAC;oBACf,CAAC;oBACD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAChD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;4BACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gCAC7B,EAAE,IAAI,CAAC,CAAC,CAAC;gCACT,SAAS,IAAI,CAAC,CAAC;gCACf,OAAO,GAAG,IAAI,CAAC;4BAChB,CAAC;4BACD,MAAM,IAAI,CAAC,CAAC;wBACb,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,CAAC,EAAE,CAAC;wBACR,SAAS,GAAG,CAAC,CAAC;oBACf,CAAC;oBACD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAChD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;4BACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gCAC7B,EAAE,IAAI,CAAC,CAAC,CAAC;gCACT,SAAS,IAAI,CAAC,CAAC;gCACf,OAAO,GAAG,IAAI,CAAC;4BAChB,CAAC;4BACD,SAAS,IAAI,CAAC,CAAC;4BACf,MAAM,IAAI,CAAC,CAAC;wBACb,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM;oBACN,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACP,MAAM;oBACN,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,MAAM;YACP,KAAK,UAAU;gBACd,SAAS;gBACT,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;oBAC5B,SAAS,IAAI,UAAU,CAAC;gBACzB,CAAC;gBACD,SAAS,KAAK,CAAC,CAAC;gBAChB,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,IAAI,EAAE,CAAC;oBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACrD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACnB,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACpB,MAAM;YACP,KAAK,UAAU;gBACd,4BAA4B;gBAC5B,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,GAAG,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,KAAK,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;gBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE9B,cAAc;gBACd,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC9C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,IAAE,CAAC,CAAC,GAAC,CAAC,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACpF,CAAC;qBACI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACrF,CAAC;qBACI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,IAAE,CAAC,CAAC,GAAC,CAAC,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACnF,CAAC;qBACI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACpF,CAAC;gBACD,aAAa;gBACb,sJAAsJ;qBACjJ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,SAAS,IAAI,CAAC,CAAC;oBACf,IAAI,CAAC,CAAC;wBAAE,SAAS,GAAG,CAAC,SAAS,CAAC;oBAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAE,CAAC,CAAC,GAAC,CAAC,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE5B,IAAI,OAAyB,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACpE,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC/D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC/D,CAAC;gBACF,CAAC;qBAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACrD,SAAS,IAAI,CAAC,CAAC;oBACf,IAAI,CAAC,CAAC;wBAAE,SAAS,GAAG,CAAC,SAAS,CAAC;oBAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,CAAC,CAAC;oBAE5B,IAAI,OAAyB,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACpE,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;oBAChE,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;oBAChE,CAAC;gBACF,CAAC;gBACD,MAAM;YACP,KAAK,UAAU;gBACd,iCAAiC;gBACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC9C,MAAM;oBACN,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;oBAC3C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACtD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,oBAAoB;gBACpB,0MAA0M;gBAC1M;;;;;;;;;kBASE;qBACG,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG,CAAC;oBAC9B,MAAM,YAAY,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC;oBAC5B,MAAM,aAAa,GAAG,KAAK,CAAC;oBAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,iGAAiG;oBACjG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;oBACjH,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,eAAe;qBACV,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC7B,MAAM,gBAAgB,GAAG,EAAE,IAAI,CAAC,CAAC;oBACjC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;oBACrE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,sDAAsD;qBACjD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,MAAM,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC/C,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBAChD,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE7C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;oBAClF,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,4GAA4G;qBACvG,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACtC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC7B;;;;;sBAKE;oBACF,MAAM,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAClD,MAAM,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAClD,MAAM,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAClD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5E,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,sDAAsD;qBACjD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE7C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,UAAU;qBACL,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE7C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,gEAAgE;qBAC3D,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBACpC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBACtC,CAAC;gBACD,+MAA+M;qBAC1M,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,iEAAiE;oBACjE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,CAAC;gBACD,oBAAoB;qBACf,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBACpC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBACI,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBACpC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM;YACP;gBACC,MAAM,IAAI,aAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;IACF,CAAC;IAED,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC/B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;IACrC,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,WAAW;IACpD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,2BAA2B;QAC3B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,4DAA4D;QAC5D,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACxB,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC7C,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM;YACP,KAAK,MAAM;gBACV,KAAK;gBACL,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACnB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;gBACrB,MAAM;QACP,CAAC;IACF,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,eAAe;QACf,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,SAAS,EAAE,CAAC;oBACf,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACP,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;QACpC,qBAAqB;QACrB,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,sCAAsC;QACtC,IAAI,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,SAAS;QACT,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,sCAAsC;QACtC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QAClC,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,QAAQ;gBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,QAAQ;gBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,uCAAuC;QACvC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC;YACP,SAAS,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,CAAC;gBACP,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACP,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC;gBACP,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACP,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,yBAAyB;QACzB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;QACjC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;YAC1B,MAAM;YACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;YAChB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,OAAO;YACP,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;QACrB,CAAC;IACF,CAAC;SAAM,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;QACjC,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,0BAA0B;gBAC1B,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;oBAC1B,UAAU;oBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACP,UAAU;oBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC3D,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,6BAA6B;gBAC7B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC;gBAChC,IAAI,IAAI,EAAE,CAAC;oBACV,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACP,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,eAAe;gBACf,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;oBAC1B,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACP,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,gBAAgB;gBAChB,IAAI,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;oBAC7B,uBAAuB;oBACvB,gBAAgB;oBAChB,IAAI,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;oBAC7B,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1C,IAAI,CAAC,EAAE,CAAC;wBACP,SAAS,GAAG,CAAC,SAAS,CAAC;oBACxB,CAAC;oBACD,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;oBAChD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,MAAM;YACP,KAAK,MAAM;gBACV,0BAA0B;gBAC1B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC9B,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;oBAC1B,QAAQ;oBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACP,QAAQ;oBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,qBAAqB;gBACrB,IAAI,IAAI,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;gBACvC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBACjB,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAChD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACP,OAAO;oBACP,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;wBAC1B,SAAS,IAAI,UAAU,CAAC;oBACzB,CAAC;oBACD,SAAS,KAAK,CAAC,CAAC;oBAChB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACvD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACnB,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACrB,CAAC;gBACD,MAAM;YACP,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACV,QAAQ;gBACR,IAAI,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;gBACrC,IAAI,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC7B,QAAQ,CAAC,EAAE,CAAC;oBACZ,KAAK,MAAM;wBACV,OAAO;wBACP,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;4BACxB,SAAS,IAAI,UAAU,CAAC;wBACzB,CAAC;wBACD,SAAS,KAAK,CAAC,CAAC;wBAChB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBAC/C,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACnB,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;wBACpB,MAAM;oBACP,KAAK,MAAM;wBACV,eAAe;wBACf;;;;;2BAKG;wBACH,MAAM;oBACP,KAAK,MAAM;wBACV,QAAQ;wBACR,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;4BACxB,SAAS,IAAI,UAAU,CAAC;wBACzB,CAAC;wBACD,SAAS,KAAK,EAAE,CAAC;wBACjB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;wBAChD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACpB,MAAM;oBACP,KAAK,MAAM;wBACV,QAAQ;wBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;wBAChD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACnB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;wBACrB,MAAM;gBACP,CAAC;gBACD,MAAM;YACP;gBACC,MAAM,IAAI,aAAO,CAAC,2BAA2B,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,aAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IACjC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;IACrC,oCAAoC;IACpC,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAMF,MAAa,QAAQ;IAYpB;QAPA,WAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,WAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,WAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAAG,UAAU,CAAC;QAGxB,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IACD,WAAW;QACV,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,OAAO;QACzB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,iBAAiB;YACjB,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;gBAChB,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;gBAC1B,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC,sBAAsB;aACzC,CAAC,CAAC,QAAQ;QACb,CAAC;IACF,CAAC;IACD,WAAW;QACV,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxD,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,CAAC,QAAQ;IACtB,CAAC;IACD,gBAAgB,CAAC,GAAW;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,KAAK;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,SAAS;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IACD,SAAS,CAAC,KAAmB;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,CAAS;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,CAAS;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,CAAS;QACf,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,CAAS;QACf,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,qDAAqD;IACrD,MAAM,CAAC,CAAS,EAAE,CAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAS,EAAE,CAAS;QAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAS,EAAE,CAAS;QAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO;IACP,IAAI,CAAC,CAAS;QACb,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,CAAS;QACf,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,SAAS,CAAC,CAAS;QAClB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,EAAU;QACX,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IACD,WAAW,CAAC,CAAS,EAAE,KAAa;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,YAAY,CAAC,CAAS;QACrB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,cAAc,CAAC,CAAS;QACvB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,aAAa,CAAC,MAAc,EAAE,OAAe;QACtC,OAAO,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC;IAC9D,CAAC;IACD,UAAU,CAAC,MAAc,EAAE,MAAc;QACxC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG;gBACL,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAChD,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBAChD,OAAO,EAAE,KAAK;aACf,CAAA;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,GAAG,CAAC,MAAc;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,MAAc;QACb,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK;IACL,CAAC;IACD,YAAY;IACZ,CAAC;IACD,OAAO;IACP,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,YAAY;QACX,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YACvB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;SAClB,CAAC;IACH,CAAC;CACD;AA5JD,4BA4JC"} \ No newline at end of file +{"version":3,"file":"ARM.js","sourceRoot":"","sources":["../../../src/common/cpu/ARM.ts"],"names":[],"mappings":"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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE3B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC/C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACzG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrF,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,UAAS,OAAgB;IACtD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,MAAM,GAAG,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC;IACzC,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAE,IAAI,CAAC,IAAsB,CAAC,OAAO,EAAE,CAAC;YACpE,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,CAAC;QACP,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAS,OAAgB;IAC/D,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAI,IAAI,CAAC,IAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IACzB,IAAI,CAAC,IAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAS,OAAgB;IACjE,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAI,IAAI,CAAC,IAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IACzB,IAAI,CAAC,IAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,IAAc;IACrD,QAAQ,IAAI,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,SAAS,CAAC;QACvB,KAAK,OAAO,CAAC,WAAW;YACvB,sBAAsB;YACtB,OAAO,YAAY,CAAC,SAAS,CAAC;QAC/B,KAAK,OAAO,CAAC,QAAQ;YACpB,OAAO,YAAY,CAAC,QAAQ,CAAC;QAC9B,KAAK,OAAO,CAAC,QAAQ;YACpB,OAAO,YAAY,CAAC,QAAQ,CAAC;QAC9B,KAAK,OAAO,CAAC,eAAe;YAC3B,OAAO,YAAY,CAAC,eAAe,CAAC;QACrC,KAAK,OAAO,CAAC,UAAU;YACtB,OAAO,YAAY,CAAC,UAAU,CAAC;QAChC,KAAK,OAAO,CAAC,cAAc;YAC1B,OAAO,YAAY,CAAC,cAAc,CAAC;QACpC;YACC,MAAM,IAAI,aAAO,CAAC,oBAAoB,GAAG,IAAI,GAAG,uBAAuB,CAAC,CAAC;IAC1E,CAAC;AACF,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,OAAO;IAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC;YACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,eAAe,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAClD,CAAC;IACF,CAAC;AAEF,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,OAAO;IAC9C,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,gCAAgC;QAChC,OAAO;IACR,CAAC;IACD,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACpE,0BAA0B;QAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACxB,oBAAoB;YACpB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClE,IAAI,UAAU,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,UAAU,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACrB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG;IAC5B,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACxE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,IAAI;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IACnC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAE/B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG;IAC3B,OAAO,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;AAC3E,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG;IAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC;IACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG;IAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC;IACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC;IACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAS,WAAW;IAC7C,IAAI,IAAI,GAAqB;QAC5B,MAAM,IAAI,aAAO,CAAC,yBAAyB,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACvB,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,CAAC,KAAK,GAAG;QACZ,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACzC,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;QACtD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACvD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACvD,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACrE,CAAC;QACD,KAAK;QACL;YACC,OAAO,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpE,CAAC;QACD,KAAK;QACL,IAAI;QACJ,IAAI;KACJ,CAAA;AACF,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAS,SAAS,EAAE,SAAS,EAAE,EAAE;IACzE,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,QAAQ,SAAS,EAAE,CAAC;QACpB,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;oBAC3C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC1D,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,8BAA8B;gBAC9B,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC;YACH,CAAC;YACD,MAAM;QACP,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;oBAC5C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;oBACvB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;gBAC7C,CAAC,CAAC;YACH,CAAC;YACD,MAAM;QACP,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;oBAC3C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,GAAG;oBACT,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;oBAC5C,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;wBACzB,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACP,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;oBACxB,CAAC;gBACF,CAAC,CAAC;YACH,CAAC;YACD,MAAM;QACP,KAAK,UAAU;YACd,MAAM;YACN,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;oBAC/E,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM;gBACN,OAAO,GAAG;oBACT,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpE,GAAG,CAAC,eAAe,GAAI,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;gBAC9C,CAAC,CAAC;YACH,CAAC;YACD,MAAM;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,WAAW;IAClD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAErB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;QAC9C,KAAK;QACL,IAAI,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;QAC3B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC;QACzG,IAAI,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;QACtC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;QACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC9C,MAAM;gBACN,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;gBAClC,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChD,SAAS,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBACxE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC1E,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;gBACrD,MAAM;gBACN,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YAChC,CAAC;QACF,CAAC;aAAM,CAAC;YACP,+BAA+B;YAC/B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAE1C,wBAAwB;YACxB,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;YACzC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;YAClC,IAAI,OAAO,GAAG;gBACb,MAAM,IAAI,aAAO,CAAC,6BAA6B,CAAC,CAAC;YAClD,CAAC,CAAC;YACF,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBAC9B,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,MAAM,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,uCAAuC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACvF,CAAC;YACF,CAAC;iBAAM,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzC,QAAQ,GAAG,IAAI,CAAC;gBAChB,QAAQ,SAAS,EAAE,CAAC;oBACpB,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,KAAK,UAAU;wBACd,MAAM;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;gBACP,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,QAAQ,MAAM,EAAE,CAAC;gBACjB,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5D,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACP,KAAK,UAAU;oBACd,MAAM;oBACN,IAAI,CAAC,EAAE,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;YACP,CAAC;YACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;QAChC,CAAC;IACF,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;QACrD,mBAAmB;QACnB,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;QAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;QAC1C,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,QAAQ,CAAC,EAAE,CAAC;YACZ,KAAK,UAAU;gBACd,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC9C,aAAa;oBACb,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBACzC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBAClC,QAAQ,WAAW,GAAG,UAAU,EAAE,CAAC;wBACnC,KAAK,UAAU;4BACd,MAAM;4BACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BACvD,MAAM;wBACP,KAAK,UAAU;4BACd,OAAO;4BACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BACxD,MAAM;wBACP,KAAK,UAAU;4BACd,MAAM;4BACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC3D,MAAK;wBACN,KAAK,UAAU;4BACd,OAAO;4BACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC5D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;wBACP,KAAK,UAAU;4BACd,QAAQ;4BACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC7D,MAAM;wBACP,KAAK,UAAU;4BACd,SAAS;4BACT,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;4BAC9D,MAAM;oBACP,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACP,yCAAyC;oBACzC,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,QAAQ,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,QAAQ,GAAG,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBAC7C,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;oBAEjC,IAAI,OAAyB,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACP,IAAI,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;wBACpC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC/F,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACvF,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;oBAE3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC9C,IAAI,IAAI,EAAE,CAAC;4BACV,8BAA8B;4BAC9B,IAAI,CAAC,EAAE,CAAC;gCACP,IAAI,CAAC,EAAE,CAAC;oCACP,QAAQ;oCACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC3D,CAAC;qCAAM,CAAC;oCACP,OAAO;oCACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1D,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,IAAI,CAAC,EAAE,CAAC;oCACP,QAAQ;oCACR,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC3D,CAAC;4BACF,CAAC;wBACF,CAAC;6BAAM,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;4BACpB,OAAO;4BACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;wBAC1D,CAAC;oBACF,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC;gBACpD,CAAC;gBACD,MAAM;YACP,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU;gBACd,UAAU;gBACV,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,2BAA2B;gBAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC,mBAAmB;oBAC7D,MAAM,IAAI,aAAO,CAAC,kBAAkB,GAAG,SAAS,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC1E,CAAC;gBAED,IAAI,OAAO,GAAqB;oBAC/B,MAAM,IAAI,aAAO,CAAC,iCAAiC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,CAAC,CAAC;gBACF,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE,CAAC;oBAC/B,kHAAkH;oBAClH,WAAW,IAAI,UAAU,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC;oBACP,kBAAkB;oBAClB,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBAClC,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;oBACzC,IAAI,cAAc,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBAErD,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;wBACjC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;wBACnE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,uCAAuC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAClG,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACvF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,YAAY;oBACZ,IAAI,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;oBACtC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5F,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,MAAM;wBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,MAAM;wBACN,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;gBACF,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACpE,MAAM;YACP,KAAK,UAAU;gBACd,sBAAsB;gBACtB,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;gBAClC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE1C,IAAI,OAAyB,CAAC;gBAC9B,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,EAAE,CAAC;oBACP,IAAI,CAAC,EAAE,CAAC;wBACP,SAAS,GAAG,CAAC,CAAC;oBACf,CAAC;oBACD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAChD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;4BACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gCAC7B,EAAE,IAAI,CAAC,CAAC,CAAC;gCACT,SAAS,IAAI,CAAC,CAAC;gCACf,OAAO,GAAG,IAAI,CAAC;4BAChB,CAAC;4BACD,MAAM,IAAI,CAAC,CAAC;wBACb,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,CAAC,EAAE,CAAC;wBACR,SAAS,GAAG,CAAC,CAAC;oBACf,CAAC;oBACD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAChD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;4BACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gCAC7B,EAAE,IAAI,CAAC,CAAC,CAAC;gCACT,SAAS,IAAI,CAAC,CAAC;gCACf,OAAO,GAAG,IAAI,CAAC;4BAChB,CAAC;4BACD,SAAS,IAAI,CAAC,CAAC;4BACf,MAAM,IAAI,CAAC,CAAC;wBACb,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM;oBACN,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACP,MAAM;oBACN,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,CAAC;oBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,MAAM;YACP,KAAK,UAAU;gBACd,SAAS;gBACT,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;oBAC5B,SAAS,IAAI,UAAU,CAAC;gBACzB,CAAC;gBACD,SAAS,KAAK,CAAC,CAAC;gBAChB,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,IAAI,EAAE,CAAC;oBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACrD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACnB,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACpB,MAAM;YACP,KAAK,UAAU;gBACd,4BAA4B;gBAC5B,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;gBACpC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;gBACjC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,GAAG,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,KAAK,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBACzC,IAAI,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;gBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE9B,cAAc;gBACd,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC9C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,IAAE,CAAC,CAAC,GAAC,CAAC,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACpF,CAAC;qBACI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACrF,CAAC;qBACI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,IAAE,CAAC,CAAC,GAAC,CAAC,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACnF,CAAC;qBACI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACpF,CAAC;gBACD,aAAa;gBACb,sJAAsJ;qBACjJ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,SAAS,IAAI,CAAC,CAAC;oBACf,IAAI,CAAC,CAAC;wBAAE,SAAS,GAAG,CAAC,SAAS,CAAC;oBAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAE,CAAC,CAAC,GAAC,CAAC,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE5B,IAAI,OAAyB,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACpE,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC/D,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC/D,CAAC;gBACF,CAAC;qBAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACrD,SAAS,IAAI,CAAC,CAAC;oBACf,IAAI,CAAC,CAAC;wBAAE,SAAS,GAAG,CAAC,SAAS,CAAC;oBAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,CAAC,CAAC;oBAE5B,IAAI,OAAyB,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACpE,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACV,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;oBAChE,CAAC;yBAAM,CAAC;wBACP,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;oBAChE,CAAC;gBACF,CAAC;gBACD,MAAM;YACP,KAAK,UAAU;gBACd,iCAAiC;gBACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC9C,MAAM;oBACN,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;oBAC3C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACtD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,oBAAoB;gBACpB,0MAA0M;gBAC1M;;;;;;;;;kBASE;qBACG,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG,CAAC;oBAC9B,MAAM,YAAY,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC;oBAC5B,MAAM,aAAa,GAAG,KAAK,CAAC;oBAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,iGAAiG;oBACjG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;oBACjH,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,eAAe;qBACV,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC7B,MAAM,gBAAgB,GAAG,EAAE,IAAI,CAAC,CAAC;oBACjC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;oBACrE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,sDAAsD;qBACjD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,MAAM,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC/C,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBAChD,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE7C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;oBAClF,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,4GAA4G;qBACvG,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACtC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC7B;;;;;sBAKE;oBACF,MAAM,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAClD,MAAM,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAClD,MAAM,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAClD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5E,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,sDAAsD;qBACjD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE7C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,UAAU;qBACL,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACpC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC;oBACpC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC;oBAE7C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,gEAAgE;qBAC3D,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBACpC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBACtC,CAAC;gBACD,+MAA+M;qBAC1M,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oBACrC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;oBACnC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,iEAAiE;oBACjE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,CAAC;gBACD,oBAAoB;qBACf,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBACpC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBACI,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBACpC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM;YACP;gBACC,MAAM,IAAI,aAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;IACF,CAAC;IAED,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC/B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;IACrC,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,WAAW;IACpD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,2BAA2B;QAC3B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;gBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,4DAA4D;QAC5D,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACxB,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC7C,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,EAAE,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM;YACP,KAAK,MAAM;gBACV,KAAK;gBACL,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACnB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;gBACrB,MAAM;QACP,CAAC;IACF,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,eAAe;QACf,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,SAAS,EAAE,CAAC;oBACf,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACP,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;QACpC,qBAAqB;QACrB,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM;gBACV,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,sCAAsC;QACtC,IAAI,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,SAAS;QACT,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,sCAAsC;QACtC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QAClC,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,QAAQ;gBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACP,KAAK,MAAM;gBACV,QAAQ;gBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;QACP,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,uCAAuC;QACvC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC;YACP,SAAS,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,CAAC;gBACP,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACP,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC;gBACP,UAAU;gBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACP,SAAS;gBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,yBAAyB;QACzB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;QACjC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;YAC1B,MAAM;YACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;YAChB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,OAAO;YACP,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;QACrB,CAAC;IACF,CAAC;SAAM,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;QACjC,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM;gBACV,0BAA0B;gBAC1B,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;oBAC1B,UAAU;oBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACP,UAAU;oBACV,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC3D,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,6BAA6B;gBAC7B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC;gBAChC,IAAI,IAAI,EAAE,CAAC;oBACV,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACP,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,eAAe;gBACf,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;oBAC1B,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACP,SAAS;oBACT,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACtD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,gBAAgB;gBAChB,IAAI,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;oBAC7B,uBAAuB;oBACvB,gBAAgB;oBAChB,IAAI,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;oBAC7B,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1C,IAAI,CAAC,EAAE,CAAC;wBACP,SAAS,GAAG,CAAC,SAAS,CAAC;oBACxB,CAAC;oBACD,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;oBAChD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,MAAM;YACP,KAAK,MAAM;gBACV,0BAA0B;gBAC1B,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC9B,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;oBAC1B,QAAQ;oBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACP,QAAQ;oBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChD,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpB,MAAM;YACP,KAAK,MAAM;gBACV,qBAAqB;gBACrB,IAAI,IAAI,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;gBACvC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBACjB,MAAM;oBACN,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAChD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACP,OAAO;oBACP,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;wBAC1B,SAAS,IAAI,UAAU,CAAC;oBACzB,CAAC;oBACD,SAAS,KAAK,CAAC,CAAC;oBAChB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACvD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACnB,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACrB,CAAC;gBACD,MAAM;YACP,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACV,QAAQ;gBACR,IAAI,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;gBACrC,IAAI,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;gBAC7B,QAAQ,CAAC,EAAE,CAAC;oBACZ,KAAK,MAAM;wBACV,OAAO;wBACP,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;4BACxB,SAAS,IAAI,UAAU,CAAC;wBACzB,CAAC;wBACD,SAAS,KAAK,CAAC,CAAC;wBAChB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBAC/C,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACnB,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;wBACpB,MAAM;oBACP,KAAK,MAAM;wBACV,eAAe;wBACf;;;;;2BAKG;wBACH,MAAM;oBACP,KAAK,MAAM;wBACV,QAAQ;wBACR,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;4BACxB,SAAS,IAAI,UAAU,CAAC;wBACzB,CAAC;wBACD,SAAS,KAAK,EAAE,CAAC;wBACjB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;wBAChD,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACpB,MAAM;oBACP,KAAK,MAAM;wBACV,QAAQ;wBACR,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;wBAChD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACnB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;wBACrB,MAAM;gBACP,CAAC;gBACD,MAAM;YACP;gBACC,MAAM,IAAI,aAAO,CAAC,2BAA2B,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,aAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IACjC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;IACrC,oCAAoC;IACpC,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAMF,MAAa,QAAQ;IAYpB;QAPA,WAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,WAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,WAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAAG,UAAU,CAAC;QAGxB,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IACD,WAAW;QACV,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,OAAO;QACzB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,iBAAiB;YACjB,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;gBAChB,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;gBAC1B,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC,sBAAsB;aACzC,CAAC,CAAC,QAAQ;QACb,CAAC;IACF,CAAC;IACD,WAAW;QACV,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxD,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,CAAC,QAAQ;IACtB,CAAC;IACD,gBAAgB,CAAC,GAAW;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,KAAK;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,SAAS;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IACD,SAAS,CAAC,KAAmB;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,CAAS;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,CAAS;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,CAAS;QACf,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,CAAS;QACf,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,qDAAqD;IACrD,MAAM,CAAC,CAAS,EAAE,CAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAS,EAAE,CAAS;QAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAS,EAAE,CAAS;QAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO;IACP,IAAI,CAAC,CAAS;QACb,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,CAAS;QACf,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,SAAS,CAAC,CAAS;QAClB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,EAAU;QACX,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IACD,WAAW,CAAC,CAAS,EAAE,KAAa;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,YAAY,CAAC,CAAS;QACrB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,cAAc,CAAC,CAAS;QACvB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,aAAa,CAAC,MAAc,EAAE,OAAe;QACtC,OAAO,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC;IAC9D,CAAC;IACD,UAAU,CAAC,MAAc,EAAE,MAAc;QACxC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG;gBACL,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAChD,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBAChD,OAAO,EAAE,KAAK;aACf,CAAA;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,GAAG,CAAC,MAAc;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,MAAc;QACb,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK;IACL,CAAC;IACD,YAAY;IACZ,CAAC;IACD,OAAO;IACP,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,YAAY;QACX,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YACvB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;SAClB,CAAC;IACH,CAAC;CACD;AA5JD,4BA4JC"} \ No newline at end of file diff --git a/gen/common/detect.js b/gen/common/detect.js index f1af5614..164b1a29 100644 --- a/gen/common/detect.js +++ b/gen/common/detect.js @@ -13,6 +13,9 @@ exports.isBuildableSource = isBuildableSource; exports.detectProject = detectProject; exports.isClearWinner = isClearWinner; exports.isStrongDetection = isStrongDetection; +exports.classifyFinding = classifyFinding; +exports.dropNestedFindings = dropNestedFindings; +exports.isMadeOfProjects = isMadeOfProjects; exports.isHeaderFile = isHeaderFile; exports.mainEvidence = mainEvidence; exports.detectionSummary = detectionSummary; @@ -68,6 +71,7 @@ const FINGERPRINTS = [ { re: /\bWait_Recal\b|\bIntensity_[0-9a-z]+\b/, platforms: ['vectrex'], reason: 'calls Vectrex BIOS routines' }, ]; const HEADER_EXTS = ['.h', '.inc', '.i']; +const C_EXTS = ['.c', '.cpp']; // a register or function name in a header is a declaration, not a use, so // it points at the library rather than at a program written for the platform const HEADER_FINGERPRINT_WEIGHT = 0.15; @@ -162,6 +166,8 @@ async function detectProject(input) { scores.set(platform, d = { platform, score: 0, evidence: [] }); if (d.evidence.some(e => e.reason === ev.reason)) return; + if (ev.kind === 'code') + d.hasCode = true; raw.set(platform, (raw.get(platform) || 0) + score); if (d.evidence.length < 8) d.evidence.push(ev); @@ -178,8 +184,8 @@ async function detectProject(input) { var badge = parseReadmeBadge((await input.read(readme)) || ''); if (badge) { return [{ - platform: badge.platform, mainFile: badge.mainFile, score: 1, - evidence: [{ file: readme, reason: 'has an 8bitworkshop link naming the platform' }], + platform: badge.platform, mainFile: badge.mainFile, score: 1, hasCode: true, + evidence: [{ file: readme, reason: 'has an 8bitworkshop link naming the platform', kind: 'code' }], }]; } } @@ -190,17 +196,17 @@ async function detectProject(input) { var ext = extname(file); var rom = exports.ROM_PLATFORMS[ext]; if (rom) - add(rom, 0.6, { file, reason: `is a ${ext} ROM` }); + add(rom, 0.6, { file, reason: `is a ${ext} ROM`, kind: 'rom' }); var base = basename(file); if (/^makefile$/i.test(base) || ext === '.mk') { var mk = await input.read(file); var m = mk && /(?:\s-t\s+|--target[\s=]+)([a-z0-9]+)/.exec(mk); if (m && CC65_TARGETS[m[1]]) - add(CC65_TARGETS[m[1]], 0.6, { file, reason: `builds for the cc65 "${m[1]}" target` }); + add(CC65_TARGETS[m[1]], 0.6, { file, reason: `builds for the cc65 "${m[1]}" target`, kind: 'code' }); continue; } if (ext === '.cfg' && CC65_TARGETS[base.replace(/\.cfg$/, '')]) { - add(CC65_TARGETS[base.replace(/\.cfg$/, '')], 0.3, { file, reason: 'is a cc65 linker config' }); + add(CC65_TARGETS[base.replace(/\.cfg$/, '')], 0.3, { file, reason: 'is a cc65 linker config', kind: 'hint' }); continue; } if (!isBuildableSource(file) && !HEADER_EXTS.includes(ext)) @@ -209,6 +215,8 @@ async function detectProject(input) { if (text == null) continue; texts.set(file, text); + // a header declares things for programs; it isn't one + var kind = HEADER_EXTS.includes(ext) ? 'hint' : 'code'; // includes, with their line numbers for the evidence. Quoted (C, ca65), // angle-bracketed (C), or bare (DASM, bB) -- name is whichever matched. var re = /^[ \t]*[#.]?[ \t]*include\s+(?:"([^"]+)"|<([^>]+)>|([^\s;]+))/gim; @@ -223,14 +231,14 @@ async function detectProject(input) { // a header a family shares (cv.h) points at each member, less strongly var weight = 0.6 / Math.sqrt(list.length); for (var p of list) - add(p, weight, { file, line, reason: `includes "${name}"` }); + add(p, weight, { file, line, reason: `includes "${name}"`, kind }); } for (var fp of FINGERPRINTS) { var fm = fp.re.exec(text); if (fm) { var fline = text.substring(0, fm.index).split('\n').length; var fweight = HEADER_EXTS.includes(ext) ? HEADER_FINGERPRINT_WEIGHT : 0.5; - addAll(fp.platforms, fweight, { file, line: fline, reason: fp.reason }); + addAll(fp.platforms, fweight, { file, line: fline, reason: fp.reason, kind }); } } } @@ -247,10 +255,10 @@ async function detectProject(input) { return meta && (meta.extensions || []).includes(ext); }); if (accepting.length > 0 && accepting.length <= 3) - addAll(accepting, 0.5, { file, reason: `has the ${ext} extension` }); + addAll(accepting, 0.5, { file, reason: `has the ${ext} extension`, kind: 'code' }); } if (input.dirName && platforms.has(input.dirName)) - add(input.dirName, 0.2, { file: '.', reason: `is in a folder named "${input.dirName}"` }); + add(input.dirName, 0.2, { file: '.', reason: `is in a folder named "${input.dirName}"`, kind: 'hint' }); var result = [...scores.values()]; // rank on the uncapped total, so two strong candidates still differ result.sort((a, b) => raw.get(b.platform) - raw.get(a.platform) || a.platform.localeCompare(b.platform)); @@ -277,9 +285,59 @@ function isClearWinner(detections) { var w = (d) => { var _a; return (_a = d.weight) !== null && _a !== void 0 ? _a : d.score; }; return detections.length == 1 || w(detections[0]) - w(detections[1]) >= 0.2; } -/** Strong enough to bring up unasked, on opening a folder. */ +/** + * Strong enough to bring up unasked, on opening a folder: a high score, + * and at least some of it from a program's own code. Headers, linker + * configs, ROMs, and folder names alone don't make a project. + */ function isStrongDetection(d) { - return d.score >= 0.5; + return d.score >= 0.5 && !!d.hasCode; +} +/** + * How a directory counts when scanning a folder for projects: "project" + * for a strong, clear detection; "potential" for weaker or ambiguous + * evidence around something to build or run, which is offered only when + * the user asks; undefined for nothing worth mentioning. + */ +function classifyFinding(detections) { + var _a; + var d = detections[0]; + if (!d) + return undefined; + if (isStrongDetection(d) && isClearWinner(detections)) + return 'project'; + var runnable = !!d.mainFile || (((_a = d.mainCandidates) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0 || d.evidence.some(e => e.kind === 'rom'); + if (runnable && d.score > 0.1) + return 'potential'; + return undefined; +} +function isInsideDir(parent, child) { + return parent !== child && (parent === '' || child.startsWith(parent + '/')); +} +/** + * Drop findings that belong to another: anything inside a project with a + * main file (its code and data folders), and a library folder inside a + * folder of programs. A nested project with its own main file stays. + */ +function dropNestedFindings(findings) { + return findings.filter(f => !findings.some(p => isInsideDir(p.dir, f.dir) && ((!p.potential && !!p.detection.mainFile) || + (isFolderOfPrograms(p.detection) && !f.detection.mainFile)))); +} +// unasked, this many projects anywhere in a folder is still worth a prompt +const FEW_PROJECTS = 5; +/** + * True if a folder is made of projects, so a prompt nobody asked for is + * welcome: a few projects, or projects in at least half its top-level + * folders (a folder of cloned repos). Projects scattered through a big + * codebase don't count. `allDirs` is every directory the scan saw. + */ +function isMadeOfProjects(projectDirs, allDirs) { + if (projectDirs.length <= FEW_PROJECTS) + return true; + var top = (d) => d.split('/')[0]; + var tops = new Set(allDirs.filter(d => d).map(top)); + var covered = new Set(projectDirs.filter(d => d).map(top)); + return covered.size * 2 >= tops.size; } /** True for a header or include file: a declaration, not a program. */ function isHeaderFile(fn) { @@ -333,7 +391,11 @@ function findMainCandidates(platform, files, texts) { for (var dep of deps) used.add(dep); } - var candidates = files.filter(f => isBuildableSource(f) && texts.has(f) && !used.has(f) && !used.has(basename(f))); + // a crt0 is the startup code a toolchain links in, not a program; a C + // program has a main(), so C without one is a library + var isProgram = (f) => !/^crt0\b/i.test(basename(f)) + && (!C_EXTS.includes(extname(f)) || /\bmain\s*\(/.test(texts.get(f))); + var candidates = files.filter(f => isBuildableSource(f) && texts.has(f) && !used.has(f) && !used.has(basename(f)) && isProgram(f)); var rank = (f) => { var t = texts.get(f) || ''; var r = 0; diff --git a/gen/common/detect.js.map b/gen/common/detect.js.map index 421b651e..dac77498 100644 --- a/gen/common/detect.js.map +++ b/gen/common/detect.js.map @@ -1 +1 @@ -{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/common/detect.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/common/detect.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/common/emu.js b/gen/common/emu.js index 19ec5455..af404770 100644 --- a/gen/common/emu.js +++ b/gen/common/emu.js @@ -253,10 +253,11 @@ class RAM { } exports.RAM = RAM; class EmuHalt extends Error { - constructor(msg, loc) { + constructor(msg, loc, normal = false) { super(msg); this.squelchError = true; this.$loc = loc; + this.normal = normal; Object.setPrototypeOf(this, EmuHalt.prototype); } } diff --git a/gen/common/emu.js.map b/gen/common/emu.js.map index 9ffd21a7..beee8101 100644 --- a/gen/common/emu.js.map +++ b/gen/common/emu.js.map @@ -1 +1 @@ -{"version":3,"file":"emu.js","sourceRoot":"","sources":["../../src/common/emu.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"emu.js","sourceRoot":"","sources":["../../src/common/emu.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/common/emucore.js b/gen/common/emucore.js index e2bda779..0d66d0b2 100644 --- a/gen/common/emucore.js +++ b/gen/common/emucore.js @@ -116,14 +116,25 @@ function installHeadlessVideo() { const datau8 = new Uint8Array(buffer); const datau32 = new Uint32Array(buffer); // the first one is the screen; later ones are debug views (nes nametables) - if (!pixels) { + const isScreen = !pixels; + if (isScreen) { params = { width, height, rotate: options === null || options === void 0 ? void 0 : options.rotate, aspect: options === null || options === void 0 ? void 0 : options.aspect }; pixels = datau32; } this.create = function () { this.width = width; this.height = height; }; + // verilog rotates at reset, when the design asks for it + this.setRotate = function (rotate) { if (isScreen) + params.rotate = rotate || undefined; }; this.setKeyboardEvents = setKeyboardEvents; this.getFrameData = function () { return datau32; }; this.getImageData = function () { return { data: datau8, width, height }; }; + // PCE (and other platforms) build their own ImageData from the canvas + // context during start(), so hand out a real one + this.createImageData = function (w, h) { + if (w === width && h === height) + return { data: datau8, width, height }; + return { data: new Uint8ClampedArray(w * h * 4), width: w, height: h }; + }; this.updateFrame = function () { }; this.clearRect = function () { }; this.setupMouseEvents = function () { }; @@ -213,7 +224,19 @@ class EmuCore { } } reset() { this.platform.reset(); } - loadROM(data, title = 'ROM') { this.platform.loadROM(title, data); } + /** + * `data` is a ROM image, or whatever else the build produced (verilog's + * compiled unit). Some platforms (verilog) load asynchronously; await this + * to see their errors. + */ + async loadROM(data, title = 'ROM') { await this.platform.loadROM(title, data); } + /** + * Project files the program reads at load time (verilog's $readmem), keyed + * by the name the program uses. The IDE gets these from the open project. + */ + setFileData(files) { + this.platform.sourceFileFetch = (path) => files[path]; + } loadBIOS(data, title = 'BIOS') { if (!this.platform.loadBIOS) return false; diff --git a/gen/common/emucore.js.map b/gen/common/emucore.js.map index 01129644..95fb882b 100644 --- a/gen/common/emucore.js.map +++ b/gen/common/emucore.js.map @@ -1 +1 @@ -{"version":3,"file":"emucore.js","sourceRoot":"","sources":["../../src/common/emucore.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"emucore.js","sourceRoot":"","sources":["../../src/common/emucore.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/cpc-WIAAKPBY.js b/gen/cpc-POCBQYUN.js similarity index 94% rename from gen/cpc-WIAAKPBY.js rename to gen/cpc-POCBQYUN.js index c2bfd238..fef99d5f 100644 --- a/gen/cpc-WIAAKPBY.js +++ b/gen/cpc-POCBQYUN.js @@ -1,2 +1,2 @@ -import{H as d,s as p}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{K as n}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=class extends p{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=224;this.joymask0=0;this.runaddr=16384}loadROM(t){let s=new Uint8Array(t.length+m.length);s.set(m,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,m.length),super.loadROM(s)}reset(){if(super.reset(),this.exports.machine_exec(this.sys,1e6),this.romptr&&this.romlen){this.exports.machine_load_rom(this.sys,this.romptr,this.romlen);for(var t=0;t<1e5&&this.getPC()!=this.runaddr;t++)this.exports.machine_tick(this.sys)}}advanceFrame(t){var s=this.getRasterY(),r=Math.floor((this.numTotalScanlines-s)*(4e6/50)/this.numTotalScanlines),e=this.probe!=null;return e&&this.exports.machine_reset_probe_buffer(),r=super.advanceFrameClock(t,r),e&&this.copyProbeData(),r}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:-1,y:this.getRasterY()-14}}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var t=this.cpustatearr,s=t[9]+(t[8]<<8),r=t[10]+(t[11]<<8),e=t[12]+(t[13]<<8),a=t[14]+(t[15]<<8),x=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),h=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:h,SP:x,AF:s,BC:a,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(h)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0),joymask0:this.joymask0}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=t.joymask0|0}getVideoParams(){return{width:768,height:272,overscan:!0,videoFrequency:50,aspect:1.3}}setKeyInput(t,s,r){if(!(t==16||t==17||t==18||t==224)){var e=0,a=0;t==37&&(t=8,e=4),t==38&&(t=11,e=1),t==39&&(t=9,e=8),t==40&&(t=10,e=2),t==32&&(e=16),t==65&&(t=65,a=4),t==87&&(t=87,a=1),t==68&&(t=68,a=8),t==83&&(t=83,a=2),t==69&&(a=16),t==113&&(t=241),t==115&&(t=243),t==119&&(t=245),t==121&&(t=247),r&1?(this.exports.machine_key_down(this.sys,t),this.joymask0|=e):r&64&&(this.exports.machine_key_up(this.sys,t),this.joymask0&=~e)}}};var g=[{id:"easy_stdio_boxes.c",name:"Standard I/O",category:"C"},{id:"easy_mode_strings.c",name:"Video Modes"},{id:"easy_random.c",name:"Random Numbers"},{id:"easy_sprites.c",name:"Keyboard + Sprites"},{id:"medium_scrolling.c",name:"Scrolling Text"},{id:"siegegame.c",name:"Siege Game"},{id:"music.c",name:"Music Player"},{id:"hello.asm",name:"Hello World",category:"Assembly"}],v={main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"Screen RAM",start:49152,size:16384,type:"ram"}]},i=class extends d{newMachine(){return new o("cpc")}getPresets(){return g}readAddress(c){return this.machine.readConst(c)}getMemoryMap(){return v}showHelp(){return"https://8bitworkshop.com/docs/platforms/cpc/"}};n["cpc.6128"]=i;n["cpc.464"]=i;n["cpc.kcc"]=i; -//# sourceMappingURL=cpc-WIAAKPBY.js.map +import{H as d,s as p}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{K as n}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=class extends p{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=224;this.joymask0=0;this.runaddr=16384}loadROM(t){let s=new Uint8Array(t.length+m.length);s.set(m,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,m.length),super.loadROM(s)}reset(){if(super.reset(),this.exports.machine_exec(this.sys,1e6),this.romptr&&this.romlen){this.exports.machine_load_rom(this.sys,this.romptr,this.romlen);for(var t=0;t<1e5&&this.getPC()!=this.runaddr;t++)this.exports.machine_tick(this.sys)}}advanceFrame(t){var s=this.getRasterY(),r=Math.floor((this.numTotalScanlines-s)*(4e6/50)/this.numTotalScanlines),e=this.probe!=null;return e&&this.exports.machine_reset_probe_buffer(),r=super.advanceFrameClock(t,r),e&&this.copyProbeData(),r}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:-1,y:this.getRasterY()-14}}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var t=this.cpustatearr,s=t[9]+(t[8]<<8),r=t[10]+(t[11]<<8),e=t[12]+(t[13]<<8),a=t[14]+(t[15]<<8),x=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),h=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:h,SP:x,AF:s,BC:a,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(h)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0),joymask0:this.joymask0}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=t.joymask0|0}getVideoParams(){return{width:768,height:272,overscan:!0,videoFrequency:50,aspect:1.3}}setKeyInput(t,s,r){if(!(t==16||t==17||t==18||t==224)){var e=0,a=0;t==37&&(t=8,e=4),t==38&&(t=11,e=1),t==39&&(t=9,e=8),t==40&&(t=10,e=2),t==32&&(e=16),t==65&&(t=65,a=4),t==87&&(t=87,a=1),t==68&&(t=68,a=8),t==83&&(t=83,a=2),t==69&&(a=16),t==113&&(t=241),t==115&&(t=243),t==119&&(t=245),t==121&&(t=247),r&1?(this.exports.machine_key_down(this.sys,t),this.joymask0|=e):r&64&&(this.exports.machine_key_up(this.sys,t),this.joymask0&=~e)}}};var g=[{id:"easy_stdio_boxes.c",name:"Standard I/O",category:"C"},{id:"easy_mode_strings.c",name:"Video Modes"},{id:"easy_random.c",name:"Random Numbers"},{id:"easy_sprites.c",name:"Keyboard + Sprites"},{id:"medium_scrolling.c",name:"Scrolling Text"},{id:"siegegame.c",name:"Siege Game"},{id:"music.c",name:"Music Player"},{id:"hello.asm",name:"Hello World",category:"Assembly"}],v={main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"Screen RAM",start:49152,size:16384,type:"ram"}]},i=class extends d{newMachine(){return new o("cpc")}getPresets(){return g}readAddress(c){return this.machine.readConst(c)}getMemoryMap(){return v}showHelp(){return"https://8bitworkshop.com/docs/platforms/cpc/"}};n["cpc.6128"]=i;n["cpc.464"]=i;n["cpc.kcc"]=i; +//# sourceMappingURL=cpc-POCBQYUN.js.map diff --git a/gen/cpc-WIAAKPBY.js.map b/gen/cpc-POCBQYUN.js.map similarity index 100% rename from gen/cpc-WIAAKPBY.js.map rename to gen/cpc-POCBQYUN.js.map diff --git a/gen/devel-BGTXLCQH.js b/gen/devel-DGSIRRCB.js similarity index 95% rename from gen/devel-BGTXLCQH.js rename to gen/devel-DGSIRRCB.js index c021053d..8236568f 100644 --- a/gen/devel-BGTXLCQH.js +++ b/gen/devel-DGSIRRCB.js @@ -1,2 +1,2 @@ -import{G as x,m as p,p as m}from"./chunk-4WX2XTAI.js";import{a as y}from"./chunk-3FIVEUG2.js";import"./chunk-UACHXWHT.js";import{C as d,K as f,V as c,ca as a,n as h}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var n=31,s=class extends m{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new p;this.ram=new Uint8Array(16384);this.read=a([[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=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r').appendTo(t);$('

Serial Output

').appendTo(e);var r=$('
').appendTo(e);this.div=r[0]}start(){this.tty=new y(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.lengththis.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}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(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends x{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 l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(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 s}getPresets(){return S}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness}; -//# sourceMappingURL=devel-BGTXLCQH.js.map +import{G as x,m as p,p as m}from"./chunk-MZ43WA3W.js";import{a as y}from"./chunk-3FIVEUG2.js";import"./chunk-UACHXWHT.js";import{C as d,K as f,V as c,ca as a,n as h}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var n=31,s=class extends m{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new p;this.ram=new Uint8Array(16384);this.read=a([[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=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r').appendTo(t);$('

Serial Output

').appendTo(e);var r=$('
').appendTo(e);this.div=r[0]}start(){this.tty=new y(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.lengththis.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}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(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends x{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 l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(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 s}getPresets(){return S}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness}; +//# sourceMappingURL=devel-DGSIRRCB.js.map diff --git a/gen/devel-BGTXLCQH.js.map b/gen/devel-DGSIRRCB.js.map similarity index 100% rename from gen/devel-BGTXLCQH.js.map rename to gen/devel-DGSIRRCB.js.map diff --git a/gen/embedui.js b/gen/embedui.js index e59fda0c..90e7dc2b 100644 --- a/gen/embedui.js +++ b/gen/embedui.js @@ -1,2 +1,2 @@ -import{b as v,c as P}from"./chunk-EY5LTL52.js";import{A as p,E as w,K as c,l as u,m,y as g}from"./chunk-EK7ZCXAS.js";import{e as I}from"./chunk-VSC4MAII.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t{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=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(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 v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}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,k.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 v,c as P}from"./chunk-2I4PZDSN.js";import{A as p,E as w,K as c,l as u,m,y as g}from"./chunk-ZTLOJICZ.js";import{e as I}from"./chunk-VSC4MAII.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t{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=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(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 v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}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,k.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 diff --git a/gen/exidy-7W6HSMGU.js b/gen/exidy-5ESAAHB5.js similarity index 97% rename from gen/exidy-7W6HSMGU.js rename to gen/exidy-5ESAAHB5.js index 2f118444..50702fba 100644 --- a/gen/exidy-7W6HSMGU.js +++ b/gen/exidy-5ESAAHB5.js @@ -1,2 +1,2 @@ -import{G,m as S,r as k}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{$ as R,K as P,Y as c,Z as v,ca as C}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var T=R([[c.START,1,-1],[c.RIGHT,1,-4],[c.LEFT,1,-8],[c.A,1,-16],[c.UP,1,-32],[c.DOWN,1,-64],[c.SELECT,1,-128]]);var U={collision_mask:4,collision_invert:4,scrnbase:16384,charbase:18432};var b=class extends k{constructor(){super();this.cpuFrequency=705562;this.sampleRate=894886;this.numVisibleScanlines=256;this.numTotalScanlines=262;this.cpuCyclesPerLine=42;this.canvasWidth=256;this.defaultROMSize=45056;this.cpu=new S;this.ram=new Uint8Array(28672);this.color_latch=[84,238,107];this.palette=[4278190080,4278190335,4294901760,4294902015,4278255360,4278255615,4294967040,4294967295];this.inputs=new Uint8Array(4);this.keyMap=T;this.handler=v(this.inputs,this.keyMap);this.scrnbase=16384;this.charbase=18432;this.collision_mask=0;this.collision_invert=0;this.current_collision=0;this.pia_regs=new Uint8Array(4);this.bus={read:C([[0,1023,0,t=>this.ram[t]],[4096,16383,0,t=>this.rom[t-4096]],[16384,20479,0,t=>this.ram[t]],[20736,20991,3,t=>t==3?this.int_latch():this.inputs[t]],[20992,21007,3,t=>this.readPIA(t)],[24576,28671,0,t=>this.ram[t]],[32768,65535,0,t=>this.rom[t-32768]]]),write:C([[0,1023,0,(t,e)=>{this.ram[t]=e}],[16384,20479,0,(t,e)=>{this.ram[t]=e}],[20480,20737,0,(t,e)=>{this.ram[t]=e}],[20992,21007,3,(t,e)=>{this.writePIA(t,e)}],[21008,21010,3,(t,e)=>{this.setColorLatch(t,e)}],[24576,28671,0,(t,e)=>{this.ram[t]=e}]])};this.connectCPUMemoryBus(this),this.updatePalette(),this.inputs[0]=234,this.inputs[1]=255}configure(t){this.collision_mask=t.collision_mask,this.collision_invert=t.collision_invert,this.scrnbase=t.scrnbase,this.charbase=t.charbase}loadROM(t){if(super.loadROM(t),t.length==11616)this.rom.set(t.slice(10240,12288),32768),this.rom.set(t.slice(9984,10240),32512),this.rom.set(t.slice(0,10240),2048),this.scrnbase=16384,this.charbase=18432;else if(t.length==14336)this.rom.set(t.slice(13312,14336),32768),this.rom.set(t.slice(12032,12288),32512),this.scrnbase=16384,this.charbase=18432;else if(t.length==32768)this.rom.set(t.slice(30720,32768),32768),this.rom.set(t.slice(0,24576),8192),this.scrnbase=16384,this.charbase=24576;else if(t.length==45056)this.configure(U);else if(t.length!=45056)throw new Error("Warning: ROM size not recognized: "+t.length);let e=32768;this.sprite_gfx=this.rom.subarray(e,e+2048)}read(t){return this.bus.read(t)}readConst(t){return t==20739?this.inputs[3]:this.bus.read(t)}write(t,e){this.bus.write(t,e)}readPIA(t){return this.pia_regs[t&3]}writePIA(t,e){this.pia_regs[t&3]=e}int_latch(){let t=this.inputs[3];t|=this.inputs[1]&128?0:64;let e=this.current_collision^this.collision_invert;return e&=this.collision_mask,t|=e,this.inputs[3]=128,t}checkCollisionM1CHAR(){let t=this.ram[20480],e=this.ram[20544],r=236-t-4,i=244-e-4,a=this.ram[20737];if(a&128&&!(a&16)&&this.collision_mask!=0)return!1;let l=a&32?1:0,o=((this.ram[20736]&15)+16*l)*32;for(let s=0;s<16;s++){let x=i+s;if(x<0||x>=256)continue;let d=x>>3,y=x&7,M=this.sprite_gfx[o+s],m=this.sprite_gfx[o+s+16];for(let n=0;n<16;n++){let _=n<8?M:m,p=n<8?128>>n:128>>n-8;if(!(_&p))continue;let h=r+n;if(h<0||h>=256)continue;let u=h>>3,g=this.ram[this.scrnbase+d*32+u];if(this.ram[this.charbase+g*8+y]&128>>(h&7))return!0}}return!1}checkCollisionM1M2(){let t=236-this.ram[20480]-4,e=244-this.ram[20544]-4,r=236-this.ram[20608]-4,i=244-this.ram[20672]-4;if(t+16<=r||r+16<=t||e+16<=i||i+16<=e)return!1;let a=this.ram[20737],l=a&32?1:0,f=((this.ram[20736]&15)+16*l)*32,o=a&64?1:0,s=((this.ram[20736]>>4)+32+16*o)*32,x=Math.max(t,r),d=Math.min(t+16,r+16),y=Math.max(e,i),M=Math.min(e+16,i+16);for(let m=y;m>h:128>>h-8,I=u<8?this.sprite_gfx[s+_]:this.sprite_gfx[s+_+16],z=u<8?128>>u:128>>u-8;if(g&E&&I&z)return!0}}return!1}updatePalette(){this.set_1_color(0,0),this.set_1_color(1,7),this.set_1_color(2,0),this.set_1_color(3,6),this.set_1_color(4,4),this.set_1_color(5,3),this.set_1_color(6,2),this.set_1_color(7,1)}set_1_color(t,e){let r=this.color_latch[0]&1<=0&&l<16){l=15-l;let f=this.scanline*this.canvasWidth,o=this.sprite_gfx[r+l];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}o=this.sprite_gfx[r+l+16];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s+8;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}}}drawSprite1(){let t=this.ram[20737];if(t&128&&!(t&16)&&this.collision_mask!=0)return;let e=this.ram[20480],r=this.ram[20544],i=t&32?1:0,a=(this.ram[20736]&15)+16*i;this.drawSprite(e,r,a*32,1)}drawSprite2(){let t=this.ram[20737];if(t&64&&this.collision_mask!=0)return;let e=this.ram[20608],r=this.ram[20672],i=t&64?1:0,a=(this.ram[20736]>>4)+0+16*i;this.drawSprite(e,r,a*32,3)}startScanline(){}drawScanline(){let t=this.scanline,e=t>>3,r=t*this.canvasWidth;for(let i=0;i<256;i++){let a=i>>3,l=this.ram[this.scrnbase+e*32+a],f=4+(l>>6&3),s=this.ram[this.charbase+l*8+(t&7)]&128>>(i&7)?f:0;this.pixels[r+i]=this.palette[s]}this.drawSprite2(),this.drawSprite1()}postFrame(){this.current_collision=0,this.collision_mask&4&&this.checkCollisionM1CHAR()&&(this.current_collision|=4),this.collision_mask&16&&this.checkCollisionM1M2()&&(this.current_collision|=16),this.inputs[3]&=127,this.cpu.IRQ()}getVideoParams(){return{width:256,height:256,aspect:6/5}}};var F=[4278190080,4278190335,4278255360,4278255615,4294901760,4294902015,4294967040,4294967295];var L=[{id:"minimal.c",name:"Minimal Example",category:"C"}],w=class extends G{newMachine(){return new b}getPresets(){return L}readAddress(A){return this.machine.readConst(A)}getMemoryMap(){return{main:[{name:"RAM",start:0,size:1024,type:"ram"},{name:"Sprite I/O",start:20480,size:256,type:"io"},{name:"I/O",start:20736,size:3,type:"io"},{name:"PIA 6821",start:20992,size:15,type:"io"},{name:"Color Latches",start:21008,size:3,type:"io"},{name:"Screen RAM",start:16384,size:1024,type:"ram"},{name:"Character RAM",start:18432,size:2048,type:"ram"},{name:"Program ROM",start:32768,size:32768,type:"rom"}]}}};P.exidy=w; -//# sourceMappingURL=exidy-7W6HSMGU.js.map +import{G,m as S,r as k}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{$ as R,K as P,Y as c,Z as v,ca as C}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var T=R([[c.START,1,-1],[c.RIGHT,1,-4],[c.LEFT,1,-8],[c.A,1,-16],[c.UP,1,-32],[c.DOWN,1,-64],[c.SELECT,1,-128]]);var U={collision_mask:4,collision_invert:4,scrnbase:16384,charbase:18432};var b=class extends k{constructor(){super();this.cpuFrequency=705562;this.sampleRate=894886;this.numVisibleScanlines=256;this.numTotalScanlines=262;this.cpuCyclesPerLine=42;this.canvasWidth=256;this.defaultROMSize=45056;this.cpu=new S;this.ram=new Uint8Array(28672);this.color_latch=[84,238,107];this.palette=[4278190080,4278190335,4294901760,4294902015,4278255360,4278255615,4294967040,4294967295];this.inputs=new Uint8Array(4);this.keyMap=T;this.handler=v(this.inputs,this.keyMap);this.scrnbase=16384;this.charbase=18432;this.collision_mask=0;this.collision_invert=0;this.current_collision=0;this.pia_regs=new Uint8Array(4);this.bus={read:C([[0,1023,0,t=>this.ram[t]],[4096,16383,0,t=>this.rom[t-4096]],[16384,20479,0,t=>this.ram[t]],[20736,20991,3,t=>t==3?this.int_latch():this.inputs[t]],[20992,21007,3,t=>this.readPIA(t)],[24576,28671,0,t=>this.ram[t]],[32768,65535,0,t=>this.rom[t-32768]]]),write:C([[0,1023,0,(t,e)=>{this.ram[t]=e}],[16384,20479,0,(t,e)=>{this.ram[t]=e}],[20480,20737,0,(t,e)=>{this.ram[t]=e}],[20992,21007,3,(t,e)=>{this.writePIA(t,e)}],[21008,21010,3,(t,e)=>{this.setColorLatch(t,e)}],[24576,28671,0,(t,e)=>{this.ram[t]=e}]])};this.connectCPUMemoryBus(this),this.updatePalette(),this.inputs[0]=234,this.inputs[1]=255}configure(t){this.collision_mask=t.collision_mask,this.collision_invert=t.collision_invert,this.scrnbase=t.scrnbase,this.charbase=t.charbase}loadROM(t){if(super.loadROM(t),t.length==11616)this.rom.set(t.slice(10240,12288),32768),this.rom.set(t.slice(9984,10240),32512),this.rom.set(t.slice(0,10240),2048),this.scrnbase=16384,this.charbase=18432;else if(t.length==14336)this.rom.set(t.slice(13312,14336),32768),this.rom.set(t.slice(12032,12288),32512),this.scrnbase=16384,this.charbase=18432;else if(t.length==32768)this.rom.set(t.slice(30720,32768),32768),this.rom.set(t.slice(0,24576),8192),this.scrnbase=16384,this.charbase=24576;else if(t.length==45056)this.configure(U);else if(t.length!=45056)throw new Error("Warning: ROM size not recognized: "+t.length);let e=32768;this.sprite_gfx=this.rom.subarray(e,e+2048)}read(t){return this.bus.read(t)}readConst(t){return t==20739?this.inputs[3]:this.bus.read(t)}write(t,e){this.bus.write(t,e)}readPIA(t){return this.pia_regs[t&3]}writePIA(t,e){this.pia_regs[t&3]=e}int_latch(){let t=this.inputs[3];t|=this.inputs[1]&128?0:64;let e=this.current_collision^this.collision_invert;return e&=this.collision_mask,t|=e,this.inputs[3]=128,t}checkCollisionM1CHAR(){let t=this.ram[20480],e=this.ram[20544],r=236-t-4,i=244-e-4,a=this.ram[20737];if(a&128&&!(a&16)&&this.collision_mask!=0)return!1;let l=a&32?1:0,o=((this.ram[20736]&15)+16*l)*32;for(let s=0;s<16;s++){let x=i+s;if(x<0||x>=256)continue;let d=x>>3,y=x&7,M=this.sprite_gfx[o+s],m=this.sprite_gfx[o+s+16];for(let n=0;n<16;n++){let _=n<8?M:m,p=n<8?128>>n:128>>n-8;if(!(_&p))continue;let h=r+n;if(h<0||h>=256)continue;let u=h>>3,g=this.ram[this.scrnbase+d*32+u];if(this.ram[this.charbase+g*8+y]&128>>(h&7))return!0}}return!1}checkCollisionM1M2(){let t=236-this.ram[20480]-4,e=244-this.ram[20544]-4,r=236-this.ram[20608]-4,i=244-this.ram[20672]-4;if(t+16<=r||r+16<=t||e+16<=i||i+16<=e)return!1;let a=this.ram[20737],l=a&32?1:0,f=((this.ram[20736]&15)+16*l)*32,o=a&64?1:0,s=((this.ram[20736]>>4)+32+16*o)*32,x=Math.max(t,r),d=Math.min(t+16,r+16),y=Math.max(e,i),M=Math.min(e+16,i+16);for(let m=y;m>h:128>>h-8,I=u<8?this.sprite_gfx[s+_]:this.sprite_gfx[s+_+16],z=u<8?128>>u:128>>u-8;if(g&E&&I&z)return!0}}return!1}updatePalette(){this.set_1_color(0,0),this.set_1_color(1,7),this.set_1_color(2,0),this.set_1_color(3,6),this.set_1_color(4,4),this.set_1_color(5,3),this.set_1_color(6,2),this.set_1_color(7,1)}set_1_color(t,e){let r=this.color_latch[0]&1<=0&&l<16){l=15-l;let f=this.scanline*this.canvasWidth,o=this.sprite_gfx[r+l];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}o=this.sprite_gfx[r+l+16];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s+8;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}}}drawSprite1(){let t=this.ram[20737];if(t&128&&!(t&16)&&this.collision_mask!=0)return;let e=this.ram[20480],r=this.ram[20544],i=t&32?1:0,a=(this.ram[20736]&15)+16*i;this.drawSprite(e,r,a*32,1)}drawSprite2(){let t=this.ram[20737];if(t&64&&this.collision_mask!=0)return;let e=this.ram[20608],r=this.ram[20672],i=t&64?1:0,a=(this.ram[20736]>>4)+0+16*i;this.drawSprite(e,r,a*32,3)}startScanline(){}drawScanline(){let t=this.scanline,e=t>>3,r=t*this.canvasWidth;for(let i=0;i<256;i++){let a=i>>3,l=this.ram[this.scrnbase+e*32+a],f=4+(l>>6&3),s=this.ram[this.charbase+l*8+(t&7)]&128>>(i&7)?f:0;this.pixels[r+i]=this.palette[s]}this.drawSprite2(),this.drawSprite1()}postFrame(){this.current_collision=0,this.collision_mask&4&&this.checkCollisionM1CHAR()&&(this.current_collision|=4),this.collision_mask&16&&this.checkCollisionM1M2()&&(this.current_collision|=16),this.inputs[3]&=127,this.cpu.IRQ()}getVideoParams(){return{width:256,height:256,aspect:6/5}}};var F=[4278190080,4278190335,4278255360,4278255615,4294901760,4294902015,4294967040,4294967295];var L=[{id:"minimal.c",name:"Minimal Example",category:"C"}],w=class extends G{newMachine(){return new b}getPresets(){return L}readAddress(A){return this.machine.readConst(A)}getMemoryMap(){return{main:[{name:"RAM",start:0,size:1024,type:"ram"},{name:"Sprite I/O",start:20480,size:256,type:"io"},{name:"I/O",start:20736,size:3,type:"io"},{name:"PIA 6821",start:20992,size:15,type:"io"},{name:"Color Latches",start:21008,size:3,type:"io"},{name:"Screen RAM",start:16384,size:1024,type:"ram"},{name:"Character RAM",start:18432,size:2048,type:"ram"},{name:"Program ROM",start:32768,size:32768,type:"rom"}]}}};P.exidy=w; +//# sourceMappingURL=exidy-5ESAAHB5.js.map diff --git a/gen/exidy-7W6HSMGU.js.map b/gen/exidy-5ESAAHB5.js.map similarity index 100% rename from gen/exidy-7W6HSMGU.js.map rename to gen/exidy-5ESAAHB5.js.map diff --git a/gen/galaxian-T4CARUIR.js b/gen/galaxian-5K5GYCNO.js similarity index 96% rename from gen/galaxian-T4CARUIR.js rename to gen/galaxian-5K5GYCNO.js index 7b695228..ac781461 100644 --- a/gen/galaxian-T4CARUIR.js +++ b/gen/galaxian-5K5GYCNO.js @@ -1,2 +1,2 @@ -import{H as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{$ as F,K as P,L as N,T as Y,Y as s,Z as q,ba as Z,ca as _}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,r,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var e=0;e<264;e++)c[l+e]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=A+(d&h?1:0)+(v&h?2:0);c[a]=r[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],B=240-(f0-(w<3?1:0)),o=x-B;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-e:a+e]=r[A+p])}for(var d=n[m+8],v=n[m+2056],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-e:a+e+8]=r[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var B=t[96+(i<<2)+1];(B+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var e=0;e<2;e++)if(i=e?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;Hthis.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,r)=>{this.ram[t]=r}],[20480,22527,1023,(t,r)=>{this.vram[t]=r}],[22528,24575,255,(t,r)=>{this.oram[t]=r}],[28673,28673,0,(t,r)=>{this.interruptEnabled=r&1}],[28676,28676,0,(t,r)=>{this.gfx.starsEnabled=r&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,r)=>{t&1&&this.psg1.selectRegister(r&15),t&2&&this.psg1.setData(r),t&4&&this.psg2.selectRegister(r&15),t&8&&this.psg2.setData(r)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var r=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),r}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var r=0;r<32;r++){var f=this.rom[this.palBase+r];this.palette[r]=4278190080;for(var u=0;u<8;u++)1<this.rom[t]],[16384,18431,2047,t=>this.ram[t]],[18432,20479,1023,t=>this.vram[t]],[20480,24575,255,t=>this.oram[t]],[28672,28672,0,t=>{this.watchdog_counter=M}],[30720,30720,0,t=>{this.watchdog_counter=M}],[33024,33024,0,t=>this.inputs[0]],[33025,33025,0,t=>this.inputs[1]],[33026,33026,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[33282,33282,0,t=>this.m_protection_result],[37120,37120,0,t=>this.inputs[0]],[37121,37121,0,t=>this.inputs[1]],[37122,37122,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[37394,37394,0,t=>this.m_protection_result]]);this.write=_([[16384,18431,2047,(t,r)=>{this.ram[t]=r}],[18432,20479,1023,(t,r)=>{this.vram[t]=r}],[20480,24575,255,(t,r)=>{this.oram[t]=r}],[26625,26625,0,(t,r)=>{this.interruptEnabled=r&1}],[26626,26626,0,(t,r)=>{}],[26627,26627,0,(t,r)=>{}],[26628,26628,0,(t,r)=>{this.gfx.starsEnabled=r&1}],[26632,26632,0,(t,r)=>{this.gfx.missileWidth=r}],[26633,26633,0,(t,r)=>{this.gfx.missileOffset=r}],[33282,33282,0,this.scramble_protection_w.bind(this)]]);this.m_protection_state=0;this.m_protection_result=0;this.init()}scramble_protection_w(t,r){switch(this.m_protection_state=this.m_protection_state<<4|r&15,this.m_protection_state&4095){case 3849:this.m_protection_result=255;break;case 2633:this.m_protection_result=191;break;case 793:this.m_protection_result=79;break;case 1481:this.m_protection_result=111;break;case 582:this.m_protection_result^=128;break;case 2911:this.m_protection_result=111;break}}scramble_protection_alt_r(){var t=this.m_protection_result>>7&1;return t<<5|(t^1)<<7}};var R=class extends Q{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Video RAM",start:20480,size:1024,type:"ram"},{name:"Sprite RAM",start:22528,size:256,type:"ram"},{name:"I/O Registers",start:24576,size:8192,type:"io"}]}}}newMachine(){return new g}getPresets(){return[]}readAddress(t){return this.machine.readConst(t)}readVRAMAddress(t){return t<2048?this.machine.vram[t]:this.machine.oram[t-2048]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#galaxian-scramble"}},U=class extends R{newMachine(){return new S}};P.galaxian=R;P["galaxian-scramble"]=U; -//# sourceMappingURL=galaxian-T4CARUIR.js.map +import{H as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{$ as F,K as P,L as N,T as Y,Y as s,Z as q,ba as Z,ca as _}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,r,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var e=0;e<264;e++)c[l+e]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=A+(d&h?1:0)+(v&h?2:0);c[a]=r[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],B=240-(f0-(w<3?1:0)),o=x-B;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-e:a+e]=r[A+p])}for(var d=n[m+8],v=n[m+2056],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-e:a+e+8]=r[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var B=t[96+(i<<2)+1];(B+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var e=0;e<2;e++)if(i=e?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;Hthis.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,r)=>{this.ram[t]=r}],[20480,22527,1023,(t,r)=>{this.vram[t]=r}],[22528,24575,255,(t,r)=>{this.oram[t]=r}],[28673,28673,0,(t,r)=>{this.interruptEnabled=r&1}],[28676,28676,0,(t,r)=>{this.gfx.starsEnabled=r&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,r)=>{t&1&&this.psg1.selectRegister(r&15),t&2&&this.psg1.setData(r),t&4&&this.psg2.selectRegister(r&15),t&8&&this.psg2.setData(r)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var r=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),r}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var r=0;r<32;r++){var f=this.rom[this.palBase+r];this.palette[r]=4278190080;for(var u=0;u<8;u++)1<this.rom[t]],[16384,18431,2047,t=>this.ram[t]],[18432,20479,1023,t=>this.vram[t]],[20480,24575,255,t=>this.oram[t]],[28672,28672,0,t=>{this.watchdog_counter=M}],[30720,30720,0,t=>{this.watchdog_counter=M}],[33024,33024,0,t=>this.inputs[0]],[33025,33025,0,t=>this.inputs[1]],[33026,33026,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[33282,33282,0,t=>this.m_protection_result],[37120,37120,0,t=>this.inputs[0]],[37121,37121,0,t=>this.inputs[1]],[37122,37122,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[37394,37394,0,t=>this.m_protection_result]]);this.write=_([[16384,18431,2047,(t,r)=>{this.ram[t]=r}],[18432,20479,1023,(t,r)=>{this.vram[t]=r}],[20480,24575,255,(t,r)=>{this.oram[t]=r}],[26625,26625,0,(t,r)=>{this.interruptEnabled=r&1}],[26626,26626,0,(t,r)=>{}],[26627,26627,0,(t,r)=>{}],[26628,26628,0,(t,r)=>{this.gfx.starsEnabled=r&1}],[26632,26632,0,(t,r)=>{this.gfx.missileWidth=r}],[26633,26633,0,(t,r)=>{this.gfx.missileOffset=r}],[33282,33282,0,this.scramble_protection_w.bind(this)]]);this.m_protection_state=0;this.m_protection_result=0;this.init()}scramble_protection_w(t,r){switch(this.m_protection_state=this.m_protection_state<<4|r&15,this.m_protection_state&4095){case 3849:this.m_protection_result=255;break;case 2633:this.m_protection_result=191;break;case 793:this.m_protection_result=79;break;case 1481:this.m_protection_result=111;break;case 582:this.m_protection_result^=128;break;case 2911:this.m_protection_result=111;break}}scramble_protection_alt_r(){var t=this.m_protection_result>>7&1;return t<<5|(t^1)<<7}};var R=class extends Q{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Video RAM",start:20480,size:1024,type:"ram"},{name:"Sprite RAM",start:22528,size:256,type:"ram"},{name:"I/O Registers",start:24576,size:8192,type:"io"}]}}}newMachine(){return new g}getPresets(){return[]}readAddress(t){return this.machine.readConst(t)}readVRAMAddress(t){return t<2048?this.machine.vram[t]:this.machine.oram[t-2048]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#galaxian-scramble"}},U=class extends R{newMachine(){return new S}};P.galaxian=R;P["galaxian-scramble"]=U; +//# sourceMappingURL=galaxian-5K5GYCNO.js.map diff --git a/gen/galaxian-T4CARUIR.js.map b/gen/galaxian-5K5GYCNO.js.map similarity index 100% rename from gen/galaxian-T4CARUIR.js.map rename to gen/galaxian-5K5GYCNO.js.map diff --git a/gen/gb-AK7YB3TT.js b/gen/gb-EL7XYT3L.js similarity index 99% rename from gen/gb-AK7YB3TT.js rename to gen/gb-EL7XYT3L.js index bdf6e1b3..39a745e1 100644 --- a/gen/gb-AK7YB3TT.js +++ b/gen/gb-EL7XYT3L.js @@ -1,4 +1,4 @@ -import{a as L}from"./chunk-A7SWO6EA.js";import{B as Y,E as $,F as J,r as K,u as V}from"./chunk-4WX2XTAI.js";import{b as Z}from"./chunk-UACHXWHT.js";import{$ as N,K as j,T as O,Y as f,Z as z,ca as W,g as n}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var b=class b{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&b.FLAG_Z)}getN(){return!!(this.F&b.FLAG_N)}getH(){return!!(this.F&b.FLAG_H)}getC(){return!!(this.F&b.FLAG_C)}setZ(t){t?this.F|=b.FLAG_Z:this.F&=~b.FLAG_Z}setN(t){t?this.F|=b.FLAG_N:this.F&=~b.FLAG_N}setH(t){t?this.F|=b.FLAG_H:this.F&=~b.FLAG_H}setC(t){t?this.F|=b.FLAG_C:this.F&=~b.FLAG_C}setFlags(t,e,s,i){this.F=(t?b.FLAG_Z:0)|(e?b.FLAG_N:0)|(s?b.FLAG_H:0)|(i?b.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH()||(t&15)>9)&&(t+=6)),t&=255,this.setZ(t===0),this.setH(!1),this.A=t}cbOp(t){var e=t>>3&31,s=t&7,i=this.getReg(s),h=s===6?4:2,r;if(t<64){switch(e){case 0:r=(i<<1|i>>7)&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 1:r=(i>>1|i<<7)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 2:r=(i<<1|(this.getC()?1:0))&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 3:r=(i>>1|(this.getC()?128:0))&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 4:r=i<<1&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 5:r=(i>>1|i&128)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 6:r=(i&15)<<4|(i&240)>>4,this.setFlags(r===0,!1,!1,!1);break;case 7:r=i>>1&255,this.setFlags(r===0,!1,!1,!!(i&1));break;default:r=i}this.setReg(s,r),s===6&&(h=4)}else if(t<128){var a=t>>3&7;this.setZ(!(i&1<>3&7;this.setReg(s,i&~(1<>3&7;this.setReg(s,i|1<0)return t;if(this.halted)return 1;this.stable=!0;var e=this.fetchByte();this.o=e,this.stable=!1;var s=this.executeOpcode(e);return this.stable=!0,s}executeOpcode(t){var e=t>>6&3,s=t>>3&7,i=t&7,h=s>>1&3,r=s&1;switch(e){case 0:return this.execX0(s,i,h,r,t);case 1:return i===6&&s===6?(this.halted=!0,1):(this.setReg(s,this.getReg(i)),s===6||i===6?2:1);case 2:return this.aluOp(s,this.getReg(i)),i===6?2:1;case 3:return this.execX3(s,i,h,r,t)}return 1}execX0(t,e,s,i,h){switch(e){case 0:switch(t){case 0:return 1;case 1:var r=this.fetchWord();return this.writeWord(r,this.SP),5;case 2:return this.PC=this.PC+1&65535,1;case 3:var a=this.fetchSignedByte();return this.PC=this.PC+a&65535,3;case 4:case 5:case 6:case 7:var a=this.fetchSignedByte();return this.checkCondition(t-4)?(this.PC=this.PC+a&65535,3):2}break;case 1:return i===0?(this.setReg16(s,this.fetchWord()),3):(this.addHL(this.getReg16(s)),2);case 2:if(i===0)switch(s){case 0:return this.write(this.getBC(),this.A),2;case 1:return this.write(this.getDE(),this.A),2;case 2:return this.write(this.getHL(),this.A),this.setHL(this.getHL()+1&65535),2;case 3:return this.write(this.getHL(),this.A),this.setHL(this.getHL()-1&65535),2}else switch(s){case 0:return this.A=this.read(this.getBC()),2;case 1:return this.A=this.read(this.getDE()),2;case 2:return this.A=this.read(this.getHL()),this.setHL(this.getHL()+1&65535),2;case 3:return this.A=this.read(this.getHL()),this.setHL(this.getHL()-1&65535),2}break;case 3:return i===0?(this.setReg16(s,this.getReg16(s)+1&65535),2):(this.setReg16(s,this.getReg16(s)-1&65535),2);case 4:return this.setReg(t,this.inc8(this.getReg(t))),t===6?3:1;case 5:return this.setReg(t,this.dec8(this.getReg(t))),t===6?3:1;case 6:return this.setReg(t,this.fetchByte()),t===6?3:2;case 7:switch(t){case 0:var c=this.A>>7&1;return this.A=(this.A<<1|c)&255,this.setFlags(!1,!1,!1,!!c),1;case 1:var d=this.A&1;return this.A=(this.A>>1|d<<7)&255,this.setFlags(!1,!1,!1,!!d),1;case 2:var c=this.A>>7&1;return this.A=(this.A<<1|(this.getC()?1:0))&255,this.setFlags(!1,!1,!1,!!c),1;case 3:var d=this.A&1;return this.A=(this.A>>1|(this.getC()?128:0))&255,this.setFlags(!1,!1,!1,!!d),1;case 4:return this.daa(),1;case 5:return this.A=~this.A&255,this.setN(!0),this.setH(!0),1;case 6:return this.setN(!1),this.setH(!1),this.setC(!0),1;case 7:return this.setN(!1),this.setH(!1),this.setC(!this.getC()),1}break}return 1}execX3(t,e,s,i,h){switch(e){case 0:switch(t){case 0:case 1:case 2:case 3:return this.checkCondition(t)?(this.PC=this.popWord(),5):2;case 4:var r=this.fetchByte();return this.write(65280+r,this.A),3;case 5:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.SP=c,4;case 6:var r=this.fetchByte();return this.A=this.read(65280+r),3;case 7:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.setHL(c),3}break;case 1:if(i===0)return this.setReg16AF(s,this.popWord()),3;switch(s){case 0:return this.PC=this.popWord(),4;case 1:return this.PC=this.popWord(),this.ime=!0,4;case 2:return this.PC=this.getHL(),1;case 3:return this.SP=this.getHL(),2}break;case 2:switch(t){case 0:case 1:case 2:case 3:var d=this.fetchWord();return this.checkCondition(t)?(this.PC=d,4):3;case 4:return this.write(65280+this.C,this.A),2;case 5:return this.write(this.fetchWord(),this.A),4;case 6:return this.A=this.read(65280+this.C),2;case 7:return this.A=this.read(this.fetchWord()),4}break;case 3:switch(t){case 0:return this.PC=this.fetchWord(),4;case 1:var l=this.fetchByte();return 2+this.cbOp(l);case 6:return this.ime=!1,this.imeDelay=!1,1;case 7:return this.imeDelay=!0,1;default:return 1}case 4:switch(t){case 0:case 1:case 2:case 3:var d=this.fetchWord();return this.checkCondition(t)?(this.pushWord(this.PC),this.PC=d,6):3;default:return 1}case 5:if(i===0)return this.pushWord(this.getReg16AF(s)),4;if(s===0){var d=this.fetchWord();return this.pushWord(this.PC),this.PC=d,6}return 1;case 6:return this.aluOp(t,this.fetchByte()),2;case 7:return this.pushWord(this.PC),this.PC=t*8,4}return 1}};b.FLAG_Z=128,b.FLAG_N=64,b.FLAG_H=32,b.FLAG_C=16;var D=b;function he(A,t){var e=A&31,s=(A>>5|(t&3)<<3)&31,i=t>>2&31,h=e*527+23>>6,r=s*527+23>>6,a=i*527+23>>6;return 4278190080|a<<16|r<<8|h}var Q=new Uint8Array([255,127,181,86,74,41,0,0]),re=N([[f.RIGHT,0,1],[f.LEFT,0,2],[f.UP,0,4],[f.DOWN,0,8],[f.A,0,16],[f.B,0,32],[f.GP_A,0,16],[f.GP_B,0,32],[f.SELECT,0,64],[f.START,0,128],[f.VK_ENTER,0,128],[f.VK_SHIFT,0,64]]),X=[[0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,1],[1,0,0,0,0,1,1,1],[0,1,1,1,1,1,1,0]],x=new Uint8Array(48);x[0]=128,x[1]=63,x[2]=0,x[3]=255,x[4]=191,x[5]=255,x[6]=63,x[7]=0,x[8]=255,x[9]=191,x[10]=127,x[11]=255,x[12]=159,x[13]=255,x[14]=191,x[15]=255,x[16]=255,x[17]=0,x[18]=0,x[19]=191,x[20]=0,x[21]=0,x[22]=112;var G=class{constructor(){this.enabled=!1;this.nr50=0;this.nr51=0;this.ch1_enabled=!1;this.ch1_dacEnabled=!1;this.ch1_duty=0;this.ch1_dutyPos=0;this.ch1_lengthCounter=0;this.ch1_lengthEnabled=!1;this.ch1_volume=0;this.ch1_envInitVol=0;this.ch1_envDir=0;this.ch1_envPeriod=0;this.ch1_envTimer=0;this.ch1_freq=0;this.ch1_freqTimer=0;this.ch1_sweepPeriod=0;this.ch1_sweepDir=0;this.ch1_sweepShift=0;this.ch1_sweepTimer=0;this.ch1_sweepEnabled=!1;this.ch1_sweepShadow=0;this.ch2_enabled=!1;this.ch2_dacEnabled=!1;this.ch2_duty=0;this.ch2_dutyPos=0;this.ch2_lengthCounter=0;this.ch2_lengthEnabled=!1;this.ch2_volume=0;this.ch2_envInitVol=0;this.ch2_envDir=0;this.ch2_envPeriod=0;this.ch2_envTimer=0;this.ch2_freq=0;this.ch2_freqTimer=0;this.ch3_enabled=!1;this.ch3_dacEnabled=!1;this.ch3_lengthCounter=0;this.ch3_lengthEnabled=!1;this.ch3_volume=0;this.ch3_freq=0;this.ch3_freqTimer=0;this.ch3_samplePos=0;this.ch3_sampleBuffer=0;this.waveRAM=new Uint8Array(16);this.ch4_enabled=!1;this.ch4_dacEnabled=!1;this.ch4_lengthCounter=0;this.ch4_lengthEnabled=!1;this.ch4_volume=0;this.ch4_envInitVol=0;this.ch4_envDir=0;this.ch4_envPeriod=0;this.ch4_envTimer=0;this.ch4_clockShift=0;this.ch4_widthMode=0;this.ch4_divisor=0;this.ch4_freqTimer=0;this.ch4_lfsr=32767;this.frameSeqTimer=0;this.frameSeqStep=0;this.regs=new Uint8Array(48)}reset(){this.enabled=!1,this.nr50=0,this.nr51=0,this.ch1_enabled=!1,this.ch1_dacEnabled=!1,this.ch1_duty=0,this.ch1_dutyPos=0,this.ch1_lengthCounter=0,this.ch1_lengthEnabled=!1,this.ch1_volume=0,this.ch1_envInitVol=0,this.ch1_envDir=0,this.ch1_envPeriod=0,this.ch1_envTimer=0,this.ch1_freq=0,this.ch1_freqTimer=0,this.ch1_sweepPeriod=0,this.ch1_sweepDir=0,this.ch1_sweepShift=0,this.ch1_sweepTimer=0,this.ch1_sweepEnabled=!1,this.ch1_sweepShadow=0,this.ch2_enabled=!1,this.ch2_dacEnabled=!1,this.ch2_duty=0,this.ch2_dutyPos=0,this.ch2_lengthCounter=0,this.ch2_lengthEnabled=!1,this.ch2_volume=0,this.ch2_envInitVol=0,this.ch2_envDir=0,this.ch2_envPeriod=0,this.ch2_envTimer=0,this.ch2_freq=0,this.ch2_freqTimer=0,this.ch3_enabled=!1,this.ch3_dacEnabled=!1,this.ch3_lengthCounter=0,this.ch3_lengthEnabled=!1,this.ch3_volume=0,this.ch3_freq=0,this.ch3_freqTimer=0,this.ch3_samplePos=0,this.ch3_sampleBuffer=0,this.waveRAM.fill(0),this.ch4_enabled=!1,this.ch4_dacEnabled=!1,this.ch4_lengthCounter=0,this.ch4_lengthEnabled=!1,this.ch4_volume=0,this.ch4_envInitVol=0,this.ch4_envDir=0,this.ch4_envPeriod=0,this.ch4_envTimer=0,this.ch4_clockShift=0,this.ch4_widthMode=0,this.ch4_divisor=0,this.ch4_freqTimer=0,this.ch4_lfsr=32767,this.frameSeqTimer=0,this.frameSeqStep=0,this.regs.fill(0)}readRegister(t){if(t>=48&&t<=63)return this.ch3_enabled?this.waveRAM[this.ch3_samplePos>>1]:this.waveRAM[t-48];if(t===38){var e=(this.enabled?128:0)|(this.ch1_enabled?1:0)|(this.ch2_enabled?2:0)|(this.ch3_enabled?4:0)|(this.ch4_enabled?8:0);return e|112}if(!this.enabled)return 255;var s=t-16;return this.regs[s]|x[s]}writeRegister(t,e){if(t>=48&&t<=63){this.waveRAM[t-48]=e;return}if(t===38){var s=this.enabled;if(this.enabled=!!(e&128),s&&!this.enabled){for(var i=16;i<=37;i++)this.writeRegister(i,0);this.ch1_enabled=!1,this.ch2_enabled=!1,this.ch3_enabled=!1,this.ch4_enabled=!1}!s&&this.enabled&&(this.frameSeqTimer=0,this.frameSeqStep=0);return}if(this.enabled){var h=t-16;switch(this.regs[h]=e,t){case 16:this.ch1_sweepPeriod=e>>4&7,this.ch1_sweepDir=e>>3&1,this.ch1_sweepShift=e&7;break;case 17:this.ch1_duty=e>>6&3,this.ch1_lengthCounter=64-(e&63);break;case 18:this.ch1_envInitVol=e>>4&15,this.ch1_envDir=e>>3&1,this.ch1_envPeriod=e&7,this.ch1_dacEnabled=(e&248)!==0,this.ch1_dacEnabled||(this.ch1_enabled=!1);break;case 19:this.ch1_freq=this.ch1_freq&1792|e;break;case 20:this.ch1_freq=this.ch1_freq&255|(e&7)<<8,this.ch1_lengthEnabled=!!(e&64),e&128&&this.triggerChannel1();break;case 22:this.ch2_duty=e>>6&3,this.ch2_lengthCounter=64-(e&63);break;case 23:this.ch2_envInitVol=e>>4&15,this.ch2_envDir=e>>3&1,this.ch2_envPeriod=e&7,this.ch2_dacEnabled=(e&248)!==0,this.ch2_dacEnabled||(this.ch2_enabled=!1);break;case 24:this.ch2_freq=this.ch2_freq&1792|e;break;case 25:this.ch2_freq=this.ch2_freq&255|(e&7)<<8,this.ch2_lengthEnabled=!!(e&64),e&128&&this.triggerChannel2();break;case 26:this.ch3_dacEnabled=!!(e&128),this.ch3_dacEnabled||(this.ch3_enabled=!1);break;case 27:this.ch3_lengthCounter=256-e;break;case 28:this.ch3_volume=e>>5&3;break;case 29:this.ch3_freq=this.ch3_freq&1792|e;break;case 30:this.ch3_freq=this.ch3_freq&255|(e&7)<<8,this.ch3_lengthEnabled=!!(e&64),e&128&&this.triggerChannel3();break;case 32:this.ch4_lengthCounter=64-(e&63);break;case 33:this.ch4_envInitVol=e>>4&15,this.ch4_envDir=e>>3&1,this.ch4_envPeriod=e&7,this.ch4_dacEnabled=(e&248)!==0,this.ch4_dacEnabled||(this.ch4_enabled=!1);break;case 34:this.ch4_clockShift=e>>4&15,this.ch4_widthMode=e>>3&1,this.ch4_divisor=e&7;break;case 35:this.ch4_lengthEnabled=!!(e&64),e&128&&this.triggerChannel4();break;case 36:this.nr50=e;break;case 37:this.nr51=e;break}}}triggerChannel1(){this.ch1_dacEnabled&&(this.ch1_enabled=!0),this.ch1_lengthCounter===0&&(this.ch1_lengthCounter=64),this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_volume=this.ch1_envInitVol,this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_sweepShadow=this.ch1_freq,this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepEnabled=this.ch1_sweepPeriod>0||this.ch1_sweepShift>0,this.ch1_sweepShift>0&&this.calcSweepFreq()}triggerChannel2(){this.ch2_dacEnabled&&(this.ch2_enabled=!0),this.ch2_lengthCounter===0&&(this.ch2_lengthCounter=64),this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_volume=this.ch2_envInitVol,this.ch2_envTimer=this.ch2_envPeriod||8}triggerChannel3(){this.ch3_dacEnabled&&(this.ch3_enabled=!0),this.ch3_lengthCounter===0&&(this.ch3_lengthCounter=256),this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=0}triggerChannel4(){this.ch4_dacEnabled&&(this.ch4_enabled=!0),this.ch4_lengthCounter===0&&(this.ch4_lengthCounter=64);var t=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=t<>this.ch1_sweepShift;return this.ch1_sweepDir?t=this.ch1_sweepShadow-t:t=this.ch1_sweepShadow+t,t>2047&&(this.ch1_enabled=!1),t}clock(t){if(this.enabled)for(var e=0;e=8192&&(this.frameSeqTimer=0,this.clockFrameSequencer()),this.ch1_enabled&&(this.ch1_freqTimer--,this.ch1_freqTimer<=0&&(this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_dutyPos=this.ch1_dutyPos+1&7)),this.ch2_enabled&&(this.ch2_freqTimer--,this.ch2_freqTimer<=0&&(this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_dutyPos=this.ch2_dutyPos+1&7)),this.ch3_enabled&&(this.ch3_freqTimer--,this.ch3_freqTimer<=0)){this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=this.ch3_samplePos+1&31;var s=this.waveRAM[this.ch3_samplePos>>1];this.ch3_sampleBuffer=this.ch3_samplePos&1?s&15:s>>4}if(this.ch4_enabled&&(this.ch4_freqTimer--,this.ch4_freqTimer<=0)){var i=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=i<>1&1;this.ch4_lfsr=this.ch4_lfsr>>1|h<<14,this.ch4_widthMode&&(this.ch4_lfsr=this.ch4_lfsr&-65|h<<6)}}}clockFrameSequencer(){(this.frameSeqStep&1)===0&&this.clockLengthCounters(),(this.frameSeqStep===2||this.frameSeqStep===6)&&this.clockSweep(),this.frameSeqStep===7&&this.clockEnvelopes(),this.frameSeqStep=this.frameSeqStep+1&7}clockLengthCounters(){this.ch1_lengthEnabled&&this.ch1_lengthCounter>0&&(this.ch1_lengthCounter--,this.ch1_lengthCounter===0&&(this.ch1_enabled=!1)),this.ch2_lengthEnabled&&this.ch2_lengthCounter>0&&(this.ch2_lengthCounter--,this.ch2_lengthCounter===0&&(this.ch2_enabled=!1)),this.ch3_lengthEnabled&&this.ch3_lengthCounter>0&&(this.ch3_lengthCounter--,this.ch3_lengthCounter===0&&(this.ch3_enabled=!1)),this.ch4_lengthEnabled&&this.ch4_lengthCounter>0&&(this.ch4_lengthCounter--,this.ch4_lengthCounter===0&&(this.ch4_enabled=!1))}clockSweep(){if(this.ch1_sweepEnabled&&(this.ch1_sweepTimer--,this.ch1_sweepTimer<=0&&(this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepPeriod>0))){var t=this.calcSweepFreq();t<=2047&&this.ch1_sweepShift>0&&(this.ch1_sweepShadow=t,this.ch1_freq=t,this.calcSweepFreq())}}clockEnvelopes(){this.ch1_envPeriod>0&&(this.ch1_envTimer--,this.ch1_envTimer<=0&&(this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_envDir&&this.ch1_volume<15?this.ch1_volume++:!this.ch1_envDir&&this.ch1_volume>0&&this.ch1_volume--)),this.ch2_envPeriod>0&&(this.ch2_envTimer--,this.ch2_envTimer<=0&&(this.ch2_envTimer=this.ch2_envPeriod||8,this.ch2_envDir&&this.ch2_volume<15?this.ch2_volume++:!this.ch2_envDir&&this.ch2_volume>0&&this.ch2_volume--)),this.ch4_envPeriod>0&&(this.ch4_envTimer--,this.ch4_envTimer<=0&&(this.ch4_envTimer=this.ch4_envPeriod||8,this.ch4_envDir&&this.ch4_volume<15?this.ch4_volume++:!this.ch4_envDir&&this.ch4_volume>0&&this.ch4_volume--))}getSample(){if(!this.enabled)return 0;var t=0,e=0,s=0,i=0;if(this.ch1_enabled&&this.ch1_dacEnabled&&(t=X[this.ch1_duty][this.ch1_dutyPos]?this.ch1_volume:0),this.ch2_enabled&&this.ch2_dacEnabled&&(e=X[this.ch2_duty][this.ch2_dutyPos]?this.ch2_volume:0),this.ch3_enabled&&this.ch3_dacEnabled){var h=this.ch3_sampleBuffer;switch(this.ch3_volume){case 0:h=0;break;case 1:break;case 2:h>>=1;break;case 3:h>>=2;break}s=h}this.ch4_enabled&&this.ch4_dacEnabled&&(i=this.ch4_lfsr&1?0:this.ch4_volume);var r=t/7.5-1,a=e/7.5-1,c=s/7.5-1,d=i/7.5-1,l=0,o=0;this.nr51&16&&(l+=r),this.nr51&32&&(l+=a),this.nr51&64&&(l+=c),this.nr51&128&&(l+=d),this.nr51&1&&(o+=r),this.nr51&2&&(o+=a),this.nr51&4&&(o+=c),this.nr51&8&&(o+=d);var S=(this.nr50>>4&7)+1,_=(this.nr50&7)+1;return l*=S/8,o*=_/8,(l+o)/8}saveState(){return{enabled:this.enabled,nr50:this.nr50,nr51:this.nr51,ch1_enabled:this.ch1_enabled,ch1_dacEnabled:this.ch1_dacEnabled,ch1_duty:this.ch1_duty,ch1_dutyPos:this.ch1_dutyPos,ch1_lengthCounter:this.ch1_lengthCounter,ch1_lengthEnabled:this.ch1_lengthEnabled,ch1_volume:this.ch1_volume,ch1_envInitVol:this.ch1_envInitVol,ch1_envDir:this.ch1_envDir,ch1_envPeriod:this.ch1_envPeriod,ch1_envTimer:this.ch1_envTimer,ch1_freq:this.ch1_freq,ch1_freqTimer:this.ch1_freqTimer,ch1_sweepPeriod:this.ch1_sweepPeriod,ch1_sweepDir:this.ch1_sweepDir,ch1_sweepShift:this.ch1_sweepShift,ch1_sweepTimer:this.ch1_sweepTimer,ch1_sweepEnabled:this.ch1_sweepEnabled,ch1_sweepShadow:this.ch1_sweepShadow,ch2_enabled:this.ch2_enabled,ch2_dacEnabled:this.ch2_dacEnabled,ch2_duty:this.ch2_duty,ch2_dutyPos:this.ch2_dutyPos,ch2_lengthCounter:this.ch2_lengthCounter,ch2_lengthEnabled:this.ch2_lengthEnabled,ch2_volume:this.ch2_volume,ch2_envInitVol:this.ch2_envInitVol,ch2_envDir:this.ch2_envDir,ch2_envPeriod:this.ch2_envPeriod,ch2_envTimer:this.ch2_envTimer,ch2_freq:this.ch2_freq,ch2_freqTimer:this.ch2_freqTimer,ch3_enabled:this.ch3_enabled,ch3_dacEnabled:this.ch3_dacEnabled,ch3_lengthCounter:this.ch3_lengthCounter,ch3_lengthEnabled:this.ch3_lengthEnabled,ch3_volume:this.ch3_volume,ch3_freq:this.ch3_freq,ch3_freqTimer:this.ch3_freqTimer,ch3_samplePos:this.ch3_samplePos,ch3_sampleBuffer:this.ch3_sampleBuffer,waveRAM:this.waveRAM.slice(0),ch4_enabled:this.ch4_enabled,ch4_dacEnabled:this.ch4_dacEnabled,ch4_lengthCounter:this.ch4_lengthCounter,ch4_lengthEnabled:this.ch4_lengthEnabled,ch4_volume:this.ch4_volume,ch4_envInitVol:this.ch4_envInitVol,ch4_envDir:this.ch4_envDir,ch4_envPeriod:this.ch4_envPeriod,ch4_envTimer:this.ch4_envTimer,ch4_clockShift:this.ch4_clockShift,ch4_widthMode:this.ch4_widthMode,ch4_divisor:this.ch4_divisor,ch4_freqTimer:this.ch4_freqTimer,ch4_lfsr:this.ch4_lfsr,frameSeqTimer:this.frameSeqTimer,frameSeqStep:this.frameSeqStep,regs:this.regs.slice(0)}}loadState(t){this.enabled=t.enabled,this.nr50=t.nr50,this.nr51=t.nr51,this.ch1_enabled=t.ch1_enabled,this.ch1_dacEnabled=t.ch1_dacEnabled,this.ch1_duty=t.ch1_duty,this.ch1_dutyPos=t.ch1_dutyPos,this.ch1_lengthCounter=t.ch1_lengthCounter,this.ch1_lengthEnabled=t.ch1_lengthEnabled,this.ch1_volume=t.ch1_volume,this.ch1_envInitVol=t.ch1_envInitVol,this.ch1_envDir=t.ch1_envDir,this.ch1_envPeriod=t.ch1_envPeriod,this.ch1_envTimer=t.ch1_envTimer,this.ch1_freq=t.ch1_freq,this.ch1_freqTimer=t.ch1_freqTimer,this.ch1_sweepPeriod=t.ch1_sweepPeriod,this.ch1_sweepDir=t.ch1_sweepDir,this.ch1_sweepShift=t.ch1_sweepShift,this.ch1_sweepTimer=t.ch1_sweepTimer,this.ch1_sweepEnabled=t.ch1_sweepEnabled,this.ch1_sweepShadow=t.ch1_sweepShadow,this.ch2_enabled=t.ch2_enabled,this.ch2_dacEnabled=t.ch2_dacEnabled,this.ch2_duty=t.ch2_duty,this.ch2_dutyPos=t.ch2_dutyPos,this.ch2_lengthCounter=t.ch2_lengthCounter,this.ch2_lengthEnabled=t.ch2_lengthEnabled,this.ch2_volume=t.ch2_volume,this.ch2_envInitVol=t.ch2_envInitVol,this.ch2_envDir=t.ch2_envDir,this.ch2_envPeriod=t.ch2_envPeriod,this.ch2_envTimer=t.ch2_envTimer,this.ch2_freq=t.ch2_freq,this.ch2_freqTimer=t.ch2_freqTimer,this.ch3_enabled=t.ch3_enabled,this.ch3_dacEnabled=t.ch3_dacEnabled,this.ch3_lengthCounter=t.ch3_lengthCounter,this.ch3_lengthEnabled=t.ch3_lengthEnabled,this.ch3_volume=t.ch3_volume,this.ch3_freq=t.ch3_freq,this.ch3_freqTimer=t.ch3_freqTimer,this.ch3_samplePos=t.ch3_samplePos,this.ch3_sampleBuffer=t.ch3_sampleBuffer,t.waveRAM&&this.waveRAM.set(t.waveRAM),this.ch4_enabled=t.ch4_enabled,this.ch4_dacEnabled=t.ch4_dacEnabled,this.ch4_lengthCounter=t.ch4_lengthCounter,this.ch4_lengthEnabled=t.ch4_lengthEnabled,this.ch4_volume=t.ch4_volume,this.ch4_envInitVol=t.ch4_envInitVol,this.ch4_envDir=t.ch4_envDir,this.ch4_envPeriod=t.ch4_envPeriod,this.ch4_envTimer=t.ch4_envTimer,this.ch4_clockShift=t.ch4_clockShift,this.ch4_widthMode=t.ch4_widthMode,this.ch4_divisor=t.ch4_divisor,this.ch4_freqTimer=t.ch4_freqTimer,this.ch4_lfsr=t.ch4_lfsr,this.frameSeqTimer=t.frameSeqTimer,this.frameSeqStep=t.frameSeqStep,t.regs&&this.regs.set(t.regs)}},T=class extends K{constructor(){super();this.cpuFrequency=4194304;this.canvasWidth=160;this.numVisibleScanlines=144;this.numTotalScanlines=154;this.cpuCyclesPerLine=456;this.sampleRate=9240*4;this.overscan=!1;this.defaultROMSize=32768;this.aspectRatio=10/9;this.cpu=new D;this.ram=new Uint8Array(8192);this.vram=new Uint8Array(8192);this.oam=new Uint8Array(160);this.hram=new Uint8Array(128);this.extram=new Uint8Array(8192);this.cgbMode=!1;this.forceColor=!1;this.vramBank1=new Uint8Array(8192);this.vramBankSelect=0;this.wramBanks=new Uint8Array(28672);this.wramBankSelect=1;this.bgCRAM=new Uint8Array(64);this.objCRAM=new Uint8Array(64);this.bgCRAMIndex=0;this.bgCRAMAutoInc=!1;this.objCRAMIndex=0;this.objCRAMAutoInc=!1;this.doubleSpeed=!1;this.speedSwitchArmed=!1;this.hdmaSrc=0;this.hdmaDst=0;this.hdmaLength=255;this.hdmaActive=!1;this.hdmaHblank=!1;this.joyp=207;this.sb=0;this.sc=0;this.divCounter=0;this.tima=0;this.tma=0;this.tac=0;this.iflag=0;this.ie=0;this.lcdc=145;this.stat=0;this.scy=0;this.scx=0;this.ly=0;this.lyc=0;this.dma=0;this.bgp=252;this.obp0=255;this.obp1=255;this.wy=0;this.wx=0;this.apu=new G;this.apuCycleAccum=0;this.ppuMode=0;this.ppuDot=0;this.windowLine=0;this.mbcType=0;this.romBank=1;this.ramBank=0;this.ramEnabled=!1;this.mbcMode=0;this.romBankMask=31;this.hasRTC=!1;this.rtcRegisterSelect=-1;this.rtcLatchLast=0;this.rtcSec=0;this.rtcMin=0;this.rtcHour=0;this.rtcDay=0;this.rtcHalt=!1;this.rtcCarry=!1;this.rtcLatched=new Uint8Array(5);this.rtcLastSync=0;this.read=W([[0,16383,16383,e=>this.rom?this.rom[e]:255],[16384,32767,16383,e=>this.readBankedROM(e)],[32768,40959,8191,e=>this.readVRAM(e)],[40960,49151,8191,e=>this.readExtRAM(e)],[49152,53247,4095,e=>this.ram[e]],[53248,57343,4095,e=>this.readWRAMBank(e)],[57344,61439,4095,e=>this.ram[e]],[61440,65023,4095,e=>this.readWRAMBank(e)],[65024,65183,255,e=>this.oam[e]],[65184,65279,255,e=>255],[65280,65407,127,e=>this.readIO(e)],[65408,65534,127,e=>this.hram[e]],[65535,65535,0,e=>this.ie]]);this.write=W([[0,8191,8191,(e,s)=>{this.writeMBC(e,s)}],[8192,16383,8191,(e,s)=>{this.writeMBC(8192+e,s)}],[16384,24575,8191,(e,s)=>{this.writeMBC(16384+e,s)}],[24576,32767,8191,(e,s)=>{this.writeMBC(24576+e,s)}],[32768,40959,8191,(e,s)=>{this.writeVRAM(e,s)}],[40960,49151,8191,(e,s)=>{this.writeExtRAM(e,s)}],[49152,53247,4095,(e,s)=>{this.ram[e]=s}],[53248,57343,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[57344,61439,4095,(e,s)=>{this.ram[e]=s}],[61440,65023,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[65024,65183,255,(e,s)=>{this.oam[e]=s}],[65184,65279,255,(e,s)=>{}],[65280,65407,127,(e,s)=>{this.writeIO(e,s)}],[65408,65534,127,(e,s)=>{this.hram[e]=s}],[65535,65535,0,(e,s)=>{this.ie=s}]]);this.timerSubCycles=0;this.bgPriorityLine=new Uint8Array(160);this.bgAttrPriLine=new Uint8Array(160);this.handler=z(this.inputs,this.getKeyboardMap()),this.connectCPUMemoryBus(this)}getKeyboardMap(){return re}now(){return Date.now()}syncRTC(){if(!this.hasRTC||this.rtcHalt){this.rtcLastSync=this.now();return}var e=Math.floor((this.now()-this.rtcLastSync)/1e3);if(!(e<=0)){this.rtcLastSync+=e*1e3;var s=this.rtcSec+e;this.rtcSec=s%60,s=this.rtcMin+Math.floor(s/60),this.rtcMin=s%60,s=this.rtcHour+Math.floor(s/60),this.rtcHour=s%24;var i=this.rtcDay+Math.floor(s/24);i>511&&(this.rtcCarry=!0,i&=511),this.rtcDay=i}}latchRTC(){this.syncRTC(),this.rtcLatched[0]=this.rtcSec,this.rtcLatched[1]=this.rtcMin,this.rtcLatched[2]=this.rtcHour,this.rtcLatched[3]=this.rtcDay&255,this.rtcLatched[4]=this.rtcDay>>8&1|(this.rtcHalt?64:0)|(this.rtcCarry?128:0)}resetRTC(){var e=new Date(this.now());this.rtcSec=e.getSeconds(),this.rtcMin=e.getMinutes(),this.rtcHour=e.getHours(),this.rtcDay=0,this.rtcHalt=!1,this.rtcCarry=!1,this.rtcRegisterSelect=-1,this.rtcLatchLast=0,this.rtcLastSync=this.now(),this.latchRTC()}readVRAM(e){return this.cgbMode&&this.vramBankSelect?this.vramBank1[e]:this.vram[e]}writeVRAM(e,s){this.cgbMode&&this.vramBankSelect?this.vramBank1[e]=s:this.vram[e]=s}readWRAMBank(e){return!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]:this.wramBanks[(this.wramBankSelect-1)*4096+e]}writeWRAMBank(e,s){!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]=s:this.wramBanks[(this.wramBankSelect-1)*4096+e]=s}readBankedROM(e){if(!this.rom)return 255;var s=this.romBank;this.mbcType===0&&(s=1);var i=e+s*16384;return i=8&&s<=12?this.rtcRegisterSelect=s:(this.rtcRegisterSelect=-1,this.ramBank=s&3):this.mbcMode===0?(this.romBank=this.romBank&31|(s&3)<<5,this.romBank&=this.romBankMask):this.ramBank=s&3:(this.mbcType===1?this.mbcMode=s&1:this.mbcType===3&&this.rtcLatchLast===0&&s===1&&this.latchRTC(),this.rtcLatchLast=s)}}writeMBC5(e,s){e<8192?this.ramEnabled=(s&15)===10:e<12288?(this.romBank=this.romBank&256|s,this.romBank&=this.romBankMask):e<16384?(this.romBank=this.romBank&255|(s&1)<<8,this.romBank&=this.romBankMask):e<24576&&(this.ramBank=s&15)}readExtRAM(e){if(this.hasRTC&&this.rtcRegisterSelect>=0)return this.syncRTC(),this.rtcLatched[this.rtcRegisterSelect-8];if(!this.ramEnabled&&this.mbcType>0)return 255;var s=e+this.ramBank*8192;return s=0)&&!(!this.ramEnabled&&this.mbcType>0)){var i=e+this.ramBank*8192;i>8&255;case 5:return this.tima;case 6:return this.tma;case 7:return this.tac|248;case 15:return this.iflag|224;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:return this.apu.readRegister(e);case 64:return this.lcdc;case 65:return this.stat|128;case 66:return this.scy;case 67:return this.scx;case 68:return this.ly;case 69:return this.lyc;case 70:return this.dma;case 71:return this.bgp;case 72:return this.obp0;case 73:return this.obp1;case 74:return this.wy;case 75:return this.wx;case 77:return this.cgbMode?(this.doubleSpeed?128:0)|(this.speedSwitchArmed?1:0)|126:255;case 79:return this.cgbMode?this.vramBankSelect|254:255;case 85:return this.cgbMode?this.hdmaLength:255;case 104:return this.cgbMode?this.bgCRAMIndex|(this.bgCRAMAutoInc?128:0):255;case 105:return this.cgbMode?this.bgCRAM[this.bgCRAMIndex&63]:255;case 106:return this.cgbMode?this.objCRAMIndex|(this.objCRAMAutoInc?128:0):255;case 107:return this.cgbMode?this.objCRAM[this.objCRAMIndex&63]:255;case 112:return this.cgbMode?this.wramBankSelect:255;default:return 255}}writeIO(e,s){switch(e){case 0:this.joyp=s;break;case 1:this.sb=s;break;case 2:this.sc=s;break;case 4:this.divCounter=0;break;case 5:this.tima=s;break;case 6:this.tma=s;break;case 7:this.tac=s&7;break;case 15:this.iflag=s&31;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:this.apu.writeRegister(e,s);break;case 64:this.lcdc=s,s&128||(this.ly=0,this.ppuMode=0,this.ppuDot=0,this.stat=this.stat&252);break;case 65:this.stat=this.stat&7|s&120;break;case 66:this.scy=s;break;case 67:this.scx=s;break;case 68:break;case 69:this.lyc=s;break;case 70:this.dmaTransfer(s);break;case 71:this.bgp=s;break;case 72:this.obp0=s;break;case 73:this.obp1=s;break;case 74:this.wy=s;break;case 75:this.wx=s;break;case 77:this.cgbMode&&(this.speedSwitchArmed=!!(s&1));break;case 79:this.cgbMode&&(this.vramBankSelect=s&1);break;case 81:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&255|s<<8);break;case 82:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&65280|s&240);break;case 83:this.cgbMode&&(this.hdmaDst=this.hdmaDst&255|(s&31)<<8);break;case 84:this.cgbMode&&(this.hdmaDst=this.hdmaDst&65280|s&240);break;case 85:this.cgbMode&&this.startHDMA(s);break;case 104:this.cgbMode&&(this.bgCRAMIndex=s&63,this.bgCRAMAutoInc=!!(s&128));break;case 105:this.cgbMode&&(this.bgCRAM[this.bgCRAMIndex&63]=s,this.bgCRAMAutoInc&&(this.bgCRAMIndex=this.bgCRAMIndex+1&63));break;case 106:this.cgbMode&&(this.objCRAMIndex=s&63,this.objCRAMAutoInc=!!(s&128));break;case 107:this.cgbMode&&(this.objCRAM[this.objCRAMIndex&63]=s,this.objCRAMAutoInc&&(this.objCRAMIndex=this.objCRAMIndex+1&63));break;case 112:this.cgbMode&&(this.wramBankSelect=s&7,this.wramBankSelect===0&&(this.wramBankSelect=1));break}}readJoypad(){var e=this.joyp|15;return this.joyp&16||(e&=~(this.inputs[0]&15)),this.joyp&32||(e&=~(this.inputs[0]>>4&15)),e|192}dmaTransfer(e){this.dma=e;for(var s=e<<8,i=0;i<160;i++)this.oam[i]=this.read(s+i)}startHDMA(e){if(this.hdmaActive&&!(e&128)){this.hdmaActive=!1,this.hdmaLength=e|128;return}var s=((e&127)+1)*16;e&128?(this.hdmaActive=!0,this.hdmaHblank=!0,this.hdmaLength=e&127):(this.performHDMABlock(s),this.hdmaLength=255)}performHDMABlock(e){for(var s=this.hdmaSrc&65520,i=this.hdmaDst&8176,h=0;h255&&(this.tima=this.tma,this.iflag|=4)}}syncInterrupts(){var e=this.iflag&this.ie&31;this.cpu.interruptFlags=e}syncInterruptsBack(){var e=this.iflag&this.ie&31&~this.cpu.interruptFlags;this.iflag&=~e}advanceCPU(){this.syncInterrupts();var e=this.cpu.interruptFlags,s=this.cpu,i=1,h=!1;this.cpu.isStable()&&(this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),this.cgbMode&&this.speedSwitchArmed&&!this.cpu.halted&&this.read(this.cpu.getPC())===16&&(h=!0)),i=s.advanceInsn(1);var r=i*4;this.probe.logClocks(r);var a=this.doubleSpeed?i*2:r;if(h&&this.performSpeedSwitch(),this.cpu.interruptFlags!==e&&this.syncInterruptsBack(),this.updateTimerCycles(a),this.updatePPUMode(a),this.apu.clock(a),this.audio){this.apuCycleAccum+=a;for(var c=114;this.apuCycleAccum>=c;)this.apuCycleAccum-=c,this.audio.feedSample(this.apu.getSample(),1)}return a}updatePPUMode(e){if(!(this.scanline>=144)){this.ppuDot+=e;var s=this.ppuMode;this.ppuDot<80?this.ppuMode=2:this.ppuDot<252?this.ppuMode=3:this.ppuMode=0,this.ppuMode!==s&&(this.stat=this.stat&252|this.ppuMode&3,this.ppuMode===0&&this.stat&8?(this.iflag|=2,this.cgbMode&&this.tickHDMA()):this.ppuMode===2&&this.stat&32&&(this.iflag|=2))}}updateTimerCycles(e){if(this.divCounter=this.divCounter+e&65535,!!(this.tac&4)){var s;switch(this.tac&3){case 0:s=1024;break;case 1:s=16;break;case 2:s=64;break;case 3:s=256;break;default:s=1024}for(this.timerSubCycles+=e;this.timerSubCycles>=s;)this.timerSubCycles-=s,this.tima=this.tima+1&255,this.tima===0&&(this.tima=this.tma,this.iflag|=4)}}startScanline(){this.ly=this.scanline,this.ppuDot=0,this.scanline<144?this.ppuMode=2:(this.ppuMode=1,this.scanline===144&&(this.iflag|=1,this.stat&16&&(this.iflag|=2))),this.ly===this.lyc?(this.stat|=4,this.stat&64&&(this.iflag|=2)):this.stat&=-5,this.stat=this.stat&252|this.ppuMode&3}drawScanline(){if(this.lcdc&128&&!(this.scanline>=144)){var e=this.scanline*160;if(this.lcdc&1||this.cgbMode)this.drawBGLine(e);else for(var s=0;s<160;s++)this.pixels[e+s]=L[0],this.bgPriorityLine[s]=0,this.bgAttrPriLine[s]=0;this.lcdc&32&&this.scanline>=this.wy&&this.drawWindowLine(e),this.lcdc&2&&this.drawSpriteLine(e)}}getPaletteColor(e,s){var i=e>>s*2&3;return L[i]}getCGBColor(e,s,i){var h=s*8+i*2;return he(e[h],e[h+1])}drawBGLine(e){for(var s=this.lcdc&8?7168:6144,i=!(this.lcdc&16),h=this.scanline+this.scy&255,r=h>>3&31,a=h&7,c=0;c<160;c++){var d=c+this.scx&255,l=d>>3&31,o=7-(d&7),S=s+r*32+l,_=this.vram[S],u;if(i?u=4096+(_<<24>>24)*16:u=_*16,this.cgbMode){var p=this.vramBank1[S],v=p&7,C=p&8?1:0,k=!!(p&32),y=!!(p&64),B=!!(p&128),P=y?7-a:a,R=k?d&7:o,g=C?this.vramBank1:this.vram,m=g[u+P*2],w=g[u+P*2+1],F=(w>>R&1)<<1|m>>R&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=B?1:0,this.pixels[e+c]=this.getCGBColor(this.bgCRAM,v,F)}else{var m=this.vram[u+a*2],w=this.vram[u+a*2+1],F=(w>>o&1)<<1|m>>o&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=0,this.pixels[e+c]=this.getPaletteColor(this.bgp,F)}}}drawWindowLine(e){var s=this.wx-7;if(!(s>=160)){for(var i=this.lcdc&64?7168:6144,h=!(this.lcdc&16),r=this.windowLine,a=r>>3&31,c=r&7,d=!1,l=Math.max(0,s);l<160;l++){var o=l-s,S=o>>3&31,_=7-(o&7),u=i+a*32+S,p=this.vram[u],v;if(h?v=4096+(p<<24>>24)*16:v=p*16,this.cgbMode){var C=this.vramBank1[u],k=C&7,y=C&8?1:0,B=!!(C&32),P=!!(C&64),R=!!(C&128),g=P?7-c:c,m=B?o&7:_,w=y?this.vramBank1:this.vram,F=w[v+g*2],E=w[v+g*2+1],M=(E>>m&1)<<1|F>>m&1;this.bgPriorityLine[l]=M,this.bgAttrPriLine[l]=R?1:0,this.pixels[e+l]=this.getCGBColor(this.bgCRAM,k,M)}else{var F=this.vram[v+c*2],E=this.vram[v+c*2+1],M=(E>>_&1)<<1|F>>_&1;this.bgPriorityLine[l]=M,this.bgAttrPriLine[l]=0,this.pixels[e+l]=this.getPaletteColor(this.bgp,M)}d=!0}d&&this.windowLine++}}drawSpriteLine(e){for(var s=this.lcdc&4?16:8,i=0,h=[],r=0;r<40&&i<10;r++){var a=this.oam[r*4]-16,c=this.oam[r*4+1]-8;this.scanline>=a&&this.scanlineH.x!==I.x?H.x-I.x:H.index-I.index);for(var d=h.length-1;d>=0;d--){var l=h[d].index,o=this.oam[l*4]-16,S=this.oam[l*4+1]-8,_=this.oam[l*4+2],u=this.oam[l*4+3],p=!!(u&32),v=!!(u&64),C=!!(u&128);s===16&&(_&=254);var k=this.scanline-o;v&&(k=s-1-k);for(var y=_*16+k*2,B=this.cgbMode&&u&8?this.vramBank1:this.vram,P=B[y],R=B[y+1],g=0;g<8;g++){var m=S+g;if(!(m<0||m>=160)){var w=p?g:7-g,F=(R>>w&1)<<1|P>>w&1;if(F!==0)if(this.cgbMode){var E=this.lcdc&1;if(E&&(this.bgAttrPriLine[m]&&this.bgPriorityLine[m]!==0||C&&this.bgPriorityLine[m]!==0))continue;var M=u&7;this.pixels[e+m]=this.getCGBColor(this.objCRAM,M,F)}else{if(C){var se=this.pixels[e+m];if(se!==L[this.bgp&3])continue}var ie=u&16?this.obp1:this.obp0;this.pixels[e+m]=this.getPaletteColor(ie,F)}}}}}loadROM(e,s){if(e.length>327){var i=e[327];switch(i){case 0:this.mbcType=0;break;case 1:case 2:case 3:this.mbcType=1;break;case 15:case 16:case 17:case 18:case 19:this.mbcType=3;break;case 25:case 26:case 27:case 28:case 29:case 30:this.mbcType=5;break;default:console.log(`Unhandled cartridge type 0x${i.toString(16)} @ 0x147, treating as MBC5`),this.mbcType=5;break}this.hasRTC=i===15||i===16}else throw new O("ROM not long enough for header");if(e.length>323){var h=e[323];this.cgbMode=this.forceColor||h===128||h===192}this.rom=new Uint8Array(Math.max(e.length,32768)),this.rom.set(e);var r=Math.max(2,this.rom.length>>14);switch(this.romBankMask=r-1,e[329]){case 0:break;case 1:this.extram=new Uint8Array(2048);break;case 2:this.extram=new Uint8Array(8192);break;case 3:this.extram=new Uint8Array(32768);break;case 4:this.extram=new Uint8Array(131072);break;case 5:this.extram=new Uint8Array(65536);break;default:console.log(`Invalid RAM size code @ 0x149: ${e[329]}`);break}this.reset()}reset(){super.reset(),this.ram.fill(0),this.vram.fill(0),this.oam.fill(0),this.hram.fill(0),this.iflag=0,this.ie=0,this.lcdc=145,this.stat=0,this.scy=0,this.scx=0,this.ly=0,this.lyc=0,this.bgp=252,this.obp0=255,this.obp1=255,this.wy=0,this.wx=0,this.joyp=207,this.divCounter=0,this.tima=0,this.tma=0,this.tac=0,this.ppuMode=0,this.ppuDot=0,this.windowLine=0,this.romBank=1,this.ramBank=0,this.ramEnabled=!1,this.mbcMode=0,this.timerSubCycles=0,this.apuCycleAccum=0,this.apu.reset(),this.vramBank1.fill(0),this.vramBankSelect=0,this.wramBanks.fill(0),this.wramBankSelect=1;for(var e=0;e<8;e++)this.bgCRAM.set(Q,e*8),this.objCRAM.set(Q,e*8);this.bgCRAMIndex=0,this.bgCRAMAutoInc=!1,this.objCRAMIndex=0,this.objCRAMAutoInc=!1,this.doubleSpeed=!1,this.speedSwitchArmed=!1,this.hdmaSrc=0,this.hdmaDst=0,this.hdmaLength=255,this.hdmaActive=!1,this.hdmaHblank=!1,this.cgbMode&&(this.cpu.A=17),this.hasRTC?this.resetRTC():(this.rtcRegisterSelect=-1,this.rtcLatchLast=0)}preFrame(){this.windowLine=0}readVRAMAddress(e){return this.cgbMode&&e>=8192?this.vramBank1[e&8191]:this.vram[e&8191]}saveState(){var e=super.saveState();return e.vram=this.vram.slice(0),e.oam=this.oam.slice(0),e.hram=this.hram.slice(0),e.extram=this.extram.slice(0),e.io={joyp:this.joyp,sb:this.sb,sc:this.sc,divCounter:this.divCounter,tima:this.tima,tma:this.tma,tac:this.tac,iflag:this.iflag,ie:this.ie,lcdc:this.lcdc,stat:this.stat,scy:this.scy,scx:this.scx,ly:this.ly,lyc:this.lyc,dma:this.dma,bgp:this.bgp,obp0:this.obp0,obp1:this.obp1,wy:this.wy,wx:this.wx,ppuMode:this.ppuMode,ppuDot:this.ppuDot,windowLine:this.windowLine,romBank:this.romBank,ramBank:this.ramBank,ramEnabled:this.ramEnabled,mbcMode:this.mbcMode,timerSubCycles:this.timerSubCycles},e.apu=this.apu.saveState(),e.apuCycleAccum=this.apuCycleAccum,e.rtc={hasRTC:this.hasRTC,sec:this.rtcSec,min:this.rtcMin,hour:this.rtcHour,day:this.rtcDay,halt:this.rtcHalt,carry:this.rtcCarry,registerSelect:this.rtcRegisterSelect,latchLast:this.rtcLatchLast,latched:this.rtcLatched.slice(0),lastSync:this.rtcLastSync},this.cgbMode&&(e.cgb={vramBank1:this.vramBank1.slice(0),vramBankSelect:this.vramBankSelect,wramBanks:this.wramBanks.slice(0),wramBankSelect:this.wramBankSelect,bgCRAM:this.bgCRAM.slice(0),objCRAM:this.objCRAM.slice(0),bgCRAMIndex:this.bgCRAMIndex,bgCRAMAutoInc:this.bgCRAMAutoInc,objCRAMIndex:this.objCRAMIndex,objCRAMAutoInc:this.objCRAMAutoInc,doubleSpeed:this.doubleSpeed,speedSwitchArmed:this.speedSwitchArmed,hdmaSrc:this.hdmaSrc,hdmaDst:this.hdmaDst,hdmaLength:this.hdmaLength,hdmaActive:this.hdmaActive,hdmaHblank:this.hdmaHblank}),e}loadState(e){super.loadState(e),this.vram.set(e.vram),this.oam.set(e.oam),this.hram.set(e.hram),e.extram&&this.extram.set(e.extram);var s=e.io;if(this.joyp=s.joyp,this.sb=s.sb,this.sc=s.sc,this.divCounter=s.divCounter,this.tima=s.tima,this.tma=s.tma,this.tac=s.tac,this.iflag=s.iflag,this.ie=s.ie,this.lcdc=s.lcdc,this.stat=s.stat,this.scy=s.scy,this.scx=s.scx,this.ly=s.ly,this.lyc=s.lyc,this.dma=s.dma,this.bgp=s.bgp,this.obp0=s.obp0,this.obp1=s.obp1,this.wy=s.wy,this.wx=s.wx,this.ppuMode=s.ppuMode,this.ppuDot=s.ppuDot,this.windowLine=s.windowLine,this.romBank=s.romBank,this.ramBank=s.ramBank,this.ramEnabled=s.ramEnabled,this.mbcMode=s.mbcMode,this.timerSubCycles=s.timerSubCycles,e.apu&&this.apu.loadState(e.apu),this.apuCycleAccum=e.apuCycleAccum||0,e.rtc){var i=e.rtc;this.hasRTC=i.hasRTC,this.rtcSec=i.sec,this.rtcMin=i.min,this.rtcHour=i.hour,this.rtcDay=i.day,this.rtcHalt=i.halt,this.rtcCarry=i.carry,this.rtcRegisterSelect=i.registerSelect,this.rtcLatchLast=i.latchLast,i.latched&&this.rtcLatched.set(i.latched),this.rtcLastSync=i.lastSync}if(e.cgb){var h=e.cgb;this.vramBank1.set(h.vramBank1),this.vramBankSelect=h.vramBankSelect,this.wramBanks.set(h.wramBanks),this.wramBankSelect=h.wramBankSelect,this.bgCRAM.set(h.bgCRAM),this.objCRAM.set(h.objCRAM),this.bgCRAMIndex=h.bgCRAMIndex,this.bgCRAMAutoInc=h.bgCRAMAutoInc,this.objCRAMIndex=h.objCRAMIndex,this.objCRAMAutoInc=h.objCRAMAutoInc,this.doubleSpeed=h.doubleSpeed,this.speedSwitchArmed=h.speedSwitchArmed,this.hdmaSrc=h.hdmaSrc,this.hdmaDst=h.hdmaDst,this.hdmaLength=h.hdmaLength,this.hdmaActive=h.hdmaActive,this.hdmaHblank=h.hdmaHblank}}getDebugCategories(){return["CPU","Stack","PPU"]}getDebugInfo(e,s){if(e==="PPU"){var i="LCDC "+n(this.lcdc,2)+" STAT "+n(this.stat,2)+` +import{a as L}from"./chunk-A7SWO6EA.js";import{B as Y,E as $,F as J,r as K,u as V}from"./chunk-MZ43WA3W.js";import{b as Z}from"./chunk-UACHXWHT.js";import{$ as N,K as j,T as O,Y as f,Z as z,ca as W,g as n}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var b=class b{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&b.FLAG_Z)}getN(){return!!(this.F&b.FLAG_N)}getH(){return!!(this.F&b.FLAG_H)}getC(){return!!(this.F&b.FLAG_C)}setZ(t){t?this.F|=b.FLAG_Z:this.F&=~b.FLAG_Z}setN(t){t?this.F|=b.FLAG_N:this.F&=~b.FLAG_N}setH(t){t?this.F|=b.FLAG_H:this.F&=~b.FLAG_H}setC(t){t?this.F|=b.FLAG_C:this.F&=~b.FLAG_C}setFlags(t,e,s,i){this.F=(t?b.FLAG_Z:0)|(e?b.FLAG_N:0)|(s?b.FLAG_H:0)|(i?b.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH()||(t&15)>9)&&(t+=6)),t&=255,this.setZ(t===0),this.setH(!1),this.A=t}cbOp(t){var e=t>>3&31,s=t&7,i=this.getReg(s),h=s===6?4:2,r;if(t<64){switch(e){case 0:r=(i<<1|i>>7)&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 1:r=(i>>1|i<<7)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 2:r=(i<<1|(this.getC()?1:0))&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 3:r=(i>>1|(this.getC()?128:0))&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 4:r=i<<1&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 5:r=(i>>1|i&128)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 6:r=(i&15)<<4|(i&240)>>4,this.setFlags(r===0,!1,!1,!1);break;case 7:r=i>>1&255,this.setFlags(r===0,!1,!1,!!(i&1));break;default:r=i}this.setReg(s,r),s===6&&(h=4)}else if(t<128){var a=t>>3&7;this.setZ(!(i&1<>3&7;this.setReg(s,i&~(1<>3&7;this.setReg(s,i|1<0)return t;if(this.halted)return 1;this.stable=!0;var e=this.fetchByte();this.o=e,this.stable=!1;var s=this.executeOpcode(e);return this.stable=!0,s}executeOpcode(t){var e=t>>6&3,s=t>>3&7,i=t&7,h=s>>1&3,r=s&1;switch(e){case 0:return this.execX0(s,i,h,r,t);case 1:return i===6&&s===6?(this.halted=!0,1):(this.setReg(s,this.getReg(i)),s===6||i===6?2:1);case 2:return this.aluOp(s,this.getReg(i)),i===6?2:1;case 3:return this.execX3(s,i,h,r,t)}return 1}execX0(t,e,s,i,h){switch(e){case 0:switch(t){case 0:return 1;case 1:var r=this.fetchWord();return this.writeWord(r,this.SP),5;case 2:return this.PC=this.PC+1&65535,1;case 3:var a=this.fetchSignedByte();return this.PC=this.PC+a&65535,3;case 4:case 5:case 6:case 7:var a=this.fetchSignedByte();return this.checkCondition(t-4)?(this.PC=this.PC+a&65535,3):2}break;case 1:return i===0?(this.setReg16(s,this.fetchWord()),3):(this.addHL(this.getReg16(s)),2);case 2:if(i===0)switch(s){case 0:return this.write(this.getBC(),this.A),2;case 1:return this.write(this.getDE(),this.A),2;case 2:return this.write(this.getHL(),this.A),this.setHL(this.getHL()+1&65535),2;case 3:return this.write(this.getHL(),this.A),this.setHL(this.getHL()-1&65535),2}else switch(s){case 0:return this.A=this.read(this.getBC()),2;case 1:return this.A=this.read(this.getDE()),2;case 2:return this.A=this.read(this.getHL()),this.setHL(this.getHL()+1&65535),2;case 3:return this.A=this.read(this.getHL()),this.setHL(this.getHL()-1&65535),2}break;case 3:return i===0?(this.setReg16(s,this.getReg16(s)+1&65535),2):(this.setReg16(s,this.getReg16(s)-1&65535),2);case 4:return this.setReg(t,this.inc8(this.getReg(t))),t===6?3:1;case 5:return this.setReg(t,this.dec8(this.getReg(t))),t===6?3:1;case 6:return this.setReg(t,this.fetchByte()),t===6?3:2;case 7:switch(t){case 0:var c=this.A>>7&1;return this.A=(this.A<<1|c)&255,this.setFlags(!1,!1,!1,!!c),1;case 1:var d=this.A&1;return this.A=(this.A>>1|d<<7)&255,this.setFlags(!1,!1,!1,!!d),1;case 2:var c=this.A>>7&1;return this.A=(this.A<<1|(this.getC()?1:0))&255,this.setFlags(!1,!1,!1,!!c),1;case 3:var d=this.A&1;return this.A=(this.A>>1|(this.getC()?128:0))&255,this.setFlags(!1,!1,!1,!!d),1;case 4:return this.daa(),1;case 5:return this.A=~this.A&255,this.setN(!0),this.setH(!0),1;case 6:return this.setN(!1),this.setH(!1),this.setC(!0),1;case 7:return this.setN(!1),this.setH(!1),this.setC(!this.getC()),1}break}return 1}execX3(t,e,s,i,h){switch(e){case 0:switch(t){case 0:case 1:case 2:case 3:return this.checkCondition(t)?(this.PC=this.popWord(),5):2;case 4:var r=this.fetchByte();return this.write(65280+r,this.A),3;case 5:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.SP=c,4;case 6:var r=this.fetchByte();return this.A=this.read(65280+r),3;case 7:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.setHL(c),3}break;case 1:if(i===0)return this.setReg16AF(s,this.popWord()),3;switch(s){case 0:return this.PC=this.popWord(),4;case 1:return this.PC=this.popWord(),this.ime=!0,4;case 2:return this.PC=this.getHL(),1;case 3:return this.SP=this.getHL(),2}break;case 2:switch(t){case 0:case 1:case 2:case 3:var d=this.fetchWord();return this.checkCondition(t)?(this.PC=d,4):3;case 4:return this.write(65280+this.C,this.A),2;case 5:return this.write(this.fetchWord(),this.A),4;case 6:return this.A=this.read(65280+this.C),2;case 7:return this.A=this.read(this.fetchWord()),4}break;case 3:switch(t){case 0:return this.PC=this.fetchWord(),4;case 1:var l=this.fetchByte();return 2+this.cbOp(l);case 6:return this.ime=!1,this.imeDelay=!1,1;case 7:return this.imeDelay=!0,1;default:return 1}case 4:switch(t){case 0:case 1:case 2:case 3:var d=this.fetchWord();return this.checkCondition(t)?(this.pushWord(this.PC),this.PC=d,6):3;default:return 1}case 5:if(i===0)return this.pushWord(this.getReg16AF(s)),4;if(s===0){var d=this.fetchWord();return this.pushWord(this.PC),this.PC=d,6}return 1;case 6:return this.aluOp(t,this.fetchByte()),2;case 7:return this.pushWord(this.PC),this.PC=t*8,4}return 1}};b.FLAG_Z=128,b.FLAG_N=64,b.FLAG_H=32,b.FLAG_C=16;var D=b;function he(A,t){var e=A&31,s=(A>>5|(t&3)<<3)&31,i=t>>2&31,h=e*527+23>>6,r=s*527+23>>6,a=i*527+23>>6;return 4278190080|a<<16|r<<8|h}var Q=new Uint8Array([255,127,181,86,74,41,0,0]),re=N([[f.RIGHT,0,1],[f.LEFT,0,2],[f.UP,0,4],[f.DOWN,0,8],[f.A,0,16],[f.B,0,32],[f.GP_A,0,16],[f.GP_B,0,32],[f.SELECT,0,64],[f.START,0,128],[f.VK_ENTER,0,128],[f.VK_SHIFT,0,64]]),X=[[0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,1],[1,0,0,0,0,1,1,1],[0,1,1,1,1,1,1,0]],x=new Uint8Array(48);x[0]=128,x[1]=63,x[2]=0,x[3]=255,x[4]=191,x[5]=255,x[6]=63,x[7]=0,x[8]=255,x[9]=191,x[10]=127,x[11]=255,x[12]=159,x[13]=255,x[14]=191,x[15]=255,x[16]=255,x[17]=0,x[18]=0,x[19]=191,x[20]=0,x[21]=0,x[22]=112;var G=class{constructor(){this.enabled=!1;this.nr50=0;this.nr51=0;this.ch1_enabled=!1;this.ch1_dacEnabled=!1;this.ch1_duty=0;this.ch1_dutyPos=0;this.ch1_lengthCounter=0;this.ch1_lengthEnabled=!1;this.ch1_volume=0;this.ch1_envInitVol=0;this.ch1_envDir=0;this.ch1_envPeriod=0;this.ch1_envTimer=0;this.ch1_freq=0;this.ch1_freqTimer=0;this.ch1_sweepPeriod=0;this.ch1_sweepDir=0;this.ch1_sweepShift=0;this.ch1_sweepTimer=0;this.ch1_sweepEnabled=!1;this.ch1_sweepShadow=0;this.ch2_enabled=!1;this.ch2_dacEnabled=!1;this.ch2_duty=0;this.ch2_dutyPos=0;this.ch2_lengthCounter=0;this.ch2_lengthEnabled=!1;this.ch2_volume=0;this.ch2_envInitVol=0;this.ch2_envDir=0;this.ch2_envPeriod=0;this.ch2_envTimer=0;this.ch2_freq=0;this.ch2_freqTimer=0;this.ch3_enabled=!1;this.ch3_dacEnabled=!1;this.ch3_lengthCounter=0;this.ch3_lengthEnabled=!1;this.ch3_volume=0;this.ch3_freq=0;this.ch3_freqTimer=0;this.ch3_samplePos=0;this.ch3_sampleBuffer=0;this.waveRAM=new Uint8Array(16);this.ch4_enabled=!1;this.ch4_dacEnabled=!1;this.ch4_lengthCounter=0;this.ch4_lengthEnabled=!1;this.ch4_volume=0;this.ch4_envInitVol=0;this.ch4_envDir=0;this.ch4_envPeriod=0;this.ch4_envTimer=0;this.ch4_clockShift=0;this.ch4_widthMode=0;this.ch4_divisor=0;this.ch4_freqTimer=0;this.ch4_lfsr=32767;this.frameSeqTimer=0;this.frameSeqStep=0;this.regs=new Uint8Array(48)}reset(){this.enabled=!1,this.nr50=0,this.nr51=0,this.ch1_enabled=!1,this.ch1_dacEnabled=!1,this.ch1_duty=0,this.ch1_dutyPos=0,this.ch1_lengthCounter=0,this.ch1_lengthEnabled=!1,this.ch1_volume=0,this.ch1_envInitVol=0,this.ch1_envDir=0,this.ch1_envPeriod=0,this.ch1_envTimer=0,this.ch1_freq=0,this.ch1_freqTimer=0,this.ch1_sweepPeriod=0,this.ch1_sweepDir=0,this.ch1_sweepShift=0,this.ch1_sweepTimer=0,this.ch1_sweepEnabled=!1,this.ch1_sweepShadow=0,this.ch2_enabled=!1,this.ch2_dacEnabled=!1,this.ch2_duty=0,this.ch2_dutyPos=0,this.ch2_lengthCounter=0,this.ch2_lengthEnabled=!1,this.ch2_volume=0,this.ch2_envInitVol=0,this.ch2_envDir=0,this.ch2_envPeriod=0,this.ch2_envTimer=0,this.ch2_freq=0,this.ch2_freqTimer=0,this.ch3_enabled=!1,this.ch3_dacEnabled=!1,this.ch3_lengthCounter=0,this.ch3_lengthEnabled=!1,this.ch3_volume=0,this.ch3_freq=0,this.ch3_freqTimer=0,this.ch3_samplePos=0,this.ch3_sampleBuffer=0,this.waveRAM.fill(0),this.ch4_enabled=!1,this.ch4_dacEnabled=!1,this.ch4_lengthCounter=0,this.ch4_lengthEnabled=!1,this.ch4_volume=0,this.ch4_envInitVol=0,this.ch4_envDir=0,this.ch4_envPeriod=0,this.ch4_envTimer=0,this.ch4_clockShift=0,this.ch4_widthMode=0,this.ch4_divisor=0,this.ch4_freqTimer=0,this.ch4_lfsr=32767,this.frameSeqTimer=0,this.frameSeqStep=0,this.regs.fill(0)}readRegister(t){if(t>=48&&t<=63)return this.ch3_enabled?this.waveRAM[this.ch3_samplePos>>1]:this.waveRAM[t-48];if(t===38){var e=(this.enabled?128:0)|(this.ch1_enabled?1:0)|(this.ch2_enabled?2:0)|(this.ch3_enabled?4:0)|(this.ch4_enabled?8:0);return e|112}if(!this.enabled)return 255;var s=t-16;return this.regs[s]|x[s]}writeRegister(t,e){if(t>=48&&t<=63){this.waveRAM[t-48]=e;return}if(t===38){var s=this.enabled;if(this.enabled=!!(e&128),s&&!this.enabled){for(var i=16;i<=37;i++)this.writeRegister(i,0);this.ch1_enabled=!1,this.ch2_enabled=!1,this.ch3_enabled=!1,this.ch4_enabled=!1}!s&&this.enabled&&(this.frameSeqTimer=0,this.frameSeqStep=0);return}if(this.enabled){var h=t-16;switch(this.regs[h]=e,t){case 16:this.ch1_sweepPeriod=e>>4&7,this.ch1_sweepDir=e>>3&1,this.ch1_sweepShift=e&7;break;case 17:this.ch1_duty=e>>6&3,this.ch1_lengthCounter=64-(e&63);break;case 18:this.ch1_envInitVol=e>>4&15,this.ch1_envDir=e>>3&1,this.ch1_envPeriod=e&7,this.ch1_dacEnabled=(e&248)!==0,this.ch1_dacEnabled||(this.ch1_enabled=!1);break;case 19:this.ch1_freq=this.ch1_freq&1792|e;break;case 20:this.ch1_freq=this.ch1_freq&255|(e&7)<<8,this.ch1_lengthEnabled=!!(e&64),e&128&&this.triggerChannel1();break;case 22:this.ch2_duty=e>>6&3,this.ch2_lengthCounter=64-(e&63);break;case 23:this.ch2_envInitVol=e>>4&15,this.ch2_envDir=e>>3&1,this.ch2_envPeriod=e&7,this.ch2_dacEnabled=(e&248)!==0,this.ch2_dacEnabled||(this.ch2_enabled=!1);break;case 24:this.ch2_freq=this.ch2_freq&1792|e;break;case 25:this.ch2_freq=this.ch2_freq&255|(e&7)<<8,this.ch2_lengthEnabled=!!(e&64),e&128&&this.triggerChannel2();break;case 26:this.ch3_dacEnabled=!!(e&128),this.ch3_dacEnabled||(this.ch3_enabled=!1);break;case 27:this.ch3_lengthCounter=256-e;break;case 28:this.ch3_volume=e>>5&3;break;case 29:this.ch3_freq=this.ch3_freq&1792|e;break;case 30:this.ch3_freq=this.ch3_freq&255|(e&7)<<8,this.ch3_lengthEnabled=!!(e&64),e&128&&this.triggerChannel3();break;case 32:this.ch4_lengthCounter=64-(e&63);break;case 33:this.ch4_envInitVol=e>>4&15,this.ch4_envDir=e>>3&1,this.ch4_envPeriod=e&7,this.ch4_dacEnabled=(e&248)!==0,this.ch4_dacEnabled||(this.ch4_enabled=!1);break;case 34:this.ch4_clockShift=e>>4&15,this.ch4_widthMode=e>>3&1,this.ch4_divisor=e&7;break;case 35:this.ch4_lengthEnabled=!!(e&64),e&128&&this.triggerChannel4();break;case 36:this.nr50=e;break;case 37:this.nr51=e;break}}}triggerChannel1(){this.ch1_dacEnabled&&(this.ch1_enabled=!0),this.ch1_lengthCounter===0&&(this.ch1_lengthCounter=64),this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_volume=this.ch1_envInitVol,this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_sweepShadow=this.ch1_freq,this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepEnabled=this.ch1_sweepPeriod>0||this.ch1_sweepShift>0,this.ch1_sweepShift>0&&this.calcSweepFreq()}triggerChannel2(){this.ch2_dacEnabled&&(this.ch2_enabled=!0),this.ch2_lengthCounter===0&&(this.ch2_lengthCounter=64),this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_volume=this.ch2_envInitVol,this.ch2_envTimer=this.ch2_envPeriod||8}triggerChannel3(){this.ch3_dacEnabled&&(this.ch3_enabled=!0),this.ch3_lengthCounter===0&&(this.ch3_lengthCounter=256),this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=0}triggerChannel4(){this.ch4_dacEnabled&&(this.ch4_enabled=!0),this.ch4_lengthCounter===0&&(this.ch4_lengthCounter=64);var t=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=t<>this.ch1_sweepShift;return this.ch1_sweepDir?t=this.ch1_sweepShadow-t:t=this.ch1_sweepShadow+t,t>2047&&(this.ch1_enabled=!1),t}clock(t){if(this.enabled)for(var e=0;e=8192&&(this.frameSeqTimer=0,this.clockFrameSequencer()),this.ch1_enabled&&(this.ch1_freqTimer--,this.ch1_freqTimer<=0&&(this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_dutyPos=this.ch1_dutyPos+1&7)),this.ch2_enabled&&(this.ch2_freqTimer--,this.ch2_freqTimer<=0&&(this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_dutyPos=this.ch2_dutyPos+1&7)),this.ch3_enabled&&(this.ch3_freqTimer--,this.ch3_freqTimer<=0)){this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=this.ch3_samplePos+1&31;var s=this.waveRAM[this.ch3_samplePos>>1];this.ch3_sampleBuffer=this.ch3_samplePos&1?s&15:s>>4}if(this.ch4_enabled&&(this.ch4_freqTimer--,this.ch4_freqTimer<=0)){var i=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=i<>1&1;this.ch4_lfsr=this.ch4_lfsr>>1|h<<14,this.ch4_widthMode&&(this.ch4_lfsr=this.ch4_lfsr&-65|h<<6)}}}clockFrameSequencer(){(this.frameSeqStep&1)===0&&this.clockLengthCounters(),(this.frameSeqStep===2||this.frameSeqStep===6)&&this.clockSweep(),this.frameSeqStep===7&&this.clockEnvelopes(),this.frameSeqStep=this.frameSeqStep+1&7}clockLengthCounters(){this.ch1_lengthEnabled&&this.ch1_lengthCounter>0&&(this.ch1_lengthCounter--,this.ch1_lengthCounter===0&&(this.ch1_enabled=!1)),this.ch2_lengthEnabled&&this.ch2_lengthCounter>0&&(this.ch2_lengthCounter--,this.ch2_lengthCounter===0&&(this.ch2_enabled=!1)),this.ch3_lengthEnabled&&this.ch3_lengthCounter>0&&(this.ch3_lengthCounter--,this.ch3_lengthCounter===0&&(this.ch3_enabled=!1)),this.ch4_lengthEnabled&&this.ch4_lengthCounter>0&&(this.ch4_lengthCounter--,this.ch4_lengthCounter===0&&(this.ch4_enabled=!1))}clockSweep(){if(this.ch1_sweepEnabled&&(this.ch1_sweepTimer--,this.ch1_sweepTimer<=0&&(this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepPeriod>0))){var t=this.calcSweepFreq();t<=2047&&this.ch1_sweepShift>0&&(this.ch1_sweepShadow=t,this.ch1_freq=t,this.calcSweepFreq())}}clockEnvelopes(){this.ch1_envPeriod>0&&(this.ch1_envTimer--,this.ch1_envTimer<=0&&(this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_envDir&&this.ch1_volume<15?this.ch1_volume++:!this.ch1_envDir&&this.ch1_volume>0&&this.ch1_volume--)),this.ch2_envPeriod>0&&(this.ch2_envTimer--,this.ch2_envTimer<=0&&(this.ch2_envTimer=this.ch2_envPeriod||8,this.ch2_envDir&&this.ch2_volume<15?this.ch2_volume++:!this.ch2_envDir&&this.ch2_volume>0&&this.ch2_volume--)),this.ch4_envPeriod>0&&(this.ch4_envTimer--,this.ch4_envTimer<=0&&(this.ch4_envTimer=this.ch4_envPeriod||8,this.ch4_envDir&&this.ch4_volume<15?this.ch4_volume++:!this.ch4_envDir&&this.ch4_volume>0&&this.ch4_volume--))}getSample(){if(!this.enabled)return 0;var t=0,e=0,s=0,i=0;if(this.ch1_enabled&&this.ch1_dacEnabled&&(t=X[this.ch1_duty][this.ch1_dutyPos]?this.ch1_volume:0),this.ch2_enabled&&this.ch2_dacEnabled&&(e=X[this.ch2_duty][this.ch2_dutyPos]?this.ch2_volume:0),this.ch3_enabled&&this.ch3_dacEnabled){var h=this.ch3_sampleBuffer;switch(this.ch3_volume){case 0:h=0;break;case 1:break;case 2:h>>=1;break;case 3:h>>=2;break}s=h}this.ch4_enabled&&this.ch4_dacEnabled&&(i=this.ch4_lfsr&1?0:this.ch4_volume);var r=t/7.5-1,a=e/7.5-1,c=s/7.5-1,d=i/7.5-1,l=0,o=0;this.nr51&16&&(l+=r),this.nr51&32&&(l+=a),this.nr51&64&&(l+=c),this.nr51&128&&(l+=d),this.nr51&1&&(o+=r),this.nr51&2&&(o+=a),this.nr51&4&&(o+=c),this.nr51&8&&(o+=d);var S=(this.nr50>>4&7)+1,_=(this.nr50&7)+1;return l*=S/8,o*=_/8,(l+o)/8}saveState(){return{enabled:this.enabled,nr50:this.nr50,nr51:this.nr51,ch1_enabled:this.ch1_enabled,ch1_dacEnabled:this.ch1_dacEnabled,ch1_duty:this.ch1_duty,ch1_dutyPos:this.ch1_dutyPos,ch1_lengthCounter:this.ch1_lengthCounter,ch1_lengthEnabled:this.ch1_lengthEnabled,ch1_volume:this.ch1_volume,ch1_envInitVol:this.ch1_envInitVol,ch1_envDir:this.ch1_envDir,ch1_envPeriod:this.ch1_envPeriod,ch1_envTimer:this.ch1_envTimer,ch1_freq:this.ch1_freq,ch1_freqTimer:this.ch1_freqTimer,ch1_sweepPeriod:this.ch1_sweepPeriod,ch1_sweepDir:this.ch1_sweepDir,ch1_sweepShift:this.ch1_sweepShift,ch1_sweepTimer:this.ch1_sweepTimer,ch1_sweepEnabled:this.ch1_sweepEnabled,ch1_sweepShadow:this.ch1_sweepShadow,ch2_enabled:this.ch2_enabled,ch2_dacEnabled:this.ch2_dacEnabled,ch2_duty:this.ch2_duty,ch2_dutyPos:this.ch2_dutyPos,ch2_lengthCounter:this.ch2_lengthCounter,ch2_lengthEnabled:this.ch2_lengthEnabled,ch2_volume:this.ch2_volume,ch2_envInitVol:this.ch2_envInitVol,ch2_envDir:this.ch2_envDir,ch2_envPeriod:this.ch2_envPeriod,ch2_envTimer:this.ch2_envTimer,ch2_freq:this.ch2_freq,ch2_freqTimer:this.ch2_freqTimer,ch3_enabled:this.ch3_enabled,ch3_dacEnabled:this.ch3_dacEnabled,ch3_lengthCounter:this.ch3_lengthCounter,ch3_lengthEnabled:this.ch3_lengthEnabled,ch3_volume:this.ch3_volume,ch3_freq:this.ch3_freq,ch3_freqTimer:this.ch3_freqTimer,ch3_samplePos:this.ch3_samplePos,ch3_sampleBuffer:this.ch3_sampleBuffer,waveRAM:this.waveRAM.slice(0),ch4_enabled:this.ch4_enabled,ch4_dacEnabled:this.ch4_dacEnabled,ch4_lengthCounter:this.ch4_lengthCounter,ch4_lengthEnabled:this.ch4_lengthEnabled,ch4_volume:this.ch4_volume,ch4_envInitVol:this.ch4_envInitVol,ch4_envDir:this.ch4_envDir,ch4_envPeriod:this.ch4_envPeriod,ch4_envTimer:this.ch4_envTimer,ch4_clockShift:this.ch4_clockShift,ch4_widthMode:this.ch4_widthMode,ch4_divisor:this.ch4_divisor,ch4_freqTimer:this.ch4_freqTimer,ch4_lfsr:this.ch4_lfsr,frameSeqTimer:this.frameSeqTimer,frameSeqStep:this.frameSeqStep,regs:this.regs.slice(0)}}loadState(t){this.enabled=t.enabled,this.nr50=t.nr50,this.nr51=t.nr51,this.ch1_enabled=t.ch1_enabled,this.ch1_dacEnabled=t.ch1_dacEnabled,this.ch1_duty=t.ch1_duty,this.ch1_dutyPos=t.ch1_dutyPos,this.ch1_lengthCounter=t.ch1_lengthCounter,this.ch1_lengthEnabled=t.ch1_lengthEnabled,this.ch1_volume=t.ch1_volume,this.ch1_envInitVol=t.ch1_envInitVol,this.ch1_envDir=t.ch1_envDir,this.ch1_envPeriod=t.ch1_envPeriod,this.ch1_envTimer=t.ch1_envTimer,this.ch1_freq=t.ch1_freq,this.ch1_freqTimer=t.ch1_freqTimer,this.ch1_sweepPeriod=t.ch1_sweepPeriod,this.ch1_sweepDir=t.ch1_sweepDir,this.ch1_sweepShift=t.ch1_sweepShift,this.ch1_sweepTimer=t.ch1_sweepTimer,this.ch1_sweepEnabled=t.ch1_sweepEnabled,this.ch1_sweepShadow=t.ch1_sweepShadow,this.ch2_enabled=t.ch2_enabled,this.ch2_dacEnabled=t.ch2_dacEnabled,this.ch2_duty=t.ch2_duty,this.ch2_dutyPos=t.ch2_dutyPos,this.ch2_lengthCounter=t.ch2_lengthCounter,this.ch2_lengthEnabled=t.ch2_lengthEnabled,this.ch2_volume=t.ch2_volume,this.ch2_envInitVol=t.ch2_envInitVol,this.ch2_envDir=t.ch2_envDir,this.ch2_envPeriod=t.ch2_envPeriod,this.ch2_envTimer=t.ch2_envTimer,this.ch2_freq=t.ch2_freq,this.ch2_freqTimer=t.ch2_freqTimer,this.ch3_enabled=t.ch3_enabled,this.ch3_dacEnabled=t.ch3_dacEnabled,this.ch3_lengthCounter=t.ch3_lengthCounter,this.ch3_lengthEnabled=t.ch3_lengthEnabled,this.ch3_volume=t.ch3_volume,this.ch3_freq=t.ch3_freq,this.ch3_freqTimer=t.ch3_freqTimer,this.ch3_samplePos=t.ch3_samplePos,this.ch3_sampleBuffer=t.ch3_sampleBuffer,t.waveRAM&&this.waveRAM.set(t.waveRAM),this.ch4_enabled=t.ch4_enabled,this.ch4_dacEnabled=t.ch4_dacEnabled,this.ch4_lengthCounter=t.ch4_lengthCounter,this.ch4_lengthEnabled=t.ch4_lengthEnabled,this.ch4_volume=t.ch4_volume,this.ch4_envInitVol=t.ch4_envInitVol,this.ch4_envDir=t.ch4_envDir,this.ch4_envPeriod=t.ch4_envPeriod,this.ch4_envTimer=t.ch4_envTimer,this.ch4_clockShift=t.ch4_clockShift,this.ch4_widthMode=t.ch4_widthMode,this.ch4_divisor=t.ch4_divisor,this.ch4_freqTimer=t.ch4_freqTimer,this.ch4_lfsr=t.ch4_lfsr,this.frameSeqTimer=t.frameSeqTimer,this.frameSeqStep=t.frameSeqStep,t.regs&&this.regs.set(t.regs)}},T=class extends K{constructor(){super();this.cpuFrequency=4194304;this.canvasWidth=160;this.numVisibleScanlines=144;this.numTotalScanlines=154;this.cpuCyclesPerLine=456;this.sampleRate=9240*4;this.overscan=!1;this.defaultROMSize=32768;this.aspectRatio=10/9;this.cpu=new D;this.ram=new Uint8Array(8192);this.vram=new Uint8Array(8192);this.oam=new Uint8Array(160);this.hram=new Uint8Array(128);this.extram=new Uint8Array(8192);this.cgbMode=!1;this.forceColor=!1;this.vramBank1=new Uint8Array(8192);this.vramBankSelect=0;this.wramBanks=new Uint8Array(28672);this.wramBankSelect=1;this.bgCRAM=new Uint8Array(64);this.objCRAM=new Uint8Array(64);this.bgCRAMIndex=0;this.bgCRAMAutoInc=!1;this.objCRAMIndex=0;this.objCRAMAutoInc=!1;this.doubleSpeed=!1;this.speedSwitchArmed=!1;this.hdmaSrc=0;this.hdmaDst=0;this.hdmaLength=255;this.hdmaActive=!1;this.hdmaHblank=!1;this.joyp=207;this.sb=0;this.sc=0;this.divCounter=0;this.tima=0;this.tma=0;this.tac=0;this.iflag=0;this.ie=0;this.lcdc=145;this.stat=0;this.scy=0;this.scx=0;this.ly=0;this.lyc=0;this.dma=0;this.bgp=252;this.obp0=255;this.obp1=255;this.wy=0;this.wx=0;this.apu=new G;this.apuCycleAccum=0;this.ppuMode=0;this.ppuDot=0;this.windowLine=0;this.mbcType=0;this.romBank=1;this.ramBank=0;this.ramEnabled=!1;this.mbcMode=0;this.romBankMask=31;this.hasRTC=!1;this.rtcRegisterSelect=-1;this.rtcLatchLast=0;this.rtcSec=0;this.rtcMin=0;this.rtcHour=0;this.rtcDay=0;this.rtcHalt=!1;this.rtcCarry=!1;this.rtcLatched=new Uint8Array(5);this.rtcLastSync=0;this.read=W([[0,16383,16383,e=>this.rom?this.rom[e]:255],[16384,32767,16383,e=>this.readBankedROM(e)],[32768,40959,8191,e=>this.readVRAM(e)],[40960,49151,8191,e=>this.readExtRAM(e)],[49152,53247,4095,e=>this.ram[e]],[53248,57343,4095,e=>this.readWRAMBank(e)],[57344,61439,4095,e=>this.ram[e]],[61440,65023,4095,e=>this.readWRAMBank(e)],[65024,65183,255,e=>this.oam[e]],[65184,65279,255,e=>255],[65280,65407,127,e=>this.readIO(e)],[65408,65534,127,e=>this.hram[e]],[65535,65535,0,e=>this.ie]]);this.write=W([[0,8191,8191,(e,s)=>{this.writeMBC(e,s)}],[8192,16383,8191,(e,s)=>{this.writeMBC(8192+e,s)}],[16384,24575,8191,(e,s)=>{this.writeMBC(16384+e,s)}],[24576,32767,8191,(e,s)=>{this.writeMBC(24576+e,s)}],[32768,40959,8191,(e,s)=>{this.writeVRAM(e,s)}],[40960,49151,8191,(e,s)=>{this.writeExtRAM(e,s)}],[49152,53247,4095,(e,s)=>{this.ram[e]=s}],[53248,57343,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[57344,61439,4095,(e,s)=>{this.ram[e]=s}],[61440,65023,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[65024,65183,255,(e,s)=>{this.oam[e]=s}],[65184,65279,255,(e,s)=>{}],[65280,65407,127,(e,s)=>{this.writeIO(e,s)}],[65408,65534,127,(e,s)=>{this.hram[e]=s}],[65535,65535,0,(e,s)=>{this.ie=s}]]);this.timerSubCycles=0;this.bgPriorityLine=new Uint8Array(160);this.bgAttrPriLine=new Uint8Array(160);this.handler=z(this.inputs,this.getKeyboardMap()),this.connectCPUMemoryBus(this)}getKeyboardMap(){return re}now(){return Date.now()}syncRTC(){if(!this.hasRTC||this.rtcHalt){this.rtcLastSync=this.now();return}var e=Math.floor((this.now()-this.rtcLastSync)/1e3);if(!(e<=0)){this.rtcLastSync+=e*1e3;var s=this.rtcSec+e;this.rtcSec=s%60,s=this.rtcMin+Math.floor(s/60),this.rtcMin=s%60,s=this.rtcHour+Math.floor(s/60),this.rtcHour=s%24;var i=this.rtcDay+Math.floor(s/24);i>511&&(this.rtcCarry=!0,i&=511),this.rtcDay=i}}latchRTC(){this.syncRTC(),this.rtcLatched[0]=this.rtcSec,this.rtcLatched[1]=this.rtcMin,this.rtcLatched[2]=this.rtcHour,this.rtcLatched[3]=this.rtcDay&255,this.rtcLatched[4]=this.rtcDay>>8&1|(this.rtcHalt?64:0)|(this.rtcCarry?128:0)}resetRTC(){var e=new Date(this.now());this.rtcSec=e.getSeconds(),this.rtcMin=e.getMinutes(),this.rtcHour=e.getHours(),this.rtcDay=0,this.rtcHalt=!1,this.rtcCarry=!1,this.rtcRegisterSelect=-1,this.rtcLatchLast=0,this.rtcLastSync=this.now(),this.latchRTC()}readVRAM(e){return this.cgbMode&&this.vramBankSelect?this.vramBank1[e]:this.vram[e]}writeVRAM(e,s){this.cgbMode&&this.vramBankSelect?this.vramBank1[e]=s:this.vram[e]=s}readWRAMBank(e){return!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]:this.wramBanks[(this.wramBankSelect-1)*4096+e]}writeWRAMBank(e,s){!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]=s:this.wramBanks[(this.wramBankSelect-1)*4096+e]=s}readBankedROM(e){if(!this.rom)return 255;var s=this.romBank;this.mbcType===0&&(s=1);var i=e+s*16384;return i=8&&s<=12?this.rtcRegisterSelect=s:(this.rtcRegisterSelect=-1,this.ramBank=s&3):this.mbcMode===0?(this.romBank=this.romBank&31|(s&3)<<5,this.romBank&=this.romBankMask):this.ramBank=s&3:(this.mbcType===1?this.mbcMode=s&1:this.mbcType===3&&this.rtcLatchLast===0&&s===1&&this.latchRTC(),this.rtcLatchLast=s)}}writeMBC5(e,s){e<8192?this.ramEnabled=(s&15)===10:e<12288?(this.romBank=this.romBank&256|s,this.romBank&=this.romBankMask):e<16384?(this.romBank=this.romBank&255|(s&1)<<8,this.romBank&=this.romBankMask):e<24576&&(this.ramBank=s&15)}readExtRAM(e){if(this.hasRTC&&this.rtcRegisterSelect>=0)return this.syncRTC(),this.rtcLatched[this.rtcRegisterSelect-8];if(!this.ramEnabled&&this.mbcType>0)return 255;var s=e+this.ramBank*8192;return s=0)&&!(!this.ramEnabled&&this.mbcType>0)){var i=e+this.ramBank*8192;i>8&255;case 5:return this.tima;case 6:return this.tma;case 7:return this.tac|248;case 15:return this.iflag|224;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:return this.apu.readRegister(e);case 64:return this.lcdc;case 65:return this.stat|128;case 66:return this.scy;case 67:return this.scx;case 68:return this.ly;case 69:return this.lyc;case 70:return this.dma;case 71:return this.bgp;case 72:return this.obp0;case 73:return this.obp1;case 74:return this.wy;case 75:return this.wx;case 77:return this.cgbMode?(this.doubleSpeed?128:0)|(this.speedSwitchArmed?1:0)|126:255;case 79:return this.cgbMode?this.vramBankSelect|254:255;case 85:return this.cgbMode?this.hdmaLength:255;case 104:return this.cgbMode?this.bgCRAMIndex|(this.bgCRAMAutoInc?128:0):255;case 105:return this.cgbMode?this.bgCRAM[this.bgCRAMIndex&63]:255;case 106:return this.cgbMode?this.objCRAMIndex|(this.objCRAMAutoInc?128:0):255;case 107:return this.cgbMode?this.objCRAM[this.objCRAMIndex&63]:255;case 112:return this.cgbMode?this.wramBankSelect:255;default:return 255}}writeIO(e,s){switch(e){case 0:this.joyp=s;break;case 1:this.sb=s;break;case 2:this.sc=s;break;case 4:this.divCounter=0;break;case 5:this.tima=s;break;case 6:this.tma=s;break;case 7:this.tac=s&7;break;case 15:this.iflag=s&31;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:this.apu.writeRegister(e,s);break;case 64:this.lcdc=s,s&128||(this.ly=0,this.ppuMode=0,this.ppuDot=0,this.stat=this.stat&252);break;case 65:this.stat=this.stat&7|s&120;break;case 66:this.scy=s;break;case 67:this.scx=s;break;case 68:break;case 69:this.lyc=s;break;case 70:this.dmaTransfer(s);break;case 71:this.bgp=s;break;case 72:this.obp0=s;break;case 73:this.obp1=s;break;case 74:this.wy=s;break;case 75:this.wx=s;break;case 77:this.cgbMode&&(this.speedSwitchArmed=!!(s&1));break;case 79:this.cgbMode&&(this.vramBankSelect=s&1);break;case 81:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&255|s<<8);break;case 82:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&65280|s&240);break;case 83:this.cgbMode&&(this.hdmaDst=this.hdmaDst&255|(s&31)<<8);break;case 84:this.cgbMode&&(this.hdmaDst=this.hdmaDst&65280|s&240);break;case 85:this.cgbMode&&this.startHDMA(s);break;case 104:this.cgbMode&&(this.bgCRAMIndex=s&63,this.bgCRAMAutoInc=!!(s&128));break;case 105:this.cgbMode&&(this.bgCRAM[this.bgCRAMIndex&63]=s,this.bgCRAMAutoInc&&(this.bgCRAMIndex=this.bgCRAMIndex+1&63));break;case 106:this.cgbMode&&(this.objCRAMIndex=s&63,this.objCRAMAutoInc=!!(s&128));break;case 107:this.cgbMode&&(this.objCRAM[this.objCRAMIndex&63]=s,this.objCRAMAutoInc&&(this.objCRAMIndex=this.objCRAMIndex+1&63));break;case 112:this.cgbMode&&(this.wramBankSelect=s&7,this.wramBankSelect===0&&(this.wramBankSelect=1));break}}readJoypad(){var e=this.joyp|15;return this.joyp&16||(e&=~(this.inputs[0]&15)),this.joyp&32||(e&=~(this.inputs[0]>>4&15)),e|192}dmaTransfer(e){this.dma=e;for(var s=e<<8,i=0;i<160;i++)this.oam[i]=this.read(s+i)}startHDMA(e){if(this.hdmaActive&&!(e&128)){this.hdmaActive=!1,this.hdmaLength=e|128;return}var s=((e&127)+1)*16;e&128?(this.hdmaActive=!0,this.hdmaHblank=!0,this.hdmaLength=e&127):(this.performHDMABlock(s),this.hdmaLength=255)}performHDMABlock(e){for(var s=this.hdmaSrc&65520,i=this.hdmaDst&8176,h=0;h255&&(this.tima=this.tma,this.iflag|=4)}}syncInterrupts(){var e=this.iflag&this.ie&31;this.cpu.interruptFlags=e}syncInterruptsBack(){var e=this.iflag&this.ie&31&~this.cpu.interruptFlags;this.iflag&=~e}advanceCPU(){this.syncInterrupts();var e=this.cpu.interruptFlags,s=this.cpu,i=1,h=!1;this.cpu.isStable()&&(this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),this.cgbMode&&this.speedSwitchArmed&&!this.cpu.halted&&this.read(this.cpu.getPC())===16&&(h=!0)),i=s.advanceInsn(1);var r=i*4;this.probe.logClocks(r);var a=this.doubleSpeed?i*2:r;if(h&&this.performSpeedSwitch(),this.cpu.interruptFlags!==e&&this.syncInterruptsBack(),this.updateTimerCycles(a),this.updatePPUMode(a),this.apu.clock(a),this.audio){this.apuCycleAccum+=a;for(var c=114;this.apuCycleAccum>=c;)this.apuCycleAccum-=c,this.audio.feedSample(this.apu.getSample(),1)}return a}updatePPUMode(e){if(!(this.scanline>=144)){this.ppuDot+=e;var s=this.ppuMode;this.ppuDot<80?this.ppuMode=2:this.ppuDot<252?this.ppuMode=3:this.ppuMode=0,this.ppuMode!==s&&(this.stat=this.stat&252|this.ppuMode&3,this.ppuMode===0&&this.stat&8?(this.iflag|=2,this.cgbMode&&this.tickHDMA()):this.ppuMode===2&&this.stat&32&&(this.iflag|=2))}}updateTimerCycles(e){if(this.divCounter=this.divCounter+e&65535,!!(this.tac&4)){var s;switch(this.tac&3){case 0:s=1024;break;case 1:s=16;break;case 2:s=64;break;case 3:s=256;break;default:s=1024}for(this.timerSubCycles+=e;this.timerSubCycles>=s;)this.timerSubCycles-=s,this.tima=this.tima+1&255,this.tima===0&&(this.tima=this.tma,this.iflag|=4)}}startScanline(){this.ly=this.scanline,this.ppuDot=0,this.scanline<144?this.ppuMode=2:(this.ppuMode=1,this.scanline===144&&(this.iflag|=1,this.stat&16&&(this.iflag|=2))),this.ly===this.lyc?(this.stat|=4,this.stat&64&&(this.iflag|=2)):this.stat&=-5,this.stat=this.stat&252|this.ppuMode&3}drawScanline(){if(this.lcdc&128&&!(this.scanline>=144)){var e=this.scanline*160;if(this.lcdc&1||this.cgbMode)this.drawBGLine(e);else for(var s=0;s<160;s++)this.pixels[e+s]=L[0],this.bgPriorityLine[s]=0,this.bgAttrPriLine[s]=0;this.lcdc&32&&this.scanline>=this.wy&&this.drawWindowLine(e),this.lcdc&2&&this.drawSpriteLine(e)}}getPaletteColor(e,s){var i=e>>s*2&3;return L[i]}getCGBColor(e,s,i){var h=s*8+i*2;return he(e[h],e[h+1])}drawBGLine(e){for(var s=this.lcdc&8?7168:6144,i=!(this.lcdc&16),h=this.scanline+this.scy&255,r=h>>3&31,a=h&7,c=0;c<160;c++){var d=c+this.scx&255,l=d>>3&31,o=7-(d&7),S=s+r*32+l,_=this.vram[S],u;if(i?u=4096+(_<<24>>24)*16:u=_*16,this.cgbMode){var p=this.vramBank1[S],v=p&7,C=p&8?1:0,k=!!(p&32),y=!!(p&64),B=!!(p&128),P=y?7-a:a,R=k?d&7:o,g=C?this.vramBank1:this.vram,m=g[u+P*2],w=g[u+P*2+1],F=(w>>R&1)<<1|m>>R&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=B?1:0,this.pixels[e+c]=this.getCGBColor(this.bgCRAM,v,F)}else{var m=this.vram[u+a*2],w=this.vram[u+a*2+1],F=(w>>o&1)<<1|m>>o&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=0,this.pixels[e+c]=this.getPaletteColor(this.bgp,F)}}}drawWindowLine(e){var s=this.wx-7;if(!(s>=160)){for(var i=this.lcdc&64?7168:6144,h=!(this.lcdc&16),r=this.windowLine,a=r>>3&31,c=r&7,d=!1,l=Math.max(0,s);l<160;l++){var o=l-s,S=o>>3&31,_=7-(o&7),u=i+a*32+S,p=this.vram[u],v;if(h?v=4096+(p<<24>>24)*16:v=p*16,this.cgbMode){var C=this.vramBank1[u],k=C&7,y=C&8?1:0,B=!!(C&32),P=!!(C&64),R=!!(C&128),g=P?7-c:c,m=B?o&7:_,w=y?this.vramBank1:this.vram,F=w[v+g*2],E=w[v+g*2+1],M=(E>>m&1)<<1|F>>m&1;this.bgPriorityLine[l]=M,this.bgAttrPriLine[l]=R?1:0,this.pixels[e+l]=this.getCGBColor(this.bgCRAM,k,M)}else{var F=this.vram[v+c*2],E=this.vram[v+c*2+1],M=(E>>_&1)<<1|F>>_&1;this.bgPriorityLine[l]=M,this.bgAttrPriLine[l]=0,this.pixels[e+l]=this.getPaletteColor(this.bgp,M)}d=!0}d&&this.windowLine++}}drawSpriteLine(e){for(var s=this.lcdc&4?16:8,i=0,h=[],r=0;r<40&&i<10;r++){var a=this.oam[r*4]-16,c=this.oam[r*4+1]-8;this.scanline>=a&&this.scanlineH.x!==I.x?H.x-I.x:H.index-I.index);for(var d=h.length-1;d>=0;d--){var l=h[d].index,o=this.oam[l*4]-16,S=this.oam[l*4+1]-8,_=this.oam[l*4+2],u=this.oam[l*4+3],p=!!(u&32),v=!!(u&64),C=!!(u&128);s===16&&(_&=254);var k=this.scanline-o;v&&(k=s-1-k);for(var y=_*16+k*2,B=this.cgbMode&&u&8?this.vramBank1:this.vram,P=B[y],R=B[y+1],g=0;g<8;g++){var m=S+g;if(!(m<0||m>=160)){var w=p?g:7-g,F=(R>>w&1)<<1|P>>w&1;if(F!==0)if(this.cgbMode){var E=this.lcdc&1;if(E&&(this.bgAttrPriLine[m]&&this.bgPriorityLine[m]!==0||C&&this.bgPriorityLine[m]!==0))continue;var M=u&7;this.pixels[e+m]=this.getCGBColor(this.objCRAM,M,F)}else{if(C){var se=this.pixels[e+m];if(se!==L[this.bgp&3])continue}var ie=u&16?this.obp1:this.obp0;this.pixels[e+m]=this.getPaletteColor(ie,F)}}}}}loadROM(e,s){if(e.length>327){var i=e[327];switch(i){case 0:this.mbcType=0;break;case 1:case 2:case 3:this.mbcType=1;break;case 15:case 16:case 17:case 18:case 19:this.mbcType=3;break;case 25:case 26:case 27:case 28:case 29:case 30:this.mbcType=5;break;default:console.log(`Unhandled cartridge type 0x${i.toString(16)} @ 0x147, treating as MBC5`),this.mbcType=5;break}this.hasRTC=i===15||i===16}else throw new O("ROM not long enough for header");if(e.length>323){var h=e[323];this.cgbMode=this.forceColor||h===128||h===192}this.rom=new Uint8Array(Math.max(e.length,32768)),this.rom.set(e);var r=Math.max(2,this.rom.length>>14);switch(this.romBankMask=r-1,e[329]){case 0:break;case 1:this.extram=new Uint8Array(2048);break;case 2:this.extram=new Uint8Array(8192);break;case 3:this.extram=new Uint8Array(32768);break;case 4:this.extram=new Uint8Array(131072);break;case 5:this.extram=new Uint8Array(65536);break;default:console.log(`Invalid RAM size code @ 0x149: ${e[329]}`);break}this.reset()}reset(){super.reset(),this.ram.fill(0),this.vram.fill(0),this.oam.fill(0),this.hram.fill(0),this.iflag=0,this.ie=0,this.lcdc=145,this.stat=0,this.scy=0,this.scx=0,this.ly=0,this.lyc=0,this.bgp=252,this.obp0=255,this.obp1=255,this.wy=0,this.wx=0,this.joyp=207,this.divCounter=0,this.tima=0,this.tma=0,this.tac=0,this.ppuMode=0,this.ppuDot=0,this.windowLine=0,this.romBank=1,this.ramBank=0,this.ramEnabled=!1,this.mbcMode=0,this.timerSubCycles=0,this.apuCycleAccum=0,this.apu.reset(),this.vramBank1.fill(0),this.vramBankSelect=0,this.wramBanks.fill(0),this.wramBankSelect=1;for(var e=0;e<8;e++)this.bgCRAM.set(Q,e*8),this.objCRAM.set(Q,e*8);this.bgCRAMIndex=0,this.bgCRAMAutoInc=!1,this.objCRAMIndex=0,this.objCRAMAutoInc=!1,this.doubleSpeed=!1,this.speedSwitchArmed=!1,this.hdmaSrc=0,this.hdmaDst=0,this.hdmaLength=255,this.hdmaActive=!1,this.hdmaHblank=!1,this.cgbMode&&(this.cpu.A=17),this.hasRTC?this.resetRTC():(this.rtcRegisterSelect=-1,this.rtcLatchLast=0)}preFrame(){this.windowLine=0}readVRAMAddress(e){return this.cgbMode&&e>=8192?this.vramBank1[e&8191]:this.vram[e&8191]}saveState(){var e=super.saveState();return e.vram=this.vram.slice(0),e.oam=this.oam.slice(0),e.hram=this.hram.slice(0),e.extram=this.extram.slice(0),e.io={joyp:this.joyp,sb:this.sb,sc:this.sc,divCounter:this.divCounter,tima:this.tima,tma:this.tma,tac:this.tac,iflag:this.iflag,ie:this.ie,lcdc:this.lcdc,stat:this.stat,scy:this.scy,scx:this.scx,ly:this.ly,lyc:this.lyc,dma:this.dma,bgp:this.bgp,obp0:this.obp0,obp1:this.obp1,wy:this.wy,wx:this.wx,ppuMode:this.ppuMode,ppuDot:this.ppuDot,windowLine:this.windowLine,romBank:this.romBank,ramBank:this.ramBank,ramEnabled:this.ramEnabled,mbcMode:this.mbcMode,timerSubCycles:this.timerSubCycles},e.apu=this.apu.saveState(),e.apuCycleAccum=this.apuCycleAccum,e.rtc={hasRTC:this.hasRTC,sec:this.rtcSec,min:this.rtcMin,hour:this.rtcHour,day:this.rtcDay,halt:this.rtcHalt,carry:this.rtcCarry,registerSelect:this.rtcRegisterSelect,latchLast:this.rtcLatchLast,latched:this.rtcLatched.slice(0),lastSync:this.rtcLastSync},this.cgbMode&&(e.cgb={vramBank1:this.vramBank1.slice(0),vramBankSelect:this.vramBankSelect,wramBanks:this.wramBanks.slice(0),wramBankSelect:this.wramBankSelect,bgCRAM:this.bgCRAM.slice(0),objCRAM:this.objCRAM.slice(0),bgCRAMIndex:this.bgCRAMIndex,bgCRAMAutoInc:this.bgCRAMAutoInc,objCRAMIndex:this.objCRAMIndex,objCRAMAutoInc:this.objCRAMAutoInc,doubleSpeed:this.doubleSpeed,speedSwitchArmed:this.speedSwitchArmed,hdmaSrc:this.hdmaSrc,hdmaDst:this.hdmaDst,hdmaLength:this.hdmaLength,hdmaActive:this.hdmaActive,hdmaHblank:this.hdmaHblank}),e}loadState(e){super.loadState(e),this.vram.set(e.vram),this.oam.set(e.oam),this.hram.set(e.hram),e.extram&&this.extram.set(e.extram);var s=e.io;if(this.joyp=s.joyp,this.sb=s.sb,this.sc=s.sc,this.divCounter=s.divCounter,this.tima=s.tima,this.tma=s.tma,this.tac=s.tac,this.iflag=s.iflag,this.ie=s.ie,this.lcdc=s.lcdc,this.stat=s.stat,this.scy=s.scy,this.scx=s.scx,this.ly=s.ly,this.lyc=s.lyc,this.dma=s.dma,this.bgp=s.bgp,this.obp0=s.obp0,this.obp1=s.obp1,this.wy=s.wy,this.wx=s.wx,this.ppuMode=s.ppuMode,this.ppuDot=s.ppuDot,this.windowLine=s.windowLine,this.romBank=s.romBank,this.ramBank=s.ramBank,this.ramEnabled=s.ramEnabled,this.mbcMode=s.mbcMode,this.timerSubCycles=s.timerSubCycles,e.apu&&this.apu.loadState(e.apu),this.apuCycleAccum=e.apuCycleAccum||0,e.rtc){var i=e.rtc;this.hasRTC=i.hasRTC,this.rtcSec=i.sec,this.rtcMin=i.min,this.rtcHour=i.hour,this.rtcDay=i.day,this.rtcHalt=i.halt,this.rtcCarry=i.carry,this.rtcRegisterSelect=i.registerSelect,this.rtcLatchLast=i.latchLast,i.latched&&this.rtcLatched.set(i.latched),this.rtcLastSync=i.lastSync}if(e.cgb){var h=e.cgb;this.vramBank1.set(h.vramBank1),this.vramBankSelect=h.vramBankSelect,this.wramBanks.set(h.wramBanks),this.wramBankSelect=h.wramBankSelect,this.bgCRAM.set(h.bgCRAM),this.objCRAM.set(h.objCRAM),this.bgCRAMIndex=h.bgCRAMIndex,this.bgCRAMAutoInc=h.bgCRAMAutoInc,this.objCRAMIndex=h.objCRAMIndex,this.objCRAMAutoInc=h.objCRAMAutoInc,this.doubleSpeed=h.doubleSpeed,this.speedSwitchArmed=h.speedSwitchArmed,this.hdmaSrc=h.hdmaSrc,this.hdmaDst=h.hdmaDst,this.hdmaLength=h.hdmaLength,this.hdmaActive=h.hdmaActive,this.hdmaHblank=h.hdmaHblank}}getDebugCategories(){return["CPU","Stack","PPU"]}getDebugInfo(e,s){if(e==="PPU"){var i="LCDC "+n(this.lcdc,2)+" STAT "+n(this.stat,2)+` LY `+n(this.ly,2)+" LYC "+n(this.lyc,2)+` SCX `+n(this.scx,2)+" SCY "+n(this.scy,2)+` WX `+n(this.wx,2)+" WY "+n(this.wy,2)+` @@ -14,4 +14,4 @@ SPD `+(this.doubleSpeed?"2x":"1x")+` `),this.hasRTC&&(this.syncRTC(),i+=`--- RTC --- `+n(this.rtcHour,2)+":"+n(this.rtcMin,2)+":"+n(this.rtcSec,2)+" day "+this.rtcDay+(this.rtcHalt?" HALT":"")+(this.rtcCarry?" CARRY":"")+` `),i}}};var ae=["nop","ld bc,xx","ld (bc),a","inc bc","inc b","dec b","ld b,x","rlca","ld (xx),sp","add hl,bc","ld a,(bc)","dec bc","inc c","dec c","ld c,x","rrca","stop x","ld de,xx","ld (de),a","inc de","inc d","dec d","ld d,x","rla","jr x","add hl,de","ld a,(de)","dec de","inc e","dec e","ld e,x","rra","jr nz,x","ld hl,xx","ld (hl+),a","inc hl","inc h","dec h","ld h,x","daa","jr z,x","add hl,hl","ld a,(hl+)","dec hl","inc l","dec l","ld l,x","cpl","jr nc,x","ld sp,xx","ld (hl-),a","inc sp","inc (hl)","dec (hl)","ld (hl),x","scf","jr c,x","add hl,sp","ld a,(hl-)","dec sp","inc a","dec a","ld a,x","ccf","ld b,b","ld b,c","ld b,d","ld b,e","ld b,h","ld b,l","ld b,(hl)","ld b,a","ld c,b","ld c,c","ld c,d","ld c,e","ld c,h","ld c,l","ld c,(hl)","ld c,a","ld d,b","ld d,c","ld d,d","ld d,e","ld d,h","ld d,l","ld d,(hl)","ld d,a","ld e,b","ld e,c","ld e,d","ld e,e","ld e,h","ld e,l","ld e,(hl)","ld e,a","ld h,b","ld h,c","ld h,d","ld h,e","ld h,h","ld h,l","ld h,(hl)","ld h,a","ld l,b","ld l,c","ld l,d","ld l,e","ld l,h","ld l,l","ld l,(hl)","ld l,a","ld (hl),b","ld (hl),c","ld (hl),d","ld (hl),e","ld (hl),h","ld (hl),l","halt","ld (hl),a","ld a,b","ld a,c","ld a,d","ld a,e","ld a,h","ld a,l","ld a,(hl)","ld a,a","add a,b","add a,c","add a,d","add a,e","add a,h","add a,l","add a,(hl)","add a,a","adc a,b","adc a,c","adc a,d","adc a,e","adc a,h","adc a,l","adc a,(hl)","adc a,a","sub b","sub c","sub d","sub e","sub h","sub l","sub (hl)","sub a","sbc a,b","sbc a,c","sbc a,d","sbc a,e","sbc a,h","sbc a,l","sbc a,(hl)","sbc a,a","and b","and c","and d","and e","and h","and l","and (hl)","and a","xor b","xor c","xor d","xor e","xor h","xor l","xor (hl)","xor a","or b","or c","or d","or e","or h","or l","or (hl)","or a","cp b","cp c","cp d","cp e","cp h","cp l","cp (hl)","cp a","ret nz","pop bc","jp nz,xx","jp xx","call nz,xx","push bc","add a,x","rst 00h","ret z","ret","jp z,xx","xxCBxx","call z,xx","call xx","adc a,x","rst 08h","ret nc","pop de","jp nc,xx","??","call nc,xx","push de","sub x","rst 10h","ret c","reti","jp c,xx","??","call c,xx","??","sbc a,x","rst 18h","ldh (x),a","pop hl","ld (c),a","??","??","push hl","and x","rst 20h","add sp,x","jp (hl)","ld (xx),a","??","??","??","xor x","rst 28h","ldh a,(x)","pop af","ld a,(c)","di","??","push af","or x","rst 30h","ld hl,sp+x","ld sp,hl","ld a,(xx)","ei","??","??","cp x","rst 38h"],ce=["rlc b","rlc c","rlc d","rlc e","rlc h","rlc l","rlc (hl)","rlc a","rrc b","rrc c","rrc d","rrc e","rrc h","rrc l","rrc (hl)","rrc a","rl b","rl c","rl d","rl e","rl h","rl l","rl (hl)","rl a","rr b","rr c","rr d","rr e","rr h","rr l","rr (hl)","rr a","sla b","sla c","sla d","sla e","sla h","sla l","sla (hl)","sla a","sra b","sra c","sra d","sra e","sra h","sra l","sra (hl)","sra a","swap b","swap c","swap d","swap e","swap h","swap l","swap (hl)","swap a","srl b","srl c","srl d","srl e","srl h","srl l","srl (hl)","srl a","bit 0,b","bit 0,c","bit 0,d","bit 0,e","bit 0,h","bit 0,l","bit 0,(hl)","bit 0,a","bit 1,b","bit 1,c","bit 1,d","bit 1,e","bit 1,h","bit 1,l","bit 1,(hl)","bit 1,a","bit 2,b","bit 2,c","bit 2,d","bit 2,e","bit 2,h","bit 2,l","bit 2,(hl)","bit 2,a","bit 3,b","bit 3,c","bit 3,d","bit 3,e","bit 3,h","bit 3,l","bit 3,(hl)","bit 3,a","bit 4,b","bit 4,c","bit 4,d","bit 4,e","bit 4,h","bit 4,l","bit 4,(hl)","bit 4,a","bit 5,b","bit 5,c","bit 5,d","bit 5,e","bit 5,h","bit 5,l","bit 5,(hl)","bit 5,a","bit 6,b","bit 6,c","bit 6,d","bit 6,e","bit 6,h","bit 6,l","bit 6,(hl)","bit 6,a","bit 7,b","bit 7,c","bit 7,d","bit 7,e","bit 7,h","bit 7,l","bit 7,(hl)","bit 7,a","res 0,b","res 0,c","res 0,d","res 0,e","res 0,h","res 0,l","res 0,(hl)","res 0,a","res 1,b","res 1,c","res 1,d","res 1,e","res 1,h","res 1,l","res 1,(hl)","res 1,a","res 2,b","res 2,c","res 2,d","res 2,e","res 2,h","res 2,l","res 2,(hl)","res 2,a","res 3,b","res 3,c","res 3,d","res 3,e","res 3,h","res 3,l","res 3,(hl)","res 3,a","res 4,b","res 4,c","res 4,d","res 4,e","res 4,h","res 4,l","res 4,(hl)","res 4,a","res 5,b","res 5,c","res 5,d","res 5,e","res 5,h","res 5,l","res 5,(hl)","res 5,a","res 6,b","res 6,c","res 6,d","res 6,e","res 6,h","res 6,l","res 6,(hl)","res 6,a","res 7,b","res 7,c","res 7,d","res 7,e","res 7,h","res 7,l","res 7,(hl)","res 7,a","set 0,b","set 0,c","set 0,d","set 0,e","set 0,h","set 0,l","set 0,(hl)","set 0,a","set 1,b","set 1,c","set 1,d","set 1,e","set 1,h","set 1,l","set 1,(hl)","set 1,a","set 2,b","set 2,c","set 2,d","set 2,e","set 2,h","set 2,l","set 2,(hl)","set 2,a","set 3,b","set 3,c","set 3,d","set 3,e","set 3,h","set 3,l","set 3,(hl)","set 3,a","set 4,b","set 4,c","set 4,d","set 4,e","set 4,h","set 4,l","set 4,(hl)","set 4,a","set 5,b","set 5,c","set 5,d","set 5,e","set 5,h","set 5,l","set 5,(hl)","set 5,a","set 6,b","set 6,c","set 6,d","set 6,e","set 6,h","set 6,l","set 6,(hl)","set 6,a","set 7,b","set 7,c","set 7,d","set 7,e","set 7,h","set 7,l","set 7,(hl)","set 7,a"];function ee(A,t,e,s){var i,h=1,r=!1;if(t===203?(i=ce[e],h=2):i=ae[t],(!i||!i.length||i==="??")&&(i="??"),/\bxx\b/.test(i))i=i.replace(/\bxx\b/,"$"+n(e+(s<<8),4)),h+=2,r=!0;else if(/\bx\b/.test(i)){var a=t===203?s:e;if(i.startsWith("jr")||i.startsWith("jr ")){var c=a<128?A+2+a:A+2-(256-a);c&=65535,i=i.replace(/\bx\b/,"$"+n(c,4)),r=!0}else i.startsWith("ldh")?i=i.replace(/\bx\b/,"$"+n(a,2)):i=i.replace(/\bx\b/,"$"+n(a,2));h+=1}return{line:i.toUpperCase(),nbytes:h,isaddr:r,iscall:/^(call|rst)/.test(i)}}var te=[{id:"hello.c",name:"Hello World",category:"C"},{id:"typewriter.c",name:"Typewriter Text"},{id:"testdrawing.c",name:"Drawing Routines"},{id:"joypad.c",name:"Joypad Input"},{id:"testphys.c",name:"Sprite Movement"},{id:"sprites.c",name:"Multiple Sprites"},{id:"metasprites.c",name:"Metasprites"},{id:"paint.c",name:"Paint Program"},{id:"scroll.c",name:"Scrolling"},{id:"large_map.c",name:"Large Scrolling Map"},{id:"window.c",name:"Window Status Bar"},{id:"galaxy.c",name:"Window + Sprites"},{id:"raster.c",name:"STAT/LYC Raster Effects"},{id:"interrupts.c",name:"VBlank + Timer Interrupts"},{id:"vram.c",name:"VRAM/OAM Access"},{id:"gbc.c",name:"Game Boy Color"},{id:"gbdecompress.c",name:"Decompression"},{id:"music.c",name:"Music Player"},{id:"clock.c",name:"MBC3 Real-Time Clock"},{id:"banking.c",name:"ROM Bank Switching"},{id:"siegegame.c",name:"Siege Game",category:"Games"},{id:"climber.c",name:"Climber Game"},{id:"chase.c",name:"Shiru's Chase Game"},{id:"pakupaku.c",name:"Paku Paku"},{id:"hello.sgb",name:"Hello World (ASM)",category:"Assembler"},{id:"main.wiz",name:"Snake Game (Wiz)"}],q=class extends J{constructor(){super(...arguments);this.getToolForFilename=Z}newMachine(){return new T}getPresets(){return te}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}readAddress(e){return this.machine.read(e)}readVRAMAddress(e){return this.machine.readVRAMAddress(e)}getOriginPC(){return 256}getROMExtension(){return".gb"}getMemoryMap(){return{main:[{name:"ROM Bank 0",start:0,size:16384,type:"rom"},{name:"ROM Bank 1+",start:16384,size:16384,type:"rom"},{name:"Video RAM",start:32768,size:8192,type:"ram"},{name:"External RAM",start:40960,size:8192,type:"ram"},{name:"Work RAM",start:49152,size:8192,type:"ram"},{name:"OAM",start:65024,size:160,type:"ram"},{name:"I/O Registers",start:65280,size:128,type:"io"},{name:"High RAM",start:65408,size:127,type:"ram"}]}}getDebugCategories(){return V(this.machine)?this.machine.getDebugCategories():["CPU","Stack","PPU"]}getDebugInfo(e,s){switch(e){case"CPU":return Y(s.c);case"Stack":{var i=s.c.SP-1&65535,h=i&65280,r=h+255;return i==0&&(i=65536),$(this,[],h,r,i,205)}default:return V(this.machine)&&this.machine.getDebugInfo(e,s)}}disassemble(e,s){return ee(e,s(e),s(e+1),s(e+2))}showHelp(){return"https://8bitworkshop.com/docs/platforms/gameboy/"}},U=class extends q{newMachine(){var t=new T;return t}getPresets(){return te}getROMExtension(){return".gbc"}getMemoryMap(){return{main:[{name:"ROM Bank 0",start:0,size:16384,type:"rom"},{name:"ROM Bank 1+",start:16384,size:16384,type:"rom"},{name:"Video RAM B0",start:32768,size:8192,type:"ram"},{name:"External RAM",start:40960,size:8192,type:"ram"},{name:"Work RAM 0",start:49152,size:4096,type:"ram"},{name:"Work RAM 1-7",start:53248,size:4096,type:"ram"},{name:"OAM",start:65024,size:160,type:"ram"},{name:"I/O Registers",start:65280,size:128,type:"io"},{name:"High RAM",start:65408,size:127,type:"ram"}]}}showHelp(){return"https://8bitworkshop.com/docs/platforms/gameboy/"}};j.gb=q;j["gb.color"]=U; -//# sourceMappingURL=gb-AK7YB3TT.js.map +//# sourceMappingURL=gb-EL7XYT3L.js.map diff --git a/gen/gb-AK7YB3TT.js.map b/gen/gb-EL7XYT3L.js.map similarity index 100% rename from gen/gb-AK7YB3TT.js.map rename to gen/gb-EL7XYT3L.js.map diff --git a/gen/kim1-5SXSABGS.js b/gen/kim1-BNT3J6F5.js similarity index 96% rename from gen/kim1-5SXSABGS.js rename to gen/kim1-BNT3J6F5.js index 11f62aba..ab44023f 100644 --- a/gen/kim1-5SXSABGS.js +++ b/gen/kim1-BNT3J6F5.js @@ -1,2 +1,2 @@ -import{G as y,m as l,p as V}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{K as p,Y as e,ba as F,ca as f,g as h,l as I,m as x}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var B=[e.VK_DELETE,e.VK_ENTER,e.VK_RIGHT,e.VK_F7,e.VK_F1,e.VK_F3,e.VK_F5,e.VK_DOWN,e.VK_3,e.VK_W,e.VK_A,e.VK_4,e.VK_Z,e.VK_S,e.VK_E,e.VK_SHIFT,e.VK_5,e.VK_R,e.VK_D,e.VK_6,e.VK_C,e.VK_F,e.VK_T,e.VK_X,e.VK_7,e.VK_Y,e.VK_G,e.VK_8,e.VK_B,e.VK_H,e.VK_U,e.VK_V,e.VK_9,e.VK_I,e.VK_J,e.VK_0,e.VK_M,e.VK_K,e.VK_O,e.VK_N,null,e.VK_P,e.VK_L,e.VK_MINUS,e.VK_PERIOD,null,null,e.VK_COMMA,null,null,e.VK_SEMICOLON,e.VK_HOME,e.VK_SHIFT,e.VK_EQUALS,e.VK_TILDE,e.VK_SLASH,e.VK_1,e.VK_LEFT,e.VK_CONTROL,e.VK_2,e.VK_SPACE,e.VK_ALT,e.VK_Q,null],A=0,a=class{constructor(){this.regs=new Uint8Array(16);this.ina=0;this.inb=0}read(o){return this.regs[o]}write(o,r){this.regs[o]=r}input_a(){return this.ina&~this.regs[1]}input_b(){return this.inb&~this.regs[1]}output_a(){return this.regs[0]^255|this.regs[1]}output_b(){return this.regs[2]^255|this.regs[3]}},g=class extends V{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=4096;this.cpu=new l;this.ram=new Uint8Array(6144);this.rriot1=new a;this.rriot2=new a;this.digits=[];this.read=f([[5888,5951,15,r=>this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<>3,u=s&7;i&1?this.inputs[A+K]|=1<this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<>3,u=s&7;i&1?this.inputs[A+K]|=1<>1}var nt=V([[s.SELECT,0,1],[s.START,0,4],[s.VK_2,0,8],[s.UP,1,1],[s.DOWN,1,2],[s.LEFT,1,4],[s.RIGHT,1,8],[s.A,1,16],[s.B,1,32],[s.P2_UP,2,1],[s.P2_DOWN,2,2],[s.P2_LEFT,2,4],[s.P2_RIGHT,2,8],[s.P2_A,2,16],[s.P2_B,2,32]]);var k=57344,q=k,y=16384,lt=q+y,Q=32768,ot=16384,pt=k+y+Q+ot,A=class extends D{constructor(){super();this.cpuFrequency=W;this.canvasWidth=T;this.numVisibleScanlines=Z;this.numTotalScanlines=g;this.cpuCyclesPerLine=it;this.defaultROMSize=pt;this.sampleRate=K*g*2;this.cpu=new v;this.ram=new Uint8Array(2048);this.sprram=new Uint8Array(512);this.vram=new Uint8Array(2048);this.palram=new Uint8Array(128);this.palette=new Uint32Array(64);this.interruptEnabled=!1;this.watchdog_counter=O;this.ctcVector=0;this.read=w([[0,57343,65535,t=>this.rom?this.rom[t]:0],[57344,59391,2047,t=>this.ram[t]],[59392,61439,511,t=>this.sprram[t]],[61440,63487,2047,t=>this.vram[t]],[63488,65535,127,t=>this.palram[t]]]);this.write=w([[57344,59391,2047,(t,e)=>{this.ram[t]=e}],[59392,61439,511,(t,e)=>{this.sprram[t]=e}],[61440,63487,2047,(t,e)=>{this.vram[t]=e}],[63488,65535,127,(t,e)=>{this.palram[t]=e,this.updatePalette(t)}]]);var t=new Y;this.psg1=new P(t),this.psg2=new P(t),this.audioadapter=new z([this.psg1.psg,this.psg2.psg],2,this.sampleRate),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set([0,0,0,255,255]),this.handler=N(this.inputs,nt)}readConst(t){return this.read(t)}newIOBus(){return{read:t=>(t&=255,t<=4?this.inputs[t]:t>=8&&t<=15?this.inputs[3]:(t>=240&&t<=243,0)),write:(t,e)=>{t&=255,t==224&&(this.watchdog_counter=O),t>=240&&t<=243&&((t&3)==0&&!(e&1)||(e&1)==0&&(this.ctcVector=e&248)),t>=0&&t<=7}}}updatePalette(t){let e=t>>1;if(e>=64)return;let r=this.palram[e*2+1],n=E(r>>6&3),i=E(r&7),a=E(r>>3&7),o=(this.palram[e*2]&1)<<2;n=E(o|r>>6&3),this.palette[e]=4278190080|a<<16|i<<8|n}drawScanline(){let t=this.scanline;if(t>=Z)return;let e=t*T;if((t&1)==0){t>>=1;let r=Math.floor(t/C),n=t%C;if(r>4&3,F=(l&4)!=0,m=(l&8)!=0?15-n:n,u=i*C*2;this.drawTileLine(e+u,x,m,h,F)}}this.drawSpriteScanline(t,e)}drawTileLine(t,e,r,n,i){let a=q,o=y/2,x=e*32+(r<8,r),h=this.rom[a+x]||0,F=this.rom[a+o+x]||0,d=n*4;for(let m=0;m<8;m++){let u=7-m,p=i?14-m*2:m*2,b=h>>u&1|(F>>u&1)<<1;this.pixels[t+p]=this.pixels[t+p+512]=this.pixels[t+p+1]=this.pixels[t+p+513]=this.palette[d+b]}}drawSpriteScanline(t,e){let r=lt,n=Q/4;for(let i=31;i>=0;i--){let a=i*4,o=this.sprram[a]-2&255;o=496-o;let l=this.sprram[a+1],x=this.sprram[a+2]|(l&8?256:0),h=this.sprram[a+3]-3&511,F=(l&16)!=0,d=(l&32)!=0,u=16+(l&3)*16,p=t-o;if(p<0||p>=32)continue;let b=d?31-p:p,J=x*128+b;for(let f=0;f<4;f++){let M=J+f*32,$=this.rom[r+M]||0,tt=this.rom[r+n+M]||0,et=this.rom[r+n*2+M]||0,rt=this.rom[r+n*3+M]||0;for(let _=0;_<8;_++){let S=7-_,L=$>>S&1|(tt>>S&1)<<1|(et>>S&1)<<2|(rt>>S&1)<<3;if(L==0)continue;let R;F?R=h+31-(f*8+_):R=h+f*8+_,R>=0&&R>1}var nt=V([[s.SELECT,0,1],[s.START,0,4],[s.VK_2,0,8],[s.UP,1,1],[s.DOWN,1,2],[s.LEFT,1,4],[s.RIGHT,1,8],[s.A,1,16],[s.B,1,32],[s.P2_UP,2,1],[s.P2_DOWN,2,2],[s.P2_LEFT,2,4],[s.P2_RIGHT,2,8],[s.P2_A,2,16],[s.P2_B,2,32]]);var k=57344,q=k,y=16384,lt=q+y,Q=32768,ot=16384,pt=k+y+Q+ot,A=class extends D{constructor(){super();this.cpuFrequency=W;this.canvasWidth=T;this.numVisibleScanlines=Z;this.numTotalScanlines=g;this.cpuCyclesPerLine=it;this.defaultROMSize=pt;this.sampleRate=K*g*2;this.cpu=new v;this.ram=new Uint8Array(2048);this.sprram=new Uint8Array(512);this.vram=new Uint8Array(2048);this.palram=new Uint8Array(128);this.palette=new Uint32Array(64);this.interruptEnabled=!1;this.watchdog_counter=O;this.ctcVector=0;this.read=w([[0,57343,65535,t=>this.rom?this.rom[t]:0],[57344,59391,2047,t=>this.ram[t]],[59392,61439,511,t=>this.sprram[t]],[61440,63487,2047,t=>this.vram[t]],[63488,65535,127,t=>this.palram[t]]]);this.write=w([[57344,59391,2047,(t,e)=>{this.ram[t]=e}],[59392,61439,511,(t,e)=>{this.sprram[t]=e}],[61440,63487,2047,(t,e)=>{this.vram[t]=e}],[63488,65535,127,(t,e)=>{this.palram[t]=e,this.updatePalette(t)}]]);var t=new Y;this.psg1=new P(t),this.psg2=new P(t),this.audioadapter=new z([this.psg1.psg,this.psg2.psg],2,this.sampleRate),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set([0,0,0,255,255]),this.handler=N(this.inputs,nt)}readConst(t){return this.read(t)}newIOBus(){return{read:t=>(t&=255,t<=4?this.inputs[t]:t>=8&&t<=15?this.inputs[3]:(t>=240&&t<=243,0)),write:(t,e)=>{t&=255,t==224&&(this.watchdog_counter=O),t>=240&&t<=243&&((t&3)==0&&!(e&1)||(e&1)==0&&(this.ctcVector=e&248)),t>=0&&t<=7}}}updatePalette(t){let e=t>>1;if(e>=64)return;let r=this.palram[e*2+1],n=E(r>>6&3),i=E(r&7),a=E(r>>3&7),o=(this.palram[e*2]&1)<<2;n=E(o|r>>6&3),this.palette[e]=4278190080|a<<16|i<<8|n}drawScanline(){let t=this.scanline;if(t>=Z)return;let e=t*T;if((t&1)==0){t>>=1;let r=Math.floor(t/C),n=t%C;if(r>4&3,F=(l&4)!=0,m=(l&8)!=0?15-n:n,u=i*C*2;this.drawTileLine(e+u,x,m,h,F)}}this.drawSpriteScanline(t,e)}drawTileLine(t,e,r,n,i){let a=q,o=y/2,x=e*32+(r<8,r),h=this.rom[a+x]||0,F=this.rom[a+o+x]||0,d=n*4;for(let m=0;m<8;m++){let u=7-m,p=i?14-m*2:m*2,b=h>>u&1|(F>>u&1)<<1;this.pixels[t+p]=this.pixels[t+p+512]=this.pixels[t+p+1]=this.pixels[t+p+513]=this.palette[d+b]}}drawSpriteScanline(t,e){let r=lt,n=Q/4;for(let i=31;i>=0;i--){let a=i*4,o=this.sprram[a]-2&255;o=496-o;let l=this.sprram[a+1],x=this.sprram[a+2]|(l&8?256:0),h=this.sprram[a+3]-3&511,F=(l&16)!=0,d=(l&32)!=0,u=16+(l&3)*16,p=t-o;if(p<0||p>=32)continue;let b=d?31-p:p,J=x*128+b;for(let f=0;f<4;f++){let M=J+f*32,$=this.rom[r+M]||0,tt=this.rom[r+n+M]||0,et=this.rom[r+n*2+M]||0,rt=this.rom[r+n*3+M]||0;for(let _=0;_<8;_++){let S=7-_,L=$>>S&1|(tt>>S&1)<<1|(et>>S&1)<<2|(rt>>S&1)<<3;if(L==0)continue;let R;F?R=h+31-(f*8+_):R=h+f*8+_,R>=0&&R{let e=s>>14<<1,D=this.slotmask>>e&3,g=this.slots[D];return g?g.read(s):0};this.write=(s,e)=>{let D=s>>14<<1,g=this.slotmask>>D&3,B=this.slots[g];B&&B.write(s,e)};this.init(this,this.newIOBus(),new Q(new U)),this.bios=new E().decode(O(atob(h))),this.bios[3541]=0,this.bios[3542]=0,this.bios[3543]=0,this.slots=[{read:s=>this.bios[s]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.ram[s]|0,write:(s,e)=>{this.ram[s]=e}}]}loadBIOS(s){this.bios=s}getKeyboardMap(){return n}getKeyboardFunction(){return(s,e,D,g)=>{for(var B=F,T=0;T>3,f=7-(T&7);g&1?this.inputs[i+R]|=1<{switch(s&=255,s){case 152:return this.vdp.readData();case 153:return this.vdp.readStatus();case 162:return this.psg.currentRegister()==14?~this.inputs[a]:this.psg.readData();case 168:return this.slotmask;case 169:return~this.inputs[i+(this.ppi_c&15)];case 170:return this.ppi_c}return 0},write:(s,e)=>{switch(s&=255,e&=255,s){case 152:this.vdp.writeData(e);break;case 153:this.vdp.writeAddress(e);break;case 168:this.slotmask=e;break;case 170:this.ppi_c=e;break;case 171:let D=e>>1&7;this.ppi_c=this.ppi_c&~(1<{let e=s>>14<<1,D=this.slotmask>>e&3,g=this.slots[D];return g?g.read(s):0};this.write=(s,e)=>{let D=s>>14<<1,g=this.slotmask>>D&3,B=this.slots[g];B&&B.write(s,e)};this.init(this,this.newIOBus(),new Q(new U)),this.bios=new E().decode(O(atob(h))),this.bios[3541]=0,this.bios[3542]=0,this.bios[3543]=0,this.slots=[{read:s=>this.bios[s]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.ram[s]|0,write:(s,e)=>{this.ram[s]=e}}]}loadBIOS(s){this.bios=s}getKeyboardMap(){return n}getKeyboardFunction(){return(s,e,D,g)=>{for(var B=F,T=0;T>3,f=7-(T&7);g&1?this.inputs[i+R]|=1<{switch(s&=255,s){case 152:return this.vdp.readData();case 153:return this.vdp.readStatus();case 162:return this.psg.currentRegister()==14?~this.inputs[a]:this.psg.readData();case 168:return this.slotmask;case 169:return~this.inputs[i+(this.ppi_c&15)];case 170:return this.ppi_c}return 0},write:(s,e)=>{switch(s&=255,e&=255,s){case 152:this.vdp.writeData(e);break;case 153:this.vdp.writeAddress(e);break;case 168:this.slotmask=e;break;case 170:this.ppi_c=e;break;case 171:let D=e>>1&7;this.ppi_c=this.ppi_c&~(1<this.rom?this.rom[e]:0],[8192,16383,8191,e=>this.ram[e]]]);this.write=a([[8192,9215,1023,(e,s)=>{this.ram[e]=s}],[9216,16383,8191,(e,s)=>{this.ram[e]=s;for(var l=e-1024<<3,r=0;r<8;r++)this.pixels[l+r]=s&1<{switch(e&=3,e){case 0:case 1:case 2:return this.inputs[e];case 3:return this.bitshift_register>>8-this.bitshift_offset&255}return 0},write:(e,s)=>{switch(e&=7,s&=255,e){case 2:this.bitshift_offset=s&7;break;case 3:case 5:break;case 4:this.bitshift_register=this.bitshift_register>>8|s<<8;break;case 6:this.watchdog_counter=p;break}}}}startScanline(){}drawScanline(){this.scanline==95?this.interrupt(207):this.scanline==223&&this.interrupt(215)}interrupt(e){this.probe.logInterrupt(e),this.cpu.interrupt(e)}advanceFrame(e){return this.watchdog_counter--<=0&&(console.log("WATCHDOG FIRED"),this.reset()),super.advanceFrame(e)}loadState(e){super.loadState(e),this.bitshift_register=e.bsr,this.bitshift_offset=e.bso,this.watchdog_counter=e.wdc}saveState(){var e=super.saveState();return e.bsr=this.bitshift_register,e.bso=this.bitshift_offset,e.wdc=this.watchdog_counter,e}reset(){super.reset(),this.watchdog_counter=p}};var S=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shifter.c",name:"Sprite w/ Bit Shifter"},{id:"game2.c",name:"Cosmic Impalas"}],n=class extends u{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Frame Buffer",start:9216,size:7168,type:"ram"}]}}}newMachine(){return new i}getPresets(){return S}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080"}};f.mw8080bw=n; -//# sourceMappingURL=mw8080bw-6MHN2WND.js.map +import{H as u,c as o,r as m}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{$ as h,K as f,Y as t,Z as c,ca as a}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var _=h([[t.A,1,16],[t.LEFT,1,32],[t.RIGHT,1,64],[t.P2_A,2,16],[t.P2_LEFT,2,32],[t.P2_RIGHT,2,64],[t.SELECT,1,1],[t.START,1,4],[t.P2_START,1,2]]),p=256,w=4293848814,b=4278190080,i=class extends m{constructor(){super();this.cpuFrequency=1996800;this.canvasWidth=256;this.numTotalScanlines=262;this.numVisibleScanlines=224;this.cpuCyclesPerLine=Math.floor(1996800/(262*60));this.defaultROMSize=8192;this.rotate=-90;this.sampleRate=1;this.bitshift_offset=0;this.bitshift_register=0;this.cpu=new o;this.ram=new Uint8Array(8192);this.read=a([[0,8191,8191,e=>this.rom?this.rom[e]:0],[8192,16383,8191,e=>this.ram[e]]]);this.write=a([[8192,9215,1023,(e,s)=>{this.ram[e]=s}],[9216,16383,8191,(e,s)=>{this.ram[e]=s;for(var l=e-1024<<3,r=0;r<8;r++)this.pixels[l+r]=s&1<{switch(e&=3,e){case 0:case 1:case 2:return this.inputs[e];case 3:return this.bitshift_register>>8-this.bitshift_offset&255}return 0},write:(e,s)=>{switch(e&=7,s&=255,e){case 2:this.bitshift_offset=s&7;break;case 3:case 5:break;case 4:this.bitshift_register=this.bitshift_register>>8|s<<8;break;case 6:this.watchdog_counter=p;break}}}}startScanline(){}drawScanline(){this.scanline==95?this.interrupt(207):this.scanline==223&&this.interrupt(215)}interrupt(e){this.probe.logInterrupt(e),this.cpu.interrupt(e)}advanceFrame(e){return this.watchdog_counter--<=0&&(console.log("WATCHDOG FIRED"),this.reset()),super.advanceFrame(e)}loadState(e){super.loadState(e),this.bitshift_register=e.bsr,this.bitshift_offset=e.bso,this.watchdog_counter=e.wdc}saveState(){var e=super.saveState();return e.bsr=this.bitshift_register,e.bso=this.bitshift_offset,e.wdc=this.watchdog_counter,e}reset(){super.reset(),this.watchdog_counter=p}};var S=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shifter.c",name:"Sprite w/ Bit Shifter"},{id:"game2.c",name:"Cosmic Impalas"}],n=class extends u{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Frame Buffer",start:9216,size:7168,type:"ram"}]}}}newMachine(){return new i}getPresets(){return S}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080"}};f.mw8080bw=n; +//# sourceMappingURL=mw8080bw-LD2NTPKR.js.map diff --git a/gen/mw8080bw-6MHN2WND.js.map b/gen/mw8080bw-LD2NTPKR.js.map similarity index 100% rename from gen/mw8080bw-6MHN2WND.js.map rename to gen/mw8080bw-LD2NTPKR.js.map diff --git a/gen/nes-PSU5C2HR.js b/gen/nes-NKFIUNMU.js similarity index 99% rename from gen/nes-PSU5C2HR.js rename to gen/nes-NKFIUNMU.js index ceb15a93..50a3cd0f 100644 --- a/gen/nes-PSU5C2HR.js +++ b/gen/nes-NKFIUNMU.js @@ -1,4 +1,4 @@ -import{b as Z}from"./chunk-42RFSQY5.js";import{a as Ft}from"./chunk-T6VURU5O.js";import{a as U}from"./chunk-XQKNUPDS.js";import{j as q,n as X,o as Y,x as H,z as W}from"./chunk-4WX2XTAI.js";import{i as T}from"./chunk-UACHXWHT.js";import{$ as w,H as L,K as N,Q as E,T as V,W as B,Y as m,_ as G,g as D,n as v}from"./chunk-EK7ZCXAS.js";import{d as S}from"./chunk-VSC4MAII.js";var O=S((wt,z)=>{"use strict";var d=function(){this.state=new Array(8);for(var t=0;t{"use strict";K.exports={copyArrayElements:function(t,i,s,e,r){for(var a=0;a{"use strict";var J=I(),Q=function(t){this.nes=t,this.mem=null,this.REG_ACC=null,this.REG_X=null,this.REG_Y=null,this.REG_SP=null,this.REG_PC=null,this.REG_PC_NEW=null,this.REG_STATUS=null,this.F_CARRY=null,this.F_DECIMAL=null,this.F_INTERRUPT=null,this.F_INTERRUPT_NEW=null,this.F_OVERFLOW=null,this.F_SIGN=null,this.F_ZERO=null,this.F_NOTUSED=null,this.F_NOTUSED_NEW=null,this.F_BRK=null,this.F_BRK_NEW=null,this.opdata=null,this.cyclesToHalt=null,this.crash=null,this.irqRequested=null,this.irqType=null,this.reset()};Q.prototype={IRQ_NORMAL:0,IRQ_NMI:1,IRQ_RESET:2,reset:function(){this.mem=new Uint8Array(65536);for(var t=0;t<8192;t++)this.mem[t]=255;for(var i=0;i<4;i++){var s=i*2048;this.mem[s+8]=247,this.mem[s+9]=239,this.mem[s+10]=223,this.mem[s+15]=191}for(var e=8193;e>24,r=0,a=s>>8&255,n=this.REG_PC;this.REG_PC+=s>>16&255;var h=0;switch(a){case 0:{h=this.load(n+2);break}case 1:{h=this.load(n+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:break;case 3:{h=this.load16bit(n+2);break}case 4:{h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{h=this.load(n+2)+this.REG_X&255;break}case 7:{h=this.load(n+2)+this.REG_Y&255;break}case 8:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X;break}case 9:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 10:{h=this.load(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X,h&=255,h=this.load16bit(h);break}case 11:{h=this.load16bit(this.load(n+2)),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(n+2),h<8191?h=this.mem[h]+(this.mem[h&65280|(h&255)+1&255]<<8):h=this.nes.mmap.load(h)+(this.nes.mmap.load(h&65280|(h&255)+1&255)<<8);break}}switch(h&=65535,s&255){case 0:{t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,e+=r;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 2:{a===4?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 4:{this.F_CARRY===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 5:{this.F_ZERO===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(e++,this.REG_PC=h);break}case 8:{this.F_ZERO!==0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 9:{this.F_SIGN===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 10:{this.REG_PC+=2,this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.F_BRK=1,this.push(this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7),this.F_INTERRUPT=1,this.REG_PC=this.load16bit(65534),this.REG_PC--;break}case 11:{this.F_OVERFLOW===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 12:{this.F_OVERFLOW===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 13:{this.F_CARRY=0;break}case 14:{this.F_DECIMAL=0;break}case 15:{this.F_INTERRUPT=0;break}case 16:{this.F_OVERFLOW=0;break}case 17:{t=this.REG_ACC-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,e+=r;break}case 18:{t=this.REG_X-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 19:{t=this.REG_Y-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 20:{t=this.load(h)-1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t);break}case 21:{this.REG_X=this.REG_X-1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 22:{this.REG_Y=this.REG_Y-1&255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 23:{this.REG_ACC=(this.load(h)^this.REG_ACC)&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,e+=r;break}case 24:{t=this.load(h)+1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t&255);break}case 25:{this.REG_X=this.REG_X+1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 26:{this.REG_Y++,this.REG_Y&=255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 27:{this.REG_PC=h-1;break}case 28:{this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.REG_PC=h-1;break}case 29:{this.REG_ACC=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,e+=r;break}case 30:{this.REG_X=this.load(h),this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X,e+=r;break}case 31:{this.REG_Y=this.load(h),this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y,e+=r;break}case 32:{a===4?(t=this.REG_ACC&255,this.F_CARRY=t&1,t>>=1,this.REG_ACC=t):(t=this.load(h)&255,this.F_CARRY=t&1,t>>=1,this.write(h,t)),this.F_SIGN=0,this.F_ZERO=t;break}case 33:break;case 34:{t=(this.load(h)|this.REG_ACC)&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.REG_ACC=t,a!==11&&(e+=r);break}case 35:{this.push(this.REG_ACC);break}case 36:{this.F_BRK=1,this.push(this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7);break}case 37:{this.REG_ACC=this.pull(),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 38:{t=this.pull(),this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===1?0:1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1,this.F_NOTUSED=1;break}case 39:{a===4?(t=this.REG_ACC,i=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+i,this.REG_ACC=t):(t=this.load(h),i=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+i,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 40:{a===4?(i=this.F_CARRY<<7,this.F_CARRY=this.REG_ACC&1,t=(this.REG_ACC>>1)+i,this.REG_ACC=t):(t=this.load(h),i=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+i,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 41:{if(t=this.pull(),this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===0?1:0,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1,this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;this.REG_PC--,this.F_NOTUSED=1;break}case 42:{if(this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;break}case 43:{t=this.REG_ACC-this.load(h)-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^this.load(h))&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255,a!==11&&(e+=r);break}case 44:{this.F_CARRY=1;break}case 45:{this.F_DECIMAL=1;break}case 46:{this.F_INTERRUPT=1;break}case 47:{this.write(h,this.REG_ACC);break}case 48:{this.write(h,this.REG_X);break}case 49:{this.write(h,this.REG_Y);break}case 50:{this.REG_X=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 51:{this.REG_Y=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 52:{this.REG_X=this.REG_SP-256,this.F_SIGN=this.REG_SP>>7&1,this.F_ZERO=this.REG_X;break}case 53:{this.REG_ACC=this.REG_X,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 54:{this.REG_SP=this.REG_X+256,this.stackWrap();break}case 55:{this.REG_ACC=this.REG_Y,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 56:{t=this.REG_ACC&this.load(h),this.F_CARRY=t&1,this.REG_ACC=this.F_ZERO=t>>1,this.F_SIGN=0;break}case 57:{this.REG_ACC=this.F_ZERO=this.REG_ACC&this.load(h),this.F_CARRY=this.F_SIGN=this.REG_ACC>>7&1;break}case 58:{t=this.REG_ACC&this.load(h),this.REG_ACC=this.F_ZERO=(t>>1)+(this.F_CARRY<<7),this.F_SIGN=this.F_CARRY,this.F_CARRY=t>>7&1,this.F_OVERFLOW=(t>>7^t>>6)&1;break}case 59:{t=(this.REG_X&this.REG_ACC)-this.load(h),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_X^t)&128)!==0&&((this.REG_X^this.load(h))&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_X=t&255;break}case 60:{this.REG_ACC=this.REG_X=this.F_ZERO=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,e+=r;break}case 61:{this.write(h,this.REG_ACC&this.REG_X);break}case 62:{t=this.load(h)-1&255,this.write(h,t),t=this.REG_ACC-t,this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,a!==11&&(e+=r);break}case 63:{t=this.load(h)+1&255,this.write(h,t),t=this.REG_ACC-t-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^this.load(h))&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255,a!==11&&(e+=r);break}case 64:{t=this.load(h),i=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+i,this.write(h,t),this.REG_ACC=this.REG_ACC&t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 65:{t=this.load(h),i=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+i,this.write(h,t),t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,a!==11&&(e+=r);break}case 66:{t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.write(h,t),this.REG_ACC=this.REG_ACC|t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 67:{t=this.load(h)&255,this.F_CARRY=t&1,t>>=1,this.write(h,t),this.REG_ACC=this.REG_ACC^t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 68:break;case 69:{this.load(h),a!==11&&(e+=r);break}default:{this.nes.stop(),this.nes.crashMessage="Game crashed, invalid opcode at address $"+n.toString(16);break}}return e},load:function(t){return t<8192?this.mem[t&2047]:this.nes.mmap.load(t)},load16bit:function(t){return t<8191?this.mem[t&2047]|this.mem[t+1&2047]<<8:this.nes.mmap.load(t)|this.nes.mmap.load(t+1)<<8},write:function(t,i){t<8192?this.mem[t&2047]=i:this.nes.mmap.write(t,i)},requestIrq:function(t){this.irqRequested&&t===this.IRQ_NORMAL||(this.irqRequested=!0,this.irqType=t)},push:function(t){this.nes.mmap.write(this.REG_SP,t),this.REG_SP--,this.REG_SP=256|this.REG_SP&255},stackWrap:function(){this.REG_SP=256|this.REG_SP&255},pull:function(){return this.REG_SP++,this.REG_SP=256|this.REG_SP&255,this.nes.mmap.load(this.REG_SP)},pageCrossed:function(t,i){return(t&65280)!==(i&65280)},haltCycles:function(t){this.cyclesToHalt+=t},doNonMaskableInterrupt:function(t){(this.nes.mmap.load(8192)&128)!==0&&(this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.push(t),this.REG_PC_NEW=this.nes.mmap.load(65530)|this.nes.mmap.load(65531)<<8,this.REG_PC_NEW--)},doResetInterrupt:function(){this.REG_PC_NEW=this.nes.mmap.load(65532)|this.nes.mmap.load(65533)<<8,this.REG_PC_NEW--},doIrq:function(t){this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.push(t),this.F_INTERRUPT_NEW=1,this.F_BRK_NEW=0,this.REG_PC_NEW=this.nes.mmap.load(65534)|this.nes.mmap.load(65535)<<8,this.REG_PC_NEW--},getStatus:function(){return this.F_CARRY|this.F_ZERO<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7},setStatus:function(t){this.F_CARRY=t&1,this.F_ZERO=t>>1&1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1},JSON_PROPERTIES:["mem","cyclesToHalt","irqRequested","irqType","REG_ACC","REG_X","REG_Y","REG_SP","REG_PC","REG_PC_NEW","REG_STATUS","F_CARRY","F_DECIMAL","F_INTERRUPT","F_INTERRUPT_NEW","F_OVERFLOW","F_SIGN","F_ZERO","F_NOTUSED","F_NOTUSED_NEW","F_BRK","F_BRK_NEW"],toJSON:function(){return J.toJSON(this)},fromJSON:function(t){J.fromJSON(this,t)}};var j=function(){this.opdata=new Array(256);for(var t=0;t<256;t++)this.opdata[t]=255;this.setOp(this.INS_ADC,105,this.ADDR_IMM,2,2),this.setOp(this.INS_ADC,101,this.ADDR_ZP,2,3),this.setOp(this.INS_ADC,117,this.ADDR_ZPX,2,4),this.setOp(this.INS_ADC,109,this.ADDR_ABS,3,4),this.setOp(this.INS_ADC,125,this.ADDR_ABSX,3,4),this.setOp(this.INS_ADC,121,this.ADDR_ABSY,3,4),this.setOp(this.INS_ADC,97,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_ADC,113,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_AND,41,this.ADDR_IMM,2,2),this.setOp(this.INS_AND,37,this.ADDR_ZP,2,3),this.setOp(this.INS_AND,53,this.ADDR_ZPX,2,4),this.setOp(this.INS_AND,45,this.ADDR_ABS,3,4),this.setOp(this.INS_AND,61,this.ADDR_ABSX,3,4),this.setOp(this.INS_AND,57,this.ADDR_ABSY,3,4),this.setOp(this.INS_AND,33,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_AND,49,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_ASL,10,this.ADDR_ACC,1,2),this.setOp(this.INS_ASL,6,this.ADDR_ZP,2,5),this.setOp(this.INS_ASL,22,this.ADDR_ZPX,2,6),this.setOp(this.INS_ASL,14,this.ADDR_ABS,3,6),this.setOp(this.INS_ASL,30,this.ADDR_ABSX,3,7),this.setOp(this.INS_BCC,144,this.ADDR_REL,2,2),this.setOp(this.INS_BCS,176,this.ADDR_REL,2,2),this.setOp(this.INS_BEQ,240,this.ADDR_REL,2,2),this.setOp(this.INS_BIT,36,this.ADDR_ZP,2,3),this.setOp(this.INS_BIT,44,this.ADDR_ABS,3,4),this.setOp(this.INS_BMI,48,this.ADDR_REL,2,2),this.setOp(this.INS_BNE,208,this.ADDR_REL,2,2),this.setOp(this.INS_BPL,16,this.ADDR_REL,2,2),this.setOp(this.INS_BRK,0,this.ADDR_IMP,1,7),this.setOp(this.INS_BVC,80,this.ADDR_REL,2,2),this.setOp(this.INS_BVS,112,this.ADDR_REL,2,2),this.setOp(this.INS_CLC,24,this.ADDR_IMP,1,2),this.setOp(this.INS_CLD,216,this.ADDR_IMP,1,2),this.setOp(this.INS_CLI,88,this.ADDR_IMP,1,2),this.setOp(this.INS_CLV,184,this.ADDR_IMP,1,2),this.setOp(this.INS_CMP,201,this.ADDR_IMM,2,2),this.setOp(this.INS_CMP,197,this.ADDR_ZP,2,3),this.setOp(this.INS_CMP,213,this.ADDR_ZPX,2,4),this.setOp(this.INS_CMP,205,this.ADDR_ABS,3,4),this.setOp(this.INS_CMP,221,this.ADDR_ABSX,3,4),this.setOp(this.INS_CMP,217,this.ADDR_ABSY,3,4),this.setOp(this.INS_CMP,193,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_CMP,209,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_CPX,224,this.ADDR_IMM,2,2),this.setOp(this.INS_CPX,228,this.ADDR_ZP,2,3),this.setOp(this.INS_CPX,236,this.ADDR_ABS,3,4),this.setOp(this.INS_CPY,192,this.ADDR_IMM,2,2),this.setOp(this.INS_CPY,196,this.ADDR_ZP,2,3),this.setOp(this.INS_CPY,204,this.ADDR_ABS,3,4),this.setOp(this.INS_DEC,198,this.ADDR_ZP,2,5),this.setOp(this.INS_DEC,214,this.ADDR_ZPX,2,6),this.setOp(this.INS_DEC,206,this.ADDR_ABS,3,6),this.setOp(this.INS_DEC,222,this.ADDR_ABSX,3,7),this.setOp(this.INS_DEX,202,this.ADDR_IMP,1,2),this.setOp(this.INS_DEY,136,this.ADDR_IMP,1,2),this.setOp(this.INS_EOR,73,this.ADDR_IMM,2,2),this.setOp(this.INS_EOR,69,this.ADDR_ZP,2,3),this.setOp(this.INS_EOR,85,this.ADDR_ZPX,2,4),this.setOp(this.INS_EOR,77,this.ADDR_ABS,3,4),this.setOp(this.INS_EOR,93,this.ADDR_ABSX,3,4),this.setOp(this.INS_EOR,89,this.ADDR_ABSY,3,4),this.setOp(this.INS_EOR,65,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_EOR,81,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_INC,230,this.ADDR_ZP,2,5),this.setOp(this.INS_INC,246,this.ADDR_ZPX,2,6),this.setOp(this.INS_INC,238,this.ADDR_ABS,3,6),this.setOp(this.INS_INC,254,this.ADDR_ABSX,3,7),this.setOp(this.INS_INX,232,this.ADDR_IMP,1,2),this.setOp(this.INS_INY,200,this.ADDR_IMP,1,2),this.setOp(this.INS_JMP,76,this.ADDR_ABS,3,3),this.setOp(this.INS_JMP,108,this.ADDR_INDABS,3,5),this.setOp(this.INS_JSR,32,this.ADDR_ABS,3,6),this.setOp(this.INS_LDA,169,this.ADDR_IMM,2,2),this.setOp(this.INS_LDA,165,this.ADDR_ZP,2,3),this.setOp(this.INS_LDA,181,this.ADDR_ZPX,2,4),this.setOp(this.INS_LDA,173,this.ADDR_ABS,3,4),this.setOp(this.INS_LDA,189,this.ADDR_ABSX,3,4),this.setOp(this.INS_LDA,185,this.ADDR_ABSY,3,4),this.setOp(this.INS_LDA,161,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_LDA,177,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_LDX,162,this.ADDR_IMM,2,2),this.setOp(this.INS_LDX,166,this.ADDR_ZP,2,3),this.setOp(this.INS_LDX,182,this.ADDR_ZPY,2,4),this.setOp(this.INS_LDX,174,this.ADDR_ABS,3,4),this.setOp(this.INS_LDX,190,this.ADDR_ABSY,3,4),this.setOp(this.INS_LDY,160,this.ADDR_IMM,2,2),this.setOp(this.INS_LDY,164,this.ADDR_ZP,2,3),this.setOp(this.INS_LDY,180,this.ADDR_ZPX,2,4),this.setOp(this.INS_LDY,172,this.ADDR_ABS,3,4),this.setOp(this.INS_LDY,188,this.ADDR_ABSX,3,4),this.setOp(this.INS_LSR,74,this.ADDR_ACC,1,2),this.setOp(this.INS_LSR,70,this.ADDR_ZP,2,5),this.setOp(this.INS_LSR,86,this.ADDR_ZPX,2,6),this.setOp(this.INS_LSR,78,this.ADDR_ABS,3,6),this.setOp(this.INS_LSR,94,this.ADDR_ABSX,3,7),this.setOp(this.INS_NOP,26,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,58,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,90,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,122,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,218,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,234,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,250,this.ADDR_IMP,1,2),this.setOp(this.INS_ORA,9,this.ADDR_IMM,2,2),this.setOp(this.INS_ORA,5,this.ADDR_ZP,2,3),this.setOp(this.INS_ORA,21,this.ADDR_ZPX,2,4),this.setOp(this.INS_ORA,13,this.ADDR_ABS,3,4),this.setOp(this.INS_ORA,29,this.ADDR_ABSX,3,4),this.setOp(this.INS_ORA,25,this.ADDR_ABSY,3,4),this.setOp(this.INS_ORA,1,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_ORA,17,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_PHA,72,this.ADDR_IMP,1,3),this.setOp(this.INS_PHP,8,this.ADDR_IMP,1,3),this.setOp(this.INS_PLA,104,this.ADDR_IMP,1,4),this.setOp(this.INS_PLP,40,this.ADDR_IMP,1,4),this.setOp(this.INS_ROL,42,this.ADDR_ACC,1,2),this.setOp(this.INS_ROL,38,this.ADDR_ZP,2,5),this.setOp(this.INS_ROL,54,this.ADDR_ZPX,2,6),this.setOp(this.INS_ROL,46,this.ADDR_ABS,3,6),this.setOp(this.INS_ROL,62,this.ADDR_ABSX,3,7),this.setOp(this.INS_ROR,106,this.ADDR_ACC,1,2),this.setOp(this.INS_ROR,102,this.ADDR_ZP,2,5),this.setOp(this.INS_ROR,118,this.ADDR_ZPX,2,6),this.setOp(this.INS_ROR,110,this.ADDR_ABS,3,6),this.setOp(this.INS_ROR,126,this.ADDR_ABSX,3,7),this.setOp(this.INS_RTI,64,this.ADDR_IMP,1,6),this.setOp(this.INS_RTS,96,this.ADDR_IMP,1,6),this.setOp(this.INS_SBC,233,this.ADDR_IMM,2,2),this.setOp(this.INS_SBC,229,this.ADDR_ZP,2,3),this.setOp(this.INS_SBC,245,this.ADDR_ZPX,2,4),this.setOp(this.INS_SBC,237,this.ADDR_ABS,3,4),this.setOp(this.INS_SBC,253,this.ADDR_ABSX,3,4),this.setOp(this.INS_SBC,249,this.ADDR_ABSY,3,4),this.setOp(this.INS_SBC,225,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_SBC,241,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_SEC,56,this.ADDR_IMP,1,2),this.setOp(this.INS_SED,248,this.ADDR_IMP,1,2),this.setOp(this.INS_SEI,120,this.ADDR_IMP,1,2),this.setOp(this.INS_STA,133,this.ADDR_ZP,2,3),this.setOp(this.INS_STA,149,this.ADDR_ZPX,2,4),this.setOp(this.INS_STA,141,this.ADDR_ABS,3,4),this.setOp(this.INS_STA,157,this.ADDR_ABSX,3,5),this.setOp(this.INS_STA,153,this.ADDR_ABSY,3,5),this.setOp(this.INS_STA,129,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_STA,145,this.ADDR_POSTIDXIND,2,6),this.setOp(this.INS_STX,134,this.ADDR_ZP,2,3),this.setOp(this.INS_STX,150,this.ADDR_ZPY,2,4),this.setOp(this.INS_STX,142,this.ADDR_ABS,3,4),this.setOp(this.INS_STY,132,this.ADDR_ZP,2,3),this.setOp(this.INS_STY,148,this.ADDR_ZPX,2,4),this.setOp(this.INS_STY,140,this.ADDR_ABS,3,4),this.setOp(this.INS_TAX,170,this.ADDR_IMP,1,2),this.setOp(this.INS_TAY,168,this.ADDR_IMP,1,2),this.setOp(this.INS_TSX,186,this.ADDR_IMP,1,2),this.setOp(this.INS_TXA,138,this.ADDR_IMP,1,2),this.setOp(this.INS_TXS,154,this.ADDR_IMP,1,2),this.setOp(this.INS_TYA,152,this.ADDR_IMP,1,2),this.setOp(this.INS_ALR,75,this.ADDR_IMM,2,2),this.setOp(this.INS_ANC,11,this.ADDR_IMM,2,2),this.setOp(this.INS_ANC,43,this.ADDR_IMM,2,2),this.setOp(this.INS_ARR,107,this.ADDR_IMM,2,2),this.setOp(this.INS_AXS,203,this.ADDR_IMM,2,2),this.setOp(this.INS_LAX,163,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_LAX,167,this.ADDR_ZP,2,3),this.setOp(this.INS_LAX,175,this.ADDR_ABS,3,4),this.setOp(this.INS_LAX,179,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_LAX,183,this.ADDR_ZPY,2,4),this.setOp(this.INS_LAX,191,this.ADDR_ABSY,3,4),this.setOp(this.INS_SAX,131,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_SAX,135,this.ADDR_ZP,2,3),this.setOp(this.INS_SAX,143,this.ADDR_ABS,3,4),this.setOp(this.INS_SAX,151,this.ADDR_ZPY,2,4),this.setOp(this.INS_DCP,195,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_DCP,199,this.ADDR_ZP,2,5),this.setOp(this.INS_DCP,207,this.ADDR_ABS,3,6),this.setOp(this.INS_DCP,211,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_DCP,215,this.ADDR_ZPX,2,6),this.setOp(this.INS_DCP,219,this.ADDR_ABSY,3,7),this.setOp(this.INS_DCP,223,this.ADDR_ABSX,3,7),this.setOp(this.INS_ISC,227,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_ISC,231,this.ADDR_ZP,2,5),this.setOp(this.INS_ISC,239,this.ADDR_ABS,3,6),this.setOp(this.INS_ISC,243,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_ISC,247,this.ADDR_ZPX,2,6),this.setOp(this.INS_ISC,251,this.ADDR_ABSY,3,7),this.setOp(this.INS_ISC,255,this.ADDR_ABSX,3,7),this.setOp(this.INS_RLA,35,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_RLA,39,this.ADDR_ZP,2,5),this.setOp(this.INS_RLA,47,this.ADDR_ABS,3,6),this.setOp(this.INS_RLA,51,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_RLA,55,this.ADDR_ZPX,2,6),this.setOp(this.INS_RLA,59,this.ADDR_ABSY,3,7),this.setOp(this.INS_RLA,63,this.ADDR_ABSX,3,7),this.setOp(this.INS_RRA,99,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_RRA,103,this.ADDR_ZP,2,5),this.setOp(this.INS_RRA,111,this.ADDR_ABS,3,6),this.setOp(this.INS_RRA,115,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_RRA,119,this.ADDR_ZPX,2,6),this.setOp(this.INS_RRA,123,this.ADDR_ABSY,3,7),this.setOp(this.INS_RRA,127,this.ADDR_ABSX,3,7),this.setOp(this.INS_SLO,3,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_SLO,7,this.ADDR_ZP,2,5),this.setOp(this.INS_SLO,15,this.ADDR_ABS,3,6),this.setOp(this.INS_SLO,19,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_SLO,23,this.ADDR_ZPX,2,6),this.setOp(this.INS_SLO,27,this.ADDR_ABSY,3,7),this.setOp(this.INS_SLO,31,this.ADDR_ABSX,3,7),this.setOp(this.INS_SRE,67,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_SRE,71,this.ADDR_ZP,2,5),this.setOp(this.INS_SRE,79,this.ADDR_ABS,3,6),this.setOp(this.INS_SRE,83,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_SRE,87,this.ADDR_ZPX,2,6),this.setOp(this.INS_SRE,91,this.ADDR_ABSY,3,7),this.setOp(this.INS_SRE,95,this.ADDR_ABSX,3,7),this.setOp(this.INS_SKB,128,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,130,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,137,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,194,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,226,this.ADDR_IMM,2,2),this.setOp(this.INS_IGN,12,this.ADDR_ABS,3,4),this.setOp(this.INS_IGN,28,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,60,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,92,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,124,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,220,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,252,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,4,this.ADDR_ZP,2,3),this.setOp(this.INS_IGN,68,this.ADDR_ZP,2,3),this.setOp(this.INS_IGN,100,this.ADDR_ZP,2,3),this.setOp(this.INS_IGN,20,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,52,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,84,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,116,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,212,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,244,this.ADDR_ZPX,2,4),this.cycTable=new Array(7,6,2,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,6,6,2,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,6,6,2,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,6,6,2,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,2,6,2,6,4,4,4,4,2,5,2,5,5,5,5,5,2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,2,5,2,5,4,4,4,4,2,4,2,4,4,4,4,4,2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,2,6,3,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7),this.instname=new Array(70),this.instname[0]="ADC",this.instname[1]="AND",this.instname[2]="ASL",this.instname[3]="BCC",this.instname[4]="BCS",this.instname[5]="BEQ",this.instname[6]="BIT",this.instname[7]="BMI",this.instname[8]="BNE",this.instname[9]="BPL",this.instname[10]="BRK",this.instname[11]="BVC",this.instname[12]="BVS",this.instname[13]="CLC",this.instname[14]="CLD",this.instname[15]="CLI",this.instname[16]="CLV",this.instname[17]="CMP",this.instname[18]="CPX",this.instname[19]="CPY",this.instname[20]="DEC",this.instname[21]="DEX",this.instname[22]="DEY",this.instname[23]="EOR",this.instname[24]="INC",this.instname[25]="INX",this.instname[26]="INY",this.instname[27]="JMP",this.instname[28]="JSR",this.instname[29]="LDA",this.instname[30]="LDX",this.instname[31]="LDY",this.instname[32]="LSR",this.instname[33]="NOP",this.instname[34]="ORA",this.instname[35]="PHA",this.instname[36]="PHP",this.instname[37]="PLA",this.instname[38]="PLP",this.instname[39]="ROL",this.instname[40]="ROR",this.instname[41]="RTI",this.instname[42]="RTS",this.instname[43]="SBC",this.instname[44]="SEC",this.instname[45]="SED",this.instname[46]="SEI",this.instname[47]="STA",this.instname[48]="STX",this.instname[49]="STY",this.instname[50]="TAX",this.instname[51]="TAY",this.instname[52]="TSX",this.instname[53]="TXA",this.instname[54]="TXS",this.instname[55]="TYA",this.instname[56]="ALR",this.instname[57]="ANC",this.instname[58]="ARR",this.instname[59]="AXS",this.instname[60]="LAX",this.instname[61]="SAX",this.instname[62]="DCP",this.instname[63]="ISC",this.instname[64]="RLA",this.instname[65]="RRA",this.instname[66]="SLO",this.instname[67]="SRE",this.instname[68]="SKB",this.instname[69]="IGN",this.addrDesc=new Array("Zero Page ","Relative ","Implied ","Absolute ","Accumulator ","Immediate ","Zero Page,X ","Zero Page,Y ","Absolute,X ","Absolute,Y ","Preindexed Indirect ","Postindexed Indirect","Indirect Absolute ")};j.prototype={INS_ADC:0,INS_AND:1,INS_ASL:2,INS_BCC:3,INS_BCS:4,INS_BEQ:5,INS_BIT:6,INS_BMI:7,INS_BNE:8,INS_BPL:9,INS_BRK:10,INS_BVC:11,INS_BVS:12,INS_CLC:13,INS_CLD:14,INS_CLI:15,INS_CLV:16,INS_CMP:17,INS_CPX:18,INS_CPY:19,INS_DEC:20,INS_DEX:21,INS_DEY:22,INS_EOR:23,INS_INC:24,INS_INX:25,INS_INY:26,INS_JMP:27,INS_JSR:28,INS_LDA:29,INS_LDX:30,INS_LDY:31,INS_LSR:32,INS_NOP:33,INS_ORA:34,INS_PHA:35,INS_PHP:36,INS_PLA:37,INS_PLP:38,INS_ROL:39,INS_ROR:40,INS_RTI:41,INS_RTS:42,INS_SBC:43,INS_SEC:44,INS_SED:45,INS_SEI:46,INS_STA:47,INS_STX:48,INS_STY:49,INS_TAX:50,INS_TAY:51,INS_TSX:52,INS_TXA:53,INS_TXS:54,INS_TYA:55,INS_ALR:56,INS_ANC:57,INS_ARR:58,INS_AXS:59,INS_LAX:60,INS_SAX:61,INS_DCP:62,INS_ISC:63,INS_RLA:64,INS_RRA:65,INS_SLO:66,INS_SRE:67,INS_SKB:68,INS_IGN:69,INS_DUMMY:70,ADDR_ZP:0,ADDR_REL:1,ADDR_IMP:2,ADDR_ABS:3,ADDR_ACC:4,ADDR_IMM:5,ADDR_ZPX:6,ADDR_ZPY:7,ADDR_ABSX:8,ADDR_ABSY:9,ADDR_PREIDXIND:10,ADDR_POSTIDXIND:11,ADDR_INDABS:12,setOp:function(t,i,s,e,r){this.opdata[i]=t&255|(s&255)<<8|(e&255)<<16|(r&255)<<24}};$.exports=Q});var F=S((Yt,st)=>{"use strict";var it=function(){this.pix=new Uint8Array(64),this.fbIndex=null,this.tIndex=null,this.x=null,this.y=null,this.w=null,this.h=null,this.incX=null,this.incY=null,this.palIndex=null,this.tpri=null,this.c=null,this.initialized=!1,this.opaque=new Array(8)};it.prototype={setBuffer:function(t){for(this.y=0;this.y<8;this.y++)this.setScanline(this.y,t[this.y],t[this.y+8])},setScanline:function(t,i,s){for(this.initialized=!0,this.tIndex=t<<3,this.x=0;this.x<8;this.x++)this.pix[this.tIndex+this.x]=(i>>7-this.x&1)+((s>>7-this.x&1)<<1),this.pix[this.tIndex+this.x]===0&&(this.opaque[t]=!1)},render:function(t,i,s,e,r,a,n,h,l,c,R,u,p){if(!(a<-7||a>=256||n<-7||n>=240))if(this.w=e-i,this.h=r-s,a<0&&(i-=a),a+e>=256&&(e=256-a),n<0&&(s-=n),n+r>=240&&(r=240-n),!c&&!R)for(this.fbIndex=(n<<8)+a,this.tIndex=0,this.y=0;this.y<8;this.y++){for(this.x=0;this.x<8;this.x++)this.x>=i&&this.x=s&&this.y=i&&this.x=s&&this.y=i&&this.x=s&&this.y=i&&this.x=s&&this.y{"use strict";var Pt=F(),et=I(),ht=function(t){this.nes=t,this.vramMem=null,this.spriteMem=null,this.vramAddress=null,this.vramTmpAddress=null,this.vramBufferedReadValue=null,this.firstWrite=null,this.sramAddress=null,this.currentMirroring=null,this.requestEndFrame=null,this.nmiOk=null,this.dummyCycleToggle=null,this.validTileData=null,this.nmiCounter=null,this.scanlineAlreadyRendered=null,this.f_nmiOnVblank=null,this.f_spriteSize=null,this.f_bgPatternTable=null,this.f_spPatternTable=null,this.f_addrInc=null,this.f_nTblAddress=null,this.f_color=null,this.f_spVisibility=null,this.f_bgVisibility=null,this.f_spClipping=null,this.f_bgClipping=null,this.f_dispType=null,this.cntFV=null,this.cntV=null,this.cntH=null,this.cntVT=null,this.cntHT=null,this.regFV=null,this.regV=null,this.regH=null,this.regVT=null,this.regHT=null,this.regFH=null,this.regS=null,this.curNt=null,this.attrib=null,this.buffer=null,this.bgbuffer=null,this.pixrendered=null,this.validTileData=null,this.scantile=null,this.scanline=null,this.lastRenderedScanline=null,this.curX=null,this.sprX=null,this.sprY=null,this.sprTile=null,this.sprCol=null,this.vertFlip=null,this.horiFlip=null,this.bgPriority=null,this.spr0HitX=null,this.spr0HitY=null,this.hitSpr0=null,this.sprPalette=null,this.imgPalette=null,this.ptTile=null,this.ntable1=null,this.currentMirroring=null,this.nameTable=null,this.vramMirrorTable=null,this.palTable=null,this.showSpr0Hit=!1,this.clipToTvSize=!0,this.reset()};ht.prototype={STATUS_VRAMWRITE:4,STATUS_SLSPRITECOUNT:5,STATUS_SPRITE0HIT:6,STATUS_VBLANK:7,reset:function(){var t;for(this.vramMem=new Uint8Array(32768),this.spriteMem=new Uint8Array(256),t=0;t=21&&this.scanline<=260&&(this.f_bgVisibility===1&&(this.scanlineAlreadyRendered||(this.cntHT=this.regHT,this.cntH=this.regH,this.renderBgScanline(!0,this.scanline+1-21)),this.scanlineAlreadyRendered=!1,!this.hitSpr0&&this.f_spVisibility===1&&this.sprX[0]>=-7&&this.sprX[0]<256&&this.sprY[0]+1<=this.scanline-20&&this.sprY[0]+1+(this.f_spriteSize===0?8:16)>=this.scanline-20&&this.checkSprite0(this.scanline-20)&&(this.hitSpr0=!0)),(this.f_bgVisibility===1||this.f_spVisibility===1)&&this.nes.mmap.clockIrqCounter())}this.scanline++,this.regsToAddress(),this.cntsToAddress()},startFrame:function(){var t=0;if(this.f_dispType===0)t=this.imgPalette[0];else switch(this.f_color){case 0:t=0;break;case 1:t=65280;break;case 2:t=16711680;break;case 3:t=0;break;case 4:t=255;break;default:t=0}var i=this.buffer,s;for(s=0;s<256*240;s++)i[s]=t;var e=this.pixrendered;for(s=0;s=0&&this.sprX[0]<256&&this.sprY[0]>=0&&this.sprY[0]<240){for(t=0;t<256;t++)e[(this.sprY[0]<<8)+t]=16733525;for(t=0;t<240;t++)e[(t<<8)+this.sprX[0]]=16733525}if(this.spr0HitX>=0&&this.spr0HitX<256&&this.spr0HitY>=0&&this.spr0HitY<240){for(t=0;t<256;t++)e[(this.spr0HitY<<8)+t]=5635925;for(t=0;t<240;t++)e[(t<<8)+this.spr0HitX]=5635925}}if(this.clipToTvSize||this.f_bgClipping===0||this.f_spClipping===0)for(s=0;s<240;s++)for(i=0;i<8;i++)e[(s<<8)+i]=0;if(this.clipToTvSize)for(s=0;s<240;s++)for(i=0;i<8;i++)e[(s<<8)+255-i]=0;if(this.clipToTvSize)for(s=0;s<8;s++)for(i=0;i<256;i++)e[(s<<8)+i]=0,e[(239-s<<8)+i]=0;this.nes.ui.writeFrame(e)},updateControlReg1:function(t){this.triggerRendering(),this.f_nmiOnVblank=t>>7&1,this.f_spriteSize=t>>5&1,this.f_bgPatternTable=t>>4&1,this.f_spPatternTable=t>>3&1,this.f_addrInc=t>>2&1,this.f_nTblAddress=t&3,this.regV=t>>1&1,this.regH=t&1,this.regS=t>>4&1},updateControlReg2:function(t){this.triggerRendering(),this.f_color=t>>5&7,this.f_spVisibility=t>>4&1,this.f_bgVisibility=t>>3&1,this.f_spClipping=t>>2&1,this.f_bgClipping=t>>1&1,this.f_dispType=t&1,this.f_dispType===0&&this.palTable.setEmphasis(this.f_color),this.updatePalettes()},setStatusFlag:function(t,i){var s=1<>3&31,this.regFH=t&7):(this.regFV=t&7,this.regVT=t>>3&31),this.firstWrite=!this.firstWrite},writeVRAMAddress:function(t){this.firstWrite?(this.regFV=t>>4&3,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3):(this.triggerRendering(),this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31,this.cntFV=this.regFV,this.cntV=this.regV,this.cntH=this.regH,this.cntVT=this.regVT,this.cntHT=this.regHT,this.checkSprite0(this.scanline-20)),this.firstWrite=!this.firstWrite,this.cntsToAddress(),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress)},vramLoad:function(){var t;return this.cntsToAddress(),this.regsToAddress(),this.vramAddress<=16127?(t=this.vramBufferedReadValue,this.vramAddress<8192?this.vramBufferedReadValue=this.vramMem[this.vramAddress]:this.vramBufferedReadValue=this.mirroredLoad(this.vramAddress),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress),this.vramAddress+=this.f_addrInc===1?32:1,this.cntsFromAddress(),this.regsFromAddress(),t):(t=this.mirroredLoad(this.vramAddress),this.vramAddress+=this.f_addrInc===1?32:1,this.cntsFromAddress(),this.regsFromAddress(),t)},vramWrite:function(t){this.triggerRendering(),this.cntsToAddress(),this.regsToAddress(),this.vramAddress>=8192?this.mirroredWrite(this.vramAddress,t):(this.writeMem(this.vramAddress,t),this.nes.mmap.latchAccess(this.vramAddress)),this.vramAddress+=this.f_addrInc===1?32:1,this.regsFromAddress(),this.cntsFromAddress()},sramDMA:function(t){for(var i=t*256,s,e=this.sramAddress;e<256;e++)s=this.nes.cpu.mem[i+e],this.spriteMem[e]=s,this.spriteRamWriteUpdate(e,s);this.nes.cpu.haltCycles(513)},regsFromAddress:function(){var t=this.vramTmpAddress>>8&255;this.regFV=t>>4&7,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3,t=this.vramTmpAddress&255,this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31},cntsFromAddress:function(){var t=this.vramAddress>>8&255;this.cntFV=t>>4&3,this.cntV=t>>3&1,this.cntH=t>>2&1,this.cntVT=this.cntVT&7|(t&3)<<3,t=this.vramAddress&255,this.cntVT=this.cntVT&24|t>>5&7,this.cntHT=t&31},regsToAddress:function(){var t=(this.regFV&7)<<4;t|=(this.regV&1)<<3,t|=(this.regH&1)<<2,t|=this.regVT>>3&3;var i=(this.regVT&7)<<5;i|=this.regHT&31,this.vramTmpAddress=(t<<8|i)&32767},cntsToAddress:function(){var t=(this.cntFV&7)<<4;t|=(this.cntV&1)<<3,t|=(this.cntH&1)<<2,t|=this.cntVT>>3&3;var i=(this.cntVT&7)<<5;i|=this.cntHT&31,this.vramAddress=(t<<8|i)&32767},incTileCounter:function(t){for(var i=t;i!==0;i--)this.cntHT++,this.cntHT===32&&(this.cntHT=0,this.cntVT++,this.cntVT>=30&&(this.cntH++,this.cntH===2&&(this.cntH=0,this.cntV++,this.cntV===2&&(this.cntV=0,this.cntFV++,this.cntFV&=7))))},mirroredLoad:function(t){return this.vramMem[this.vramMirrorTable[t]]},mirroredWrite:function(t,i){if(t>=16128&&t<16160)t===16128||t===16144?(this.writeMem(16128,i),this.writeMem(16144,i)):t===16132||t===16148?(this.writeMem(16132,i),this.writeMem(16148,i)):t===16136||t===16152?(this.writeMem(16136,i),this.writeMem(16152,i)):t===16140||t===16156?(this.writeMem(16140,i),this.writeMem(16156,i)):this.writeMem(t,i);else if(t=21&&this.scanline<=260&&(this.renderFramePartially(this.lastRenderedScanline+1,this.scanline-21-this.lastRenderedScanline),this.lastRenderedScanline=this.scanline-21)},renderFramePartially:function(t,i){if(this.f_spVisibility===1&&this.renderSpritesPartially(t,i,!0),this.f_bgVisibility===1){var s=t<<8,e=t+i<<8;e>61440&&(e=61440);for(var r=this.buffer,a=this.bgbuffer,n=this.pixrendered,h=s;h255&&(r[h]=a[h])}this.f_spVisibility===1&&this.renderSpritesPartially(t,i,!1),this.validTileData=!1},renderBgScanline:function(t,i){var s=this.regS===0?0:256,e=(i<<8)-this.regFH;if(this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],this.cntHT=this.regHT,this.cntH=this.regH,this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],i<240&&i-this.cntFV>=0){for(var r=this.cntFV<<3,a=this.scantile,n=this.attrib,h=this.ptTile,l=this.nameTable,c=this.imgPalette,R=this.pixrendered,u=t?this.bgbuffer:this.buffer,p,f,g,b,_=0;_<32;_++){if(i>=0){if(this.validTileData){if(p=a[_],typeof p=="undefined")continue;f=p.pix,g=n[_]}else{if(p=h[s+l[this.curNt].getTileIndex(this.cntHT,this.cntVT)],typeof p=="undefined")continue;f=p.pix,g=l[this.curNt].getAttrib(this.cntHT,this.cntVT),a[_]=p,n[_]=g}var x=0,A=(_<<3)-this.regFH;if(A>-8)if(A<0&&(e-=A,x=-A),p.opaque[this.cntFV])for(;x<8;x++)u[e]=c[f[r+x]+g],R[e]|=256,e++;else for(;x<8;x++)b=f[r+x],b!==0&&(u[e]=c[b+g],R[e]|=256),e++}++this.cntHT===32&&(this.cntHT=0,this.cntH++,this.cntH%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH])}this.validTileData=!0}this.cntFV++,this.cntFV===8&&(this.cntFV=0,this.cntVT++,this.cntVT===30?(this.cntVT=0,this.cntV++,this.cntV%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH]):this.cntVT===32&&(this.cntVT=0),this.validTileData=!1)},renderSpritesPartially:function(t,i,s){if(this.f_spVisibility===1){for(var e=0;e<64;e++)if(this.bgPriority[e]===s&&this.sprX[e]>=0&&this.sprX[e]<256&&this.sprY[e]+8>=t&&this.sprY[e]t+i&&(this.srcy2=t+i-this.sprY[e]+1),this.f_spPatternTable===0?this.ptTile[this.sprTile[e]].render(this.buffer,0,this.srcy1,8,this.srcy2,this.sprX[e],this.sprY[e]+1,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered):this.ptTile[this.sprTile[e]+256].render(this.buffer,0,this.srcy1,8,this.srcy2,this.sprX[e],this.sprY[e]+1,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered);else{var r=this.sprTile[e];(r&1)!==0&&(r=this.sprTile[e]-1+256);var a=0,n=8;this.sprY[e]t+i&&(n=t+i-this.sprY[e]),this.ptTile[r+(this.vertFlip[e]?1:0)].render(this.buffer,0,a,8,n,this.sprX[e],this.sprY[e]+1,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered),a=0,n=8,this.sprY[e]+8t+i&&(n=t+i-(this.sprY[e]+8)),this.ptTile[r+(this.vertFlip[e]?0:1)].render(this.buffer,0,a,8,n,this.sprX[e],this.sprY[e]+1+8,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered)}}},checkSprite0:function(t){this.spr0HitX=-1,this.spr0HitY=-1;var i,s=this.f_spPatternTable===0?0:256,e,r,a,n,h;if(e=this.sprX[0],r=this.sprY[0]+1,this.f_spriteSize===0){if(r<=t&&r+8>t&&e>=-7&&e<256)if(a=this.ptTile[this.sprTile[0]+s],this.vertFlip[0]?i=7-(t-r):i=t-r,i*=8,h=t*256+e,this.horiFlip[0])for(n=7;n>=0;n--){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}else for(n=0;n<8;n++){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}}else if(r<=t&&r+16>t&&e>=-7&&e<256)if(this.vertFlip[0]?i=15-(t-r):i=t-r,i<8?a=this.ptTile[this.sprTile[0]+(this.vertFlip[0]?1:0)+((this.sprTile[0]&1)!==0?255:0)]:(a=this.ptTile[this.sprTile[0]+(this.vertFlip[0]?0:1)+((this.sprTile[0]&1)!==0?255:0)],this.vertFlip[0]?i=15-i:i-=8),i*=8,h=t*256+e,this.horiFlip[0])for(n=7;n>=0;n--){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}else for(n=0;n<8;n++){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}return!1},writeMem:function(t,i){this.vramMem[t]=i,t<8192?(this.vramMem[t]=i,this.patternWrite(t,i)):t>=8192&&t<9152?this.nameTableWrite(this.ntable1[0],t-8192,i):t>=9152&&t<9216?this.attribTableWrite(this.ntable1[0],t-9152,i):t>=9216&&t<10176?this.nameTableWrite(this.ntable1[1],t-9216,i):t>=10176&&t<10240?this.attribTableWrite(this.ntable1[1],t-10176,i):t>=10240&&t<11200?this.nameTableWrite(this.ntable1[2],t-10240,i):t>=11200&&t<11264?this.attribTableWrite(this.ntable1[2],t-11200,i):t>=11264&&t<12224?this.nameTableWrite(this.ntable1[3],t-11264,i):t>=12224&&t<12288?this.attribTableWrite(this.ntable1[3],t-12224,i):t>=16128&&t<16160&&this.updatePalettes()},updatePalettes:function(){var t;for(t=0;t<16;t++)this.f_dispType===0?this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&63):this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&32);for(t=0;t<16;t++)this.f_dispType===0?this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&63):this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&32)},patternWrite:function(t,i){var s=Math.floor(t/16),e=t%16;e<8?this.ptTile[s].setScanline(e,i,this.vramMem[t+8]):this.ptTile[s].setScanline(e-8,this.vramMem[t-8],i)},nameTableWrite:function(t,i,s){this.nameTable[t].tile[i]=s,this.checkSprite0(this.scanline-20)},attribTableWrite:function(t,i,s){this.nameTable[t].writeAttrib(i,s)},spriteRamWriteUpdate:function(t,i){var s=Math.floor(t/4);s===0&&this.checkSprite0(this.scanline-20),t%4===0?this.sprY[s]=i:t%4===1?this.sprTile[s]=i:t%4===2?(this.vertFlip[s]=(i&128)!==0,this.horiFlip[s]=(i&64)!==0,this.bgPriority[s]=(i&32)!==0,this.sprCol[s]=(i&3)<<2):t%4===3&&(this.sprX[s]=i)},doNMI:function(){this.setStatusFlag(this.STATUS_VBLANK,!0),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NMI)},isPixelWhite:function(t,i){return this.triggerRendering(),this.nes.ppu.buffer[(i<<8)+t]===16777215},JSON_PROPERTIES:["vramMem","spriteMem","cntFV","cntV","cntH","cntVT","cntHT","regFV","regV","regH","regVT","regHT","regFH","regS","vramAddress","vramTmpAddress","f_nmiOnVblank","f_spriteSize","f_bgPatternTable","f_spPatternTable","f_addrInc","f_nTblAddress","f_color","f_spVisibility","f_bgVisibility","f_spClipping","f_bgClipping","f_dispType","vramBufferedReadValue","firstWrite","currentMirroring","vramMirrorTable","ntable1","sramAddress","hitSpr0","sprPalette","imgPalette","curX","scanline","lastRenderedScanline","curNt","scantile","attrib","buffer","bgbuffer","pixrendered","requestEndFrame","nmiOk","dummyCycleToggle","nmiCounter","validTileData","scanlineAlreadyRendered"],toJSON:function(){var t,i=et.toJSON(this);for(i.nameTable=[],t=0;t>2*(l*2+c)&3;for(var R=0;R<2;R++)for(var u=0;u<2;u++)a=s+c*2+u,n=e+l*2+R,h=n*this.width+a,this.attrib[h]=r<<2&12}},toJSON:function(){return{tile:this.tile,attrib:this.attrib}},fromJSON:function(t){this.tile=t.tile,this.attrib=t.attrib}};var nt=function(){this.curTable=new Uint32Array(64),this.emphTable=new Array(8),this.currentEmph=-1};nt.prototype={reset:function(){this.setEmphasis(0)},loadNTSCPalette:function(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)},loadPALPalette:function(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)},makeTables:function(){for(var t,i,s,e,r,a,n,h,l=0;l<8;l++)for(a=1,n=1,h=1,(l&1)!==0&&(a=.75,h=.75),(l&2)!==0&&(a=.75,n=.75),(l&4)!==0&&(n=.75,h=.75),this.emphTable[l]=new Uint32Array(64),r=0;r<64;r++)e=this.curTable[r],t=Math.floor(this.getRed(e)*a),i=Math.floor(this.getGreen(e)*n),s=Math.floor(this.getBlue(e)*h),this.emphTable[l][r]=this.getRgb(t,i,s)},setEmphasis:function(t){if(t!==this.currentEmph){this.currentEmph=t;for(var i=0;i<64;i++)this.curTable[i]=this.emphTable[t][i]}},getEntry:function(t){return this.curTable[t]},getRed:function(t){return t>>16&255},getGreen:function(t){return t>>8&255},getBlue:function(t){return t&255},getRgb:function(t,i,s){return t<<16|i<<8|s},loadDefaultPalette:function(){this.curTable[0]=this.getRgb(117,117,117),this.curTable[1]=this.getRgb(39,27,143),this.curTable[2]=this.getRgb(0,0,171),this.curTable[3]=this.getRgb(71,0,159),this.curTable[4]=this.getRgb(143,0,119),this.curTable[5]=this.getRgb(171,0,19),this.curTable[6]=this.getRgb(167,0,0),this.curTable[7]=this.getRgb(127,11,0),this.curTable[8]=this.getRgb(67,47,0),this.curTable[9]=this.getRgb(0,71,0),this.curTable[10]=this.getRgb(0,81,0),this.curTable[11]=this.getRgb(0,63,23),this.curTable[12]=this.getRgb(27,63,95),this.curTable[13]=this.getRgb(0,0,0),this.curTable[14]=this.getRgb(0,0,0),this.curTable[15]=this.getRgb(0,0,0),this.curTable[16]=this.getRgb(188,188,188),this.curTable[17]=this.getRgb(0,115,239),this.curTable[18]=this.getRgb(35,59,239),this.curTable[19]=this.getRgb(131,0,243),this.curTable[20]=this.getRgb(191,0,191),this.curTable[21]=this.getRgb(231,0,91),this.curTable[22]=this.getRgb(219,43,0),this.curTable[23]=this.getRgb(203,79,15),this.curTable[24]=this.getRgb(139,115,0),this.curTable[25]=this.getRgb(0,151,0),this.curTable[26]=this.getRgb(0,171,0),this.curTable[27]=this.getRgb(0,147,59),this.curTable[28]=this.getRgb(0,131,139),this.curTable[29]=this.getRgb(0,0,0),this.curTable[30]=this.getRgb(0,0,0),this.curTable[31]=this.getRgb(0,0,0),this.curTable[32]=this.getRgb(255,255,255),this.curTable[33]=this.getRgb(63,191,255),this.curTable[34]=this.getRgb(95,151,255),this.curTable[35]=this.getRgb(167,139,253),this.curTable[36]=this.getRgb(247,123,255),this.curTable[37]=this.getRgb(255,119,183),this.curTable[38]=this.getRgb(255,119,99),this.curTable[39]=this.getRgb(255,155,59),this.curTable[40]=this.getRgb(243,191,63),this.curTable[41]=this.getRgb(131,211,19),this.curTable[42]=this.getRgb(79,223,75),this.curTable[43]=this.getRgb(88,248,152),this.curTable[44]=this.getRgb(0,235,219),this.curTable[45]=this.getRgb(0,0,0),this.curTable[46]=this.getRgb(0,0,0),this.curTable[47]=this.getRgb(0,0,0),this.curTable[48]=this.getRgb(255,255,255),this.curTable[49]=this.getRgb(171,231,255),this.curTable[50]=this.getRgb(199,215,255),this.curTable[51]=this.getRgb(215,203,255),this.curTable[52]=this.getRgb(255,199,255),this.curTable[53]=this.getRgb(255,199,219),this.curTable[54]=this.getRgb(255,191,179),this.curTable[55]=this.getRgb(255,219,171),this.curTable[56]=this.getRgb(255,231,163),this.curTable[57]=this.getRgb(227,255,163),this.curTable[58]=this.getRgb(171,243,191),this.curTable[59]=this.getRgb(179,255,207),this.curTable[60]=this.getRgb(159,255,243),this.curTable[61]=this.getRgb(0,0,0),this.curTable[62]=this.getRgb(0,0,0),this.curTable[63]=this.getRgb(0,0,0),this.makeTables(),this.setEmphasis(0)}};at.exports=ht});var ct=S((Wt,mt)=>{"use strict";var Mt=17897725e-1,lt=function(t){this.nes=t,this.square1=new P(this,!0),this.square2=new P(this,!1),this.triangle=new ut(this),this.noise=new ft(this),this.dmc=new pt(this),this.frameIrqCounter=null,this.frameIrqCounterMax=4,this.initCounter=2048,this.channelEnableValue=null,this.sampleRate=44100,this.lengthLookup=null,this.dmcFreqLookup=null,this.noiseWavelengthLookup=null,this.square_table=null,this.tnd_table=null,this.frameIrqEnabled=!1,this.frameIrqActive=null,this.frameClockNow=null,this.startedPlaying=!1,this.recordOutput=!1,this.initingHardware=!1,this.masterFrameCounter=null,this.derivedFrameCounter=null,this.countSequence=null,this.sampleTimer=null,this.frameTime=null,this.sampleTimerMax=null,this.sampleCount=null,this.triValue=0,this.smpSquare1=null,this.smpSquare2=null,this.smpTriangle=null,this.smpDmc=null,this.accCount=null,this.prevSampleL=0,this.prevSampleR=0,this.smpAccumL=0,this.smpAccumR=0,this.dacRange=0,this.dcValue=0,this.masterVolume=256,this.stereoPosLSquare1=null,this.stereoPosLSquare2=null,this.stereoPosLTriangle=null,this.stereoPosLNoise=null,this.stereoPosLDMC=null,this.stereoPosRSquare1=null,this.stereoPosRSquare2=null,this.stereoPosRTriangle=null,this.stereoPosRNoise=null,this.stereoPosRDMC=null,this.extraCycles=null,this.maxSample=null,this.minSample=null,this.panning=[80,170,100,150,128],this.setPanning(this.panning),this.initLengthLookup(),this.initDmcFrequencyLookup(),this.initNoiseWavelengthLookup(),this.initDACtables();for(var i=0;i<20;i++)i===16?this.writeReg(16400,16):this.writeReg(16384+i,0);this.reset()};lt.prototype={reset:function(){this.sampleRate=this.nes.opts.sampleRate,this.sampleTimerMax=Math.floor(1024*Mt*this.nes.opts.preferredFrameRate/(this.sampleRate*60)),this.frameTime=Math.floor(14915*this.nes.opts.preferredFrameRate/60),this.sampleTimer=0,this.updateChannelEnable(0),this.masterFrameCounter=0,this.derivedFrameCounter=0,this.countSequence=0,this.sampleCount=0,this.initCounter=2048,this.frameIrqEnabled=!1,this.initingHardware=!1,this.resetCounter(),this.square1.reset(),this.square2.reset(),this.triangle.reset(),this.noise.reset(),this.dmc.reset(),this.accCount=0,this.smpSquare1=0,this.smpSquare2=0,this.smpTriangle=0,this.smpDmc=0,this.frameIrqEnabled=!1,this.frameIrqCounterMax=4,this.channelEnableValue=255,this.startedPlaying=!1,this.prevSampleL=0,this.prevSampleR=0,this.smpAccumL=0,this.smpAccumR=0,this.maxSample=-5e5,this.minSample=5e5},readReg:function(t){var i=0;return i|=this.square1.getLengthStatus(),i|=this.square2.getLengthStatus()<<1,i|=this.triangle.getLengthStatus()<<2,i|=this.noise.getLengthStatus()<<3,i|=this.dmc.getLengthStatus()<<4,i|=(this.frameIrqActive&&this.frameIrqEnabled?1:0)<<6,i|=this.dmc.getIrqStatus()<<7,this.frameIrqActive=!1,this.dmc.irqGenerated=!1,i&65535},writeReg:function(t,i){t>=16384&&t<16388?this.square1.writeReg(t,i):t>=16388&&t<16392?this.square2.writeReg(t,i):t>=16392&&t<16396?this.triangle.writeReg(t,i):t>=16396&&t<=16399?this.noise.writeReg(t,i):t===16400?this.dmc.writeReg(t,i):t===16401?this.dmc.writeReg(t,i):t===16402?this.dmc.writeReg(t,i):t===16403?this.dmc.writeReg(t,i):t===16405?(this.updateChannelEnable(i),i!==0&&this.initCounter>0&&(this.initingHardware=!0),this.dmc.writeReg(t,i)):t===16407&&(this.countSequence=i>>7&1,this.masterFrameCounter=0,this.frameIrqActive=!1,(i>>6&1)===0?this.frameIrqEnabled=!0:this.frameIrqEnabled=!1,this.countSequence===0?(this.frameIrqCounterMax=4,this.derivedFrameCounter=4):(this.frameIrqCounterMax=5,this.derivedFrameCounter=0,this.frameCounterTick()))},resetCounter:function(){this.countSequence===0?this.derivedFrameCounter=4:this.derivedFrameCounter=0},updateChannelEnable:function(t){this.channelEnableValue=t&65535,this.square1.setEnabled((t&1)!==0),this.square2.setEnabled((t&2)!==0),this.triangle.setEnabled((t&4)!==0),this.noise.setEnabled((t&8)!==0),this.dmc.setEnabled((t&16)!==0)},clockFrameCounter:function(t){if(this.initCounter>0&&this.initingHardware){this.initCounter-=t,this.initCounter<=0&&(this.initingHardware=!1);return}t+=this.extraCycles;var i=this.sampleTimerMax-this.sampleTimer;t<<10>i?(this.extraCycles=(t<<10)-i>>10,t-=this.extraCycles):this.extraCycles=0;var s=this.dmc,e=this.triangle,r=this.square1,a=this.square2,n=this.noise;if(s.isEnabled)for(s.shiftCounter-=t<<3;s.shiftCounter<=0&&s.dmaFrequency>0;)s.shiftCounter+=s.dmaFrequency,s.clockDmc();if(e.progTimerMax>0)for(e.progTimerCount-=t;e.progTimerCount<=0;)e.progTimerCount+=e.progTimerMax+1,e.linearCounter>0&&e.lengthCounter>0&&(e.triangleCounter++,e.triangleCounter&=31,e.isEnabled&&(e.triangleCounter>=16?e.sampleValue=e.triangleCounter&15:e.sampleValue=15-(e.triangleCounter&15),e.sampleValue<<=4));r.progTimerCount-=t,r.progTimerCount<=0&&(r.progTimerCount+=r.progTimerMax+1<<1,r.squareCounter++,r.squareCounter&=7,r.updateSampleValue()),a.progTimerCount-=t,a.progTimerCount<=0&&(a.progTimerCount+=a.progTimerMax+1<<1,a.squareCounter++,a.squareCounter&=7,a.updateSampleValue());var h=t;if(n.progTimerCount-h>0)n.progTimerCount-=h,n.accCount+=h,n.accValue+=h*n.sampleValue;else for(;h-- >0;)--n.progTimerCount<=0&&n.progTimerMax>0&&(n.shiftReg<<=1,n.tmp=(n.shiftReg<<(n.randomMode===0?1:6)^n.shiftReg)&32768,n.tmp!==0?(n.shiftReg|=1,n.randomBit=0,n.sampleValue=0):(n.randomBit=1,n.isEnabled&&n.lengthCounter>0?n.sampleValue=n.masterVolume:n.sampleValue=0),n.progTimerCount+=n.progTimerMax),n.accValue+=n.sampleValue,n.accCount++;this.frameIrqEnabled&&this.frameIrqActive&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this.masterFrameCounter+=t<<1,this.masterFrameCounter>=this.frameTime&&(this.masterFrameCounter-=this.frameTime,this.frameCounterTick()),this.accSample(t),this.sampleTimer+=t<<10,this.sampleTimer>=this.sampleTimerMax&&(this.sample(),this.sampleTimer-=this.sampleTimerMax)},accSample:function(t){this.triangle.sampleCondition&&(this.triValue=Math.floor((this.triangle.progTimerCount<<4)/(this.triangle.progTimerMax+1)),this.triValue>16&&(this.triValue=16),this.triangle.triangleCounter>=16&&(this.triValue=16-this.triValue),this.triValue+=this.triangle.sampleValue),t===2?(this.smpTriangle+=this.triValue<<1,this.smpDmc+=this.dmc.sample<<1,this.smpSquare1+=this.square1.sampleValue<<1,this.smpSquare2+=this.square2.sampleValue<<1,this.accCount+=2):t===4?(this.smpTriangle+=this.triValue<<2,this.smpDmc+=this.dmc.sample<<2,this.smpSquare1+=this.square1.sampleValue<<2,this.smpSquare2+=this.square2.sampleValue<<2,this.accCount+=4):(this.smpTriangle+=t*this.triValue,this.smpDmc+=t*this.dmc.sample,this.smpSquare1+=t*this.square1.sampleValue,this.smpSquare2+=t*this.square2.sampleValue,this.accCount+=t)},frameCounterTick:function(){this.derivedFrameCounter++,this.derivedFrameCounter>=this.frameIrqCounterMax&&(this.derivedFrameCounter=0),(this.derivedFrameCounter===1||this.derivedFrameCounter===3)&&(this.triangle.clockLengthCounter(),this.square1.clockLengthCounter(),this.square2.clockLengthCounter(),this.noise.clockLengthCounter(),this.square1.clockSweep(),this.square2.clockSweep()),this.derivedFrameCounter>=0&&this.derivedFrameCounter<4&&(this.square1.clockEnvDecay(),this.square2.clockEnvDecay(),this.noise.clockEnvDecay(),this.triangle.clockLinearCounter()),this.derivedFrameCounter===3&&this.countSequence===0&&(this.frameIrqActive=!0)},sample:function(){var t,i;this.accCount>0?(this.smpSquare1<<=4,this.smpSquare1=Math.floor(this.smpSquare1/this.accCount),this.smpSquare2<<=4,this.smpSquare2=Math.floor(this.smpSquare2/this.accCount),this.smpTriangle=Math.floor(this.smpTriangle/this.accCount),this.smpDmc<<=4,this.smpDmc=Math.floor(this.smpDmc/this.accCount),this.accCount=0):(this.smpSquare1=this.square1.sampleValue<<4,this.smpSquare2=this.square2.sampleValue<<4,this.smpTriangle=this.triangle.sampleValue,this.smpDmc=this.dmc.sample<<4);var s=Math.floor((this.noise.accValue<<4)/this.noise.accCount);this.noise.accValue=s>>4,this.noise.accCount=1,t=this.smpSquare1*this.stereoPosLSquare1+this.smpSquare2*this.stereoPosLSquare2>>8,i=3*this.smpTriangle*this.stereoPosLTriangle+(s<<1)*this.stereoPosLNoise+this.smpDmc*this.stereoPosLDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),i>=this.tnd_table.length&&(i=this.tnd_table.length-1);var e=this.square_table[t]+this.tnd_table[i]-this.dcValue;t=this.smpSquare1*this.stereoPosRSquare1+this.smpSquare2*this.stereoPosRSquare2>>8,i=3*this.smpTriangle*this.stereoPosRTriangle+(s<<1)*this.stereoPosRNoise+this.smpDmc*this.stereoPosRDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),i>=this.tnd_table.length&&(i=this.tnd_table.length-1);var r=this.square_table[t]+this.tnd_table[i]-this.dcValue,a=e-this.prevSampleL;this.prevSampleL+=a,this.smpAccumL+=a-(this.smpAccumL>>10),e=this.smpAccumL;var n=r-this.prevSampleR;this.prevSampleR+=n,this.smpAccumR+=n-(this.smpAccumR>>10),r=this.smpAccumR,e>this.maxSample&&(this.maxSample=e),e>3]},getDmcFrequency:function(t){return t>=0&&t<16?this.dmcFreqLookup[t]:0},getNoiseWaveLength:function(t){return t>=0&&t<16?this.noiseWavelengthLookup[t]:0},setPanning:function(t){for(var i=0;i<5;i++)this.panning[i]=t[i];this.updateStereoPos()},setMasterVolume:function(t){t<0&&(t=0),t>256&&(t=256),this.masterVolume=t,this.updateStereoPos()},updateStereoPos:function(){this.stereoPosLSquare1=this.panning[0]*this.masterVolume>>8,this.stereoPosLSquare2=this.panning[1]*this.masterVolume>>8,this.stereoPosLTriangle=this.panning[2]*this.masterVolume>>8,this.stereoPosLNoise=this.panning[3]*this.masterVolume>>8,this.stereoPosLDMC=this.panning[4]*this.masterVolume>>8,this.stereoPosRSquare1=this.masterVolume-this.stereoPosLSquare1,this.stereoPosRSquare2=this.masterVolume-this.stereoPosLSquare2,this.stereoPosRTriangle=this.masterVolume-this.stereoPosLTriangle,this.stereoPosRNoise=this.masterVolume-this.stereoPosLNoise,this.stereoPosRDMC=this.masterVolume-this.stereoPosLDMC},initLengthLookup:function(){this.lengthLookup=[10,254,20,2,40,4,80,6,160,8,60,10,14,12,26,14,12,16,24,18,48,20,96,22,192,24,72,26,16,28,32,30]},initDmcFrequencyLookup:function(){this.dmcFreqLookup=new Array(16),this.dmcFreqLookup[0]=3424,this.dmcFreqLookup[1]=3040,this.dmcFreqLookup[2]=2720,this.dmcFreqLookup[3]=2560,this.dmcFreqLookup[4]=2288,this.dmcFreqLookup[5]=2032,this.dmcFreqLookup[6]=1808,this.dmcFreqLookup[7]=1712,this.dmcFreqLookup[8]=1520,this.dmcFreqLookup[9]=1280,this.dmcFreqLookup[10]=1136,this.dmcFreqLookup[11]=1024,this.dmcFreqLookup[12]=848,this.dmcFreqLookup[13]=672,this.dmcFreqLookup[14]=576,this.dmcFreqLookup[15]=432},initNoiseWavelengthLookup:function(){this.noiseWavelengthLookup=new Array(16),this.noiseWavelengthLookup[0]=4,this.noiseWavelengthLookup[1]=8,this.noiseWavelengthLookup[2]=16,this.noiseWavelengthLookup[3]=32,this.noiseWavelengthLookup[4]=64,this.noiseWavelengthLookup[5]=96,this.noiseWavelengthLookup[6]=128,this.noiseWavelengthLookup[7]=160,this.noiseWavelengthLookup[8]=202,this.noiseWavelengthLookup[9]=254,this.noiseWavelengthLookup[10]=380,this.noiseWavelengthLookup[11]=508,this.noiseWavelengthLookup[12]=762,this.noiseWavelengthLookup[13]=1016,this.noiseWavelengthLookup[14]=2034,this.noiseWavelengthLookup[15]=4068},initDACtables:function(){var t,i,s,e=0,r=0;for(this.square_table=new Float32Array(512),this.tnd_table=new Float32Array(3264),s=0;s<512;s++)t=95.52/(8128/(s/16)+100),t*=.98411,t*=5e4,i=Math.floor(t),this.square_table[s]=i,i>e&&(e=i);for(s=0;s<3264;s++)t=163.67/(24329/(s/16)+100),t*=.98411,t*=5e4,i=Math.floor(t),this.tnd_table[s]=i,i>r&&(r=i);this.dacRange=e+r,this.dcValue=this.dacRange/2}};var pt=function(t){this.papu=t,this.MODE_NORMAL=0,this.MODE_LOOP=1,this.MODE_IRQ=2,this.isEnabled=null,this.hasSample=null,this.irqGenerated=!1,this.playMode=null,this.dmaFrequency=null,this.dmaCounter=null,this.deltaCounter=null,this.playStartAddress=null,this.playAddress=null,this.playLength=null,this.playLengthCounter=null,this.shiftCounter=null,this.reg4012=null,this.reg4013=null,this.sample=null,this.dacLsb=null,this.data=null,this.reset()};pt.prototype={clockDmc:function(){this.hasSample&&((this.data&1)===0?this.deltaCounter>0&&this.deltaCounter--:this.deltaCounter<63&&this.deltaCounter++,this.sample=this.isEnabled?(this.deltaCounter<<1)+this.dacLsb:0,this.data>>=1),this.dmaCounter--,this.dmaCounter<=0&&(this.hasSample=!1,this.endOfSample(),this.dmaCounter=8),this.irqGenerated&&this.papu.nes.cpu.requestIrq(this.papu.nes.cpu.IRQ_NORMAL)},endOfSample:function(){this.playLengthCounter===0&&this.playMode===this.MODE_LOOP&&(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength),this.playLengthCounter>0&&(this.nextSample(),this.playLengthCounter===0&&this.playMode===this.MODE_IRQ&&(this.irqGenerated=!0))},nextSample:function(){this.data=this.papu.nes.mmap.load(this.playAddress),this.papu.nes.cpu.haltCycles(4),this.playLengthCounter--,this.playAddress++,this.playAddress>65535&&(this.playAddress=32768),this.hasSample=!0},writeReg:function(t,i){t===16400?(i>>6===0?this.playMode=this.MODE_NORMAL:(i>>6&1)===1?this.playMode=this.MODE_LOOP:i>>6===2&&(this.playMode=this.MODE_IRQ),(i&128)===0&&(this.irqGenerated=!1),this.dmaFrequency=this.papu.getDmcFrequency(i&15)):t===16401?(this.deltaCounter=i>>1&63,this.dacLsb=i&1,this.sample=(this.deltaCounter<<1)+this.dacLsb):t===16402?(this.playStartAddress=i<<6|49152,this.playAddress=this.playStartAddress,this.reg4012=i):t===16403?(this.playLength=(i<<4)+1,this.playLengthCounter=this.playLength,this.reg4013=i):t===16405&&((i>>4&1)===0?this.playLengthCounter=0:(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength),this.irqGenerated=!1)},setEnabled:function(t){!this.isEnabled&&t&&(this.playLengthCounter=this.playLength),this.isEnabled=t},getLengthStatus:function(){return this.playLengthCounter===0||!this.isEnabled?0:1},getIrqStatus:function(){return this.irqGenerated?1:0},reset:function(){this.isEnabled=!1,this.irqGenerated=!1,this.playMode=this.MODE_NORMAL,this.dmaFrequency=0,this.dmaCounter=0,this.deltaCounter=0,this.playStartAddress=0,this.playAddress=0,this.playLength=0,this.playLengthCounter=0,this.sample=0,this.dacLsb=0,this.shiftCounter=0,this.reg4012=0,this.reg4013=0,this.data=0}};var ft=function(t){this.papu=t,this.isEnabled=null,this.envDecayDisable=null,this.envDecayLoopEnable=null,this.lengthCounterEnable=null,this.envReset=null,this.shiftNow=null,this.lengthCounter=null,this.progTimerCount=null,this.progTimerMax=null,this.envDecayRate=null,this.envDecayCounter=null,this.envVolume=null,this.masterVolume=null,this.shiftReg=16384,this.randomBit=null,this.randomMode=null,this.sampleValue=null,this.accValue=0,this.accCount=1,this.tmp=null,this.reset()};ft.prototype={reset:function(){this.progTimerCount=0,this.progTimerMax=0,this.isEnabled=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1,this.shiftNow=!1,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.shiftReg=1,this.randomBit=0,this.randomMode=0,this.sampleValue=0,this.tmp=0},clockLengthCounter:function(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())},clockEnvDecay:function(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()},updateSampleValue:function(){this.isEnabled&&this.lengthCounter>0&&(this.sampleValue=this.randomBit*this.masterVolume)},writeReg:function(t,i){t===16396?(this.envDecayDisable=(i&16)!==0,this.envDecayRate=i&15,this.envDecayLoopEnable=(i&32)!==0,this.lengthCounterEnable=(i&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume):t===16398?(this.progTimerMax=this.papu.getNoiseWaveLength(i&15),this.randomMode=i>>7):t===16399&&(this.lengthCounter=this.papu.getLengthMax(i&248),this.envReset=!0)},setEnabled:function(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()},getLengthStatus:function(){return this.lengthCounter===0||!this.isEnabled?0:1}};var P=function(t,i){this.papu=t,this.dutyLookup=[0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1],this.impLookup=[1,-1,0,0,0,0,0,0,1,0,-1,0,0,0,0,0,1,0,0,0,-1,0,0,0,-1,0,1,0,0,0,0,0],this.sqr1=i,this.isEnabled=null,this.lengthCounterEnable=null,this.sweepActive=null,this.envDecayDisable=null,this.envDecayLoopEnable=null,this.envReset=null,this.sweepCarry=null,this.updateSweepPeriod=null,this.progTimerCount=null,this.progTimerMax=null,this.lengthCounter=null,this.squareCounter=null,this.sweepCounter=null,this.sweepCounterMax=null,this.sweepMode=null,this.sweepShiftAmount=null,this.envDecayRate=null,this.envDecayCounter=null,this.envVolume=null,this.masterVolume=null,this.dutyMode=null,this.sweepResult=null,this.sampleValue=null,this.vol=null,this.reset()};P.prototype={reset:function(){this.progTimerCount=0,this.progTimerMax=0,this.lengthCounter=0,this.squareCounter=0,this.sweepCounter=0,this.sweepCounterMax=0,this.sweepMode=0,this.sweepShiftAmount=0,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.dutyMode=0,this.vol=0,this.isEnabled=!1,this.lengthCounterEnable=!1,this.sweepActive=!1,this.sweepCarry=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1},clockLengthCounter:function(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())},clockEnvDecay:function(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()},clockSweep:function(){--this.sweepCounter<=0&&(this.sweepCounter=this.sweepCounterMax+1,this.sweepActive&&this.sweepShiftAmount>0&&this.progTimerMax>7&&(this.sweepCarry=!1,this.sweepMode===0?(this.progTimerMax+=this.progTimerMax>>this.sweepShiftAmount,this.progTimerMax>4095&&(this.progTimerMax=4095,this.sweepCarry=!0)):this.progTimerMax=this.progTimerMax-((this.progTimerMax>>this.sweepShiftAmount)-(this.sqr1?1:0)))),this.updateSweepPeriod&&(this.updateSweepPeriod=!1,this.sweepCounter=this.sweepCounterMax+1)},updateSampleValue:function(){this.isEnabled&&this.lengthCounter>0&&this.progTimerMax>7?this.sweepMode===0&&this.progTimerMax+(this.progTimerMax>>this.sweepShiftAmount)>4095?this.sampleValue=0:this.sampleValue=this.masterVolume*this.dutyLookup[(this.dutyMode<<3)+this.squareCounter]:this.sampleValue=0},writeReg:function(t,i){var s=this.sqr1?0:4;t===16384+s?(this.envDecayDisable=(i&16)!==0,this.envDecayRate=i&15,this.envDecayLoopEnable=(i&32)!==0,this.dutyMode=i>>6&3,this.lengthCounterEnable=(i&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()):t===16385+s?(this.sweepActive=(i&128)!==0,this.sweepCounterMax=i>>4&7,this.sweepMode=i>>3&1,this.sweepShiftAmount=i&7,this.updateSweepPeriod=!0):t===16386+s?(this.progTimerMax&=1792,this.progTimerMax|=i):t===16387+s&&(this.progTimerMax&=255,this.progTimerMax|=(i&7)<<8,this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(i&248)),this.envReset=!0)},setEnabled:function(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()},getLengthStatus:function(){return this.lengthCounter===0||!this.isEnabled?0:1}};var ut=function(t){this.papu=t,this.isEnabled=null,this.sampleCondition=null,this.lengthCounterEnable=null,this.lcHalt=null,this.lcControl=null,this.progTimerCount=null,this.progTimerMax=null,this.triangleCounter=null,this.lengthCounter=null,this.linearCounter=null,this.lcLoadValue=null,this.sampleValue=null,this.tmp=null,this.reset()};ut.prototype={reset:function(){this.progTimerCount=0,this.progTimerMax=0,this.triangleCounter=0,this.isEnabled=!1,this.sampleCondition=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.linearCounter=0,this.lcLoadValue=0,this.lcHalt=!0,this.lcControl=!1,this.tmp=0,this.sampleValue=15},clockLengthCounter:function(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleCondition())},clockLinearCounter:function(){this.lcHalt?(this.linearCounter=this.lcLoadValue,this.updateSampleCondition()):this.linearCounter>0&&(this.linearCounter--,this.updateSampleCondition()),this.lcControl||(this.lcHalt=!1)},getLengthStatus:function(){return this.lengthCounter===0||!this.isEnabled?0:1},readReg:function(t){return 0},writeReg:function(t,i){t===16392?(this.lcControl=(i&128)!==0,this.lcLoadValue=i&127,this.lengthCounterEnable=!this.lcControl):t===16394?(this.progTimerMax&=1792,this.progTimerMax|=i):t===16395&&(this.progTimerMax&=255,this.progTimerMax|=(i&7)<<8,this.lengthCounter=this.papu.getLengthMax(i&248),this.lcHalt=!0),this.updateSampleCondition()},clockProgrammableTimer:function(t){if(this.progTimerMax>0)for(this.progTimerCount+=t;this.progTimerMax>0&&this.progTimerCount>=this.progTimerMax;)this.progTimerCount-=this.progTimerMax,this.isEnabled&&this.lengthCounter>0&&this.linearCounter>0&&this.clockTriangleGenerator()},clockTriangleGenerator:function(){this.triangleCounter++,this.triangleCounter&=31},setEnabled:function(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleCondition()},updateSampleCondition:function(){this.sampleCondition=this.isEnabled&&this.progTimerMax>7&&this.linearCounter>0&&this.lengthCounter>0}};mt.exports=lt});var _t=S((Ut,Rt)=>{"use strict";var C=I(),o={};o[0]=function(t){this.nes=t};o[0].prototype={reset:function(){this.joy1StrobeState=0,this.joy2StrobeState=0,this.joypadLastWrite=0,this.zapperFired=!1,this.zapperX=null,this.zapperY=null},write:function(t,i){t<8192?this.nes.cpu.mem[t&2047]=i:t>16407?(this.nes.cpu.mem[t]=i,t>=24576&&t<32768&&this.nes.opts.onBatteryRamWrite(t,i)):t>8199&&t<16384?this.regWrite(8192+(t&7),i):this.regWrite(t,i)},writelow:function(t,i){t<8192?this.nes.cpu.mem[t&2047]=i:t>16407?this.nes.cpu.mem[t]=i:t>8199&&t<16384?this.regWrite(8192+(t&7),i):this.regWrite(t,i)},load:function(t){return t&=65535,t>16407?this.nes.cpu.mem[t]:t>=8192?this.regLoad(t):this.nes.cpu.mem[t&2047]},regLoad:function(t){switch(t>>12){case 0:break;case 1:break;case 2:case 3:switch(t&7){case 0:return this.nes.cpu.mem[8192];case 1:return this.nes.cpu.mem[8193];case 2:return this.nes.ppu.readStatusRegister();case 3:return 0;case 4:return this.nes.ppu.sramLoad();case 5:return 0;case 6:return 0;case 7:return this.nes.ppu.vramLoad()}break;case 4:switch(t-16405){case 0:return this.nes.papu.readReg(t);case 1:return this.joy1Read();case 2:var i;return this.zapperX!==null&&this.zapperY!==null&&this.nes.ppu.isPixelWhite(this.zapperX,this.zapperY)?i=0:i=8,this.zapperFired&&(i|=16),(this.joy2Read()|i)&65535}break}return 0},regWrite:function(t,i){switch(t){case 8192:this.nes.cpu.mem[t]=i,this.nes.ppu.updateControlReg1(i);break;case 8193:this.nes.cpu.mem[t]=i,this.nes.ppu.updateControlReg2(i);break;case 8195:this.nes.ppu.writeSRAMAddress(i);break;case 8196:this.nes.ppu.sramWrite(i);break;case 8197:this.nes.ppu.scrollWrite(i);break;case 8198:this.nes.ppu.writeVRAMAddress(i);break;case 8199:this.nes.ppu.vramWrite(i);break;case 16404:this.nes.ppu.sramDMA(i);break;case 16405:this.nes.papu.writeReg(t,i);break;case 16406:(i&1)===0&&(this.joypadLastWrite&1)===1&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadLastWrite=i;break;case 16407:this.nes.papu.writeReg(t,i);break;default:t>=16384&&t<=16407&&this.nes.papu.writeReg(t,i)}},joy1Read:function(){var t;switch(this.joy1StrobeState){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t=this.nes.controllers[1].state[this.joy1StrobeState];break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:t=0;break;case 19:t=1;break;default:t=0}return this.joy1StrobeState++,this.joy1StrobeState===24&&(this.joy1StrobeState=0),t},joy2Read:function(){var t;switch(this.joy2StrobeState){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t=this.nes.controllers[2].state[this.joy2StrobeState];break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:t=0;break;case 19:t=1;break;default:t=0}return this.joy2StrobeState++,this.joy2StrobeState===24&&(this.joy2StrobeState=0),t},loadROM:function(){if(!this.nes.rom.valid||this.nes.rom.romCount<1)throw new Error("NoMapper: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)},loadPRGROM:function(){this.nes.rom.romCount>1?(this.loadRomBank(0,32768),this.loadRomBank(1,49152)):(this.loadRomBank(0,32768),this.loadRomBank(0,49152))},loadCHRROM:function(){this.nes.rom.vromCount>0&&(this.nes.rom.vromCount===1?(this.loadVromBank(0,0),this.loadVromBank(0,4096)):(this.loadVromBank(0,0),this.loadVromBank(1,4096)))},loadBatteryRam:function(){if(this.nes.rom.batteryRam){var t=this.nes.rom.batteryRam;t!==null&&t.length===8192&&C.copyArrayElements(t,0,this.nes.cpu.mem,24576,8192)}},loadRomBank:function(t,i){t%=this.nes.rom.romCount,C.copyArrayElements(this.nes.rom.rom[t],0,this.nes.cpu.mem,i,16384)},loadVromBank:function(t,i){if(this.nes.rom.vromCount!==0){this.nes.ppu.triggerRendering(),C.copyArrayElements(this.nes.rom.vrom[t%this.nes.rom.vromCount],0,this.nes.ppu.vramMem,i,4096);var s=this.nes.rom.vromTile[t%this.nes.rom.vromCount];C.copyArrayElements(s,0,this.nes.ppu.ptTile,i>>4,256)}},load32kRomBank:function(t,i){this.loadRomBank(t*2%this.nes.rom.romCount,i),this.loadRomBank((t*2+1)%this.nes.rom.romCount,i+16384)},load8kVromBank:function(t,i){this.nes.rom.vromCount!==0&&(this.nes.ppu.triggerRendering(),this.loadVromBank(t%this.nes.rom.vromCount,i),this.loadVromBank((t+1)%this.nes.rom.vromCount,i+4096))},load1kVromBank:function(t,i){if(this.nes.rom.vromCount!==0){this.nes.ppu.triggerRendering();var s=Math.floor(t/4)%this.nes.rom.vromCount,e=t%4*1024;C.copyArrayElements(this.nes.rom.vrom[s],e,this.nes.ppu.vramMem,i,1024);for(var r=this.nes.rom.vromTile[s],a=i>>4,n=0;n<64;n++)this.nes.ppu.ptTile[a+n]=r[(t%4<<6)+n]}},load2kVromBank:function(t,i){if(this.nes.rom.vromCount!==0){this.nes.ppu.triggerRendering();var s=Math.floor(t/2)%this.nes.rom.vromCount,e=t%2*2048;C.copyArrayElements(this.nes.rom.vrom[s],e,this.nes.ppu.vramMem,i,2048);for(var r=this.nes.rom.vromTile[s],a=i>>4,n=0;n<128;n++)this.nes.ppu.ptTile[a+n]=r[(t%2<<7)+n]}},load8kRomBank:function(t,i){var s=Math.floor(t/2)%this.nes.rom.romCount,e=t%2*8192;C.copyArrayElements(this.nes.rom.rom[s],e,this.nes.cpu.mem,i,8192)},clockIrqCounter:function(){},latchAccess:function(t){},toJSON:function(){return{joy1StrobeState:this.joy1StrobeState,joy2StrobeState:this.joy2StrobeState,joypadLastWrite:this.joypadLastWrite}},fromJSON:function(t){this.joy1StrobeState=t.joy1StrobeState,this.joy2StrobeState=t.joy2StrobeState,this.joypadLastWrite=t.joypadLastWrite}};o[1]=function(t){this.nes=t};o[1].prototype=new o[0];o[1].prototype.reset=function(){o[0].prototype.reset.apply(this),this.regBuffer=0,this.regBufferCounter=0,this.mirroring=0,this.oneScreenMirroring=0,this.prgSwitchingArea=1,this.prgSwitchingSize=1,this.vromSwitchingSize=0,this.romSelectionReg0=0,this.romSelectionReg1=0,this.romBankSelect=0};o[1].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}(i&128)!==0?(this.regBufferCounter=0,this.regBuffer=0,this.getRegNumber(t)===0&&(this.prgSwitchingArea=1,this.prgSwitchingSize=1)):(this.regBuffer=this.regBuffer&255-(1<>2&1,this.prgSwitchingSize=i>>3&1,this.vromSwitchingSize=i>>4&1;break;case 1:this.romSelectionReg0=i>>4&1,this.nes.rom.vromCount>0&&(this.vromSwitchingSize===0?this.romSelectionReg0===0?this.load8kVromBank(i&15,0):this.load8kVromBank(Math.floor(this.nes.rom.vromCount/2)+(i&15),0):this.romSelectionReg0===0?this.loadVromBank(i&15,0):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(i&15),0));break;case 2:this.romSelectionReg1=i>>4&1,this.nes.rom.vromCount>0&&this.vromSwitchingSize===1&&(this.romSelectionReg1===0?this.loadVromBank(i&15,4096):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(i&15),4096));break;default:s=i&15;var e,r=0;this.nes.rom.romCount>=32?this.vromSwitchingSize===0?this.romSelectionReg0===1&&(r=16):r=(this.romSelectionReg0|this.romSelectionReg1<<1)<<3:this.nes.rom.romCount>=16&&this.romSelectionReg0===1&&(r=8),this.prgSwitchingSize===0?(e=r+(i&15),this.load32kRomBank(e,32768)):(e=r*2+(i&15),this.prgSwitchingArea===0?this.loadRomBank(e,49152):this.loadRomBank(e,32768))}};o[1].prototype.getRegNumber=function(t){return t>=32768&&t<=40959?0:t>=40960&&t<=49151?1:t>=49152&&t<=57343?2:3};o[1].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("MMC1: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[1].prototype.switchLowHighPrgRom=function(t){};o[1].prototype.switch16to32=function(){};o[1].prototype.switch32to16=function(){};o[1].prototype.toJSON=function(){var t=o[0].prototype.toJSON.apply(this);return t.mirroring=this.mirroring,t.oneScreenMirroring=this.oneScreenMirroring,t.prgSwitchingArea=this.prgSwitchingArea,t.prgSwitchingSize=this.prgSwitchingSize,t.vromSwitchingSize=this.vromSwitchingSize,t.romSelectionReg0=this.romSelectionReg0,t.romSelectionReg1=this.romSelectionReg1,t.romBankSelect=this.romBankSelect,t.regBuffer=this.regBuffer,t.regBufferCounter=this.regBufferCounter,t};o[1].prototype.fromJSON=function(t){o[0].prototype.fromJSON.apply(this,arguments),this.mirroring=t.mirroring,this.oneScreenMirroring=t.oneScreenMirroring,this.prgSwitchingArea=t.prgSwitchingArea,this.prgSwitchingSize=t.prgSwitchingSize,this.vromSwitchingSize=t.vromSwitchingSize,this.romSelectionReg0=t.romSelectionReg0,this.romSelectionReg1=t.romSelectionReg1,this.romBankSelect=t.romBankSelect,this.regBuffer=t.regBuffer,this.regBufferCounter=t.regBufferCounter};o[2]=function(t){this.nes=t};o[2].prototype=new o[0];o[2].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.loadRomBank(i,32768)};o[2].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("UNROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[3]=function(t){this.nes=t};o[3].prototype=new o[0];o[3].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else{var s=i%(this.nes.rom.vromCount/2)*2;this.loadVromBank(s,0),this.loadVromBank(s+1,4096),this.load8kVromBank(i*2,0)}};o[4]=function(t){this.nes=t,this.CMD_SEL_2_1K_VROM_0000=0,this.CMD_SEL_2_1K_VROM_0800=1,this.CMD_SEL_1K_VROM_1000=2,this.CMD_SEL_1K_VROM_1400=3,this.CMD_SEL_1K_VROM_1800=4,this.CMD_SEL_1K_VROM_1C00=5,this.CMD_SEL_ROM_PAGE1=6,this.CMD_SEL_ROM_PAGE2=7,this.command=null,this.prgAddressSelect=null,this.chrAddressSelect=null,this.irqCounter=255,this.irqLatchValue=255,this.irqReload=0,this.irqEnable=0,this.prgAddressChanged=!1};o[4].prototype=new o[0];o[4].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}switch(t&57345){case 32768:this.command=i&7;var s=i>>6&1;s!==this.prgAddressSelect&&(this.prgAddressChanged=!0),this.prgAddressSelect=s,this.chrAddressSelect=i>>7&1;break;case 32769:this.executeCommand(this.command,i);break;case 40960:(i&1)!==0?this.nes.ppu.setMirroring(this.nes.rom.HORIZONTAL_MIRRORING):this.nes.ppu.setMirroring(this.nes.rom.VERTICAL_MIRRORING);break;case 40961:break;case 49152:this.irqLatchValue=i;break;case 49153:this.irqReload=1;break;case 57344:this.irqEnable=0;break;case 57345:this.irqEnable=1;break;default:}};o[4].prototype.executeCommand=function(t,i){switch(t){case this.CMD_SEL_2_1K_VROM_0000:this.chrAddressSelect===0?(this.load1kVromBank(i,0),this.load1kVromBank(i+1,1024)):(this.load1kVromBank(i,4096),this.load1kVromBank(i+1,5120));break;case this.CMD_SEL_2_1K_VROM_0800:this.chrAddressSelect===0?(this.load1kVromBank(i,2048),this.load1kVromBank(i+1,3072)):(this.load1kVromBank(i,6144),this.load1kVromBank(i+1,7168));break;case this.CMD_SEL_1K_VROM_1000:this.chrAddressSelect===0?this.load1kVromBank(i,4096):this.load1kVromBank(i,0);break;case this.CMD_SEL_1K_VROM_1400:this.chrAddressSelect===0?this.load1kVromBank(i,5120):this.load1kVromBank(i,1024);break;case this.CMD_SEL_1K_VROM_1800:this.chrAddressSelect===0?this.load1kVromBank(i,6144):this.load1kVromBank(i,2048);break;case this.CMD_SEL_1K_VROM_1C00:this.chrAddressSelect===0?this.load1kVromBank(i,7168):this.load1kVromBank(i,3072);break;case this.CMD_SEL_ROM_PAGE1:this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1),this.prgAddressSelect===0?this.load8kRomBank(i,32768):this.load8kRomBank(i,49152);break;case this.CMD_SEL_ROM_PAGE2:this.load8kRomBank(i,40960),this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1)}};o[4].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("MMC3: Invalid ROM! Unable to load.");this.load8kRomBank((this.nes.rom.romCount-1)*2,49152),this.load8kRomBank((this.nes.rom.romCount-1)*2+1,57344),this.load8kRomBank(0,32768),this.load8kRomBank(1,40960),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[4].prototype.clockIrqCounter=function(){this.irqReload===1&&(this.irqCounter=this.irqLatchValue,this.irqReload=0),this.irqCounter--,this.irqCounter<0&&(this.irqEnable===1&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this.irqCounter=this.irqLatchValue)};o[4].prototype.toJSON=function(){var t=o[0].prototype.toJSON.apply(this);return t.command=this.command,t.prgAddressSelect=this.prgAddressSelect,t.chrAddressSelect=this.chrAddressSelect,t.irqReload=this.irqReload,t.irqCounter=this.irqCounter,t.irqLatchValue=this.irqLatchValue,t.irqEnable=this.irqEnable,t.prgAddressChanged=this.prgAddressChanged,t};o[4].prototype.fromJSON=function(t){o[0].prototype.fromJSON.apply(this,arguments),this.command=t.command,this.prgAddressSelect=t.prgAddressSelect,this.chrAddressSelect=t.chrAddressSelect,this.irqReload=t.irqReload,this.irqCounter=t.irqCounter,this.irqLatchValue=t.irqLatchValue,this.irqEnable=t.irqEnable,this.prgAddressChanged=t.prgAddressChanged};o[5]=function(t){this.nes=t};o[5].prototype=new o[0];o[5].prototype.write=function(t,i){t<32768?o[0].prototype.write.apply(this,arguments):this.load8kVromBank(i,0)};o[5].prototype.write=function(t,i){if(t<20480){o[0].prototype.write.apply(this,arguments);return}switch(t){case 20736:this.prg_size=i&3;break;case 20737:this.chr_size=i&3;break;case 20738:this.sram_we_a=i&3;break;case 20739:this.sram_we_b=i&3;break;case 20740:this.graphic_mode=i&3;break;case 20741:this.nametable_mode=i,this.nametable_type[0]=i&3,this.load1kVromBank(i&3,8192),i>>=2,this.nametable_type[1]=i&3,this.load1kVromBank(i&3,9216),i>>=2,this.nametable_type[2]=i&3,this.load1kVromBank(i&3,10240),i>>=2,this.nametable_type[3]=i&3,this.load1kVromBank(i&3,11264);break;case 20742:this.fill_chr=i;break;case 20743:this.fill_pal=i&3;break;case 20755:this.SetBank_SRAM(3,i&3);break;case 20756:case 20757:case 20758:case 20759:this.SetBank_CPU(t,i);break;case 20768:case 20769:case 20770:case 20771:case 20772:case 20773:case 20774:case 20775:this.chr_mode=0,this.chr_page[0][t&7]=i,this.SetBank_PPU();break;case 20776:case 20777:case 20778:case 20779:this.chr_mode=1,this.chr_page[1][(t&3)+0]=i,this.chr_page[1][(t&3)+4]=i,this.SetBank_PPU();break;case 20992:this.split_control=i;break;case 20993:this.split_scroll=i;break;case 20994:this.split_page=i&63;break;case 20995:this.irq_line=i,this.nes.cpu.ClearIRQ();break;case 20996:this.irq_enable=i,this.nes.cpu.ClearIRQ();break;case 20997:this.mult_a=i;break;case 20998:this.mult_b=i;break;default:t>=20480&&t<=20501?this.nes.papu.exWrite(t,i):t>=23552&&t<=24575?this.graphic_mode===2||this.graphic_mode!==3&&this.irq_status&64:t>=24576&&t<=32767&&this.sram_we_a===2&&this.sram_we_b;break}};o[5].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("UNROM: Invalid ROM! Unable to load.");this.load8kRomBank(this.nes.rom.romCount*2-1,32768),this.load8kRomBank(this.nes.rom.romCount*2-1,40960),this.load8kRomBank(this.nes.rom.romCount*2-1,49152),this.load8kRomBank(this.nes.rom.romCount*2-1,57344),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[7]=function(t){this.nes=t};o[7].prototype=new o[0];o[7].prototype.write=function(t,i){t<32768?o[0].prototype.write.apply(this,arguments):(this.load32kRomBank(i&7,32768),i&16?this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING2):this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING))};o[7].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("AOROM: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[11]=function(t){this.nes=t};o[11].prototype=new o[0];o[11].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else{var s=(i&15)*2%this.nes.rom.romCount,e=((i&15)*2+1)%this.nes.rom.romCount;if(this.loadRomBank(s,32768),this.loadRomBank(e,49152),this.nes.rom.vromCount>0){var r=(i>>4)*2%this.nes.rom.vromCount;this.loadVromBank(r,0),this.loadVromBank(r+1,4096)}}};o[34]=function(t){this.nes=t};o[34].prototype=new o[0];o[34].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i,32768)};o[38]=function(t){this.nes=t};o[38].prototype=new o[0];o[38].prototype.write=function(t,i){if(t<28672||t>32767){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i&3,32768),this.load8kVromBank((i>>2&3)*2,0)};o[66]=function(t){this.nes=t};o[66].prototype=new o[0];o[66].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i>>4&3,32768),this.load8kVromBank((i&3)*2,0)};o[94]=function(t){this.nes=t};o[94].prototype=new o[0];o[94].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.loadRomBank(i>>2,32768)};o[94].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("UN1ROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[140]=function(t){this.nes=t};o[140].prototype=new o[0];o[140].prototype.write=function(t,i){if(t<24576||t>32767){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i>>4&3,32768),this.load8kVromBank((i&15)*2,0)};o[180]=function(t){this.nes=t};o[180].prototype=new o[0];o[180].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.loadRomBank(i,49152)};o[180].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("Mapper 180: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};Rt.exports=o});var At=S((Zt,dt)=>{"use strict";var xt=_t(),yt=F(),St=function(t){this.nes=t,this.mapperName=new Array(92);for(var i=0;i<92;i++)this.mapperName[i]="Unknown Mapper";this.mapperName[0]="Direct Access",this.mapperName[1]="Nintendo MMC1",this.mapperName[2]="UNROM",this.mapperName[3]="CNROM",this.mapperName[4]="Nintendo MMC3",this.mapperName[5]="Nintendo MMC5",this.mapperName[6]="FFE F4xxx",this.mapperName[7]="AOROM",this.mapperName[8]="FFE F3xxx",this.mapperName[9]="Nintendo MMC2",this.mapperName[10]="Nintendo MMC4",this.mapperName[11]="Color Dreams Chip",this.mapperName[12]="FFE F6xxx",this.mapperName[15]="100-in-1 switch",this.mapperName[16]="Bandai chip",this.mapperName[17]="FFE F8xxx",this.mapperName[18]="Jaleco SS8806 chip",this.mapperName[19]="Namcot 106 chip",this.mapperName[20]="Famicom Disk System",this.mapperName[21]="Konami VRC4a",this.mapperName[22]="Konami VRC2a",this.mapperName[23]="Konami VRC2a",this.mapperName[24]="Konami VRC6",this.mapperName[25]="Konami VRC4b",this.mapperName[32]="Irem G-101 chip",this.mapperName[33]="Taito TC0190/TC0350",this.mapperName[34]="32kB ROM switch",this.mapperName[64]="Tengen RAMBO-1 chip",this.mapperName[65]="Irem H-3001 chip",this.mapperName[66]="GNROM switch",this.mapperName[67]="SunSoft3 chip",this.mapperName[68]="SunSoft4 chip",this.mapperName[69]="SunSoft5 FME-7 chip",this.mapperName[71]="Camerica chip",this.mapperName[78]="Irem 74HC161/32-based",this.mapperName[91]="Pirate HK-SF3 chip"};St.prototype={VERTICAL_MIRRORING:0,HORIZONTAL_MIRRORING:1,FOURSCREEN_MIRRORING:2,SINGLESCREEN_MIRRORING:3,SINGLESCREEN_MIRRORING2:4,SINGLESCREEN_MIRRORING3:5,SINGLESCREEN_MIRRORING4:6,CHRROM_MIRRORING:7,header:null,rom:null,vrom:null,vromTile:null,romCount:null,vromCount:null,mirroring:null,batteryRam:null,trainer:null,fourScreen:null,mapperType:null,valid:!1,load:function(t){var i,s,e;if(t.indexOf("NES")===-1)throw new Error("Not a valid NES ROM.");for(this.header=new Array(16),i=0;i<16;i++)this.header[i]=t.charCodeAt(i)&255;this.romCount=this.header[4],this.vromCount=this.header[5]*2,this.mirroring=(this.header[6]&1)!==0?1:0,this.batteryRam=(this.header[6]&2)!==0,this.trainer=(this.header[6]&4)!==0,this.fourScreen=(this.header[6]&8)!==0,this.mapperType=this.header[6]>>4|this.header[7]&240;var r=!1;for(i=8;i<16;i++)if(this.header[i]!==0){r=!0;break}r&&(this.mapperType&=15),this.rom=new Array(this.romCount);var a=16;for(i=0;i=t.length);s++)this.rom[i][s]=t.charCodeAt(a+s)&255;a+=16384}for(this.vrom=new Array(this.vromCount),i=0;i=t.length);s++)this.vrom[i][s]=t.charCodeAt(a+s)&255;a+=4096}for(this.vromTile=new Array(this.vromCount),i=0;i>4,h=i%16,h<8?this.vromTile[e][n].setScanline(h,this.vrom[e][i],this.vrom[e][i+8]):this.vromTile[e][n].setScanline(h-8,this.vrom[e][i-8],this.vrom[e][i]);this.valid=!0},getMirroringType:function(){return this.fourScreen?this.FOURSCREEN_MIRRORING:this.mirroring===0?this.HORIZONTAL_MIRRORING:this.VERTICAL_MIRRORING},getMapperName:function(){return this.mapperType>=0&&this.mapperType{"use strict";var kt=tt(),gt=O(),vt=ot(),Lt=ct(),Vt=At(),Ct=function(t){if(this.opts={onFrame:function(){},onAudioSample:null,onStatusUpdate:function(){},onBatteryRamWrite:function(){},preferredFrameRate:60,emulateSound:!0,sampleRate:44100},typeof t!="undefined"){var i;for(i in this.opts)typeof t[i]!="undefined"&&(this.opts[i]=t[i])}this.frameTime=1e3/this.opts.preferredFrameRate,this.ui={writeFrame:this.opts.onFrame,updateStatus:this.opts.onStatusUpdate},this.cpu=new kt(this),this.ppu=new vt(this),this.papu=new Lt(this),this.mmap=null,this.controllers={1:new gt,2:new gt},this.ui.updateStatus("Ready to load a ROM."),this.frame=this.frame.bind(this),this.buttonDown=this.buttonDown.bind(this),this.buttonUp=this.buttonUp.bind(this),this.zapperMove=this.zapperMove.bind(this),this.zapperFireDown=this.zapperFireDown.bind(this),this.zapperFireUp=this.zapperFireUp.bind(this)};Ct.prototype={fpsFrameCount:0,romData:null,reset:function(){this.mmap!==null&&this.mmap.reset(),this.cpu.reset(),this.ppu.reset(),this.papu.reset(),this.lastFpsTime=null,this.fpsFrameCount=0},frame:function(){this.ppu.startFrame();var t=0,i=this.opts.emulateSound,s=this.cpu,e=this.ppu,r=this.papu;t:for(;;)for(s.cyclesToHalt===0?(t=s.emulate(),i&&r.clockFrameCounter(t),t*=3):s.cyclesToHalt>8?(t=24,i&&r.clockFrameCounter(8),s.cyclesToHalt-=8):(t=s.cyclesToHalt*3,i&&r.clockFrameCounter(s.cyclesToHalt),s.cyclesToHalt=0);t>0;t--){if(e.curX===e.spr0HitX&&e.f_spVisibility===1&&e.scanline-21===e.spr0HitY&&e.setStatusFlag(e.STATUS_SPRITE0HIT,!0),e.requestEndFrame&&(e.nmiCounter--,e.nmiCounter===0)){e.requestEndFrame=!1,e.startVBlank();break t}e.curX++,e.curX===341&&(e.curX=0,e.endScanline())}this.fpsFrameCount++},buttonDown:function(t,i){this.controllers[t].buttonDown(i)},buttonUp:function(t,i){this.controllers[t].buttonUp(i)},zapperMove:function(t,i){this.mmap&&(this.mmap.zapperX=t,this.mmap.zapperY=i)},zapperFireDown:function(){this.mmap&&(this.mmap.zapperFired=!0)},zapperFireUp:function(){this.mmap&&(this.mmap.zapperFired=!1)},getFPS:function(){var t=+new Date,i=null;return this.lastFpsTime&&(i=this.fpsFrameCount/((t-this.lastFpsTime)/1e3)),this.fpsFrameCount=0,this.lastFpsTime=t,i},reloadROM:function(){this.romData!==null&&this.loadROM(this.romData)},loadROM:function(t){this.rom=new Vt(this),this.rom.load(t),this.reset(),this.mmap=this.rom.createMapper(),this.mmap.loadROM(),this.ppu.setMirroring(this.rom.getMirroringType()),this.romData=t},setFramerate:function(t){this.opts.preferredFrameRate=t,this.frameTime=1e3/t,this.papu.setSampleRate(this.opts.sampleRate,!1)},toJSON:function(){return{romData:this.romData,cpu:this.cpu.toJSON(),mmap:this.mmap.toJSON(),ppu:this.ppu.toJSON()}},fromJSON:function(t){this.loadROM(t.romData),this.cpu.fromJSON(t.cpu),this.mmap.fromJSON(t.mmap),this.ppu.fromJSON(t.ppu)}};Dt.exports=Ct});var Nt=S((Kt,It)=>{"use strict";It.exports={Controller:O(),NES:bt()}});var Bt=Nt();function Et(){return Ft()}var Tt=[{id:"hello.c",name:"Hello World"},{id:"attributes.c",name:"Attribute Table"},{id:"scroll.c",name:"Scrolling"},{id:"sprites.c",name:"Sprites"},{id:"metasprites.c",name:"Metasprites"},{id:"flicker.c",name:"Flickering Sprites"},{id:"metacursor.c",name:"Controllers"},{id:"vrambuffer.c",name:"VRAM Buffer"},{id:"statusbar.c",name:"Split Status Bar"},{id:"siegegame.c",name:"Siege Game"},{id:"tint.c",name:"Color Emphasis"},{id:"rletitle.c",name:"Title Screen RLE"},{id:"aputest.c",name:"Sound Tester"},{id:"music.c",name:"Music Player"},{id:"horizscroll.c",name:"Offscreen Scrolling"},{id:"monobitmap.c",name:"Monochrome Bitmap"},{id:"fami.c",name:"Famitone Demo"},{id:"shoot2.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"},{id:"bankswitch.c",name:"Bank Switching"},{id:"irq.c",name:"IRQ Scanline Counter"},{id:"ex0.dasm",name:"Initialization",category:"Assembly"},{id:"ex1.dasm",name:"Hello World"},{id:"ex2.dasm",name:"Scrolling Demo"},{id:"ex3.dasm",name:"Sprite Demo"},{id:"ex4.dasm",name:"Controller Demo"},{id:"musicdemo.dasm",name:"Famitone Demo"},{id:"xyscroll.dasm",name:"XY Split Scrolling"},{id:"road.dasm",name:"3-D Road Demo"},{id:"hello.cpp",name:"Hello Oscar64",category:"Oscar64"},{id:"chase/game.c",name:"Shiru's Chase Game",category:"Other"},{id:"hello.wiz",name:"Hello (Wiz)"}],Gt=w([[m.A,0,0],[m.B,0,1],[m.GP_A,0,0],[m.GP_B,0,1],[m.SELECT,0,2],[m.START,0,3],[m.UP,0,4],[m.DOWN,0,5],[m.LEFT,0,6],[m.RIGHT,0,7],[m.P2_A,1,0],[m.P2_B,1,1],[m.P2_SELECT,1,2],[m.P2_START,1,3],[m.P2_UP,1,4],[m.P2_DOWN,1,5],[m.P2_LEFT,1,6],[m.P2_RIGHT,1,7]]);function M(t){if(t)for(var i in t)ArrayBuffer.isView(t[i])&&(t[i]=t[i].slice(0))}var y=class extends H{constructor(s){super();this.audioFrequency=44030;this.frameindex=0;this.showDebugView=!1;this.machine={cpuCyclesPerLine:114};this.getToolForFilename=T;this.nullProbe=new Y;this.probe=this.nullProbe;this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"OAM Buffer",start:512,size:256,type:"ram"},{name:"Work RAM",start:768,size:3328,type:"ram"},{name:"PPU Registers",start:8192,last:8200,size:8192,type:"io"},{name:"APU Registers",start:16384,last:16416,size:8192,type:"io"},{name:"Optional Cartridge RAM",start:24576,size:8192,type:"ram"}]}};this.mainElement=s}getPresets(){return Tt}start(){this.debugPCDelta=1,this.audio=new q(this.audioFrequency),this.video=new E(this.mainElement,256,224,{overscan:!0}),this.video.create(),this.ntvideo=new E(this.mainElement,512,480,{overscan:!1}),this.ntvideo.create(),this.ntvideo.canvas.style.display="none",this.ntlastbuf=new Uint32Array(4096),Et().bind&&Et().bind("ctrl+shift+alt+n",()=>{this.showDebugView=!this.showDebugView,this.video.canvas.style.display=this.showDebugView?"none":"",this.ntvideo.canvas.style.display=this.showDebugView?"":"none"});var s=this.video.getFrameData();this.nes=new Bt.NES({onFrame:e=>{for(var r=0;r{this.frameindex<10?this.audio.feedSample(0,1):this.audio.feedSample((e+r)*.5,1)},onStatusUpdate:function(e){console.log(e)}}),this.nes.stop=()=>{throw this.haltAndCatchFire("Illegal instruction"),new V("CPU STOPPED")},this.nes.cpu._emulate=this.nes.cpu.emulate,this.nes.cpu.emulate=()=>{this.nes.cpu.irqRequested&&this.probe.logInterrupt(this.nes.cpu.irqType||0),this.probe.logExecute(this.nes.cpu.REG_PC+1,this.nes.cpu.REG_SP);var e=this.nes.cpu._emulate();return this.evalDebugCondition(),this.probe.logClocks(e),e>0?e:1},this.timer=new B(60,this.nextFrame.bind(this)),this.poller=G(this.video,[],Gt,(e,r,a,n)=>{n&1?this.nes.buttonDown(e.index+1,e.mask):n&64&&this.nes.buttonUp(e.index+1,e.mask)})}pollControls(){this.poller.poll()}advance(s){return this.nes.frame(),29780}updateDebugViews(){if(this.showDebugView){for(var s=0,e=0,r=this.ntvideo.getFrameData(),a=this.nes.ppu.regS===0?0:256,n=0;n<60;n++)for(var h=0;h<64;h++){s=8192+(h&31)+n%30*32,h>=32&&(s+=1024),n>=30&&(s+=2048);var l=this.nes.ppu.mirroredLoad(s)+a,c=this.nes.ppu.ptTile[l];e=s&11264|960|s&3072|s>>4&56|s>>2&7;var R=this.nes.ppu.mirroredLoad(e),u=l^R<<9^2147483648;if(u!=this.ntlastbuf[s&4095]){this.ntlastbuf[s&4095]=u;for(var p=n*64*8*8+h*8,f=0,g=(h&2)+((s&64)>>4),b=(R>>g&3)<<2,_=0;_<8;_++){for(var x=0;x<8;x++){var A=c.pix[f++];A&&(A+=b);var Ot=this.nes.ppu.imgPalette[A];r[p++]=Ot|4278190080}p+=504}}}this.ntvideo.updateFrame()}}loadROM(s,e){var r=v(e);this.nes.loadROM(r),this.frameindex=0,this.installIntercepts()}installIntercepts(){var s=this.nes.mmap;if(!s.haveProxied){var e=s.load.bind(s),r=s.write.bind(s),a=s.regLoad.bind(s),n=s.regWrite.bind(s),h=-1;s.load=p=>{var f=e(p);return p!=h&&this.probe.logRead(p,f),f},s.write=(p,f)=>{p!=h&&this.probe.logWrite(p,f),r(p,f)},s.regLoad=p=>{var f=a(p);return this.probe.logIORead(p,f),h=p,f},s.regWrite=(p,f)=>{this.probe.logIOWrite(p,f),h=p,n(p,f)},s.haveProxied=!0}var l=this.nes.ppu;if(!l.haveProxied){var c=l.endScanline.bind(l),R=l.startFrame.bind(l),u=l.writeMem.bind(l);l.endScanline=()=>{c(),this.probe.logNewScanline()},l.startFrame=()=>{R(),this.probe.logNewFrame()},l.writeMem=(p,f)=>{u(p,f),this.probe.logVRAMWrite(p,f)},l.haveProxied=!0}}newCodeAnalyzer(){return new Z(this)}getOriginPC(){return(this.readAddress(65530)|this.readAddress(65531)<<8)&65535}getDefaultExtensions(){return[...super.getDefaultExtensions(),".nesasm"]}getROMExtension(){return".nes"}reset(){this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET),this.installIntercepts()}isRunning(){return this.timer.isRunning()}pause(){this.timer.stop(),this.audio.stop()}resume(){this.timer.start(),this.audio.start()}runToVsync(){var s=this.frameindex;this.runEval(e=>this.frameindex>s)}getRasterScanline(){return this.nes.ppu.scanline}getRasterLineClock(){return this.nes.ppu.curX}getCPUState(){var s=this.nes.cpu.toJSON();return this.copy6502REGvars(s),s}saveState(){var s;return this.nes.mmap?s=this.nes.toJSON():(console.log("no nes.mmap!"),s={cpu:this.nes.cpu.toJSON(),ppu:this.nes.ppu.toJSON()}),s.c=s.cpu,this.copy6502REGvars(s.c),M(s.cpu),M(s.ppu),M(s.mmap),s.b=s.cpu.mem,s.ctrl=this.saveControlsState(),s}loadState(s){this.unfixPC(s.cpu),this.nes.fromJSON(s),this.fixPC(s.cpu),this.nes.cpu.mem=s.cpu.mem.slice(0),this.loadControlsState(s.ctrl),this.installIntercepts()}saveControlsState(){return{c1:this.nes.controllers[1].state.slice(0),c2:this.nes.controllers[2].state.slice(0)}}loadControlsState(s){this.nes.controllers[1].state=s.c1,this.nes.controllers[2].state=s.c2}readAddress(s){return this.nes.cpu.mem[s]}readVRAMAddress(s){return this.nes.ppu.vramMem[s]}copy6502REGvars(s){return s.T=0,s.PC=s.REG_PC,this.fixPC(s),s.A=s.REG_ACC,s.X=s.REG_X,s.Y=s.REG_Y,s.SP=s.REG_SP&255,s.Z=s.F_ZERO,s.N=s.F_SIGN,s.V=s.F_OVERFLOW,s.D=s.F_DECIMAL,s.C=s.F_CARRY,s.I=s.F_INTERRUPT,s.R=1,s.o=this.readAddress(s.PC+1),s}getDebugCategories(){return super.getDebugCategories().concat(["PPU","Mapper"])}getDebugInfo(s,e){switch(s){case"PPU":return this.ppuStateToLongString(e.ppu,e.b);case"Mapper":return this.mapperStateToLongString(e.mmap,e.b);default:return super.getDebugInfo(s,e)}}ppuStateToLongString(s,e){for(var r="",a=[["f_nmiOnVblank","NMI_ON_VBLANK"],["f_spVisibility","SPRITES"],["f_spClipping","NO_CLIP_SPRITES"],["f_dispType","MONOCHROME"],["f_bgVisibility","BACKGROUND"],["f_bgClipping","NO_CLIP_BACKGROUND"]],n=0;n{"use strict";var d=function(){this.state=new Array(8);for(var t=0;t{"use strict";K.exports={copyArrayElements:function(t,i,s,e,r){for(var a=0;a{"use strict";var J=I(),Q=function(t){this.nes=t,this.mem=null,this.REG_ACC=null,this.REG_X=null,this.REG_Y=null,this.REG_SP=null,this.REG_PC=null,this.REG_PC_NEW=null,this.REG_STATUS=null,this.F_CARRY=null,this.F_DECIMAL=null,this.F_INTERRUPT=null,this.F_INTERRUPT_NEW=null,this.F_OVERFLOW=null,this.F_SIGN=null,this.F_ZERO=null,this.F_NOTUSED=null,this.F_NOTUSED_NEW=null,this.F_BRK=null,this.F_BRK_NEW=null,this.opdata=null,this.cyclesToHalt=null,this.crash=null,this.irqRequested=null,this.irqType=null,this.reset()};Q.prototype={IRQ_NORMAL:0,IRQ_NMI:1,IRQ_RESET:2,reset:function(){this.mem=new Uint8Array(65536);for(var t=0;t<8192;t++)this.mem[t]=255;for(var i=0;i<4;i++){var s=i*2048;this.mem[s+8]=247,this.mem[s+9]=239,this.mem[s+10]=223,this.mem[s+15]=191}for(var e=8193;e>24,r=0,a=s>>8&255,n=this.REG_PC;this.REG_PC+=s>>16&255;var h=0;switch(a){case 0:{h=this.load(n+2);break}case 1:{h=this.load(n+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:break;case 3:{h=this.load16bit(n+2);break}case 4:{h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{h=this.load(n+2)+this.REG_X&255;break}case 7:{h=this.load(n+2)+this.REG_Y&255;break}case 8:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X;break}case 9:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 10:{h=this.load(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X,h&=255,h=this.load16bit(h);break}case 11:{h=this.load16bit(this.load(n+2)),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(n+2),h<8191?h=this.mem[h]+(this.mem[h&65280|(h&255)+1&255]<<8):h=this.nes.mmap.load(h)+(this.nes.mmap.load(h&65280|(h&255)+1&255)<<8);break}}switch(h&=65535,s&255){case 0:{t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,e+=r;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 2:{a===4?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 4:{this.F_CARRY===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 5:{this.F_ZERO===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(e++,this.REG_PC=h);break}case 8:{this.F_ZERO!==0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 9:{this.F_SIGN===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 10:{this.REG_PC+=2,this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.F_BRK=1,this.push(this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7),this.F_INTERRUPT=1,this.REG_PC=this.load16bit(65534),this.REG_PC--;break}case 11:{this.F_OVERFLOW===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 12:{this.F_OVERFLOW===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 13:{this.F_CARRY=0;break}case 14:{this.F_DECIMAL=0;break}case 15:{this.F_INTERRUPT=0;break}case 16:{this.F_OVERFLOW=0;break}case 17:{t=this.REG_ACC-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,e+=r;break}case 18:{t=this.REG_X-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 19:{t=this.REG_Y-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 20:{t=this.load(h)-1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t);break}case 21:{this.REG_X=this.REG_X-1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 22:{this.REG_Y=this.REG_Y-1&255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 23:{this.REG_ACC=(this.load(h)^this.REG_ACC)&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,e+=r;break}case 24:{t=this.load(h)+1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t&255);break}case 25:{this.REG_X=this.REG_X+1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 26:{this.REG_Y++,this.REG_Y&=255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 27:{this.REG_PC=h-1;break}case 28:{this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.REG_PC=h-1;break}case 29:{this.REG_ACC=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,e+=r;break}case 30:{this.REG_X=this.load(h),this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X,e+=r;break}case 31:{this.REG_Y=this.load(h),this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y,e+=r;break}case 32:{a===4?(t=this.REG_ACC&255,this.F_CARRY=t&1,t>>=1,this.REG_ACC=t):(t=this.load(h)&255,this.F_CARRY=t&1,t>>=1,this.write(h,t)),this.F_SIGN=0,this.F_ZERO=t;break}case 33:break;case 34:{t=(this.load(h)|this.REG_ACC)&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.REG_ACC=t,a!==11&&(e+=r);break}case 35:{this.push(this.REG_ACC);break}case 36:{this.F_BRK=1,this.push(this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7);break}case 37:{this.REG_ACC=this.pull(),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 38:{t=this.pull(),this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===1?0:1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1,this.F_NOTUSED=1;break}case 39:{a===4?(t=this.REG_ACC,i=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+i,this.REG_ACC=t):(t=this.load(h),i=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+i,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 40:{a===4?(i=this.F_CARRY<<7,this.F_CARRY=this.REG_ACC&1,t=(this.REG_ACC>>1)+i,this.REG_ACC=t):(t=this.load(h),i=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+i,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 41:{if(t=this.pull(),this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===0?1:0,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1,this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;this.REG_PC--,this.F_NOTUSED=1;break}case 42:{if(this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;break}case 43:{t=this.REG_ACC-this.load(h)-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^this.load(h))&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255,a!==11&&(e+=r);break}case 44:{this.F_CARRY=1;break}case 45:{this.F_DECIMAL=1;break}case 46:{this.F_INTERRUPT=1;break}case 47:{this.write(h,this.REG_ACC);break}case 48:{this.write(h,this.REG_X);break}case 49:{this.write(h,this.REG_Y);break}case 50:{this.REG_X=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 51:{this.REG_Y=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 52:{this.REG_X=this.REG_SP-256,this.F_SIGN=this.REG_SP>>7&1,this.F_ZERO=this.REG_X;break}case 53:{this.REG_ACC=this.REG_X,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 54:{this.REG_SP=this.REG_X+256,this.stackWrap();break}case 55:{this.REG_ACC=this.REG_Y,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 56:{t=this.REG_ACC&this.load(h),this.F_CARRY=t&1,this.REG_ACC=this.F_ZERO=t>>1,this.F_SIGN=0;break}case 57:{this.REG_ACC=this.F_ZERO=this.REG_ACC&this.load(h),this.F_CARRY=this.F_SIGN=this.REG_ACC>>7&1;break}case 58:{t=this.REG_ACC&this.load(h),this.REG_ACC=this.F_ZERO=(t>>1)+(this.F_CARRY<<7),this.F_SIGN=this.F_CARRY,this.F_CARRY=t>>7&1,this.F_OVERFLOW=(t>>7^t>>6)&1;break}case 59:{t=(this.REG_X&this.REG_ACC)-this.load(h),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_X^t)&128)!==0&&((this.REG_X^this.load(h))&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_X=t&255;break}case 60:{this.REG_ACC=this.REG_X=this.F_ZERO=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,e+=r;break}case 61:{this.write(h,this.REG_ACC&this.REG_X);break}case 62:{t=this.load(h)-1&255,this.write(h,t),t=this.REG_ACC-t,this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,a!==11&&(e+=r);break}case 63:{t=this.load(h)+1&255,this.write(h,t),t=this.REG_ACC-t-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^this.load(h))&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255,a!==11&&(e+=r);break}case 64:{t=this.load(h),i=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+i,this.write(h,t),this.REG_ACC=this.REG_ACC&t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 65:{t=this.load(h),i=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+i,this.write(h,t),t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,a!==11&&(e+=r);break}case 66:{t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.write(h,t),this.REG_ACC=this.REG_ACC|t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 67:{t=this.load(h)&255,this.F_CARRY=t&1,t>>=1,this.write(h,t),this.REG_ACC=this.REG_ACC^t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 68:break;case 69:{this.load(h),a!==11&&(e+=r);break}default:{this.nes.stop(),this.nes.crashMessage="Game crashed, invalid opcode at address $"+n.toString(16);break}}return e},load:function(t){return t<8192?this.mem[t&2047]:this.nes.mmap.load(t)},load16bit:function(t){return t<8191?this.mem[t&2047]|this.mem[t+1&2047]<<8:this.nes.mmap.load(t)|this.nes.mmap.load(t+1)<<8},write:function(t,i){t<8192?this.mem[t&2047]=i:this.nes.mmap.write(t,i)},requestIrq:function(t){this.irqRequested&&t===this.IRQ_NORMAL||(this.irqRequested=!0,this.irqType=t)},push:function(t){this.nes.mmap.write(this.REG_SP,t),this.REG_SP--,this.REG_SP=256|this.REG_SP&255},stackWrap:function(){this.REG_SP=256|this.REG_SP&255},pull:function(){return this.REG_SP++,this.REG_SP=256|this.REG_SP&255,this.nes.mmap.load(this.REG_SP)},pageCrossed:function(t,i){return(t&65280)!==(i&65280)},haltCycles:function(t){this.cyclesToHalt+=t},doNonMaskableInterrupt:function(t){(this.nes.mmap.load(8192)&128)!==0&&(this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.push(t),this.REG_PC_NEW=this.nes.mmap.load(65530)|this.nes.mmap.load(65531)<<8,this.REG_PC_NEW--)},doResetInterrupt:function(){this.REG_PC_NEW=this.nes.mmap.load(65532)|this.nes.mmap.load(65533)<<8,this.REG_PC_NEW--},doIrq:function(t){this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.push(t),this.F_INTERRUPT_NEW=1,this.F_BRK_NEW=0,this.REG_PC_NEW=this.nes.mmap.load(65534)|this.nes.mmap.load(65535)<<8,this.REG_PC_NEW--},getStatus:function(){return this.F_CARRY|this.F_ZERO<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7},setStatus:function(t){this.F_CARRY=t&1,this.F_ZERO=t>>1&1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1},JSON_PROPERTIES:["mem","cyclesToHalt","irqRequested","irqType","REG_ACC","REG_X","REG_Y","REG_SP","REG_PC","REG_PC_NEW","REG_STATUS","F_CARRY","F_DECIMAL","F_INTERRUPT","F_INTERRUPT_NEW","F_OVERFLOW","F_SIGN","F_ZERO","F_NOTUSED","F_NOTUSED_NEW","F_BRK","F_BRK_NEW"],toJSON:function(){return J.toJSON(this)},fromJSON:function(t){J.fromJSON(this,t)}};var j=function(){this.opdata=new Array(256);for(var t=0;t<256;t++)this.opdata[t]=255;this.setOp(this.INS_ADC,105,this.ADDR_IMM,2,2),this.setOp(this.INS_ADC,101,this.ADDR_ZP,2,3),this.setOp(this.INS_ADC,117,this.ADDR_ZPX,2,4),this.setOp(this.INS_ADC,109,this.ADDR_ABS,3,4),this.setOp(this.INS_ADC,125,this.ADDR_ABSX,3,4),this.setOp(this.INS_ADC,121,this.ADDR_ABSY,3,4),this.setOp(this.INS_ADC,97,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_ADC,113,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_AND,41,this.ADDR_IMM,2,2),this.setOp(this.INS_AND,37,this.ADDR_ZP,2,3),this.setOp(this.INS_AND,53,this.ADDR_ZPX,2,4),this.setOp(this.INS_AND,45,this.ADDR_ABS,3,4),this.setOp(this.INS_AND,61,this.ADDR_ABSX,3,4),this.setOp(this.INS_AND,57,this.ADDR_ABSY,3,4),this.setOp(this.INS_AND,33,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_AND,49,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_ASL,10,this.ADDR_ACC,1,2),this.setOp(this.INS_ASL,6,this.ADDR_ZP,2,5),this.setOp(this.INS_ASL,22,this.ADDR_ZPX,2,6),this.setOp(this.INS_ASL,14,this.ADDR_ABS,3,6),this.setOp(this.INS_ASL,30,this.ADDR_ABSX,3,7),this.setOp(this.INS_BCC,144,this.ADDR_REL,2,2),this.setOp(this.INS_BCS,176,this.ADDR_REL,2,2),this.setOp(this.INS_BEQ,240,this.ADDR_REL,2,2),this.setOp(this.INS_BIT,36,this.ADDR_ZP,2,3),this.setOp(this.INS_BIT,44,this.ADDR_ABS,3,4),this.setOp(this.INS_BMI,48,this.ADDR_REL,2,2),this.setOp(this.INS_BNE,208,this.ADDR_REL,2,2),this.setOp(this.INS_BPL,16,this.ADDR_REL,2,2),this.setOp(this.INS_BRK,0,this.ADDR_IMP,1,7),this.setOp(this.INS_BVC,80,this.ADDR_REL,2,2),this.setOp(this.INS_BVS,112,this.ADDR_REL,2,2),this.setOp(this.INS_CLC,24,this.ADDR_IMP,1,2),this.setOp(this.INS_CLD,216,this.ADDR_IMP,1,2),this.setOp(this.INS_CLI,88,this.ADDR_IMP,1,2),this.setOp(this.INS_CLV,184,this.ADDR_IMP,1,2),this.setOp(this.INS_CMP,201,this.ADDR_IMM,2,2),this.setOp(this.INS_CMP,197,this.ADDR_ZP,2,3),this.setOp(this.INS_CMP,213,this.ADDR_ZPX,2,4),this.setOp(this.INS_CMP,205,this.ADDR_ABS,3,4),this.setOp(this.INS_CMP,221,this.ADDR_ABSX,3,4),this.setOp(this.INS_CMP,217,this.ADDR_ABSY,3,4),this.setOp(this.INS_CMP,193,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_CMP,209,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_CPX,224,this.ADDR_IMM,2,2),this.setOp(this.INS_CPX,228,this.ADDR_ZP,2,3),this.setOp(this.INS_CPX,236,this.ADDR_ABS,3,4),this.setOp(this.INS_CPY,192,this.ADDR_IMM,2,2),this.setOp(this.INS_CPY,196,this.ADDR_ZP,2,3),this.setOp(this.INS_CPY,204,this.ADDR_ABS,3,4),this.setOp(this.INS_DEC,198,this.ADDR_ZP,2,5),this.setOp(this.INS_DEC,214,this.ADDR_ZPX,2,6),this.setOp(this.INS_DEC,206,this.ADDR_ABS,3,6),this.setOp(this.INS_DEC,222,this.ADDR_ABSX,3,7),this.setOp(this.INS_DEX,202,this.ADDR_IMP,1,2),this.setOp(this.INS_DEY,136,this.ADDR_IMP,1,2),this.setOp(this.INS_EOR,73,this.ADDR_IMM,2,2),this.setOp(this.INS_EOR,69,this.ADDR_ZP,2,3),this.setOp(this.INS_EOR,85,this.ADDR_ZPX,2,4),this.setOp(this.INS_EOR,77,this.ADDR_ABS,3,4),this.setOp(this.INS_EOR,93,this.ADDR_ABSX,3,4),this.setOp(this.INS_EOR,89,this.ADDR_ABSY,3,4),this.setOp(this.INS_EOR,65,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_EOR,81,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_INC,230,this.ADDR_ZP,2,5),this.setOp(this.INS_INC,246,this.ADDR_ZPX,2,6),this.setOp(this.INS_INC,238,this.ADDR_ABS,3,6),this.setOp(this.INS_INC,254,this.ADDR_ABSX,3,7),this.setOp(this.INS_INX,232,this.ADDR_IMP,1,2),this.setOp(this.INS_INY,200,this.ADDR_IMP,1,2),this.setOp(this.INS_JMP,76,this.ADDR_ABS,3,3),this.setOp(this.INS_JMP,108,this.ADDR_INDABS,3,5),this.setOp(this.INS_JSR,32,this.ADDR_ABS,3,6),this.setOp(this.INS_LDA,169,this.ADDR_IMM,2,2),this.setOp(this.INS_LDA,165,this.ADDR_ZP,2,3),this.setOp(this.INS_LDA,181,this.ADDR_ZPX,2,4),this.setOp(this.INS_LDA,173,this.ADDR_ABS,3,4),this.setOp(this.INS_LDA,189,this.ADDR_ABSX,3,4),this.setOp(this.INS_LDA,185,this.ADDR_ABSY,3,4),this.setOp(this.INS_LDA,161,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_LDA,177,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_LDX,162,this.ADDR_IMM,2,2),this.setOp(this.INS_LDX,166,this.ADDR_ZP,2,3),this.setOp(this.INS_LDX,182,this.ADDR_ZPY,2,4),this.setOp(this.INS_LDX,174,this.ADDR_ABS,3,4),this.setOp(this.INS_LDX,190,this.ADDR_ABSY,3,4),this.setOp(this.INS_LDY,160,this.ADDR_IMM,2,2),this.setOp(this.INS_LDY,164,this.ADDR_ZP,2,3),this.setOp(this.INS_LDY,180,this.ADDR_ZPX,2,4),this.setOp(this.INS_LDY,172,this.ADDR_ABS,3,4),this.setOp(this.INS_LDY,188,this.ADDR_ABSX,3,4),this.setOp(this.INS_LSR,74,this.ADDR_ACC,1,2),this.setOp(this.INS_LSR,70,this.ADDR_ZP,2,5),this.setOp(this.INS_LSR,86,this.ADDR_ZPX,2,6),this.setOp(this.INS_LSR,78,this.ADDR_ABS,3,6),this.setOp(this.INS_LSR,94,this.ADDR_ABSX,3,7),this.setOp(this.INS_NOP,26,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,58,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,90,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,122,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,218,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,234,this.ADDR_IMP,1,2),this.setOp(this.INS_NOP,250,this.ADDR_IMP,1,2),this.setOp(this.INS_ORA,9,this.ADDR_IMM,2,2),this.setOp(this.INS_ORA,5,this.ADDR_ZP,2,3),this.setOp(this.INS_ORA,21,this.ADDR_ZPX,2,4),this.setOp(this.INS_ORA,13,this.ADDR_ABS,3,4),this.setOp(this.INS_ORA,29,this.ADDR_ABSX,3,4),this.setOp(this.INS_ORA,25,this.ADDR_ABSY,3,4),this.setOp(this.INS_ORA,1,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_ORA,17,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_PHA,72,this.ADDR_IMP,1,3),this.setOp(this.INS_PHP,8,this.ADDR_IMP,1,3),this.setOp(this.INS_PLA,104,this.ADDR_IMP,1,4),this.setOp(this.INS_PLP,40,this.ADDR_IMP,1,4),this.setOp(this.INS_ROL,42,this.ADDR_ACC,1,2),this.setOp(this.INS_ROL,38,this.ADDR_ZP,2,5),this.setOp(this.INS_ROL,54,this.ADDR_ZPX,2,6),this.setOp(this.INS_ROL,46,this.ADDR_ABS,3,6),this.setOp(this.INS_ROL,62,this.ADDR_ABSX,3,7),this.setOp(this.INS_ROR,106,this.ADDR_ACC,1,2),this.setOp(this.INS_ROR,102,this.ADDR_ZP,2,5),this.setOp(this.INS_ROR,118,this.ADDR_ZPX,2,6),this.setOp(this.INS_ROR,110,this.ADDR_ABS,3,6),this.setOp(this.INS_ROR,126,this.ADDR_ABSX,3,7),this.setOp(this.INS_RTI,64,this.ADDR_IMP,1,6),this.setOp(this.INS_RTS,96,this.ADDR_IMP,1,6),this.setOp(this.INS_SBC,233,this.ADDR_IMM,2,2),this.setOp(this.INS_SBC,229,this.ADDR_ZP,2,3),this.setOp(this.INS_SBC,245,this.ADDR_ZPX,2,4),this.setOp(this.INS_SBC,237,this.ADDR_ABS,3,4),this.setOp(this.INS_SBC,253,this.ADDR_ABSX,3,4),this.setOp(this.INS_SBC,249,this.ADDR_ABSY,3,4),this.setOp(this.INS_SBC,225,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_SBC,241,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_SEC,56,this.ADDR_IMP,1,2),this.setOp(this.INS_SED,248,this.ADDR_IMP,1,2),this.setOp(this.INS_SEI,120,this.ADDR_IMP,1,2),this.setOp(this.INS_STA,133,this.ADDR_ZP,2,3),this.setOp(this.INS_STA,149,this.ADDR_ZPX,2,4),this.setOp(this.INS_STA,141,this.ADDR_ABS,3,4),this.setOp(this.INS_STA,157,this.ADDR_ABSX,3,5),this.setOp(this.INS_STA,153,this.ADDR_ABSY,3,5),this.setOp(this.INS_STA,129,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_STA,145,this.ADDR_POSTIDXIND,2,6),this.setOp(this.INS_STX,134,this.ADDR_ZP,2,3),this.setOp(this.INS_STX,150,this.ADDR_ZPY,2,4),this.setOp(this.INS_STX,142,this.ADDR_ABS,3,4),this.setOp(this.INS_STY,132,this.ADDR_ZP,2,3),this.setOp(this.INS_STY,148,this.ADDR_ZPX,2,4),this.setOp(this.INS_STY,140,this.ADDR_ABS,3,4),this.setOp(this.INS_TAX,170,this.ADDR_IMP,1,2),this.setOp(this.INS_TAY,168,this.ADDR_IMP,1,2),this.setOp(this.INS_TSX,186,this.ADDR_IMP,1,2),this.setOp(this.INS_TXA,138,this.ADDR_IMP,1,2),this.setOp(this.INS_TXS,154,this.ADDR_IMP,1,2),this.setOp(this.INS_TYA,152,this.ADDR_IMP,1,2),this.setOp(this.INS_ALR,75,this.ADDR_IMM,2,2),this.setOp(this.INS_ANC,11,this.ADDR_IMM,2,2),this.setOp(this.INS_ANC,43,this.ADDR_IMM,2,2),this.setOp(this.INS_ARR,107,this.ADDR_IMM,2,2),this.setOp(this.INS_AXS,203,this.ADDR_IMM,2,2),this.setOp(this.INS_LAX,163,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_LAX,167,this.ADDR_ZP,2,3),this.setOp(this.INS_LAX,175,this.ADDR_ABS,3,4),this.setOp(this.INS_LAX,179,this.ADDR_POSTIDXIND,2,5),this.setOp(this.INS_LAX,183,this.ADDR_ZPY,2,4),this.setOp(this.INS_LAX,191,this.ADDR_ABSY,3,4),this.setOp(this.INS_SAX,131,this.ADDR_PREIDXIND,2,6),this.setOp(this.INS_SAX,135,this.ADDR_ZP,2,3),this.setOp(this.INS_SAX,143,this.ADDR_ABS,3,4),this.setOp(this.INS_SAX,151,this.ADDR_ZPY,2,4),this.setOp(this.INS_DCP,195,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_DCP,199,this.ADDR_ZP,2,5),this.setOp(this.INS_DCP,207,this.ADDR_ABS,3,6),this.setOp(this.INS_DCP,211,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_DCP,215,this.ADDR_ZPX,2,6),this.setOp(this.INS_DCP,219,this.ADDR_ABSY,3,7),this.setOp(this.INS_DCP,223,this.ADDR_ABSX,3,7),this.setOp(this.INS_ISC,227,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_ISC,231,this.ADDR_ZP,2,5),this.setOp(this.INS_ISC,239,this.ADDR_ABS,3,6),this.setOp(this.INS_ISC,243,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_ISC,247,this.ADDR_ZPX,2,6),this.setOp(this.INS_ISC,251,this.ADDR_ABSY,3,7),this.setOp(this.INS_ISC,255,this.ADDR_ABSX,3,7),this.setOp(this.INS_RLA,35,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_RLA,39,this.ADDR_ZP,2,5),this.setOp(this.INS_RLA,47,this.ADDR_ABS,3,6),this.setOp(this.INS_RLA,51,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_RLA,55,this.ADDR_ZPX,2,6),this.setOp(this.INS_RLA,59,this.ADDR_ABSY,3,7),this.setOp(this.INS_RLA,63,this.ADDR_ABSX,3,7),this.setOp(this.INS_RRA,99,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_RRA,103,this.ADDR_ZP,2,5),this.setOp(this.INS_RRA,111,this.ADDR_ABS,3,6),this.setOp(this.INS_RRA,115,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_RRA,119,this.ADDR_ZPX,2,6),this.setOp(this.INS_RRA,123,this.ADDR_ABSY,3,7),this.setOp(this.INS_RRA,127,this.ADDR_ABSX,3,7),this.setOp(this.INS_SLO,3,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_SLO,7,this.ADDR_ZP,2,5),this.setOp(this.INS_SLO,15,this.ADDR_ABS,3,6),this.setOp(this.INS_SLO,19,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_SLO,23,this.ADDR_ZPX,2,6),this.setOp(this.INS_SLO,27,this.ADDR_ABSY,3,7),this.setOp(this.INS_SLO,31,this.ADDR_ABSX,3,7),this.setOp(this.INS_SRE,67,this.ADDR_PREIDXIND,2,8),this.setOp(this.INS_SRE,71,this.ADDR_ZP,2,5),this.setOp(this.INS_SRE,79,this.ADDR_ABS,3,6),this.setOp(this.INS_SRE,83,this.ADDR_POSTIDXIND,2,8),this.setOp(this.INS_SRE,87,this.ADDR_ZPX,2,6),this.setOp(this.INS_SRE,91,this.ADDR_ABSY,3,7),this.setOp(this.INS_SRE,95,this.ADDR_ABSX,3,7),this.setOp(this.INS_SKB,128,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,130,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,137,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,194,this.ADDR_IMM,2,2),this.setOp(this.INS_SKB,226,this.ADDR_IMM,2,2),this.setOp(this.INS_IGN,12,this.ADDR_ABS,3,4),this.setOp(this.INS_IGN,28,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,60,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,92,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,124,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,220,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,252,this.ADDR_ABSX,3,4),this.setOp(this.INS_IGN,4,this.ADDR_ZP,2,3),this.setOp(this.INS_IGN,68,this.ADDR_ZP,2,3),this.setOp(this.INS_IGN,100,this.ADDR_ZP,2,3),this.setOp(this.INS_IGN,20,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,52,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,84,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,116,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,212,this.ADDR_ZPX,2,4),this.setOp(this.INS_IGN,244,this.ADDR_ZPX,2,4),this.cycTable=new Array(7,6,2,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,6,6,2,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,6,6,2,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,6,6,2,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,2,6,2,6,4,4,4,4,2,5,2,5,5,5,5,5,2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,2,5,2,5,4,4,4,4,2,4,2,4,4,4,4,4,2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,2,6,3,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7),this.instname=new Array(70),this.instname[0]="ADC",this.instname[1]="AND",this.instname[2]="ASL",this.instname[3]="BCC",this.instname[4]="BCS",this.instname[5]="BEQ",this.instname[6]="BIT",this.instname[7]="BMI",this.instname[8]="BNE",this.instname[9]="BPL",this.instname[10]="BRK",this.instname[11]="BVC",this.instname[12]="BVS",this.instname[13]="CLC",this.instname[14]="CLD",this.instname[15]="CLI",this.instname[16]="CLV",this.instname[17]="CMP",this.instname[18]="CPX",this.instname[19]="CPY",this.instname[20]="DEC",this.instname[21]="DEX",this.instname[22]="DEY",this.instname[23]="EOR",this.instname[24]="INC",this.instname[25]="INX",this.instname[26]="INY",this.instname[27]="JMP",this.instname[28]="JSR",this.instname[29]="LDA",this.instname[30]="LDX",this.instname[31]="LDY",this.instname[32]="LSR",this.instname[33]="NOP",this.instname[34]="ORA",this.instname[35]="PHA",this.instname[36]="PHP",this.instname[37]="PLA",this.instname[38]="PLP",this.instname[39]="ROL",this.instname[40]="ROR",this.instname[41]="RTI",this.instname[42]="RTS",this.instname[43]="SBC",this.instname[44]="SEC",this.instname[45]="SED",this.instname[46]="SEI",this.instname[47]="STA",this.instname[48]="STX",this.instname[49]="STY",this.instname[50]="TAX",this.instname[51]="TAY",this.instname[52]="TSX",this.instname[53]="TXA",this.instname[54]="TXS",this.instname[55]="TYA",this.instname[56]="ALR",this.instname[57]="ANC",this.instname[58]="ARR",this.instname[59]="AXS",this.instname[60]="LAX",this.instname[61]="SAX",this.instname[62]="DCP",this.instname[63]="ISC",this.instname[64]="RLA",this.instname[65]="RRA",this.instname[66]="SLO",this.instname[67]="SRE",this.instname[68]="SKB",this.instname[69]="IGN",this.addrDesc=new Array("Zero Page ","Relative ","Implied ","Absolute ","Accumulator ","Immediate ","Zero Page,X ","Zero Page,Y ","Absolute,X ","Absolute,Y ","Preindexed Indirect ","Postindexed Indirect","Indirect Absolute ")};j.prototype={INS_ADC:0,INS_AND:1,INS_ASL:2,INS_BCC:3,INS_BCS:4,INS_BEQ:5,INS_BIT:6,INS_BMI:7,INS_BNE:8,INS_BPL:9,INS_BRK:10,INS_BVC:11,INS_BVS:12,INS_CLC:13,INS_CLD:14,INS_CLI:15,INS_CLV:16,INS_CMP:17,INS_CPX:18,INS_CPY:19,INS_DEC:20,INS_DEX:21,INS_DEY:22,INS_EOR:23,INS_INC:24,INS_INX:25,INS_INY:26,INS_JMP:27,INS_JSR:28,INS_LDA:29,INS_LDX:30,INS_LDY:31,INS_LSR:32,INS_NOP:33,INS_ORA:34,INS_PHA:35,INS_PHP:36,INS_PLA:37,INS_PLP:38,INS_ROL:39,INS_ROR:40,INS_RTI:41,INS_RTS:42,INS_SBC:43,INS_SEC:44,INS_SED:45,INS_SEI:46,INS_STA:47,INS_STX:48,INS_STY:49,INS_TAX:50,INS_TAY:51,INS_TSX:52,INS_TXA:53,INS_TXS:54,INS_TYA:55,INS_ALR:56,INS_ANC:57,INS_ARR:58,INS_AXS:59,INS_LAX:60,INS_SAX:61,INS_DCP:62,INS_ISC:63,INS_RLA:64,INS_RRA:65,INS_SLO:66,INS_SRE:67,INS_SKB:68,INS_IGN:69,INS_DUMMY:70,ADDR_ZP:0,ADDR_REL:1,ADDR_IMP:2,ADDR_ABS:3,ADDR_ACC:4,ADDR_IMM:5,ADDR_ZPX:6,ADDR_ZPY:7,ADDR_ABSX:8,ADDR_ABSY:9,ADDR_PREIDXIND:10,ADDR_POSTIDXIND:11,ADDR_INDABS:12,setOp:function(t,i,s,e,r){this.opdata[i]=t&255|(s&255)<<8|(e&255)<<16|(r&255)<<24}};$.exports=Q});var F=S((Yt,st)=>{"use strict";var it=function(){this.pix=new Uint8Array(64),this.fbIndex=null,this.tIndex=null,this.x=null,this.y=null,this.w=null,this.h=null,this.incX=null,this.incY=null,this.palIndex=null,this.tpri=null,this.c=null,this.initialized=!1,this.opaque=new Array(8)};it.prototype={setBuffer:function(t){for(this.y=0;this.y<8;this.y++)this.setScanline(this.y,t[this.y],t[this.y+8])},setScanline:function(t,i,s){for(this.initialized=!0,this.tIndex=t<<3,this.x=0;this.x<8;this.x++)this.pix[this.tIndex+this.x]=(i>>7-this.x&1)+((s>>7-this.x&1)<<1),this.pix[this.tIndex+this.x]===0&&(this.opaque[t]=!1)},render:function(t,i,s,e,r,a,n,h,l,c,R,u,p){if(!(a<-7||a>=256||n<-7||n>=240))if(this.w=e-i,this.h=r-s,a<0&&(i-=a),a+e>=256&&(e=256-a),n<0&&(s-=n),n+r>=240&&(r=240-n),!c&&!R)for(this.fbIndex=(n<<8)+a,this.tIndex=0,this.y=0;this.y<8;this.y++){for(this.x=0;this.x<8;this.x++)this.x>=i&&this.x=s&&this.y=i&&this.x=s&&this.y=i&&this.x=s&&this.y=i&&this.x=s&&this.y{"use strict";var Pt=F(),et=I(),ht=function(t){this.nes=t,this.vramMem=null,this.spriteMem=null,this.vramAddress=null,this.vramTmpAddress=null,this.vramBufferedReadValue=null,this.firstWrite=null,this.sramAddress=null,this.currentMirroring=null,this.requestEndFrame=null,this.nmiOk=null,this.dummyCycleToggle=null,this.validTileData=null,this.nmiCounter=null,this.scanlineAlreadyRendered=null,this.f_nmiOnVblank=null,this.f_spriteSize=null,this.f_bgPatternTable=null,this.f_spPatternTable=null,this.f_addrInc=null,this.f_nTblAddress=null,this.f_color=null,this.f_spVisibility=null,this.f_bgVisibility=null,this.f_spClipping=null,this.f_bgClipping=null,this.f_dispType=null,this.cntFV=null,this.cntV=null,this.cntH=null,this.cntVT=null,this.cntHT=null,this.regFV=null,this.regV=null,this.regH=null,this.regVT=null,this.regHT=null,this.regFH=null,this.regS=null,this.curNt=null,this.attrib=null,this.buffer=null,this.bgbuffer=null,this.pixrendered=null,this.validTileData=null,this.scantile=null,this.scanline=null,this.lastRenderedScanline=null,this.curX=null,this.sprX=null,this.sprY=null,this.sprTile=null,this.sprCol=null,this.vertFlip=null,this.horiFlip=null,this.bgPriority=null,this.spr0HitX=null,this.spr0HitY=null,this.hitSpr0=null,this.sprPalette=null,this.imgPalette=null,this.ptTile=null,this.ntable1=null,this.currentMirroring=null,this.nameTable=null,this.vramMirrorTable=null,this.palTable=null,this.showSpr0Hit=!1,this.clipToTvSize=!0,this.reset()};ht.prototype={STATUS_VRAMWRITE:4,STATUS_SLSPRITECOUNT:5,STATUS_SPRITE0HIT:6,STATUS_VBLANK:7,reset:function(){var t;for(this.vramMem=new Uint8Array(32768),this.spriteMem=new Uint8Array(256),t=0;t=21&&this.scanline<=260&&(this.f_bgVisibility===1&&(this.scanlineAlreadyRendered||(this.cntHT=this.regHT,this.cntH=this.regH,this.renderBgScanline(!0,this.scanline+1-21)),this.scanlineAlreadyRendered=!1,!this.hitSpr0&&this.f_spVisibility===1&&this.sprX[0]>=-7&&this.sprX[0]<256&&this.sprY[0]+1<=this.scanline-20&&this.sprY[0]+1+(this.f_spriteSize===0?8:16)>=this.scanline-20&&this.checkSprite0(this.scanline-20)&&(this.hitSpr0=!0)),(this.f_bgVisibility===1||this.f_spVisibility===1)&&this.nes.mmap.clockIrqCounter())}this.scanline++,this.regsToAddress(),this.cntsToAddress()},startFrame:function(){var t=0;if(this.f_dispType===0)t=this.imgPalette[0];else switch(this.f_color){case 0:t=0;break;case 1:t=65280;break;case 2:t=16711680;break;case 3:t=0;break;case 4:t=255;break;default:t=0}var i=this.buffer,s;for(s=0;s<256*240;s++)i[s]=t;var e=this.pixrendered;for(s=0;s=0&&this.sprX[0]<256&&this.sprY[0]>=0&&this.sprY[0]<240){for(t=0;t<256;t++)e[(this.sprY[0]<<8)+t]=16733525;for(t=0;t<240;t++)e[(t<<8)+this.sprX[0]]=16733525}if(this.spr0HitX>=0&&this.spr0HitX<256&&this.spr0HitY>=0&&this.spr0HitY<240){for(t=0;t<256;t++)e[(this.spr0HitY<<8)+t]=5635925;for(t=0;t<240;t++)e[(t<<8)+this.spr0HitX]=5635925}}if(this.clipToTvSize||this.f_bgClipping===0||this.f_spClipping===0)for(s=0;s<240;s++)for(i=0;i<8;i++)e[(s<<8)+i]=0;if(this.clipToTvSize)for(s=0;s<240;s++)for(i=0;i<8;i++)e[(s<<8)+255-i]=0;if(this.clipToTvSize)for(s=0;s<8;s++)for(i=0;i<256;i++)e[(s<<8)+i]=0,e[(239-s<<8)+i]=0;this.nes.ui.writeFrame(e)},updateControlReg1:function(t){this.triggerRendering(),this.f_nmiOnVblank=t>>7&1,this.f_spriteSize=t>>5&1,this.f_bgPatternTable=t>>4&1,this.f_spPatternTable=t>>3&1,this.f_addrInc=t>>2&1,this.f_nTblAddress=t&3,this.regV=t>>1&1,this.regH=t&1,this.regS=t>>4&1},updateControlReg2:function(t){this.triggerRendering(),this.f_color=t>>5&7,this.f_spVisibility=t>>4&1,this.f_bgVisibility=t>>3&1,this.f_spClipping=t>>2&1,this.f_bgClipping=t>>1&1,this.f_dispType=t&1,this.f_dispType===0&&this.palTable.setEmphasis(this.f_color),this.updatePalettes()},setStatusFlag:function(t,i){var s=1<>3&31,this.regFH=t&7):(this.regFV=t&7,this.regVT=t>>3&31),this.firstWrite=!this.firstWrite},writeVRAMAddress:function(t){this.firstWrite?(this.regFV=t>>4&3,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3):(this.triggerRendering(),this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31,this.cntFV=this.regFV,this.cntV=this.regV,this.cntH=this.regH,this.cntVT=this.regVT,this.cntHT=this.regHT,this.checkSprite0(this.scanline-20)),this.firstWrite=!this.firstWrite,this.cntsToAddress(),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress)},vramLoad:function(){var t;return this.cntsToAddress(),this.regsToAddress(),this.vramAddress<=16127?(t=this.vramBufferedReadValue,this.vramAddress<8192?this.vramBufferedReadValue=this.vramMem[this.vramAddress]:this.vramBufferedReadValue=this.mirroredLoad(this.vramAddress),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress),this.vramAddress+=this.f_addrInc===1?32:1,this.cntsFromAddress(),this.regsFromAddress(),t):(t=this.mirroredLoad(this.vramAddress),this.vramAddress+=this.f_addrInc===1?32:1,this.cntsFromAddress(),this.regsFromAddress(),t)},vramWrite:function(t){this.triggerRendering(),this.cntsToAddress(),this.regsToAddress(),this.vramAddress>=8192?this.mirroredWrite(this.vramAddress,t):(this.writeMem(this.vramAddress,t),this.nes.mmap.latchAccess(this.vramAddress)),this.vramAddress+=this.f_addrInc===1?32:1,this.regsFromAddress(),this.cntsFromAddress()},sramDMA:function(t){for(var i=t*256,s,e=this.sramAddress;e<256;e++)s=this.nes.cpu.mem[i+e],this.spriteMem[e]=s,this.spriteRamWriteUpdate(e,s);this.nes.cpu.haltCycles(513)},regsFromAddress:function(){var t=this.vramTmpAddress>>8&255;this.regFV=t>>4&7,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3,t=this.vramTmpAddress&255,this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31},cntsFromAddress:function(){var t=this.vramAddress>>8&255;this.cntFV=t>>4&3,this.cntV=t>>3&1,this.cntH=t>>2&1,this.cntVT=this.cntVT&7|(t&3)<<3,t=this.vramAddress&255,this.cntVT=this.cntVT&24|t>>5&7,this.cntHT=t&31},regsToAddress:function(){var t=(this.regFV&7)<<4;t|=(this.regV&1)<<3,t|=(this.regH&1)<<2,t|=this.regVT>>3&3;var i=(this.regVT&7)<<5;i|=this.regHT&31,this.vramTmpAddress=(t<<8|i)&32767},cntsToAddress:function(){var t=(this.cntFV&7)<<4;t|=(this.cntV&1)<<3,t|=(this.cntH&1)<<2,t|=this.cntVT>>3&3;var i=(this.cntVT&7)<<5;i|=this.cntHT&31,this.vramAddress=(t<<8|i)&32767},incTileCounter:function(t){for(var i=t;i!==0;i--)this.cntHT++,this.cntHT===32&&(this.cntHT=0,this.cntVT++,this.cntVT>=30&&(this.cntH++,this.cntH===2&&(this.cntH=0,this.cntV++,this.cntV===2&&(this.cntV=0,this.cntFV++,this.cntFV&=7))))},mirroredLoad:function(t){return this.vramMem[this.vramMirrorTable[t]]},mirroredWrite:function(t,i){if(t>=16128&&t<16160)t===16128||t===16144?(this.writeMem(16128,i),this.writeMem(16144,i)):t===16132||t===16148?(this.writeMem(16132,i),this.writeMem(16148,i)):t===16136||t===16152?(this.writeMem(16136,i),this.writeMem(16152,i)):t===16140||t===16156?(this.writeMem(16140,i),this.writeMem(16156,i)):this.writeMem(t,i);else if(t=21&&this.scanline<=260&&(this.renderFramePartially(this.lastRenderedScanline+1,this.scanline-21-this.lastRenderedScanline),this.lastRenderedScanline=this.scanline-21)},renderFramePartially:function(t,i){if(this.f_spVisibility===1&&this.renderSpritesPartially(t,i,!0),this.f_bgVisibility===1){var s=t<<8,e=t+i<<8;e>61440&&(e=61440);for(var r=this.buffer,a=this.bgbuffer,n=this.pixrendered,h=s;h255&&(r[h]=a[h])}this.f_spVisibility===1&&this.renderSpritesPartially(t,i,!1),this.validTileData=!1},renderBgScanline:function(t,i){var s=this.regS===0?0:256,e=(i<<8)-this.regFH;if(this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],this.cntHT=this.regHT,this.cntH=this.regH,this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],i<240&&i-this.cntFV>=0){for(var r=this.cntFV<<3,a=this.scantile,n=this.attrib,h=this.ptTile,l=this.nameTable,c=this.imgPalette,R=this.pixrendered,u=t?this.bgbuffer:this.buffer,p,f,g,b,_=0;_<32;_++){if(i>=0){if(this.validTileData){if(p=a[_],typeof p=="undefined")continue;f=p.pix,g=n[_]}else{if(p=h[s+l[this.curNt].getTileIndex(this.cntHT,this.cntVT)],typeof p=="undefined")continue;f=p.pix,g=l[this.curNt].getAttrib(this.cntHT,this.cntVT),a[_]=p,n[_]=g}var x=0,A=(_<<3)-this.regFH;if(A>-8)if(A<0&&(e-=A,x=-A),p.opaque[this.cntFV])for(;x<8;x++)u[e]=c[f[r+x]+g],R[e]|=256,e++;else for(;x<8;x++)b=f[r+x],b!==0&&(u[e]=c[b+g],R[e]|=256),e++}++this.cntHT===32&&(this.cntHT=0,this.cntH++,this.cntH%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH])}this.validTileData=!0}this.cntFV++,this.cntFV===8&&(this.cntFV=0,this.cntVT++,this.cntVT===30?(this.cntVT=0,this.cntV++,this.cntV%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH]):this.cntVT===32&&(this.cntVT=0),this.validTileData=!1)},renderSpritesPartially:function(t,i,s){if(this.f_spVisibility===1){for(var e=0;e<64;e++)if(this.bgPriority[e]===s&&this.sprX[e]>=0&&this.sprX[e]<256&&this.sprY[e]+8>=t&&this.sprY[e]t+i&&(this.srcy2=t+i-this.sprY[e]+1),this.f_spPatternTable===0?this.ptTile[this.sprTile[e]].render(this.buffer,0,this.srcy1,8,this.srcy2,this.sprX[e],this.sprY[e]+1,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered):this.ptTile[this.sprTile[e]+256].render(this.buffer,0,this.srcy1,8,this.srcy2,this.sprX[e],this.sprY[e]+1,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered);else{var r=this.sprTile[e];(r&1)!==0&&(r=this.sprTile[e]-1+256);var a=0,n=8;this.sprY[e]t+i&&(n=t+i-this.sprY[e]),this.ptTile[r+(this.vertFlip[e]?1:0)].render(this.buffer,0,a,8,n,this.sprX[e],this.sprY[e]+1,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered),a=0,n=8,this.sprY[e]+8t+i&&(n=t+i-(this.sprY[e]+8)),this.ptTile[r+(this.vertFlip[e]?0:1)].render(this.buffer,0,a,8,n,this.sprX[e],this.sprY[e]+1+8,this.sprCol[e],this.sprPalette,this.horiFlip[e],this.vertFlip[e],e,this.pixrendered)}}},checkSprite0:function(t){this.spr0HitX=-1,this.spr0HitY=-1;var i,s=this.f_spPatternTable===0?0:256,e,r,a,n,h;if(e=this.sprX[0],r=this.sprY[0]+1,this.f_spriteSize===0){if(r<=t&&r+8>t&&e>=-7&&e<256)if(a=this.ptTile[this.sprTile[0]+s],this.vertFlip[0]?i=7-(t-r):i=t-r,i*=8,h=t*256+e,this.horiFlip[0])for(n=7;n>=0;n--){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}else for(n=0;n<8;n++){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}}else if(r<=t&&r+16>t&&e>=-7&&e<256)if(this.vertFlip[0]?i=15-(t-r):i=t-r,i<8?a=this.ptTile[this.sprTile[0]+(this.vertFlip[0]?1:0)+((this.sprTile[0]&1)!==0?255:0)]:(a=this.ptTile[this.sprTile[0]+(this.vertFlip[0]?0:1)+((this.sprTile[0]&1)!==0?255:0)],this.vertFlip[0]?i=15-i:i-=8),i*=8,h=t*256+e,this.horiFlip[0])for(n=7;n>=0;n--){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}else for(n=0;n<8;n++){if(e>=0&&e<256&&h>=0&&h<61440&&this.pixrendered[h]!==0&&a.pix[i+n]!==0)return this.spr0HitX=h%256,this.spr0HitY=t,!0;e++,h++}return!1},writeMem:function(t,i){this.vramMem[t]=i,t<8192?(this.vramMem[t]=i,this.patternWrite(t,i)):t>=8192&&t<9152?this.nameTableWrite(this.ntable1[0],t-8192,i):t>=9152&&t<9216?this.attribTableWrite(this.ntable1[0],t-9152,i):t>=9216&&t<10176?this.nameTableWrite(this.ntable1[1],t-9216,i):t>=10176&&t<10240?this.attribTableWrite(this.ntable1[1],t-10176,i):t>=10240&&t<11200?this.nameTableWrite(this.ntable1[2],t-10240,i):t>=11200&&t<11264?this.attribTableWrite(this.ntable1[2],t-11200,i):t>=11264&&t<12224?this.nameTableWrite(this.ntable1[3],t-11264,i):t>=12224&&t<12288?this.attribTableWrite(this.ntable1[3],t-12224,i):t>=16128&&t<16160&&this.updatePalettes()},updatePalettes:function(){var t;for(t=0;t<16;t++)this.f_dispType===0?this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&63):this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&32);for(t=0;t<16;t++)this.f_dispType===0?this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&63):this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&32)},patternWrite:function(t,i){var s=Math.floor(t/16),e=t%16;e<8?this.ptTile[s].setScanline(e,i,this.vramMem[t+8]):this.ptTile[s].setScanline(e-8,this.vramMem[t-8],i)},nameTableWrite:function(t,i,s){this.nameTable[t].tile[i]=s,this.checkSprite0(this.scanline-20)},attribTableWrite:function(t,i,s){this.nameTable[t].writeAttrib(i,s)},spriteRamWriteUpdate:function(t,i){var s=Math.floor(t/4);s===0&&this.checkSprite0(this.scanline-20),t%4===0?this.sprY[s]=i:t%4===1?this.sprTile[s]=i:t%4===2?(this.vertFlip[s]=(i&128)!==0,this.horiFlip[s]=(i&64)!==0,this.bgPriority[s]=(i&32)!==0,this.sprCol[s]=(i&3)<<2):t%4===3&&(this.sprX[s]=i)},doNMI:function(){this.setStatusFlag(this.STATUS_VBLANK,!0),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NMI)},isPixelWhite:function(t,i){return this.triggerRendering(),this.nes.ppu.buffer[(i<<8)+t]===16777215},JSON_PROPERTIES:["vramMem","spriteMem","cntFV","cntV","cntH","cntVT","cntHT","regFV","regV","regH","regVT","regHT","regFH","regS","vramAddress","vramTmpAddress","f_nmiOnVblank","f_spriteSize","f_bgPatternTable","f_spPatternTable","f_addrInc","f_nTblAddress","f_color","f_spVisibility","f_bgVisibility","f_spClipping","f_bgClipping","f_dispType","vramBufferedReadValue","firstWrite","currentMirroring","vramMirrorTable","ntable1","sramAddress","hitSpr0","sprPalette","imgPalette","curX","scanline","lastRenderedScanline","curNt","scantile","attrib","buffer","bgbuffer","pixrendered","requestEndFrame","nmiOk","dummyCycleToggle","nmiCounter","validTileData","scanlineAlreadyRendered"],toJSON:function(){var t,i=et.toJSON(this);for(i.nameTable=[],t=0;t>2*(l*2+c)&3;for(var R=0;R<2;R++)for(var u=0;u<2;u++)a=s+c*2+u,n=e+l*2+R,h=n*this.width+a,this.attrib[h]=r<<2&12}},toJSON:function(){return{tile:this.tile,attrib:this.attrib}},fromJSON:function(t){this.tile=t.tile,this.attrib=t.attrib}};var nt=function(){this.curTable=new Uint32Array(64),this.emphTable=new Array(8),this.currentEmph=-1};nt.prototype={reset:function(){this.setEmphasis(0)},loadNTSCPalette:function(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)},loadPALPalette:function(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)},makeTables:function(){for(var t,i,s,e,r,a,n,h,l=0;l<8;l++)for(a=1,n=1,h=1,(l&1)!==0&&(a=.75,h=.75),(l&2)!==0&&(a=.75,n=.75),(l&4)!==0&&(n=.75,h=.75),this.emphTable[l]=new Uint32Array(64),r=0;r<64;r++)e=this.curTable[r],t=Math.floor(this.getRed(e)*a),i=Math.floor(this.getGreen(e)*n),s=Math.floor(this.getBlue(e)*h),this.emphTable[l][r]=this.getRgb(t,i,s)},setEmphasis:function(t){if(t!==this.currentEmph){this.currentEmph=t;for(var i=0;i<64;i++)this.curTable[i]=this.emphTable[t][i]}},getEntry:function(t){return this.curTable[t]},getRed:function(t){return t>>16&255},getGreen:function(t){return t>>8&255},getBlue:function(t){return t&255},getRgb:function(t,i,s){return t<<16|i<<8|s},loadDefaultPalette:function(){this.curTable[0]=this.getRgb(117,117,117),this.curTable[1]=this.getRgb(39,27,143),this.curTable[2]=this.getRgb(0,0,171),this.curTable[3]=this.getRgb(71,0,159),this.curTable[4]=this.getRgb(143,0,119),this.curTable[5]=this.getRgb(171,0,19),this.curTable[6]=this.getRgb(167,0,0),this.curTable[7]=this.getRgb(127,11,0),this.curTable[8]=this.getRgb(67,47,0),this.curTable[9]=this.getRgb(0,71,0),this.curTable[10]=this.getRgb(0,81,0),this.curTable[11]=this.getRgb(0,63,23),this.curTable[12]=this.getRgb(27,63,95),this.curTable[13]=this.getRgb(0,0,0),this.curTable[14]=this.getRgb(0,0,0),this.curTable[15]=this.getRgb(0,0,0),this.curTable[16]=this.getRgb(188,188,188),this.curTable[17]=this.getRgb(0,115,239),this.curTable[18]=this.getRgb(35,59,239),this.curTable[19]=this.getRgb(131,0,243),this.curTable[20]=this.getRgb(191,0,191),this.curTable[21]=this.getRgb(231,0,91),this.curTable[22]=this.getRgb(219,43,0),this.curTable[23]=this.getRgb(203,79,15),this.curTable[24]=this.getRgb(139,115,0),this.curTable[25]=this.getRgb(0,151,0),this.curTable[26]=this.getRgb(0,171,0),this.curTable[27]=this.getRgb(0,147,59),this.curTable[28]=this.getRgb(0,131,139),this.curTable[29]=this.getRgb(0,0,0),this.curTable[30]=this.getRgb(0,0,0),this.curTable[31]=this.getRgb(0,0,0),this.curTable[32]=this.getRgb(255,255,255),this.curTable[33]=this.getRgb(63,191,255),this.curTable[34]=this.getRgb(95,151,255),this.curTable[35]=this.getRgb(167,139,253),this.curTable[36]=this.getRgb(247,123,255),this.curTable[37]=this.getRgb(255,119,183),this.curTable[38]=this.getRgb(255,119,99),this.curTable[39]=this.getRgb(255,155,59),this.curTable[40]=this.getRgb(243,191,63),this.curTable[41]=this.getRgb(131,211,19),this.curTable[42]=this.getRgb(79,223,75),this.curTable[43]=this.getRgb(88,248,152),this.curTable[44]=this.getRgb(0,235,219),this.curTable[45]=this.getRgb(0,0,0),this.curTable[46]=this.getRgb(0,0,0),this.curTable[47]=this.getRgb(0,0,0),this.curTable[48]=this.getRgb(255,255,255),this.curTable[49]=this.getRgb(171,231,255),this.curTable[50]=this.getRgb(199,215,255),this.curTable[51]=this.getRgb(215,203,255),this.curTable[52]=this.getRgb(255,199,255),this.curTable[53]=this.getRgb(255,199,219),this.curTable[54]=this.getRgb(255,191,179),this.curTable[55]=this.getRgb(255,219,171),this.curTable[56]=this.getRgb(255,231,163),this.curTable[57]=this.getRgb(227,255,163),this.curTable[58]=this.getRgb(171,243,191),this.curTable[59]=this.getRgb(179,255,207),this.curTable[60]=this.getRgb(159,255,243),this.curTable[61]=this.getRgb(0,0,0),this.curTable[62]=this.getRgb(0,0,0),this.curTable[63]=this.getRgb(0,0,0),this.makeTables(),this.setEmphasis(0)}};at.exports=ht});var ct=S((Wt,mt)=>{"use strict";var Mt=17897725e-1,lt=function(t){this.nes=t,this.square1=new P(this,!0),this.square2=new P(this,!1),this.triangle=new ut(this),this.noise=new ft(this),this.dmc=new pt(this),this.frameIrqCounter=null,this.frameIrqCounterMax=4,this.initCounter=2048,this.channelEnableValue=null,this.sampleRate=44100,this.lengthLookup=null,this.dmcFreqLookup=null,this.noiseWavelengthLookup=null,this.square_table=null,this.tnd_table=null,this.frameIrqEnabled=!1,this.frameIrqActive=null,this.frameClockNow=null,this.startedPlaying=!1,this.recordOutput=!1,this.initingHardware=!1,this.masterFrameCounter=null,this.derivedFrameCounter=null,this.countSequence=null,this.sampleTimer=null,this.frameTime=null,this.sampleTimerMax=null,this.sampleCount=null,this.triValue=0,this.smpSquare1=null,this.smpSquare2=null,this.smpTriangle=null,this.smpDmc=null,this.accCount=null,this.prevSampleL=0,this.prevSampleR=0,this.smpAccumL=0,this.smpAccumR=0,this.dacRange=0,this.dcValue=0,this.masterVolume=256,this.stereoPosLSquare1=null,this.stereoPosLSquare2=null,this.stereoPosLTriangle=null,this.stereoPosLNoise=null,this.stereoPosLDMC=null,this.stereoPosRSquare1=null,this.stereoPosRSquare2=null,this.stereoPosRTriangle=null,this.stereoPosRNoise=null,this.stereoPosRDMC=null,this.extraCycles=null,this.maxSample=null,this.minSample=null,this.panning=[80,170,100,150,128],this.setPanning(this.panning),this.initLengthLookup(),this.initDmcFrequencyLookup(),this.initNoiseWavelengthLookup(),this.initDACtables();for(var i=0;i<20;i++)i===16?this.writeReg(16400,16):this.writeReg(16384+i,0);this.reset()};lt.prototype={reset:function(){this.sampleRate=this.nes.opts.sampleRate,this.sampleTimerMax=Math.floor(1024*Mt*this.nes.opts.preferredFrameRate/(this.sampleRate*60)),this.frameTime=Math.floor(14915*this.nes.opts.preferredFrameRate/60),this.sampleTimer=0,this.updateChannelEnable(0),this.masterFrameCounter=0,this.derivedFrameCounter=0,this.countSequence=0,this.sampleCount=0,this.initCounter=2048,this.frameIrqEnabled=!1,this.initingHardware=!1,this.resetCounter(),this.square1.reset(),this.square2.reset(),this.triangle.reset(),this.noise.reset(),this.dmc.reset(),this.accCount=0,this.smpSquare1=0,this.smpSquare2=0,this.smpTriangle=0,this.smpDmc=0,this.frameIrqEnabled=!1,this.frameIrqCounterMax=4,this.channelEnableValue=255,this.startedPlaying=!1,this.prevSampleL=0,this.prevSampleR=0,this.smpAccumL=0,this.smpAccumR=0,this.maxSample=-5e5,this.minSample=5e5},readReg:function(t){var i=0;return i|=this.square1.getLengthStatus(),i|=this.square2.getLengthStatus()<<1,i|=this.triangle.getLengthStatus()<<2,i|=this.noise.getLengthStatus()<<3,i|=this.dmc.getLengthStatus()<<4,i|=(this.frameIrqActive&&this.frameIrqEnabled?1:0)<<6,i|=this.dmc.getIrqStatus()<<7,this.frameIrqActive=!1,this.dmc.irqGenerated=!1,i&65535},writeReg:function(t,i){t>=16384&&t<16388?this.square1.writeReg(t,i):t>=16388&&t<16392?this.square2.writeReg(t,i):t>=16392&&t<16396?this.triangle.writeReg(t,i):t>=16396&&t<=16399?this.noise.writeReg(t,i):t===16400?this.dmc.writeReg(t,i):t===16401?this.dmc.writeReg(t,i):t===16402?this.dmc.writeReg(t,i):t===16403?this.dmc.writeReg(t,i):t===16405?(this.updateChannelEnable(i),i!==0&&this.initCounter>0&&(this.initingHardware=!0),this.dmc.writeReg(t,i)):t===16407&&(this.countSequence=i>>7&1,this.masterFrameCounter=0,this.frameIrqActive=!1,(i>>6&1)===0?this.frameIrqEnabled=!0:this.frameIrqEnabled=!1,this.countSequence===0?(this.frameIrqCounterMax=4,this.derivedFrameCounter=4):(this.frameIrqCounterMax=5,this.derivedFrameCounter=0,this.frameCounterTick()))},resetCounter:function(){this.countSequence===0?this.derivedFrameCounter=4:this.derivedFrameCounter=0},updateChannelEnable:function(t){this.channelEnableValue=t&65535,this.square1.setEnabled((t&1)!==0),this.square2.setEnabled((t&2)!==0),this.triangle.setEnabled((t&4)!==0),this.noise.setEnabled((t&8)!==0),this.dmc.setEnabled((t&16)!==0)},clockFrameCounter:function(t){if(this.initCounter>0&&this.initingHardware){this.initCounter-=t,this.initCounter<=0&&(this.initingHardware=!1);return}t+=this.extraCycles;var i=this.sampleTimerMax-this.sampleTimer;t<<10>i?(this.extraCycles=(t<<10)-i>>10,t-=this.extraCycles):this.extraCycles=0;var s=this.dmc,e=this.triangle,r=this.square1,a=this.square2,n=this.noise;if(s.isEnabled)for(s.shiftCounter-=t<<3;s.shiftCounter<=0&&s.dmaFrequency>0;)s.shiftCounter+=s.dmaFrequency,s.clockDmc();if(e.progTimerMax>0)for(e.progTimerCount-=t;e.progTimerCount<=0;)e.progTimerCount+=e.progTimerMax+1,e.linearCounter>0&&e.lengthCounter>0&&(e.triangleCounter++,e.triangleCounter&=31,e.isEnabled&&(e.triangleCounter>=16?e.sampleValue=e.triangleCounter&15:e.sampleValue=15-(e.triangleCounter&15),e.sampleValue<<=4));r.progTimerCount-=t,r.progTimerCount<=0&&(r.progTimerCount+=r.progTimerMax+1<<1,r.squareCounter++,r.squareCounter&=7,r.updateSampleValue()),a.progTimerCount-=t,a.progTimerCount<=0&&(a.progTimerCount+=a.progTimerMax+1<<1,a.squareCounter++,a.squareCounter&=7,a.updateSampleValue());var h=t;if(n.progTimerCount-h>0)n.progTimerCount-=h,n.accCount+=h,n.accValue+=h*n.sampleValue;else for(;h-- >0;)--n.progTimerCount<=0&&n.progTimerMax>0&&(n.shiftReg<<=1,n.tmp=(n.shiftReg<<(n.randomMode===0?1:6)^n.shiftReg)&32768,n.tmp!==0?(n.shiftReg|=1,n.randomBit=0,n.sampleValue=0):(n.randomBit=1,n.isEnabled&&n.lengthCounter>0?n.sampleValue=n.masterVolume:n.sampleValue=0),n.progTimerCount+=n.progTimerMax),n.accValue+=n.sampleValue,n.accCount++;this.frameIrqEnabled&&this.frameIrqActive&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this.masterFrameCounter+=t<<1,this.masterFrameCounter>=this.frameTime&&(this.masterFrameCounter-=this.frameTime,this.frameCounterTick()),this.accSample(t),this.sampleTimer+=t<<10,this.sampleTimer>=this.sampleTimerMax&&(this.sample(),this.sampleTimer-=this.sampleTimerMax)},accSample:function(t){this.triangle.sampleCondition&&(this.triValue=Math.floor((this.triangle.progTimerCount<<4)/(this.triangle.progTimerMax+1)),this.triValue>16&&(this.triValue=16),this.triangle.triangleCounter>=16&&(this.triValue=16-this.triValue),this.triValue+=this.triangle.sampleValue),t===2?(this.smpTriangle+=this.triValue<<1,this.smpDmc+=this.dmc.sample<<1,this.smpSquare1+=this.square1.sampleValue<<1,this.smpSquare2+=this.square2.sampleValue<<1,this.accCount+=2):t===4?(this.smpTriangle+=this.triValue<<2,this.smpDmc+=this.dmc.sample<<2,this.smpSquare1+=this.square1.sampleValue<<2,this.smpSquare2+=this.square2.sampleValue<<2,this.accCount+=4):(this.smpTriangle+=t*this.triValue,this.smpDmc+=t*this.dmc.sample,this.smpSquare1+=t*this.square1.sampleValue,this.smpSquare2+=t*this.square2.sampleValue,this.accCount+=t)},frameCounterTick:function(){this.derivedFrameCounter++,this.derivedFrameCounter>=this.frameIrqCounterMax&&(this.derivedFrameCounter=0),(this.derivedFrameCounter===1||this.derivedFrameCounter===3)&&(this.triangle.clockLengthCounter(),this.square1.clockLengthCounter(),this.square2.clockLengthCounter(),this.noise.clockLengthCounter(),this.square1.clockSweep(),this.square2.clockSweep()),this.derivedFrameCounter>=0&&this.derivedFrameCounter<4&&(this.square1.clockEnvDecay(),this.square2.clockEnvDecay(),this.noise.clockEnvDecay(),this.triangle.clockLinearCounter()),this.derivedFrameCounter===3&&this.countSequence===0&&(this.frameIrqActive=!0)},sample:function(){var t,i;this.accCount>0?(this.smpSquare1<<=4,this.smpSquare1=Math.floor(this.smpSquare1/this.accCount),this.smpSquare2<<=4,this.smpSquare2=Math.floor(this.smpSquare2/this.accCount),this.smpTriangle=Math.floor(this.smpTriangle/this.accCount),this.smpDmc<<=4,this.smpDmc=Math.floor(this.smpDmc/this.accCount),this.accCount=0):(this.smpSquare1=this.square1.sampleValue<<4,this.smpSquare2=this.square2.sampleValue<<4,this.smpTriangle=this.triangle.sampleValue,this.smpDmc=this.dmc.sample<<4);var s=Math.floor((this.noise.accValue<<4)/this.noise.accCount);this.noise.accValue=s>>4,this.noise.accCount=1,t=this.smpSquare1*this.stereoPosLSquare1+this.smpSquare2*this.stereoPosLSquare2>>8,i=3*this.smpTriangle*this.stereoPosLTriangle+(s<<1)*this.stereoPosLNoise+this.smpDmc*this.stereoPosLDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),i>=this.tnd_table.length&&(i=this.tnd_table.length-1);var e=this.square_table[t]+this.tnd_table[i]-this.dcValue;t=this.smpSquare1*this.stereoPosRSquare1+this.smpSquare2*this.stereoPosRSquare2>>8,i=3*this.smpTriangle*this.stereoPosRTriangle+(s<<1)*this.stereoPosRNoise+this.smpDmc*this.stereoPosRDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),i>=this.tnd_table.length&&(i=this.tnd_table.length-1);var r=this.square_table[t]+this.tnd_table[i]-this.dcValue,a=e-this.prevSampleL;this.prevSampleL+=a,this.smpAccumL+=a-(this.smpAccumL>>10),e=this.smpAccumL;var n=r-this.prevSampleR;this.prevSampleR+=n,this.smpAccumR+=n-(this.smpAccumR>>10),r=this.smpAccumR,e>this.maxSample&&(this.maxSample=e),e>3]},getDmcFrequency:function(t){return t>=0&&t<16?this.dmcFreqLookup[t]:0},getNoiseWaveLength:function(t){return t>=0&&t<16?this.noiseWavelengthLookup[t]:0},setPanning:function(t){for(var i=0;i<5;i++)this.panning[i]=t[i];this.updateStereoPos()},setMasterVolume:function(t){t<0&&(t=0),t>256&&(t=256),this.masterVolume=t,this.updateStereoPos()},updateStereoPos:function(){this.stereoPosLSquare1=this.panning[0]*this.masterVolume>>8,this.stereoPosLSquare2=this.panning[1]*this.masterVolume>>8,this.stereoPosLTriangle=this.panning[2]*this.masterVolume>>8,this.stereoPosLNoise=this.panning[3]*this.masterVolume>>8,this.stereoPosLDMC=this.panning[4]*this.masterVolume>>8,this.stereoPosRSquare1=this.masterVolume-this.stereoPosLSquare1,this.stereoPosRSquare2=this.masterVolume-this.stereoPosLSquare2,this.stereoPosRTriangle=this.masterVolume-this.stereoPosLTriangle,this.stereoPosRNoise=this.masterVolume-this.stereoPosLNoise,this.stereoPosRDMC=this.masterVolume-this.stereoPosLDMC},initLengthLookup:function(){this.lengthLookup=[10,254,20,2,40,4,80,6,160,8,60,10,14,12,26,14,12,16,24,18,48,20,96,22,192,24,72,26,16,28,32,30]},initDmcFrequencyLookup:function(){this.dmcFreqLookup=new Array(16),this.dmcFreqLookup[0]=3424,this.dmcFreqLookup[1]=3040,this.dmcFreqLookup[2]=2720,this.dmcFreqLookup[3]=2560,this.dmcFreqLookup[4]=2288,this.dmcFreqLookup[5]=2032,this.dmcFreqLookup[6]=1808,this.dmcFreqLookup[7]=1712,this.dmcFreqLookup[8]=1520,this.dmcFreqLookup[9]=1280,this.dmcFreqLookup[10]=1136,this.dmcFreqLookup[11]=1024,this.dmcFreqLookup[12]=848,this.dmcFreqLookup[13]=672,this.dmcFreqLookup[14]=576,this.dmcFreqLookup[15]=432},initNoiseWavelengthLookup:function(){this.noiseWavelengthLookup=new Array(16),this.noiseWavelengthLookup[0]=4,this.noiseWavelengthLookup[1]=8,this.noiseWavelengthLookup[2]=16,this.noiseWavelengthLookup[3]=32,this.noiseWavelengthLookup[4]=64,this.noiseWavelengthLookup[5]=96,this.noiseWavelengthLookup[6]=128,this.noiseWavelengthLookup[7]=160,this.noiseWavelengthLookup[8]=202,this.noiseWavelengthLookup[9]=254,this.noiseWavelengthLookup[10]=380,this.noiseWavelengthLookup[11]=508,this.noiseWavelengthLookup[12]=762,this.noiseWavelengthLookup[13]=1016,this.noiseWavelengthLookup[14]=2034,this.noiseWavelengthLookup[15]=4068},initDACtables:function(){var t,i,s,e=0,r=0;for(this.square_table=new Float32Array(512),this.tnd_table=new Float32Array(3264),s=0;s<512;s++)t=95.52/(8128/(s/16)+100),t*=.98411,t*=5e4,i=Math.floor(t),this.square_table[s]=i,i>e&&(e=i);for(s=0;s<3264;s++)t=163.67/(24329/(s/16)+100),t*=.98411,t*=5e4,i=Math.floor(t),this.tnd_table[s]=i,i>r&&(r=i);this.dacRange=e+r,this.dcValue=this.dacRange/2}};var pt=function(t){this.papu=t,this.MODE_NORMAL=0,this.MODE_LOOP=1,this.MODE_IRQ=2,this.isEnabled=null,this.hasSample=null,this.irqGenerated=!1,this.playMode=null,this.dmaFrequency=null,this.dmaCounter=null,this.deltaCounter=null,this.playStartAddress=null,this.playAddress=null,this.playLength=null,this.playLengthCounter=null,this.shiftCounter=null,this.reg4012=null,this.reg4013=null,this.sample=null,this.dacLsb=null,this.data=null,this.reset()};pt.prototype={clockDmc:function(){this.hasSample&&((this.data&1)===0?this.deltaCounter>0&&this.deltaCounter--:this.deltaCounter<63&&this.deltaCounter++,this.sample=this.isEnabled?(this.deltaCounter<<1)+this.dacLsb:0,this.data>>=1),this.dmaCounter--,this.dmaCounter<=0&&(this.hasSample=!1,this.endOfSample(),this.dmaCounter=8),this.irqGenerated&&this.papu.nes.cpu.requestIrq(this.papu.nes.cpu.IRQ_NORMAL)},endOfSample:function(){this.playLengthCounter===0&&this.playMode===this.MODE_LOOP&&(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength),this.playLengthCounter>0&&(this.nextSample(),this.playLengthCounter===0&&this.playMode===this.MODE_IRQ&&(this.irqGenerated=!0))},nextSample:function(){this.data=this.papu.nes.mmap.load(this.playAddress),this.papu.nes.cpu.haltCycles(4),this.playLengthCounter--,this.playAddress++,this.playAddress>65535&&(this.playAddress=32768),this.hasSample=!0},writeReg:function(t,i){t===16400?(i>>6===0?this.playMode=this.MODE_NORMAL:(i>>6&1)===1?this.playMode=this.MODE_LOOP:i>>6===2&&(this.playMode=this.MODE_IRQ),(i&128)===0&&(this.irqGenerated=!1),this.dmaFrequency=this.papu.getDmcFrequency(i&15)):t===16401?(this.deltaCounter=i>>1&63,this.dacLsb=i&1,this.sample=(this.deltaCounter<<1)+this.dacLsb):t===16402?(this.playStartAddress=i<<6|49152,this.playAddress=this.playStartAddress,this.reg4012=i):t===16403?(this.playLength=(i<<4)+1,this.playLengthCounter=this.playLength,this.reg4013=i):t===16405&&((i>>4&1)===0?this.playLengthCounter=0:(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength),this.irqGenerated=!1)},setEnabled:function(t){!this.isEnabled&&t&&(this.playLengthCounter=this.playLength),this.isEnabled=t},getLengthStatus:function(){return this.playLengthCounter===0||!this.isEnabled?0:1},getIrqStatus:function(){return this.irqGenerated?1:0},reset:function(){this.isEnabled=!1,this.irqGenerated=!1,this.playMode=this.MODE_NORMAL,this.dmaFrequency=0,this.dmaCounter=0,this.deltaCounter=0,this.playStartAddress=0,this.playAddress=0,this.playLength=0,this.playLengthCounter=0,this.sample=0,this.dacLsb=0,this.shiftCounter=0,this.reg4012=0,this.reg4013=0,this.data=0}};var ft=function(t){this.papu=t,this.isEnabled=null,this.envDecayDisable=null,this.envDecayLoopEnable=null,this.lengthCounterEnable=null,this.envReset=null,this.shiftNow=null,this.lengthCounter=null,this.progTimerCount=null,this.progTimerMax=null,this.envDecayRate=null,this.envDecayCounter=null,this.envVolume=null,this.masterVolume=null,this.shiftReg=16384,this.randomBit=null,this.randomMode=null,this.sampleValue=null,this.accValue=0,this.accCount=1,this.tmp=null,this.reset()};ft.prototype={reset:function(){this.progTimerCount=0,this.progTimerMax=0,this.isEnabled=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1,this.shiftNow=!1,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.shiftReg=1,this.randomBit=0,this.randomMode=0,this.sampleValue=0,this.tmp=0},clockLengthCounter:function(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())},clockEnvDecay:function(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()},updateSampleValue:function(){this.isEnabled&&this.lengthCounter>0&&(this.sampleValue=this.randomBit*this.masterVolume)},writeReg:function(t,i){t===16396?(this.envDecayDisable=(i&16)!==0,this.envDecayRate=i&15,this.envDecayLoopEnable=(i&32)!==0,this.lengthCounterEnable=(i&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume):t===16398?(this.progTimerMax=this.papu.getNoiseWaveLength(i&15),this.randomMode=i>>7):t===16399&&(this.lengthCounter=this.papu.getLengthMax(i&248),this.envReset=!0)},setEnabled:function(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()},getLengthStatus:function(){return this.lengthCounter===0||!this.isEnabled?0:1}};var P=function(t,i){this.papu=t,this.dutyLookup=[0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1],this.impLookup=[1,-1,0,0,0,0,0,0,1,0,-1,0,0,0,0,0,1,0,0,0,-1,0,0,0,-1,0,1,0,0,0,0,0],this.sqr1=i,this.isEnabled=null,this.lengthCounterEnable=null,this.sweepActive=null,this.envDecayDisable=null,this.envDecayLoopEnable=null,this.envReset=null,this.sweepCarry=null,this.updateSweepPeriod=null,this.progTimerCount=null,this.progTimerMax=null,this.lengthCounter=null,this.squareCounter=null,this.sweepCounter=null,this.sweepCounterMax=null,this.sweepMode=null,this.sweepShiftAmount=null,this.envDecayRate=null,this.envDecayCounter=null,this.envVolume=null,this.masterVolume=null,this.dutyMode=null,this.sweepResult=null,this.sampleValue=null,this.vol=null,this.reset()};P.prototype={reset:function(){this.progTimerCount=0,this.progTimerMax=0,this.lengthCounter=0,this.squareCounter=0,this.sweepCounter=0,this.sweepCounterMax=0,this.sweepMode=0,this.sweepShiftAmount=0,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.dutyMode=0,this.vol=0,this.isEnabled=!1,this.lengthCounterEnable=!1,this.sweepActive=!1,this.sweepCarry=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1},clockLengthCounter:function(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())},clockEnvDecay:function(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()},clockSweep:function(){--this.sweepCounter<=0&&(this.sweepCounter=this.sweepCounterMax+1,this.sweepActive&&this.sweepShiftAmount>0&&this.progTimerMax>7&&(this.sweepCarry=!1,this.sweepMode===0?(this.progTimerMax+=this.progTimerMax>>this.sweepShiftAmount,this.progTimerMax>4095&&(this.progTimerMax=4095,this.sweepCarry=!0)):this.progTimerMax=this.progTimerMax-((this.progTimerMax>>this.sweepShiftAmount)-(this.sqr1?1:0)))),this.updateSweepPeriod&&(this.updateSweepPeriod=!1,this.sweepCounter=this.sweepCounterMax+1)},updateSampleValue:function(){this.isEnabled&&this.lengthCounter>0&&this.progTimerMax>7?this.sweepMode===0&&this.progTimerMax+(this.progTimerMax>>this.sweepShiftAmount)>4095?this.sampleValue=0:this.sampleValue=this.masterVolume*this.dutyLookup[(this.dutyMode<<3)+this.squareCounter]:this.sampleValue=0},writeReg:function(t,i){var s=this.sqr1?0:4;t===16384+s?(this.envDecayDisable=(i&16)!==0,this.envDecayRate=i&15,this.envDecayLoopEnable=(i&32)!==0,this.dutyMode=i>>6&3,this.lengthCounterEnable=(i&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()):t===16385+s?(this.sweepActive=(i&128)!==0,this.sweepCounterMax=i>>4&7,this.sweepMode=i>>3&1,this.sweepShiftAmount=i&7,this.updateSweepPeriod=!0):t===16386+s?(this.progTimerMax&=1792,this.progTimerMax|=i):t===16387+s&&(this.progTimerMax&=255,this.progTimerMax|=(i&7)<<8,this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(i&248)),this.envReset=!0)},setEnabled:function(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()},getLengthStatus:function(){return this.lengthCounter===0||!this.isEnabled?0:1}};var ut=function(t){this.papu=t,this.isEnabled=null,this.sampleCondition=null,this.lengthCounterEnable=null,this.lcHalt=null,this.lcControl=null,this.progTimerCount=null,this.progTimerMax=null,this.triangleCounter=null,this.lengthCounter=null,this.linearCounter=null,this.lcLoadValue=null,this.sampleValue=null,this.tmp=null,this.reset()};ut.prototype={reset:function(){this.progTimerCount=0,this.progTimerMax=0,this.triangleCounter=0,this.isEnabled=!1,this.sampleCondition=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.linearCounter=0,this.lcLoadValue=0,this.lcHalt=!0,this.lcControl=!1,this.tmp=0,this.sampleValue=15},clockLengthCounter:function(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleCondition())},clockLinearCounter:function(){this.lcHalt?(this.linearCounter=this.lcLoadValue,this.updateSampleCondition()):this.linearCounter>0&&(this.linearCounter--,this.updateSampleCondition()),this.lcControl||(this.lcHalt=!1)},getLengthStatus:function(){return this.lengthCounter===0||!this.isEnabled?0:1},readReg:function(t){return 0},writeReg:function(t,i){t===16392?(this.lcControl=(i&128)!==0,this.lcLoadValue=i&127,this.lengthCounterEnable=!this.lcControl):t===16394?(this.progTimerMax&=1792,this.progTimerMax|=i):t===16395&&(this.progTimerMax&=255,this.progTimerMax|=(i&7)<<8,this.lengthCounter=this.papu.getLengthMax(i&248),this.lcHalt=!0),this.updateSampleCondition()},clockProgrammableTimer:function(t){if(this.progTimerMax>0)for(this.progTimerCount+=t;this.progTimerMax>0&&this.progTimerCount>=this.progTimerMax;)this.progTimerCount-=this.progTimerMax,this.isEnabled&&this.lengthCounter>0&&this.linearCounter>0&&this.clockTriangleGenerator()},clockTriangleGenerator:function(){this.triangleCounter++,this.triangleCounter&=31},setEnabled:function(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleCondition()},updateSampleCondition:function(){this.sampleCondition=this.isEnabled&&this.progTimerMax>7&&this.linearCounter>0&&this.lengthCounter>0}};mt.exports=lt});var _t=S((Ut,Rt)=>{"use strict";var C=I(),o={};o[0]=function(t){this.nes=t};o[0].prototype={reset:function(){this.joy1StrobeState=0,this.joy2StrobeState=0,this.joypadLastWrite=0,this.zapperFired=!1,this.zapperX=null,this.zapperY=null},write:function(t,i){t<8192?this.nes.cpu.mem[t&2047]=i:t>16407?(this.nes.cpu.mem[t]=i,t>=24576&&t<32768&&this.nes.opts.onBatteryRamWrite(t,i)):t>8199&&t<16384?this.regWrite(8192+(t&7),i):this.regWrite(t,i)},writelow:function(t,i){t<8192?this.nes.cpu.mem[t&2047]=i:t>16407?this.nes.cpu.mem[t]=i:t>8199&&t<16384?this.regWrite(8192+(t&7),i):this.regWrite(t,i)},load:function(t){return t&=65535,t>16407?this.nes.cpu.mem[t]:t>=8192?this.regLoad(t):this.nes.cpu.mem[t&2047]},regLoad:function(t){switch(t>>12){case 0:break;case 1:break;case 2:case 3:switch(t&7){case 0:return this.nes.cpu.mem[8192];case 1:return this.nes.cpu.mem[8193];case 2:return this.nes.ppu.readStatusRegister();case 3:return 0;case 4:return this.nes.ppu.sramLoad();case 5:return 0;case 6:return 0;case 7:return this.nes.ppu.vramLoad()}break;case 4:switch(t-16405){case 0:return this.nes.papu.readReg(t);case 1:return this.joy1Read();case 2:var i;return this.zapperX!==null&&this.zapperY!==null&&this.nes.ppu.isPixelWhite(this.zapperX,this.zapperY)?i=0:i=8,this.zapperFired&&(i|=16),(this.joy2Read()|i)&65535}break}return 0},regWrite:function(t,i){switch(t){case 8192:this.nes.cpu.mem[t]=i,this.nes.ppu.updateControlReg1(i);break;case 8193:this.nes.cpu.mem[t]=i,this.nes.ppu.updateControlReg2(i);break;case 8195:this.nes.ppu.writeSRAMAddress(i);break;case 8196:this.nes.ppu.sramWrite(i);break;case 8197:this.nes.ppu.scrollWrite(i);break;case 8198:this.nes.ppu.writeVRAMAddress(i);break;case 8199:this.nes.ppu.vramWrite(i);break;case 16404:this.nes.ppu.sramDMA(i);break;case 16405:this.nes.papu.writeReg(t,i);break;case 16406:(i&1)===0&&(this.joypadLastWrite&1)===1&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadLastWrite=i;break;case 16407:this.nes.papu.writeReg(t,i);break;default:t>=16384&&t<=16407&&this.nes.papu.writeReg(t,i)}},joy1Read:function(){var t;switch(this.joy1StrobeState){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t=this.nes.controllers[1].state[this.joy1StrobeState];break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:t=0;break;case 19:t=1;break;default:t=0}return this.joy1StrobeState++,this.joy1StrobeState===24&&(this.joy1StrobeState=0),t},joy2Read:function(){var t;switch(this.joy2StrobeState){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t=this.nes.controllers[2].state[this.joy2StrobeState];break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:t=0;break;case 19:t=1;break;default:t=0}return this.joy2StrobeState++,this.joy2StrobeState===24&&(this.joy2StrobeState=0),t},loadROM:function(){if(!this.nes.rom.valid||this.nes.rom.romCount<1)throw new Error("NoMapper: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)},loadPRGROM:function(){this.nes.rom.romCount>1?(this.loadRomBank(0,32768),this.loadRomBank(1,49152)):(this.loadRomBank(0,32768),this.loadRomBank(0,49152))},loadCHRROM:function(){this.nes.rom.vromCount>0&&(this.nes.rom.vromCount===1?(this.loadVromBank(0,0),this.loadVromBank(0,4096)):(this.loadVromBank(0,0),this.loadVromBank(1,4096)))},loadBatteryRam:function(){if(this.nes.rom.batteryRam){var t=this.nes.rom.batteryRam;t!==null&&t.length===8192&&C.copyArrayElements(t,0,this.nes.cpu.mem,24576,8192)}},loadRomBank:function(t,i){t%=this.nes.rom.romCount,C.copyArrayElements(this.nes.rom.rom[t],0,this.nes.cpu.mem,i,16384)},loadVromBank:function(t,i){if(this.nes.rom.vromCount!==0){this.nes.ppu.triggerRendering(),C.copyArrayElements(this.nes.rom.vrom[t%this.nes.rom.vromCount],0,this.nes.ppu.vramMem,i,4096);var s=this.nes.rom.vromTile[t%this.nes.rom.vromCount];C.copyArrayElements(s,0,this.nes.ppu.ptTile,i>>4,256)}},load32kRomBank:function(t,i){this.loadRomBank(t*2%this.nes.rom.romCount,i),this.loadRomBank((t*2+1)%this.nes.rom.romCount,i+16384)},load8kVromBank:function(t,i){this.nes.rom.vromCount!==0&&(this.nes.ppu.triggerRendering(),this.loadVromBank(t%this.nes.rom.vromCount,i),this.loadVromBank((t+1)%this.nes.rom.vromCount,i+4096))},load1kVromBank:function(t,i){if(this.nes.rom.vromCount!==0){this.nes.ppu.triggerRendering();var s=Math.floor(t/4)%this.nes.rom.vromCount,e=t%4*1024;C.copyArrayElements(this.nes.rom.vrom[s],e,this.nes.ppu.vramMem,i,1024);for(var r=this.nes.rom.vromTile[s],a=i>>4,n=0;n<64;n++)this.nes.ppu.ptTile[a+n]=r[(t%4<<6)+n]}},load2kVromBank:function(t,i){if(this.nes.rom.vromCount!==0){this.nes.ppu.triggerRendering();var s=Math.floor(t/2)%this.nes.rom.vromCount,e=t%2*2048;C.copyArrayElements(this.nes.rom.vrom[s],e,this.nes.ppu.vramMem,i,2048);for(var r=this.nes.rom.vromTile[s],a=i>>4,n=0;n<128;n++)this.nes.ppu.ptTile[a+n]=r[(t%2<<7)+n]}},load8kRomBank:function(t,i){var s=Math.floor(t/2)%this.nes.rom.romCount,e=t%2*8192;C.copyArrayElements(this.nes.rom.rom[s],e,this.nes.cpu.mem,i,8192)},clockIrqCounter:function(){},latchAccess:function(t){},toJSON:function(){return{joy1StrobeState:this.joy1StrobeState,joy2StrobeState:this.joy2StrobeState,joypadLastWrite:this.joypadLastWrite}},fromJSON:function(t){this.joy1StrobeState=t.joy1StrobeState,this.joy2StrobeState=t.joy2StrobeState,this.joypadLastWrite=t.joypadLastWrite}};o[1]=function(t){this.nes=t};o[1].prototype=new o[0];o[1].prototype.reset=function(){o[0].prototype.reset.apply(this),this.regBuffer=0,this.regBufferCounter=0,this.mirroring=0,this.oneScreenMirroring=0,this.prgSwitchingArea=1,this.prgSwitchingSize=1,this.vromSwitchingSize=0,this.romSelectionReg0=0,this.romSelectionReg1=0,this.romBankSelect=0};o[1].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}(i&128)!==0?(this.regBufferCounter=0,this.regBuffer=0,this.getRegNumber(t)===0&&(this.prgSwitchingArea=1,this.prgSwitchingSize=1)):(this.regBuffer=this.regBuffer&255-(1<>2&1,this.prgSwitchingSize=i>>3&1,this.vromSwitchingSize=i>>4&1;break;case 1:this.romSelectionReg0=i>>4&1,this.nes.rom.vromCount>0&&(this.vromSwitchingSize===0?this.romSelectionReg0===0?this.load8kVromBank(i&15,0):this.load8kVromBank(Math.floor(this.nes.rom.vromCount/2)+(i&15),0):this.romSelectionReg0===0?this.loadVromBank(i&15,0):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(i&15),0));break;case 2:this.romSelectionReg1=i>>4&1,this.nes.rom.vromCount>0&&this.vromSwitchingSize===1&&(this.romSelectionReg1===0?this.loadVromBank(i&15,4096):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(i&15),4096));break;default:s=i&15;var e,r=0;this.nes.rom.romCount>=32?this.vromSwitchingSize===0?this.romSelectionReg0===1&&(r=16):r=(this.romSelectionReg0|this.romSelectionReg1<<1)<<3:this.nes.rom.romCount>=16&&this.romSelectionReg0===1&&(r=8),this.prgSwitchingSize===0?(e=r+(i&15),this.load32kRomBank(e,32768)):(e=r*2+(i&15),this.prgSwitchingArea===0?this.loadRomBank(e,49152):this.loadRomBank(e,32768))}};o[1].prototype.getRegNumber=function(t){return t>=32768&&t<=40959?0:t>=40960&&t<=49151?1:t>=49152&&t<=57343?2:3};o[1].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("MMC1: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[1].prototype.switchLowHighPrgRom=function(t){};o[1].prototype.switch16to32=function(){};o[1].prototype.switch32to16=function(){};o[1].prototype.toJSON=function(){var t=o[0].prototype.toJSON.apply(this);return t.mirroring=this.mirroring,t.oneScreenMirroring=this.oneScreenMirroring,t.prgSwitchingArea=this.prgSwitchingArea,t.prgSwitchingSize=this.prgSwitchingSize,t.vromSwitchingSize=this.vromSwitchingSize,t.romSelectionReg0=this.romSelectionReg0,t.romSelectionReg1=this.romSelectionReg1,t.romBankSelect=this.romBankSelect,t.regBuffer=this.regBuffer,t.regBufferCounter=this.regBufferCounter,t};o[1].prototype.fromJSON=function(t){o[0].prototype.fromJSON.apply(this,arguments),this.mirroring=t.mirroring,this.oneScreenMirroring=t.oneScreenMirroring,this.prgSwitchingArea=t.prgSwitchingArea,this.prgSwitchingSize=t.prgSwitchingSize,this.vromSwitchingSize=t.vromSwitchingSize,this.romSelectionReg0=t.romSelectionReg0,this.romSelectionReg1=t.romSelectionReg1,this.romBankSelect=t.romBankSelect,this.regBuffer=t.regBuffer,this.regBufferCounter=t.regBufferCounter};o[2]=function(t){this.nes=t};o[2].prototype=new o[0];o[2].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.loadRomBank(i,32768)};o[2].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("UNROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[3]=function(t){this.nes=t};o[3].prototype=new o[0];o[3].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else{var s=i%(this.nes.rom.vromCount/2)*2;this.loadVromBank(s,0),this.loadVromBank(s+1,4096),this.load8kVromBank(i*2,0)}};o[4]=function(t){this.nes=t,this.CMD_SEL_2_1K_VROM_0000=0,this.CMD_SEL_2_1K_VROM_0800=1,this.CMD_SEL_1K_VROM_1000=2,this.CMD_SEL_1K_VROM_1400=3,this.CMD_SEL_1K_VROM_1800=4,this.CMD_SEL_1K_VROM_1C00=5,this.CMD_SEL_ROM_PAGE1=6,this.CMD_SEL_ROM_PAGE2=7,this.command=null,this.prgAddressSelect=null,this.chrAddressSelect=null,this.irqCounter=255,this.irqLatchValue=255,this.irqReload=0,this.irqEnable=0,this.prgAddressChanged=!1};o[4].prototype=new o[0];o[4].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}switch(t&57345){case 32768:this.command=i&7;var s=i>>6&1;s!==this.prgAddressSelect&&(this.prgAddressChanged=!0),this.prgAddressSelect=s,this.chrAddressSelect=i>>7&1;break;case 32769:this.executeCommand(this.command,i);break;case 40960:(i&1)!==0?this.nes.ppu.setMirroring(this.nes.rom.HORIZONTAL_MIRRORING):this.nes.ppu.setMirroring(this.nes.rom.VERTICAL_MIRRORING);break;case 40961:break;case 49152:this.irqLatchValue=i;break;case 49153:this.irqReload=1;break;case 57344:this.irqEnable=0;break;case 57345:this.irqEnable=1;break;default:}};o[4].prototype.executeCommand=function(t,i){switch(t){case this.CMD_SEL_2_1K_VROM_0000:this.chrAddressSelect===0?(this.load1kVromBank(i,0),this.load1kVromBank(i+1,1024)):(this.load1kVromBank(i,4096),this.load1kVromBank(i+1,5120));break;case this.CMD_SEL_2_1K_VROM_0800:this.chrAddressSelect===0?(this.load1kVromBank(i,2048),this.load1kVromBank(i+1,3072)):(this.load1kVromBank(i,6144),this.load1kVromBank(i+1,7168));break;case this.CMD_SEL_1K_VROM_1000:this.chrAddressSelect===0?this.load1kVromBank(i,4096):this.load1kVromBank(i,0);break;case this.CMD_SEL_1K_VROM_1400:this.chrAddressSelect===0?this.load1kVromBank(i,5120):this.load1kVromBank(i,1024);break;case this.CMD_SEL_1K_VROM_1800:this.chrAddressSelect===0?this.load1kVromBank(i,6144):this.load1kVromBank(i,2048);break;case this.CMD_SEL_1K_VROM_1C00:this.chrAddressSelect===0?this.load1kVromBank(i,7168):this.load1kVromBank(i,3072);break;case this.CMD_SEL_ROM_PAGE1:this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1),this.prgAddressSelect===0?this.load8kRomBank(i,32768):this.load8kRomBank(i,49152);break;case this.CMD_SEL_ROM_PAGE2:this.load8kRomBank(i,40960),this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1)}};o[4].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("MMC3: Invalid ROM! Unable to load.");this.load8kRomBank((this.nes.rom.romCount-1)*2,49152),this.load8kRomBank((this.nes.rom.romCount-1)*2+1,57344),this.load8kRomBank(0,32768),this.load8kRomBank(1,40960),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[4].prototype.clockIrqCounter=function(){this.irqReload===1&&(this.irqCounter=this.irqLatchValue,this.irqReload=0),this.irqCounter--,this.irqCounter<0&&(this.irqEnable===1&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this.irqCounter=this.irqLatchValue)};o[4].prototype.toJSON=function(){var t=o[0].prototype.toJSON.apply(this);return t.command=this.command,t.prgAddressSelect=this.prgAddressSelect,t.chrAddressSelect=this.chrAddressSelect,t.irqReload=this.irqReload,t.irqCounter=this.irqCounter,t.irqLatchValue=this.irqLatchValue,t.irqEnable=this.irqEnable,t.prgAddressChanged=this.prgAddressChanged,t};o[4].prototype.fromJSON=function(t){o[0].prototype.fromJSON.apply(this,arguments),this.command=t.command,this.prgAddressSelect=t.prgAddressSelect,this.chrAddressSelect=t.chrAddressSelect,this.irqReload=t.irqReload,this.irqCounter=t.irqCounter,this.irqLatchValue=t.irqLatchValue,this.irqEnable=t.irqEnable,this.prgAddressChanged=t.prgAddressChanged};o[5]=function(t){this.nes=t};o[5].prototype=new o[0];o[5].prototype.write=function(t,i){t<32768?o[0].prototype.write.apply(this,arguments):this.load8kVromBank(i,0)};o[5].prototype.write=function(t,i){if(t<20480){o[0].prototype.write.apply(this,arguments);return}switch(t){case 20736:this.prg_size=i&3;break;case 20737:this.chr_size=i&3;break;case 20738:this.sram_we_a=i&3;break;case 20739:this.sram_we_b=i&3;break;case 20740:this.graphic_mode=i&3;break;case 20741:this.nametable_mode=i,this.nametable_type[0]=i&3,this.load1kVromBank(i&3,8192),i>>=2,this.nametable_type[1]=i&3,this.load1kVromBank(i&3,9216),i>>=2,this.nametable_type[2]=i&3,this.load1kVromBank(i&3,10240),i>>=2,this.nametable_type[3]=i&3,this.load1kVromBank(i&3,11264);break;case 20742:this.fill_chr=i;break;case 20743:this.fill_pal=i&3;break;case 20755:this.SetBank_SRAM(3,i&3);break;case 20756:case 20757:case 20758:case 20759:this.SetBank_CPU(t,i);break;case 20768:case 20769:case 20770:case 20771:case 20772:case 20773:case 20774:case 20775:this.chr_mode=0,this.chr_page[0][t&7]=i,this.SetBank_PPU();break;case 20776:case 20777:case 20778:case 20779:this.chr_mode=1,this.chr_page[1][(t&3)+0]=i,this.chr_page[1][(t&3)+4]=i,this.SetBank_PPU();break;case 20992:this.split_control=i;break;case 20993:this.split_scroll=i;break;case 20994:this.split_page=i&63;break;case 20995:this.irq_line=i,this.nes.cpu.ClearIRQ();break;case 20996:this.irq_enable=i,this.nes.cpu.ClearIRQ();break;case 20997:this.mult_a=i;break;case 20998:this.mult_b=i;break;default:t>=20480&&t<=20501?this.nes.papu.exWrite(t,i):t>=23552&&t<=24575?this.graphic_mode===2||this.graphic_mode!==3&&this.irq_status&64:t>=24576&&t<=32767&&this.sram_we_a===2&&this.sram_we_b;break}};o[5].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("UNROM: Invalid ROM! Unable to load.");this.load8kRomBank(this.nes.rom.romCount*2-1,32768),this.load8kRomBank(this.nes.rom.romCount*2-1,40960),this.load8kRomBank(this.nes.rom.romCount*2-1,49152),this.load8kRomBank(this.nes.rom.romCount*2-1,57344),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[7]=function(t){this.nes=t};o[7].prototype=new o[0];o[7].prototype.write=function(t,i){t<32768?o[0].prototype.write.apply(this,arguments):(this.load32kRomBank(i&7,32768),i&16?this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING2):this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING))};o[7].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("AOROM: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[11]=function(t){this.nes=t};o[11].prototype=new o[0];o[11].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else{var s=(i&15)*2%this.nes.rom.romCount,e=((i&15)*2+1)%this.nes.rom.romCount;if(this.loadRomBank(s,32768),this.loadRomBank(e,49152),this.nes.rom.vromCount>0){var r=(i>>4)*2%this.nes.rom.vromCount;this.loadVromBank(r,0),this.loadVromBank(r+1,4096)}}};o[34]=function(t){this.nes=t};o[34].prototype=new o[0];o[34].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i,32768)};o[38]=function(t){this.nes=t};o[38].prototype=new o[0];o[38].prototype.write=function(t,i){if(t<28672||t>32767){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i&3,32768),this.load8kVromBank((i>>2&3)*2,0)};o[66]=function(t){this.nes=t};o[66].prototype=new o[0];o[66].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i>>4&3,32768),this.load8kVromBank((i&3)*2,0)};o[94]=function(t){this.nes=t};o[94].prototype=new o[0];o[94].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.loadRomBank(i>>2,32768)};o[94].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("UN1ROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};o[140]=function(t){this.nes=t};o[140].prototype=new o[0];o[140].prototype.write=function(t,i){if(t<24576||t>32767){o[0].prototype.write.apply(this,arguments);return}else this.load32kRomBank(i>>4&3,32768),this.load8kVromBank((i&15)*2,0)};o[180]=function(t){this.nes=t};o[180].prototype=new o[0];o[180].prototype.write=function(t,i){if(t<32768){o[0].prototype.write.apply(this,arguments);return}else this.loadRomBank(i,49152)};o[180].prototype.loadROM=function(){if(!this.nes.rom.valid)throw new Error("Mapper 180: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)};Rt.exports=o});var At=S((Zt,dt)=>{"use strict";var xt=_t(),yt=F(),St=function(t){this.nes=t,this.mapperName=new Array(92);for(var i=0;i<92;i++)this.mapperName[i]="Unknown Mapper";this.mapperName[0]="Direct Access",this.mapperName[1]="Nintendo MMC1",this.mapperName[2]="UNROM",this.mapperName[3]="CNROM",this.mapperName[4]="Nintendo MMC3",this.mapperName[5]="Nintendo MMC5",this.mapperName[6]="FFE F4xxx",this.mapperName[7]="AOROM",this.mapperName[8]="FFE F3xxx",this.mapperName[9]="Nintendo MMC2",this.mapperName[10]="Nintendo MMC4",this.mapperName[11]="Color Dreams Chip",this.mapperName[12]="FFE F6xxx",this.mapperName[15]="100-in-1 switch",this.mapperName[16]="Bandai chip",this.mapperName[17]="FFE F8xxx",this.mapperName[18]="Jaleco SS8806 chip",this.mapperName[19]="Namcot 106 chip",this.mapperName[20]="Famicom Disk System",this.mapperName[21]="Konami VRC4a",this.mapperName[22]="Konami VRC2a",this.mapperName[23]="Konami VRC2a",this.mapperName[24]="Konami VRC6",this.mapperName[25]="Konami VRC4b",this.mapperName[32]="Irem G-101 chip",this.mapperName[33]="Taito TC0190/TC0350",this.mapperName[34]="32kB ROM switch",this.mapperName[64]="Tengen RAMBO-1 chip",this.mapperName[65]="Irem H-3001 chip",this.mapperName[66]="GNROM switch",this.mapperName[67]="SunSoft3 chip",this.mapperName[68]="SunSoft4 chip",this.mapperName[69]="SunSoft5 FME-7 chip",this.mapperName[71]="Camerica chip",this.mapperName[78]="Irem 74HC161/32-based",this.mapperName[91]="Pirate HK-SF3 chip"};St.prototype={VERTICAL_MIRRORING:0,HORIZONTAL_MIRRORING:1,FOURSCREEN_MIRRORING:2,SINGLESCREEN_MIRRORING:3,SINGLESCREEN_MIRRORING2:4,SINGLESCREEN_MIRRORING3:5,SINGLESCREEN_MIRRORING4:6,CHRROM_MIRRORING:7,header:null,rom:null,vrom:null,vromTile:null,romCount:null,vromCount:null,mirroring:null,batteryRam:null,trainer:null,fourScreen:null,mapperType:null,valid:!1,load:function(t){var i,s,e;if(t.indexOf("NES")===-1)throw new Error("Not a valid NES ROM.");for(this.header=new Array(16),i=0;i<16;i++)this.header[i]=t.charCodeAt(i)&255;this.romCount=this.header[4],this.vromCount=this.header[5]*2,this.mirroring=(this.header[6]&1)!==0?1:0,this.batteryRam=(this.header[6]&2)!==0,this.trainer=(this.header[6]&4)!==0,this.fourScreen=(this.header[6]&8)!==0,this.mapperType=this.header[6]>>4|this.header[7]&240;var r=!1;for(i=8;i<16;i++)if(this.header[i]!==0){r=!0;break}r&&(this.mapperType&=15),this.rom=new Array(this.romCount);var a=16;for(i=0;i=t.length);s++)this.rom[i][s]=t.charCodeAt(a+s)&255;a+=16384}for(this.vrom=new Array(this.vromCount),i=0;i=t.length);s++)this.vrom[i][s]=t.charCodeAt(a+s)&255;a+=4096}for(this.vromTile=new Array(this.vromCount),i=0;i>4,h=i%16,h<8?this.vromTile[e][n].setScanline(h,this.vrom[e][i],this.vrom[e][i+8]):this.vromTile[e][n].setScanline(h-8,this.vrom[e][i-8],this.vrom[e][i]);this.valid=!0},getMirroringType:function(){return this.fourScreen?this.FOURSCREEN_MIRRORING:this.mirroring===0?this.HORIZONTAL_MIRRORING:this.VERTICAL_MIRRORING},getMapperName:function(){return this.mapperType>=0&&this.mapperType{"use strict";var kt=tt(),gt=O(),vt=ot(),Lt=ct(),Vt=At(),Ct=function(t){if(this.opts={onFrame:function(){},onAudioSample:null,onStatusUpdate:function(){},onBatteryRamWrite:function(){},preferredFrameRate:60,emulateSound:!0,sampleRate:44100},typeof t!="undefined"){var i;for(i in this.opts)typeof t[i]!="undefined"&&(this.opts[i]=t[i])}this.frameTime=1e3/this.opts.preferredFrameRate,this.ui={writeFrame:this.opts.onFrame,updateStatus:this.opts.onStatusUpdate},this.cpu=new kt(this),this.ppu=new vt(this),this.papu=new Lt(this),this.mmap=null,this.controllers={1:new gt,2:new gt},this.ui.updateStatus("Ready to load a ROM."),this.frame=this.frame.bind(this),this.buttonDown=this.buttonDown.bind(this),this.buttonUp=this.buttonUp.bind(this),this.zapperMove=this.zapperMove.bind(this),this.zapperFireDown=this.zapperFireDown.bind(this),this.zapperFireUp=this.zapperFireUp.bind(this)};Ct.prototype={fpsFrameCount:0,romData:null,reset:function(){this.mmap!==null&&this.mmap.reset(),this.cpu.reset(),this.ppu.reset(),this.papu.reset(),this.lastFpsTime=null,this.fpsFrameCount=0},frame:function(){this.ppu.startFrame();var t=0,i=this.opts.emulateSound,s=this.cpu,e=this.ppu,r=this.papu;t:for(;;)for(s.cyclesToHalt===0?(t=s.emulate(),i&&r.clockFrameCounter(t),t*=3):s.cyclesToHalt>8?(t=24,i&&r.clockFrameCounter(8),s.cyclesToHalt-=8):(t=s.cyclesToHalt*3,i&&r.clockFrameCounter(s.cyclesToHalt),s.cyclesToHalt=0);t>0;t--){if(e.curX===e.spr0HitX&&e.f_spVisibility===1&&e.scanline-21===e.spr0HitY&&e.setStatusFlag(e.STATUS_SPRITE0HIT,!0),e.requestEndFrame&&(e.nmiCounter--,e.nmiCounter===0)){e.requestEndFrame=!1,e.startVBlank();break t}e.curX++,e.curX===341&&(e.curX=0,e.endScanline())}this.fpsFrameCount++},buttonDown:function(t,i){this.controllers[t].buttonDown(i)},buttonUp:function(t,i){this.controllers[t].buttonUp(i)},zapperMove:function(t,i){this.mmap&&(this.mmap.zapperX=t,this.mmap.zapperY=i)},zapperFireDown:function(){this.mmap&&(this.mmap.zapperFired=!0)},zapperFireUp:function(){this.mmap&&(this.mmap.zapperFired=!1)},getFPS:function(){var t=+new Date,i=null;return this.lastFpsTime&&(i=this.fpsFrameCount/((t-this.lastFpsTime)/1e3)),this.fpsFrameCount=0,this.lastFpsTime=t,i},reloadROM:function(){this.romData!==null&&this.loadROM(this.romData)},loadROM:function(t){this.rom=new Vt(this),this.rom.load(t),this.reset(),this.mmap=this.rom.createMapper(),this.mmap.loadROM(),this.ppu.setMirroring(this.rom.getMirroringType()),this.romData=t},setFramerate:function(t){this.opts.preferredFrameRate=t,this.frameTime=1e3/t,this.papu.setSampleRate(this.opts.sampleRate,!1)},toJSON:function(){return{romData:this.romData,cpu:this.cpu.toJSON(),mmap:this.mmap.toJSON(),ppu:this.ppu.toJSON()}},fromJSON:function(t){this.loadROM(t.romData),this.cpu.fromJSON(t.cpu),this.mmap.fromJSON(t.mmap),this.ppu.fromJSON(t.ppu)}};Dt.exports=Ct});var Nt=S((Kt,It)=>{"use strict";It.exports={Controller:O(),NES:bt()}});var Bt=Nt();function Et(){return Ft()}var Tt=[{id:"hello.c",name:"Hello World"},{id:"attributes.c",name:"Attribute Table"},{id:"scroll.c",name:"Scrolling"},{id:"sprites.c",name:"Sprites"},{id:"metasprites.c",name:"Metasprites"},{id:"flicker.c",name:"Flickering Sprites"},{id:"metacursor.c",name:"Controllers"},{id:"vrambuffer.c",name:"VRAM Buffer"},{id:"statusbar.c",name:"Split Status Bar"},{id:"siegegame.c",name:"Siege Game"},{id:"tint.c",name:"Color Emphasis"},{id:"rletitle.c",name:"Title Screen RLE"},{id:"aputest.c",name:"Sound Tester"},{id:"music.c",name:"Music Player"},{id:"horizscroll.c",name:"Offscreen Scrolling"},{id:"monobitmap.c",name:"Monochrome Bitmap"},{id:"fami.c",name:"Famitone Demo"},{id:"shoot2.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"},{id:"bankswitch.c",name:"Bank Switching"},{id:"irq.c",name:"IRQ Scanline Counter"},{id:"ex0.dasm",name:"Initialization",category:"Assembly"},{id:"ex1.dasm",name:"Hello World"},{id:"ex2.dasm",name:"Scrolling Demo"},{id:"ex3.dasm",name:"Sprite Demo"},{id:"ex4.dasm",name:"Controller Demo"},{id:"musicdemo.dasm",name:"Famitone Demo"},{id:"xyscroll.dasm",name:"XY Split Scrolling"},{id:"road.dasm",name:"3-D Road Demo"},{id:"hello.cpp",name:"Hello Oscar64",category:"Oscar64"},{id:"chase/game.c",name:"Shiru's Chase Game",category:"Other"},{id:"hello.wiz",name:"Hello (Wiz)"}],Gt=w([[m.A,0,0],[m.B,0,1],[m.GP_A,0,0],[m.GP_B,0,1],[m.SELECT,0,2],[m.START,0,3],[m.UP,0,4],[m.DOWN,0,5],[m.LEFT,0,6],[m.RIGHT,0,7],[m.P2_A,1,0],[m.P2_B,1,1],[m.P2_SELECT,1,2],[m.P2_START,1,3],[m.P2_UP,1,4],[m.P2_DOWN,1,5],[m.P2_LEFT,1,6],[m.P2_RIGHT,1,7]]);function M(t){if(t)for(var i in t)ArrayBuffer.isView(t[i])&&(t[i]=t[i].slice(0))}var y=class extends H{constructor(s){super();this.audioFrequency=44030;this.frameindex=0;this.showDebugView=!1;this.machine={cpuCyclesPerLine:114};this.getToolForFilename=T;this.nullProbe=new Y;this.probe=this.nullProbe;this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"OAM Buffer",start:512,size:256,type:"ram"},{name:"Work RAM",start:768,size:3328,type:"ram"},{name:"PPU Registers",start:8192,last:8200,size:8192,type:"io"},{name:"APU Registers",start:16384,last:16416,size:8192,type:"io"},{name:"Optional Cartridge RAM",start:24576,size:8192,type:"ram"}]}};this.mainElement=s}getPresets(){return Tt}start(){this.debugPCDelta=1,this.audio=new q(this.audioFrequency),this.video=new E(this.mainElement,256,224,{overscan:!0}),this.video.create(),this.ntvideo=new E(this.mainElement,512,480,{overscan:!1}),this.ntvideo.create(),this.ntvideo.canvas.style.display="none",this.ntlastbuf=new Uint32Array(4096),Et().bind&&Et().bind("ctrl+shift+alt+n",()=>{this.showDebugView=!this.showDebugView,this.video.canvas.style.display=this.showDebugView?"none":"",this.ntvideo.canvas.style.display=this.showDebugView?"":"none"});var s=this.video.getFrameData();this.nes=new Bt.NES({onFrame:e=>{for(var r=0;r{this.frameindex<10?this.audio.feedSample(0,1):this.audio.feedSample((e+r)*.5,1)},onStatusUpdate:function(e){console.log(e)}}),this.nes.stop=()=>{throw this.haltAndCatchFire("Illegal instruction"),new V("CPU STOPPED")},this.nes.cpu._emulate=this.nes.cpu.emulate,this.nes.cpu.emulate=()=>{this.nes.cpu.irqRequested&&this.probe.logInterrupt(this.nes.cpu.irqType||0),this.probe.logExecute(this.nes.cpu.REG_PC+1,this.nes.cpu.REG_SP);var e=this.nes.cpu._emulate();return this.evalDebugCondition(),this.probe.logClocks(e),e>0?e:1},this.timer=new B(60,this.nextFrame.bind(this)),this.poller=G(this.video,[],Gt,(e,r,a,n)=>{n&1?this.nes.buttonDown(e.index+1,e.mask):n&64&&this.nes.buttonUp(e.index+1,e.mask)})}pollControls(){this.poller.poll()}advance(s){return this.nes.frame(),29780}updateDebugViews(){if(this.showDebugView){for(var s=0,e=0,r=this.ntvideo.getFrameData(),a=this.nes.ppu.regS===0?0:256,n=0;n<60;n++)for(var h=0;h<64;h++){s=8192+(h&31)+n%30*32,h>=32&&(s+=1024),n>=30&&(s+=2048);var l=this.nes.ppu.mirroredLoad(s)+a,c=this.nes.ppu.ptTile[l];e=s&11264|960|s&3072|s>>4&56|s>>2&7;var R=this.nes.ppu.mirroredLoad(e),u=l^R<<9^2147483648;if(u!=this.ntlastbuf[s&4095]){this.ntlastbuf[s&4095]=u;for(var p=n*64*8*8+h*8,f=0,g=(h&2)+((s&64)>>4),b=(R>>g&3)<<2,_=0;_<8;_++){for(var x=0;x<8;x++){var A=c.pix[f++];A&&(A+=b);var Ot=this.nes.ppu.imgPalette[A];r[p++]=Ot|4278190080}p+=504}}}this.ntvideo.updateFrame()}}loadROM(s,e){var r=v(e);this.nes.loadROM(r),this.frameindex=0,this.installIntercepts()}installIntercepts(){var s=this.nes.mmap;if(!s.haveProxied){var e=s.load.bind(s),r=s.write.bind(s),a=s.regLoad.bind(s),n=s.regWrite.bind(s),h=-1;s.load=p=>{var f=e(p);return p!=h&&this.probe.logRead(p,f),f},s.write=(p,f)=>{p!=h&&this.probe.logWrite(p,f),r(p,f)},s.regLoad=p=>{var f=a(p);return this.probe.logIORead(p,f),h=p,f},s.regWrite=(p,f)=>{this.probe.logIOWrite(p,f),h=p,n(p,f)},s.haveProxied=!0}var l=this.nes.ppu;if(!l.haveProxied){var c=l.endScanline.bind(l),R=l.startFrame.bind(l),u=l.writeMem.bind(l);l.endScanline=()=>{c(),this.probe.logNewScanline()},l.startFrame=()=>{R(),this.probe.logNewFrame()},l.writeMem=(p,f)=>{u(p,f),this.probe.logVRAMWrite(p,f)},l.haveProxied=!0}}newCodeAnalyzer(){return new Z(this)}getOriginPC(){return(this.readAddress(65530)|this.readAddress(65531)<<8)&65535}getDefaultExtensions(){return[...super.getDefaultExtensions(),".nesasm"]}getROMExtension(){return".nes"}reset(){this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET),this.installIntercepts()}isRunning(){return this.timer.isRunning()}pause(){this.timer.stop(),this.audio.stop()}resume(){this.timer.start(),this.audio.start()}runToVsync(){var s=this.frameindex;this.runEval(e=>this.frameindex>s)}getRasterScanline(){return this.nes.ppu.scanline}getRasterLineClock(){return this.nes.ppu.curX}getCPUState(){var s=this.nes.cpu.toJSON();return this.copy6502REGvars(s),s}saveState(){var s;return this.nes.mmap?s=this.nes.toJSON():(console.log("no nes.mmap!"),s={cpu:this.nes.cpu.toJSON(),ppu:this.nes.ppu.toJSON()}),s.c=s.cpu,this.copy6502REGvars(s.c),M(s.cpu),M(s.ppu),M(s.mmap),s.b=s.cpu.mem,s.ctrl=this.saveControlsState(),s}loadState(s){this.unfixPC(s.cpu),this.nes.fromJSON(s),this.fixPC(s.cpu),this.nes.cpu.mem=s.cpu.mem.slice(0),this.loadControlsState(s.ctrl),this.installIntercepts()}saveControlsState(){return{c1:this.nes.controllers[1].state.slice(0),c2:this.nes.controllers[2].state.slice(0)}}loadControlsState(s){this.nes.controllers[1].state=s.c1,this.nes.controllers[2].state=s.c2}readAddress(s){return this.nes.cpu.mem[s]}readVRAMAddress(s){return this.nes.ppu.vramMem[s]}copy6502REGvars(s){return s.T=0,s.PC=s.REG_PC,this.fixPC(s),s.A=s.REG_ACC,s.X=s.REG_X,s.Y=s.REG_Y,s.SP=s.REG_SP&255,s.Z=s.F_ZERO,s.N=s.F_SIGN,s.V=s.F_OVERFLOW,s.D=s.F_DECIMAL,s.C=s.F_CARRY,s.I=s.F_INTERRUPT,s.R=1,s.o=this.readAddress(s.PC+1),s}getDebugCategories(){return super.getDebugCategories().concat(["PPU","Mapper"])}getDebugInfo(s,e){switch(s){case"PPU":return this.ppuStateToLongString(e.ppu,e.b);case"Mapper":return this.mapperStateToLongString(e.mmap,e.b);default:return super.getDebugInfo(s,e)}}ppuStateToLongString(s,e){for(var r="",a=[["f_nmiOnVblank","NMI_ON_VBLANK"],["f_spVisibility","SPRITES"],["f_spClipping","NO_CLIP_SPRITES"],["f_dispType","MONOCHROME"],["f_bgVisibility","BACKGROUND"],["f_bgClipping","NO_CLIP_BACKGROUND"]],n=0;n="0"&&a[0]<="9"&&(a="L"+a),a=L(a,".","_"),e+=`${h}:${l}:${a} `}return{extension:".mlb",blob:new Blob([e],{type:"text/plain"})}}},k=class extends U{constructor(){super(...arguments);this.getToolForFilename=T;this.getOpcodeMetadata=W}start(){}loadROM(s,e){if(!this.started)this.startModule(this.mainElement,{jsfile:"mame8bitws.js",driver:"nes",width:256,height:240,romfn:"/emulator/cart.nes",romdata:new Uint8Array(e),preInit:function(n){}});else{var r=e[4]*16384,a=e[5]*8192;this.loadROMFile(e),this.loadRegion(":nes_slot:cart:prg_rom",e.slice(16,16+r)),this.loadRegion(":nes_slot:cart:chr_rom",e.slice(16+r,16+r+a))}}getPresets(){return Tt}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}};N.nes=y;N["nes.mame"]=k; -//# sourceMappingURL=nes-PSU5C2HR.js.map +//# sourceMappingURL=nes-NKFIUNMU.js.map diff --git a/gen/nes-PSU5C2HR.js.map b/gen/nes-NKFIUNMU.js.map similarity index 100% rename from gen/nes-PSU5C2HR.js.map rename to gen/nes-NKFIUNMU.js.map diff --git a/gen/pacman-JPNW7KMG.js b/gen/pacman-MJBPZJBV.js similarity index 98% rename from gen/pacman-JPNW7KMG.js rename to gen/pacman-MJBPZJBV.js index adf2dd76..9b255455 100644 --- a/gen/pacman-JPNW7KMG.js +++ b/gen/pacman-MJBPZJBV.js @@ -1,2 +1,2 @@ -import{H as B,c as w,r as V}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{$ as U,K as R,T as M,Y as x,Z as P,ba as E}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var D=U([[x.UP,0,1],[x.LEFT,0,2],[x.RIGHT,0,4],[x.DOWN,0,8],[x.VK_5,0,32],[x.VK_6,0,64],[x.A,0,128],[x.START,1,32],[x.VK_2,1,64]]),l=224,p=288,v=class{constructor(n,r,t,e){this.rom=n;this.vram=r;this.cram=t;this.ram=e;this.tiles=new Uint8Array(256*64);this.sprites=new Uint8Array(64*256);this.colors=new Uint32Array(32);this.paletteRom=new Uint8Array(256);this.spritePos=new Uint8Array(16);this.rebuild()}rebuild(){for(var n=0;n<32;n++){var r=this.rom[24576+n],t=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,e=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,i=(r>>6&1)*81+(r>>7&1)*174;this.colors[n]=4278190080|i<<16|e<<8|t}this.paletteRom.set(this.rom.subarray(24832,25088));for(var a=this.rom.subarray(16384,20480),s=0;s<256;s++){var c=this.tiles.subarray(s*64,s*64+64),h=a.subarray(s*16,s*16+16);this.decodeStrip(h,0,c,0,4,8),this.decodeStrip(h,8,c,0,0,8)}for(var o=this.rom.subarray(20480,24576),f=0;f<64;f++){var u=this.sprites.subarray(f*256,f*256+256),m=o.subarray(f*64,f*64+64);this.decodeStrip(m,0,u,8,12,16),this.decodeStrip(m,8,u,8,0,16),this.decodeStrip(m,16,u,8,4,16),this.decodeStrip(m,24,u,8,8,16),this.decodeStrip(m,32,u,0,12,16),this.decodeStrip(m,40,u,0,0,16),this.decodeStrip(m,48,u,0,4,16),this.decodeStrip(m,56,u,0,8,16)}}decodeStrip(n,r,t,e,i,a){for(var s=i*a+e,c=0;c<8;c++)for(var h=n[r+c],o=0;o<4;o++){var f=(3-o)*a+(7-c),u=h>>o&1|(h>>o+4&1)<<1;t[s+f]=u}}getPalette(n,r){n&=63;var t=n*4;r[0]=this.paletteRom[t],r[1]=this.paletteRom[t+1],r[2]=this.paletteRom[t+2],r[3]=this.paletteRom[t+3]}drawTile(n,r,t,e,i){if(!(e<0||e>=l))for(var a=this.tiles.subarray(r*64,r*64+64),s=0;s<64;s++){var c=s&7,h=s>>3,o=e+c;if(!(o<0||o>=l)){var f=t[a[s]&3];n[(i+h)*l+o]=this.colors[f&31]}}}drawSprite(n,r,t,e,i,a,s){if(!(e<=-16||e>l))for(var c=this.sprites.subarray(r*256,r*256+256),h=0;h<256;h++){var o=h&15,f=h>>4,u=c[h]&3;if(t[u]!==0){var m=a?15-o:o,T=s?15-f:f,y=e+m,g=i+T;y<0||y>=l||g<0||g>=p||(n[g*l+y]=this.colors[t[u]&31])}}}drawFrame(n){n.fill(4278190080);for(var r=new Uint8Array(4),t=0,e=34;e<36;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=64;for(var i=29;i>=2;i--)for(var e=2;e<=33;e++)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=960;for(var e=0;e<2;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;for(var a=7;a>=0;a--){var s=this.ram[1008+a*2],c=this.ram[1008+a*2+1],h=l-this.spritePos[a*2]+15,o=p-this.spritePos[a*2+1]-16;this.getPalette(c,r),this.drawSprite(n,s>>2,r,h,o,!!(s&2),!!(s&1))}}},O=18432e3,C=O/6,k=O/3/192/2,F=C/k,A=256,d=class d extends V{constructor(){super();this.cpuFrequency=C;this.canvasWidth=l;this.numTotalScanlines=p;this.numVisibleScanlines=p;this.defaultROMSize=32768;this.cpuCyclesPerLine=F|0;this.sampleRate=60*264;this.rotate=0;this.cpu=new w;this.ram=new Uint8Array(1024);this.vram=new Uint8Array(1024);this.cram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.interruptEnabled=0;this.interruptVector=255;this.pendingVBlankIsr=!1;this.watchdog_counter=A;this.flipScreen=0;this.soundEnabled=0;this.soundRegs=new Uint8Array(32);this.soundAcc=new Uint32Array(3);this.waveforms=d.WAVEFORMS;this.keyMap=D;this.frameDrawn=!1;this.readByte=r=>{if(r&=65535,r<16384)return this.rom[r];if(r<17408)return this.vram[r-16384];if(r<18432)return this.cram[r-17408];if(r<19456)return 191;if(r<20480)return this.ram[r-19456];if(r<20736){var t=r&192;return t===0?~this.inputs[0]&255|16:t===64?~this.inputs[1]&111|144:t===128?201:255}return r>=32768?this.rom[r&16383]:255};this.writeByte=(r,t)=>{if(r&=65535,!(r<16384)){if(r<17408){this.vram[r-16384]=t;return}if(r<18432){this.cram[r-17408]=t;return}if(!(r<19456)){if(r<20480){this.ram[r-19456]=t;return}if((r&65528)===20480){var e=r&7;e===0&&(this.interruptEnabled=t&1),e===1&&(this.soundEnabled=t&1),e===3&&(this.flipScreen=t&1)}else r>=20544&&r<=20575?this.soundRegs[r-20544]=t&15:(r&65520)===20576?this.gfx.spritePos[r&15]=t:(r&65472)===20672&&(this.watchdog_counter=A)}}};this.connectCPUIOBus({read:r=>255,write:(r,t)=>{(r&255)===0&&(this.interruptVector=t&255)}}),this.connectCPUMemoryBus({read:this.readByte,write:this.writeByte}),this.cpu.retryInterrupts=!0,this.rom=new Uint8Array(this.defaultROMSize),this.gfx=new v(this.rom,this.vram,this.cram,this.ram),this.inputs.fill(0),this.handler=P(this.inputs,this.keyMap)}static buildWaveforms(){for(var r=new Uint8Array(256),t=0;t<32;t++){var e=t/32;r[0+t]=8+Math.sin(e*Math.PI*2)*7.5|0,r[32+t]=t<16?15:0,r[64+t]=t<16?t:31-t,r[96+t]=t>>1,r[128+t]=t<8?15:t<16?0:t<24?10:0,r[160+t]=8+Math.sin(e*Math.PI*4)*7.5|0,r[192+t]=t&1?12:2,r[224+t]=t*3&15}return r}reset(){super.reset(),this.cpu.reset(),this.watchdog_counter=A,this.interruptEnabled=0,this.interruptVector=255,this.pendingVBlankIsr=!1,this.soundEnabled=0,this.soundRegs.fill(0),this.soundAcc.fill(0),this.extractROMData()}loadROM(r){this.rom.set(E(r,this.defaultROMSize)),this.extractROMData()}extractROMData(){this.gfx=new v(this.rom,this.vram,this.cram,this.ram);for(var r=this.rom.subarray(25088,25344),t=!1,e=0;e>15&31,o=this.waveforms[this.voiceWave(a)*32+h]&15;i+=(o-8)*s}}}t+=i}this.audio.feedSample(t/(r*3*15*8),1)}}drawScanline(){this.scanline===0&&this.gfx.drawFrame(this.pixels)}drainVBlankIsr(){if(this.pendingVBlankIsr){this.pendingVBlankIsr=!1;for(var r=this.cpu.getSP()+2,t=1e5;this.cpu.getSP()!==r&&--t>0;)this.advanceCPU()}}advanceFrame(r){this.drainVBlankIsr();var t=super.advanceFrame(r);if(--this.watchdog_counter<=0)throw new M("WATCHDOG FIRED");if(this.interruptEnabled){var e=this.cpu.getSP();this.cpu.interrupt(this.interruptVector),this.cpu.getSP()!==e&&(this.pendingVBlankIsr=!0)}return t}loadState(r){this.cpu.loadState(r.c),this.ram.set(r.ram),this.vram.set(r.vr),this.cram.set(r.cr),this.gfx.spritePos.set(r.sp||[]),this.watchdog_counter=r.wdc,this.interruptEnabled=r.ie,this.pendingVBlankIsr=!!r.pvi,this.loadControlsState(r)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),vr:this.vram.slice(0),cr:this.cram.slice(0),or:this.oram.slice(0),sp:this.gfx.spritePos.slice(0),wdc:this.watchdog_counter,ie:this.interruptEnabled,pvi:this.pendingVBlankIsr,inputs:this.inputs.slice(0)}}read(r){return this.readByte(r)}write(r,t){this.writeByte(r,t)}readConst(r){return this.readByte(r)}};d.WAVEFORMS=d.buildWaveforms();var b=d;var W=[{id:"hello.c",name:"Hello World"},{id:"sprites.c",name:"Sprite Test"},{id:"music.c",name:"Music Demo"},{id:"solarian.c",name:"Solarian"},{id:"siege.c",name:"Siege Game"},{id:"climber.c",name:"Climber Game"},{id:"chase.c",name:"Chase"}],S=class extends B{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Program ROM",start:0,size:16384,type:"rom"},{name:"Video RAM",start:16384,size:1024,type:"ram"},{name:"Color RAM",start:17408,size:1024,type:"ram"},{name:"Open Bus",start:18432,size:1024,type:"ram"},{name:"Work RAM",start:19456,size:1008,type:"ram"},{name:"Sprite RAM",start:20464,size:16,type:"ram"},{name:"I/O Regs",start:20480,size:256,type:"io"},{name:"Color PROM",start:24576,size:32,type:"rom"},{name:"Palette PROM",start:24832,size:256,type:"rom"},{name:"Wave ROM",start:25088,size:256,type:"rom"}]}}}newMachine(){return new b}getPresets(){return W}getDefaultExtension(){return".c"}readAddress(r){return this.machine.readConst(r)}readVRAMAddress(r){return r<1024?this.machine.vram[r]:r<2048?this.machine.cram[r-1024]:this.machine.ram[1008+(r-2048&15)]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#pac-man-hardware"}getDebugTree(){let r=super.getDebugTree();return r.palette={$$:()=>{let t={};for(let e=0;e{let t={};for(let e=0;e<8;e++){let i=1008+e*2;t[`sprite_${e}`]={shape:"$"+this.machine.ram[i].toString(16).padStart(2,"0"),color:"$"+this.machine.ram[i+1].toString(16).padStart(2,"0"),x:this.machine.gfx.spritePos[e*2],y:this.machine.gfx.spritePos[e*2+1]}}return t}},r}};R.pacman=S; -//# sourceMappingURL=pacman-JPNW7KMG.js.map +import{H as B,c as w,r as V}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{$ as U,K as R,T as M,Y as x,Z as P,ba as E}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var D=U([[x.UP,0,1],[x.LEFT,0,2],[x.RIGHT,0,4],[x.DOWN,0,8],[x.VK_5,0,32],[x.VK_6,0,64],[x.A,0,128],[x.START,1,32],[x.VK_2,1,64]]),l=224,p=288,v=class{constructor(n,r,t,e){this.rom=n;this.vram=r;this.cram=t;this.ram=e;this.tiles=new Uint8Array(256*64);this.sprites=new Uint8Array(64*256);this.colors=new Uint32Array(32);this.paletteRom=new Uint8Array(256);this.spritePos=new Uint8Array(16);this.rebuild()}rebuild(){for(var n=0;n<32;n++){var r=this.rom[24576+n],t=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,e=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,i=(r>>6&1)*81+(r>>7&1)*174;this.colors[n]=4278190080|i<<16|e<<8|t}this.paletteRom.set(this.rom.subarray(24832,25088));for(var a=this.rom.subarray(16384,20480),s=0;s<256;s++){var c=this.tiles.subarray(s*64,s*64+64),h=a.subarray(s*16,s*16+16);this.decodeStrip(h,0,c,0,4,8),this.decodeStrip(h,8,c,0,0,8)}for(var o=this.rom.subarray(20480,24576),f=0;f<64;f++){var u=this.sprites.subarray(f*256,f*256+256),m=o.subarray(f*64,f*64+64);this.decodeStrip(m,0,u,8,12,16),this.decodeStrip(m,8,u,8,0,16),this.decodeStrip(m,16,u,8,4,16),this.decodeStrip(m,24,u,8,8,16),this.decodeStrip(m,32,u,0,12,16),this.decodeStrip(m,40,u,0,0,16),this.decodeStrip(m,48,u,0,4,16),this.decodeStrip(m,56,u,0,8,16)}}decodeStrip(n,r,t,e,i,a){for(var s=i*a+e,c=0;c<8;c++)for(var h=n[r+c],o=0;o<4;o++){var f=(3-o)*a+(7-c),u=h>>o&1|(h>>o+4&1)<<1;t[s+f]=u}}getPalette(n,r){n&=63;var t=n*4;r[0]=this.paletteRom[t],r[1]=this.paletteRom[t+1],r[2]=this.paletteRom[t+2],r[3]=this.paletteRom[t+3]}drawTile(n,r,t,e,i){if(!(e<0||e>=l))for(var a=this.tiles.subarray(r*64,r*64+64),s=0;s<64;s++){var c=s&7,h=s>>3,o=e+c;if(!(o<0||o>=l)){var f=t[a[s]&3];n[(i+h)*l+o]=this.colors[f&31]}}}drawSprite(n,r,t,e,i,a,s){if(!(e<=-16||e>l))for(var c=this.sprites.subarray(r*256,r*256+256),h=0;h<256;h++){var o=h&15,f=h>>4,u=c[h]&3;if(t[u]!==0){var m=a?15-o:o,T=s?15-f:f,y=e+m,g=i+T;y<0||y>=l||g<0||g>=p||(n[g*l+y]=this.colors[t[u]&31])}}}drawFrame(n){n.fill(4278190080);for(var r=new Uint8Array(4),t=0,e=34;e<36;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=64;for(var i=29;i>=2;i--)for(var e=2;e<=33;e++)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=960;for(var e=0;e<2;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;for(var a=7;a>=0;a--){var s=this.ram[1008+a*2],c=this.ram[1008+a*2+1],h=l-this.spritePos[a*2]+15,o=p-this.spritePos[a*2+1]-16;this.getPalette(c,r),this.drawSprite(n,s>>2,r,h,o,!!(s&2),!!(s&1))}}},O=18432e3,C=O/6,k=O/3/192/2,F=C/k,A=256,d=class d extends V{constructor(){super();this.cpuFrequency=C;this.canvasWidth=l;this.numTotalScanlines=p;this.numVisibleScanlines=p;this.defaultROMSize=32768;this.cpuCyclesPerLine=F|0;this.sampleRate=60*264;this.rotate=0;this.cpu=new w;this.ram=new Uint8Array(1024);this.vram=new Uint8Array(1024);this.cram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.interruptEnabled=0;this.interruptVector=255;this.pendingVBlankIsr=!1;this.watchdog_counter=A;this.flipScreen=0;this.soundEnabled=0;this.soundRegs=new Uint8Array(32);this.soundAcc=new Uint32Array(3);this.waveforms=d.WAVEFORMS;this.keyMap=D;this.frameDrawn=!1;this.readByte=r=>{if(r&=65535,r<16384)return this.rom[r];if(r<17408)return this.vram[r-16384];if(r<18432)return this.cram[r-17408];if(r<19456)return 191;if(r<20480)return this.ram[r-19456];if(r<20736){var t=r&192;return t===0?~this.inputs[0]&255|16:t===64?~this.inputs[1]&111|144:t===128?201:255}return r>=32768?this.rom[r&16383]:255};this.writeByte=(r,t)=>{if(r&=65535,!(r<16384)){if(r<17408){this.vram[r-16384]=t;return}if(r<18432){this.cram[r-17408]=t;return}if(!(r<19456)){if(r<20480){this.ram[r-19456]=t;return}if((r&65528)===20480){var e=r&7;e===0&&(this.interruptEnabled=t&1),e===1&&(this.soundEnabled=t&1),e===3&&(this.flipScreen=t&1)}else r>=20544&&r<=20575?this.soundRegs[r-20544]=t&15:(r&65520)===20576?this.gfx.spritePos[r&15]=t:(r&65472)===20672&&(this.watchdog_counter=A)}}};this.connectCPUIOBus({read:r=>255,write:(r,t)=>{(r&255)===0&&(this.interruptVector=t&255)}}),this.connectCPUMemoryBus({read:this.readByte,write:this.writeByte}),this.cpu.retryInterrupts=!0,this.rom=new Uint8Array(this.defaultROMSize),this.gfx=new v(this.rom,this.vram,this.cram,this.ram),this.inputs.fill(0),this.handler=P(this.inputs,this.keyMap)}static buildWaveforms(){for(var r=new Uint8Array(256),t=0;t<32;t++){var e=t/32;r[0+t]=8+Math.sin(e*Math.PI*2)*7.5|0,r[32+t]=t<16?15:0,r[64+t]=t<16?t:31-t,r[96+t]=t>>1,r[128+t]=t<8?15:t<16?0:t<24?10:0,r[160+t]=8+Math.sin(e*Math.PI*4)*7.5|0,r[192+t]=t&1?12:2,r[224+t]=t*3&15}return r}reset(){super.reset(),this.cpu.reset(),this.watchdog_counter=A,this.interruptEnabled=0,this.interruptVector=255,this.pendingVBlankIsr=!1,this.soundEnabled=0,this.soundRegs.fill(0),this.soundAcc.fill(0),this.extractROMData()}loadROM(r){this.rom.set(E(r,this.defaultROMSize)),this.extractROMData()}extractROMData(){this.gfx=new v(this.rom,this.vram,this.cram,this.ram);for(var r=this.rom.subarray(25088,25344),t=!1,e=0;e>15&31,o=this.waveforms[this.voiceWave(a)*32+h]&15;i+=(o-8)*s}}}t+=i}this.audio.feedSample(t/(r*3*15*8),1)}}drawScanline(){this.scanline===0&&this.gfx.drawFrame(this.pixels)}drainVBlankIsr(){if(this.pendingVBlankIsr){this.pendingVBlankIsr=!1;for(var r=this.cpu.getSP()+2,t=1e5;this.cpu.getSP()!==r&&--t>0;)this.advanceCPU()}}advanceFrame(r){this.drainVBlankIsr();var t=super.advanceFrame(r);if(--this.watchdog_counter<=0)throw new M("WATCHDOG FIRED");if(this.interruptEnabled){var e=this.cpu.getSP();this.cpu.interrupt(this.interruptVector),this.cpu.getSP()!==e&&(this.pendingVBlankIsr=!0)}return t}loadState(r){this.cpu.loadState(r.c),this.ram.set(r.ram),this.vram.set(r.vr),this.cram.set(r.cr),this.gfx.spritePos.set(r.sp||[]),this.watchdog_counter=r.wdc,this.interruptEnabled=r.ie,this.pendingVBlankIsr=!!r.pvi,this.loadControlsState(r)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),vr:this.vram.slice(0),cr:this.cram.slice(0),or:this.oram.slice(0),sp:this.gfx.spritePos.slice(0),wdc:this.watchdog_counter,ie:this.interruptEnabled,pvi:this.pendingVBlankIsr,inputs:this.inputs.slice(0)}}read(r){return this.readByte(r)}write(r,t){this.writeByte(r,t)}readConst(r){return this.readByte(r)}};d.WAVEFORMS=d.buildWaveforms();var b=d;var W=[{id:"hello.c",name:"Hello World"},{id:"sprites.c",name:"Sprite Test"},{id:"music.c",name:"Music Demo"},{id:"solarian.c",name:"Solarian"},{id:"siege.c",name:"Siege Game"},{id:"climber.c",name:"Climber Game"},{id:"chase.c",name:"Chase"}],S=class extends B{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Program ROM",start:0,size:16384,type:"rom"},{name:"Video RAM",start:16384,size:1024,type:"ram"},{name:"Color RAM",start:17408,size:1024,type:"ram"},{name:"Open Bus",start:18432,size:1024,type:"ram"},{name:"Work RAM",start:19456,size:1008,type:"ram"},{name:"Sprite RAM",start:20464,size:16,type:"ram"},{name:"I/O Regs",start:20480,size:256,type:"io"},{name:"Color PROM",start:24576,size:32,type:"rom"},{name:"Palette PROM",start:24832,size:256,type:"rom"},{name:"Wave ROM",start:25088,size:256,type:"rom"}]}}}newMachine(){return new b}getPresets(){return W}getDefaultExtension(){return".c"}readAddress(r){return this.machine.readConst(r)}readVRAMAddress(r){return r<1024?this.machine.vram[r]:r<2048?this.machine.cram[r-1024]:this.machine.ram[1008+(r-2048&15)]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#pac-man-hardware"}getDebugTree(){let r=super.getDebugTree();return r.palette={$$:()=>{let t={};for(let e=0;e{let t={};for(let e=0;e<8;e++){let i=1008+e*2;t[`sprite_${e}`]={shape:"$"+this.machine.ram[i].toString(16).padStart(2,"0"),color:"$"+this.machine.ram[i+1].toString(16).padStart(2,"0"),x:this.machine.gfx.spritePos[e*2],y:this.machine.gfx.spritePos[e*2+1]}}return t}},r}};R.pacman=S; +//# sourceMappingURL=pacman-MJBPZJBV.js.map diff --git a/gen/pacman-JPNW7KMG.js.map b/gen/pacman-MJBPZJBV.js.map similarity index 100% rename from gen/pacman-JPNW7KMG.js.map rename to gen/pacman-MJBPZJBV.js.map diff --git a/gen/pce-ED7Y5QEG.js b/gen/pce-ED7Y5QEG.js new file mode 100644 index 00000000..4ca6b1ab --- /dev/null +++ b/gen/pce-ED7Y5QEG.js @@ -0,0 +1,2 @@ +import"./chunk-MZ43WA3W.js";import{a as y}from"./chunk-UACHXWHT.js";import{K as m,Q as G,Y as u}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var M=[{id:"gfxtest.c",name:"Graphics Test (tiles/sprites)"},{id:"perftest.c",name:"Graphics Pipeline Benchmark"},{id:"solarian.c",name:"Solarian"},{id:"chase.c",name:"Chase"},{id:"test_conio.c",name:"Hello World (conio)"},{id:"siegegame.c",name:"Siege Game (conio)"},{id:"hello.wiz",name:"Hello World (Wiz)"}],V=class{constructor(t){this.mainElement=t}start(){this.pce=new R,this.video=new G(this.mainElement,684,262,{overscan:!0,aspect:4/3}),this.video.create(),this.pce.SetCanvas(this.video.canvas)}reset(){this.pce.Reset()}isRunning(){return this.pce.TimerID!=null}pause(){this.pce.Pause()}resume(){this.pce.CreateAudioContext(),this.pce.Start()}getPresets(){return M}loadROM(t,e){this.pce.Pause(),this.pce.Init(),this.pce.SetROM(e)}advance(t){return this.pce.Run(),1}getPlatformName(){return"PC Engine"}getToolForFilename(t){return y(t)}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}showHelp(){return"https://8bitworkshop.com/docs/platforms/pce/"}readAddress(t){return this.pce.Get(t)}writeAddress(t,e){this.pce.Set(t,e)}readVRAMAddress(t){return this.pce.VDC[0].VRAM[t]}};m.pce=V;var R=class{constructor(){this.MainCanvas=null;this.Ctx=null;this.ImageData=null;this.MapperBase=class{constructor(t,e){this.ROM=t,this.Core=e}Init(){}Read(t){return 255}Write(t,e){}};this.VDCSelect=0;this.ScreenWidthMAX=0;this.ScreenHeightMAX=0;this.SuperGrafx=!1,this.CountryTypePCE=64,this.CountryTypeTG16=0,this.CountryType=this.CountryTypePCE,this.GamePadButton6=!1,this.MultiTap=!1,this.EtcConstruct(),this.CPUConstruct(),this.StorageConstruct(),this.VCEConstruct(),this.VPCConstruct(),this.VDCConstruct(),this.SoundConstruct(),this.PSGConstruct(),this.TimerConstruct(),this.JoystickConstruct()}EtcConstruct(){this.TimerID=null,this.MainCanvas=null,this.Ctx=null,this.ImageData=null}UpdateAnimationFrame(){this.TimerID=window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this)),this.Run()}CancelAnimationFrame(){window.cancelAnimationFrame(this.TimerID),this.TimerID=null}Pause(){this.TimerID!=null&&(this.JoystickEventRelease(),this.CancelAnimationFrame())}Start(){this.TimerID==null&&(this.JoystickEventInit(),this.UpdateAnimationFrame())}Run(){for(this.CheckGamePad(),this.DrawFlag=!1;!this.DrawFlag;)this.CPURun(),this.VDCRun(),this.TimerRun(),this.PSGRun()}Reset(){this.StorageReset(),this.Mapper.Init(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit(),this.CPUReset()}Init(){this.StorageInit(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit()}SetCanvas(t){if(this.MainCanvas=t,!this.MainCanvas.getContext)return!1;this.Ctx=this.MainCanvas.getContext("2d"),this.ImageData=this.Ctx.createImageData(this.MainCanvas.width,this.MainCanvas.height);for(let e=0;ee&128),this.NZCacheTable[0]=2,this.NFlag=128,this.VFlag=64,this.TFlag=32,this.BFlag=16,this.DFlag=8,this.IFlag=4,this.ZFlag=2,this.CFlag=1,this.TIQFlag=4,this.IRQ1Flag=2,this.IRQ2Flag=1,this.ProgressClock=0,this.CPUBaseClock=0,this.BaseClock1=12,this.BaseClock3=6,this.BaseClock5=4,this.BaseClock7=3,this.BaseClock10=2,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0}CPUReset(){this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.CPUBaseClock=this.BaseClock1,this.SetIFlag(),this.PC=this.Get16(65534)}CPUInit(){this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.ProgressClock=0,this.CPUBaseClock=this.BaseClock1,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.LastInt=0}CPURun(){this.ProgressClock=0;let t=this.LastInt;this.LastInt=(this.P&this.IFlag)==0?this.GetIntStatus():0,t!=0&&this.TransferLen==0?(this.LastInt=0,(t&this.TIQFlag)==this.TIQFlag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65530)):(t&this.IRQ1Flag)==this.IRQ1Flag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65528)):(t&this.IRQ2Flag)==this.IRQ2Flag&&(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.SetIFlag(),this.PC=this.Get16(65526)),this.ProgressClock=8*this.CPUBaseClock):this.OpExec()}OpExec(){let t,e,s,i,a,h=this.Get(this.PC);switch(h){case 105:this.ADC(this.PC+1);break;case 101:this.ADC(this.ZP());break;case 117:this.ADC(this.ZP_X());break;case 114:this.ADC(this.IND());break;case 97:this.ADC(this.IND_X());break;case 113:this.ADC(this.IND_Y());break;case 109:this.ADC(this.ABS());break;case 125:this.ADC(this.ABS_X());break;case 121:this.ADC(this.ABS_Y());break;case 233:this.SBC(this.PC+1);break;case 229:this.SBC(this.ZP());break;case 245:this.SBC(this.ZP_X());break;case 242:this.SBC(this.IND());break;case 225:this.SBC(this.IND_X());break;case 241:this.SBC(this.IND_Y());break;case 237:this.SBC(this.ABS());break;case 253:this.SBC(this.ABS_X());break;case 249:this.SBC(this.ABS_Y());break;case 41:this.AND(this.PC+1);break;case 37:this.AND(this.ZP());break;case 53:this.AND(this.ZP_X());break;case 50:this.AND(this.IND());break;case 33:this.AND(this.IND_X());break;case 49:this.AND(this.IND_Y());break;case 45:this.AND(this.ABS());break;case 61:this.AND(this.ABS_X());break;case 57:this.AND(this.ABS_Y());break;case 73:this.EOR(this.PC+1);break;case 69:this.EOR(this.ZP());break;case 85:this.EOR(this.ZP_X());break;case 82:this.EOR(this.IND());break;case 65:this.EOR(this.IND_X());break;case 81:this.EOR(this.IND_Y());break;case 77:this.EOR(this.ABS());break;case 93:this.EOR(this.ABS_X());break;case 89:this.EOR(this.ABS_Y());break;case 9:this.ORA(this.PC+1);break;case 5:this.ORA(this.ZP());break;case 21:this.ORA(this.ZP_X());break;case 18:this.ORA(this.IND());break;case 1:this.ORA(this.IND_X());break;case 17:this.ORA(this.IND_Y());break;case 13:this.ORA(this.ABS());break;case 29:this.ORA(this.ABS_X());break;case 25:this.ORA(this.ABS_Y());break;case 6:t=this.ZP(),this.Set(t,this.ASL(this.Get(t)));break;case 22:t=this.ZP_X(),this.Set(t,this.ASL(this.Get(t)));break;case 14:t=this.ABS(),this.Set(t,this.ASL(this.Get(t)));break;case 30:t=this.ABS_X(),this.Set(t,this.ASL(this.Get(t)));break;case 10:this.A=this.ASL(this.A);break;case 70:t=this.ZP(),this.Set(t,this.LSR(this.Get(t)));break;case 86:t=this.ZP_X(),this.Set(t,this.LSR(this.Get(t)));break;case 78:t=this.ABS(),this.Set(t,this.LSR(this.Get(t)));break;case 94:t=this.ABS_X(),this.Set(t,this.LSR(this.Get(t)));break;case 74:this.A=this.LSR(this.A);break;case 38:t=this.ZP(),this.Set(t,this.ROL(this.Get(t)));break;case 54:t=this.ZP_X(),this.Set(t,this.ROL(this.Get(t)));break;case 46:t=this.ABS(),this.Set(t,this.ROL(this.Get(t)));break;case 62:t=this.ABS_X(),this.Set(t,this.ROL(this.Get(t)));break;case 42:this.A=this.ROL(this.A);break;case 102:t=this.ZP(),this.Set(t,this.ROR(this.Get(t)));break;case 118:t=this.ZP_X(),this.Set(t,this.ROR(this.Get(t)));break;case 110:t=this.ABS(),this.Set(t,this.ROR(this.Get(t)));break;case 126:t=this.ABS_X(),this.Set(t,this.ROR(this.Get(t)));break;case 106:this.A=this.ROR(this.A);break;case 15:this.BBRi(0);break;case 31:this.BBRi(1);break;case 47:this.BBRi(2);break;case 63:this.BBRi(3);break;case 79:this.BBRi(4);break;case 95:this.BBRi(5);break;case 111:this.BBRi(6);break;case 127:this.BBRi(7);break;case 143:this.BBSi(0);break;case 159:this.BBSi(1);break;case 175:this.BBSi(2);break;case 191:this.BBSi(3);break;case 207:this.BBSi(4);break;case 223:this.BBSi(5);break;case 239:this.BBSi(6);break;case 255:this.BBSi(7);break;case 144:this.Branch((this.P&this.CFlag)==0,1);break;case 176:this.Branch((this.P&this.CFlag)==this.CFlag,1);break;case 208:this.Branch((this.P&this.ZFlag)==0,1);break;case 240:this.Branch((this.P&this.ZFlag)==this.ZFlag,1);break;case 16:this.Branch((this.P&this.NFlag)==0,1);break;case 48:this.Branch((this.P&this.NFlag)==this.NFlag,1);break;case 80:this.Branch((this.P&this.VFlag)==0,1);break;case 112:this.Branch((this.P&this.VFlag)==this.VFlag,1);break;case 128:this.Branch(!0,1);break;case 68:this.PC++,this.Push(this.PCH()),this.Push(this.PCL()),this.Branch(!0,0);break;case 32:e=this.ABS(),this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.PC=e,this.ClearTFlag();break;case 64:this.P=this.Pull(),this.toPCL(this.Pull()),this.toPCH(this.Pull());break;case 96:this.ClearTFlag(),this.toPCL(this.Pull()),this.toPCH(this.Pull()),this.PC++;break;case 76:this.PC=this.ABS(),this.ClearTFlag();break;case 108:this.PC=this.ABS_IND(),this.ClearTFlag();break;case 124:this.PC=this.ABS_X_IND(),this.ClearTFlag();break;case 0:this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.SetBFlag(),this.Push(this.P),this.ClearDFlag(),this.ClearTFlag(),this.SetIFlag(),this.PC=this.Get16(65526);break;case 98:this.A=0,this.ClearTFlag();break;case 130:this.X=0,this.ClearTFlag();break;case 194:this.Y=0,this.ClearTFlag();break;case 24:this.ClearCFlag(),this.ClearTFlag();break;case 216:this.ClearDFlag(),this.ClearTFlag();break;case 88:this.ClearIFlag(),this.ClearTFlag();break;case 184:this.ClearVFlag(),this.ClearTFlag();break;case 56:this.SetCFlag(),this.ClearTFlag();break;case 248:this.SetDFlag(),this.ClearTFlag();break;case 120:this.SetIFlag(),this.ClearTFlag();break;case 244:this.SetTFlag();break;case 201:this.Compare(this.A,this.PC+1);break;case 197:this.Compare(this.A,this.ZP());break;case 213:this.Compare(this.A,this.ZP_X());break;case 210:this.Compare(this.A,this.IND());break;case 193:this.Compare(this.A,this.IND_X());break;case 209:this.Compare(this.A,this.IND_Y());break;case 205:this.Compare(this.A,this.ABS());break;case 221:this.Compare(this.A,this.ABS_X());break;case 217:this.Compare(this.A,this.ABS_Y());break;case 224:this.Compare(this.X,this.PC+1);break;case 228:this.Compare(this.X,this.ZP());break;case 236:this.Compare(this.X,this.ABS());break;case 192:this.Compare(this.Y,this.PC+1);break;case 196:this.Compare(this.Y,this.ZP());break;case 204:this.Compare(this.Y,this.ABS());break;case 198:t=this.ZP(),this.Set(t,this.Decrement(this.Get(t)));break;case 214:t=this.ZP_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 206:t=this.ABS(),this.Set(t,this.Decrement(this.Get(t)));break;case 222:t=this.ABS_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 58:this.A=this.Decrement(this.A);break;case 202:this.X=this.Decrement(this.X);break;case 136:this.Y=this.Decrement(this.Y);break;case 230:t=this.ZP(),this.Set(t,this.Increment(this.Get(t)));break;case 246:t=this.ZP_X(),this.Set(t,this.Increment(this.Get(t)));break;case 238:t=this.ABS(),this.Set(t,this.Increment(this.Get(t)));break;case 254:t=this.ABS_X(),this.Set(t,this.Increment(this.Get(t)));break;case 26:this.A=this.Increment(this.A);break;case 232:this.X=this.Increment(this.X);break;case 200:this.Y=this.Increment(this.Y);break;case 72:this.Push(this.A),this.ClearTFlag();break;case 8:this.Push(this.P),this.ClearTFlag();break;case 218:this.Push(this.X),this.ClearTFlag();break;case 90:this.Push(this.Y),this.ClearTFlag();break;case 104:this.A=this.Pull(),this.SetNZFlag(this.A),this.ClearTFlag();break;case 40:this.P=this.Pull();break;case 250:this.X=this.Pull(),this.SetNZFlag(this.X),this.ClearTFlag();break;case 122:this.Y=this.Pull(),this.SetNZFlag(this.Y),this.ClearTFlag();break;case 7:this.RMBi(0);break;case 23:this.RMBi(1);break;case 39:this.RMBi(2);break;case 55:this.RMBi(3);break;case 71:this.RMBi(4);break;case 87:this.RMBi(5);break;case 103:this.RMBi(6);break;case 119:this.RMBi(7);break;case 135:this.SMBi(0);break;case 151:this.SMBi(1);break;case 167:this.SMBi(2);break;case 183:this.SMBi(3);break;case 199:this.SMBi(4);break;case 215:this.SMBi(5);break;case 231:this.SMBi(6);break;case 247:this.SMBi(7);break;case 34:e=this.A,this.A=this.X,this.X=e,this.ClearTFlag();break;case 66:e=this.A,this.A=this.Y,this.Y=e,this.ClearTFlag();break;case 2:e=this.X,this.X=this.Y,this.Y=e,this.ClearTFlag();break;case 170:this.X=this.A,this.SetNZFlag(this.X),this.ClearTFlag();break;case 168:this.Y=this.A,this.SetNZFlag(this.Y),this.ClearTFlag();break;case 186:this.X=this.S,this.SetNZFlag(this.X),this.ClearTFlag();break;case 138:this.A=this.X,this.SetNZFlag(this.A),this.ClearTFlag();break;case 154:this.S=this.X,this.ClearTFlag();break;case 152:this.A=this.Y,this.SetNZFlag(this.A),this.ClearTFlag();break;case 137:this.BIT(this.PC+1);break;case 36:this.BIT(this.ZP());break;case 52:this.BIT(this.ZP_X());break;case 44:this.BIT(this.ABS());break;case 60:this.BIT(this.ABS_X());break;case 131:this.TST(this.PC+1,8192|this.Get(this.PC+2));break;case 163:this.TST(this.PC+1,8192|this.Get(this.PC+2)+this.X&255);break;case 147:this.TST(this.PC+1,this.Get16(this.PC+2));break;case 179:this.TST(this.PC+1,this.Get16(this.PC+2)+this.X&65535);break;case 20:this.TRB(this.ZP());break;case 28:this.TRB(this.ABS());break;case 4:this.TSB(this.ZP());break;case 12:this.TSB(this.ABS());break;case 169:this.A=this.Load(this.PC+1);break;case 165:this.A=this.Load(this.ZP());break;case 181:this.A=this.Load(this.ZP_X());break;case 178:this.A=this.Load(this.IND());break;case 161:this.A=this.Load(this.IND_X());break;case 177:this.A=this.Load(this.IND_Y());break;case 173:this.A=this.Load(this.ABS());break;case 189:this.A=this.Load(this.ABS_X());break;case 185:this.A=this.Load(this.ABS_Y());break;case 162:this.X=this.Load(this.PC+1);break;case 166:this.X=this.Load(this.ZP());break;case 182:this.X=this.Load(this.ZP_Y());break;case 174:this.X=this.Load(this.ABS());break;case 190:this.X=this.Load(this.ABS_Y());break;case 160:this.Y=this.Load(this.PC+1);break;case 164:this.Y=this.Load(this.ZP());break;case 180:this.Y=this.Load(this.ZP_X());break;case 172:this.Y=this.Load(this.ABS());break;case 188:this.Y=this.Load(this.ABS_X());break;case 133:this.Store(this.ZP(),this.A);break;case 149:this.Store(this.ZP_X(),this.A);break;case 146:this.Store(this.IND(),this.A);break;case 129:this.Store(this.IND_X(),this.A);break;case 145:this.Store(this.IND_Y(),this.A);break;case 141:this.Store(this.ABS(),this.A);break;case 157:this.Store(this.ABS_X(),this.A);break;case 153:this.Store(this.ABS_Y(),this.A);break;case 134:this.Store(this.ZP(),this.X);break;case 150:this.Store(this.ZP_Y(),this.X);break;case 142:this.Store(this.ABS(),this.X);break;case 132:this.Store(this.ZP(),this.Y);break;case 148:this.Store(this.ZP_X(),this.Y);break;case 140:this.Store(this.ABS(),this.Y);break;case 100:this.Store(this.ZP(),0);break;case 116:this.Store(this.ZP_X(),0);break;case 156:this.Store(this.ABS(),0);break;case 158:this.Store(this.ABS_X(),0);break;case 234:this.ClearTFlag();break;case 3:this.SetVDCRegister(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 19:this.SetVDCLow(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 35:this.SetVDCHigh(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 83:for(s=this.Get(this.PC+1),i=1,s==0?s=this.MPRSelect:this.MPRSelect=s,a=0;a<8;a++)(s&i<>>13);break;case 243:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+this.TransferAlt&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 195:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc-1&65535,this.TransferDist=this.TransferDist-1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 227:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+this.TransferAlt&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 115:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 211:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 212:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock7;break;case 84:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock1;break;default:this.ClearTFlag();break}this.PC+=this.OpBytes[h],this.ProgressClock=(this.ProgressClock+this.OpCycles[h])*this.CPUBaseClock}Adder(t,e){let s,i=this.Get(t);!e&&(this.P&this.TFlag)==this.TFlag?(this.ProgressClock=3,s=this.Get(8192|this.X)):s=this.A,e&&(i=~i&255);let a=this.P&1,h=s+i+a;(this.P&this.DFlag)==0?((~s&~i&h|s&i&~h)&128)==128?this.SetVFlag():this.ClearVFlag():(this.ProgressClock+=1,e?((h&15)>9&&(h-=6),(h&240)>144&&(h-=96)):((s&15)+(i&15)+a>9&&(h+=6),(h&496)>144&&(h+=96))),h>255?this.SetCFlag():this.ClearCFlag(),h&=255,this.SetNZFlag(h),!e&&(this.P&this.TFlag)==this.TFlag?this.Set(8192|this.X,h):this.A=h,this.ClearTFlag()}ADC(t){this.Adder(t,!1)}SBC(t){this.Adder(t,!0)}AND(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e&s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}EOR(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e^s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ORA(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e|s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ASL(t){return t<<=1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}LSR(t){return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t>>=1,this.SetNZFlag(t),this.ClearTFlag(),t}ROL(t){return t=t<<1|this.P&1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}ROR(t){let e=this.P&this.CFlag;return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t=t>>1|e<<7,this.SetNZFlag(t),this.ClearTFlag(),t}BBRi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==0,2)}BBSi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==1,2)}Branch(t,e){if(this.ClearTFlag(),t){let s=this.Get(this.PC+e);s>=128&&(s|=65280),this.PC=this.PC+e+1+s&65535,this.ProgressClock=2}else this.PC+=e+1}Compare(t,e){t-=this.Get(e),t<0?this.ClearCFlag():this.SetCFlag(),this.ClearTFlag(),this.SetNZFlag(t&255)}Decrement(t){return t=t-1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Increment(t){return t=t+1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Push(t){this.Set(8448|this.S,t),this.S=this.S-1&255}Pull(){return this.S=this.S+1&255,this.Get(8448|this.S)}RMBi(t){let e=this.ZP();this.Set(e,this.Get(e)&~(1<>8}PCL(){return this.PC&255}toPCH(t){this.PC=this.PC&255|t<<8}toPCL(t){this.PC=this.PC&65280|t}StorageConstruct(){this.MPR=new Array(8),this.MPRSelect=0,this.RAM=new Uint8Array(32768),this.RAMMask=8191,this.BRAM=new Uint8Array(8192).fill(0),this.BRAMUse=!1,this.INTIRQ2=0,this.IntDisableRegister=0,this.Mapper=null,this.Mapper0=class extends this.MapperBase{constructor(t,e){super(t,e);let s=this.ROM.length-1;for(this.Address=524288;this.Address>0&&(this.Address&s)==0;)this.Address>>>=1}Read(t){return t>=this.ROM.length?this.ROM[t&this.Address-1|this.Address]:this.ROM[t]}},this.Mapper1=class extends this.MapperBase{constructor(t,e){super(t,e),this.Address=0}Init(){this.Address=0}Read(t){return t<524288?this.ROM[t]:this.ROM[this.Address|t&524287]}Write(t,e){this.Address=(t&15)+1<<19}},this.Mapper2=class extends this.MapperBase{constructor(t,e){super(t,e),this.ROM=t}Read(t){return this.ROM[t]||0}Write(t,e){t>=524288&&(this.ROM[t]=e)}}}GetIntStatus(){return~this.IntDisableRegister&this.GetIntReqest()}GetIntDisable(){return this.IntDisableRegister}SetIntDisable(t){this.IntDisableRegister=t,this.TimerAcknowledge()}GetIntReqest(){return(((this.VDC[0].VDCStatus|this.VDC[1].VDCStatus)&63)!=0?this.IRQ1Flag:0)|this.INTIRQ2|this.INTTIQ}SetIntReqest(t){this.TimerAcknowledge()}SetROM(t){this.Init();let e=t.slice(t.length%8192);this.Mapper=new this.Mapper0(e,this),this.CPUReset()}StorageInit(){this.RAM.fill(0),this.RAMMask=this.SuperGrafx?32767:8191,this.StorageReset()}StorageReset(){this.IntDisableRegister=0;for(let t=0;t<7;t++)this.MPR[t]=2088960;this.MPR[7]=0,this.MPRSelect=1}Get16(t){return this.Get(t+1)<<8|this.Get(t)}Get(t){if(t=this.MPR[t>>13]|t&8191,t<1048576)return this.Mapper.Read(t);if(t<2023424)return 255;if(t<2031616)return this.BRAMUse?this.BRAM[t&8191]:255;if(t<2064384)return this.RAM[t&this.RAMMask];if(t<2088960)return 255;if(t<2089984)if(this.SuperGrafx){let e=t&31;if(e<8)switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}else{if(e<16)return this.GetVPC(e&7);if(e<24)switch(t&3){case 0:return this.GetVDCStatus(1);case 1:return 0;case 2:return this.GetVDCLow(1);case 3:return this.GetVDCHigh(1)}else return 255}}else switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}if(t<2091008)switch(t&7){case 4:return this.GetVCEDataLow();case 5:return this.GetVCEDataHigh();default:return 0}if(t<2092032)return this.GetPSG(t&15);if(t<2093056)return this.ReadTimerCounter();if(t<2094080)return this.GetJoystick();if(t<2095104)switch(t&3){case 2:return this.GetIntDisable();case 3:return this.GetIntReqest();default:return 0}return 255}Set(t,e){if(t=this.MPR[t>>13]|t&8191,t<1048576){this.Mapper.Write(t,e);return}if(!(t<2023424)){if(t<2031616){this.BRAMUse&&(this.BRAM[t&8191]=e);return}if(t<2064384){this.RAM[t&this.RAMMask]=e;return}if(!(t<2088960)){if(t<2089984){if(this.SuperGrafx){let s=t&31;if(s<8)switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}else if(s<16)this.SetVPC(s&7,e);else if(s<24)switch(t&3){case 0:this.SetVDCRegister(e,1);break;case 2:this.SetVDCLow(e,1);break;case 3:this.SetVDCHigh(e,1);break}}else switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 1:break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}return}if(t<2091008){switch(t&7){case 0:this.SetVCEControl(e);break;case 2:this.SetVCEAddressLow(e);break;case 3:this.SetVCEAddressHigh(e);break;case 4:this.SetVCEDataLow(e);break;case 5:this.SetVCEDataHigh(e);break}return}if(t<2092032){this.SetPSG(t&15,e);return}if(t<2093056){switch(t&1){case 0:this.WirteTimerReload(e);break;case 1:this.WirteTimerControl(e);break}return}if(t<2094080){this.SetJoystick(e);return}if(t<2095104){switch(t&3){case 2:this.SetIntDisable(e);break;case 3:this.SetIntReqest(e);break}return}}}}VCEConstruct(){this.Palette=new Array(512),this.PaletteData=new Array(512),this.MonoPaletteData=new Array(512),this.VCEBaseClock=0,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}VCEInit(){this.Palette.fill(0);for(let t=0;t<512;t++)this.PaletteData[t]={r:0,g:0,b:0},this.MonoPaletteData[t]={r:0,g:0,b:0};this.VCEBaseClock=this.BaseClock5,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}SetVCEControl(t){switch(this.VCEControl=t,t&3){case 0:this.VCEBaseClock=this.BaseClock5;break;case 1:this.VCEBaseClock=this.BaseClock7;break;case 2:case 3:this.VCEBaseClock=this.BaseClock10;break}}SetVCEAddressLow(t){this.VCEAddress=this.VCEAddress&65280|t}SetVCEAddressHigh(t){this.VCEAddress=(this.VCEAddress&255|t<<8)&511}GetVCEDataLow(){return this.Palette[this.VCEAddress]&255}GetVCEDataHigh(){let t=(this.Palette[this.VCEAddress]&65280)>>8;return this.VCEAddress=this.VCEAddress+1&511,t}SetVCEDataLow(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&65280|t,this.ToPalettes()}SetVCEDataHigh(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&255|t<<8,this.ToPalettes(),this.VCEAddress=this.VCEAddress+1&511}ToPalettes(){let t=this.Palette[this.VCEAddress],e=this.PaletteData[this.VCEAddress];e.r=(t>>3&7)*36,e.g=(t>>6&7)*36,e.b=(t&7)*36;let s=e.r*.299+e.g*.587+e.b*.114;this.MonoPaletteData[this.VCEAddress].r=s,this.MonoPaletteData[this.VCEAddress].g=s,this.MonoPaletteData[this.VCEAddress].b=s}VPCConstruct(){this.VPCRegister=new Uint8Array(8),this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority=new Uint8Array(4)}VPCInit(){this.VPCRegister.fill(0),this.VPCRegister[0]=17,this.VPCRegister[1]=17,this.VPCRegister[7]=255,this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority.fill(1)}SetVPC(t,e){t!=7&&(this.VPCRegister[t]=e,t==6&&(this.VDCSelect=e&1),(t==2||t==3)&&(this.VPCWindow1=(this.VPCRegister[2]|(this.VPCRegister[3]&3)<<8)-64,this.VPCWindow1<0&&(this.VPCWindow1=1024)),(t==4||t==5)&&(this.VPCWindow2=(this.VPCRegister[4]|(this.VPCRegister[5]&3)<<8)-64,this.VPCWindow2<0&&(this.VPCWindow2=-1)),t==0&&(this.VPCPriority[2]=this.VPCRegister[0]>>4,this.VPCPriority[3]=this.VPCRegister[0]&15),t==1&&(this.VPCPriority[0]=this.VPCRegister[1]>>4,this.VPCPriority[1]=this.VPCRegister[1]&15))}GetVPC(t){return this.VPCRegister[t]}VDCConstruct(){this.DrawFlag=!1,this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.VDC=new Array(2),this.VDCLineClock=1368,this.ScreenSize=[],this.ScreenSize[this.BaseClock5]=342,this.ScreenSize[this.BaseClock7]=456,this.ScreenSize[this.BaseClock10]=684,this.PutScreenSize=[],this.PutScreenSize[this.BaseClock5]=320,this.PutScreenSize[this.BaseClock7]=428,this.PutScreenSize[this.BaseClock10]=640,this.ScreenHeightMAX=262,this.ScreenWidthMAX=684,this.VScreenWidthArray=[],this.VScreenWidthArray[0]=32,this.VScreenWidthArray[16]=64,this.VScreenWidthArray[32]=128,this.VScreenWidthArray[48]=128,this.ReverseBit=new Uint8Array(256),this.ReverseBit=this.ReverseBit.map((t,e)=>(e&128)>>7|(e&64)>>5|(e&32)>>3|(e&16)>>1|(e&8)<<1|(e&4)<<3|(e&2)<<5|(e&1)<<7),this.ReverseBit16=new Uint16Array(65536).fill(0),this.ReverseBit16=this.ReverseBit16.map((t,e)=>this.ReverseBit[e&255]<<8|this.ReverseBit[(e&65280)>>8]),this.ReverseBit256=new Uint32Array(256).fill(0),this.ReverseBit256=this.ReverseBit256.map((t,e)=>{let s=this.ReverseBit[e];return(s&128)<<21|(s&64)<<18|(s&32)<<15|(s&16)<<12|(s&8)<<9|(s&4)<<6|(s&2)<<3|(s&1)<<0}),this.SPAddressMask=[],this.SPAddressMask[16]=[],this.SPAddressMask[32]=[],this.SPAddressMask[16][16]=2046,this.SPAddressMask[16][32]=2042,this.SPAddressMask[16][64]=2034,this.SPAddressMask[32][16]=2044,this.SPAddressMask[32][32]=2040,this.SPAddressMask[32][64]=2032}MakeSpriteLine(t){let e=this.VDC[t],s=e.SPLine;for(let o=0;o>8)+16;if(l=l>32?64:l,aP+l-1)continue;let x=(r[S+1]&1023)-32,C=((F&256)>>4)+16;if(x+C<=0)continue;let A=a-P;(F&32768)==32768&&(A=l-1-A);let c=(r[S+2]&this.SPAddressMask[C][l])<<5|((A&48)<<3|A&15),k,b,g,D;(F&2048)==0?(k=n[h[c]],b=n[h[c+16]],g=n[h[c+32]],D=n[h[c+48]],C==32&&(k|=n[h[c|64]]<<16,b|=n[h[(c|64)+16]]<<16,g|=n[h[(c|64)+32]]<<16,D|=n[h[(c|64)+48]]<<16)):(k=h[c],b=h[c+16],g=h[c+32],D=h[c+48],C==32&&(k=k<<16|h[c|64],b=b<<16|h[(c|64)+16],g=g<<16|h[(c|64)+32],D=D<<16|h[(c|64)+48]));let d=(F&15)<<4|256,L=F&128,B=0;for(x<0&&(B-=x,x=0);B>>B&1|b>>>B<<1&2|g>>>B<<2&4|D>>>B<<3&8;T!=0&&(f.data=T,f.palette=d,f.priority=L)}if(f.no==255&&(f.no=o),o!=0&&f.no==0&&(e.VDCStatus|=e.VDCRegister[5]&1),++i==256&&(e.VDCStatus|=e.VDCRegister[5]&2,e.SpriteLimit))return}}}MakeBGLine(t){let e=this.VDC[t],s=e.SPLine,i=e.BGLine,a=e.ScreenWidth,h=(e.HDS+e.HSW<<3)+e.DrawBGIndex;if((e.VDCRegister[5]&128)==128){let r=e.VScreenWidth-1,n=e.VDCRegister[7],o=n>>3&r;n=(n&7)<<2;let S=e.DrawBGLine,P=(S>>3&e.VScreenHeight-1)*e.VScreenWidth;S=S&7;let F=e.VRAM,l=0,x=this.ReverseBit256;for(;l>8,k=F[A],b=F[A+8],g=x[k&255]|x[(k&65280)>>8]<<1|x[b&255]<<2|x[(b&65280)>>8]<<3;for(;n<32&&l>>n&15,d=s[l];i[l+h]=d.data!=0&&(D==0||d.priority==128)?d.data|d.palette:D|(D==0?0:c)}n=0,o=o+1&r}}else for(let r=0;r0&&(e.VRAMtoSATBCount-=this.ProgressClock,e.VRAMtoSATBCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&1)<<3)),e.VRAMtoVRAMCount>0&&(e.VRAMtoVRAMCount-=this.ProgressClock,e.VRAMtoVRAMCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&2)<<3))}VDCProcess(t){let e=this.VDC[t];e.VDCProgressClock-=this.VDCLineClock,e.DrawBGIndex=0,e.BGLine.fill(256);for(let s=0;s261&&(i-=261),e.DrawBGYLine==i&&(e.VDCStatus|=(e.VDCRegister[5]&8)<<2,e.VRAMtoSATBStartFlag)){for(let a=0,h=e.VDCRegister[19];a<256;a++,h++)e.SATB[a]=e.VRAM[h];e.VRAMtoSATBCount=256*this.VCEBaseClock,e.VDCStatus|=64,e.VRAMtoSATBStartFlag=(e.VDCRegister[15]&16)==16}e.RasterCount++,e.DrawBGYLine==e.VDS+e.VSW-1&&(e.RasterCount=64),e.RasterCount==e.VDCRegister[6]&&(e.VDCStatus&32)==0&&(e.VDCStatus|=e.VDCRegister[5]&4),e.DrawBGIndex+=e.DrawLineWidth}}VDCRun(){for(this.VDCProcessDMA(0),this.VDC[0].VDCProgressClock+=this.ProgressClock,this.SuperGrafx&&(this.VDCProcessDMA(1),this.VDC[1].VDCProgressClock+=this.ProgressClock);this.VDC[0].VDCProgressClock>=this.VDCLineClock;)this.VDCProcess(0),this.SuperGrafx&&this.VDCProcess(1);if(this.VDCPutLineProgressClock+=this.ProgressClock,this.VDCPutLineProgressClock>=this.VDCLineClock){this.VDCPutLineProgressClock-=this.VDCLineClock,this.VDCPutLine++,this.VDCPutLine==this.ScreenHeightMAX&&(this.VDCPutLine=0,this.GetScreenSize(0),this.VDC[0].DrawBGYLine=0,this.SuperGrafx&&(this.GetScreenSize(1),this.VDC[1].DrawBGYLine=0),this.DrawFlag=!0,this.Ctx.putImageData(this.ImageData,0,0));let t=(this.VCEControl&128)==0?this.PaletteData:this.MonoPaletteData,e=this.ImageData.data,s=this.VDCPutLine*this.ScreenWidthMAX*4,i=t[256],a=this.ScreenSize[this.VCEBaseClock],h=this.VDC[0].BGLine;if(this.SuperGrafx){let r=this.VPCWindow1,n=this.VPCWindow2,o=this.VPCPriority,S=this.VDC[1].BGLine;for(let P=0;P=r&&(F|=1),P<=n&&(F|=2);let l=h[P],x=S[P],C;switch(o[F]){case 7:l>256||x>256?C=t[l>256?l:x]:C=t[(l&255)!=0?l:x];break;case 11:l<256&&l!=0?C=t[l]:C=t[(x&255)!=0?x:l];break;case 3:case 15:C=t[(l&255)!=0?l:x];break;case 1:case 5:case 9:case 13:C=t[l];break;case 2:case 6:case 10:case 14:C=t[x];break;default:C=i;break}e[s]=C.r,e[s+1]=C.g,e[s+2]=C.b}}else for(let r=0;rthis.ScreenWidthMAX&&(e.ScreenWidth=this.ScreenWidthMAX),e.HDS=(s[10]&32512)>>8,e.HSW=s[10]&31,e.HDE=(s[11]&32512)>>8,e.HDW=s[11]&127,e.VDS=(s[12]&65280)>>8,e.VSW=s[12]&31,e.VDW=s[13]&511,e.VCR=s[14]&255,e.ScreenSize=this.ScreenSize[this.VCEBaseClock],this.MainCanvas.width!=e.ScreenSize&&(this.MainCanvas.width=this.PutScreenSize[this.VCEBaseClock]),e.DrawLineWidth=e.HDS+e.HSW+e.HDE+e.HDW+1<<3,e.DrawLineWidth<=this.ScreenSize[this.BaseClock5]?e.DrawLineWidth=this.ScreenSize[this.BaseClock5]:e.DrawLineWidth<=this.ScreenSize[this.BaseClock7]?e.DrawLineWidth=this.ScreenSize[this.BaseClock7]:e.DrawLineWidth=this.ScreenSize[this.BaseClock10],e.VDCBurst=(s[5]&192)==0}VDCInit(){this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.DrawFlag=!1;for(let t=0;t<2;t++){this.VDC[t]={VDCRegister:new Uint16Array(20).fill(0),VRAM:new Uint16Array(65536).fill(0),SATB:new Uint16Array(256).fill(0),VDCBurst:!1,SpriteLimit:!1,SPLine:new Array(this.ScreenWidthMAX),BGLine:new Array(this.ScreenWidthMAX).fill(0),VDCStatus:0,VDCRegisterSelect:0,WriteVRAMData:0,VRAMtoSATBStartFlag:!1,VRAMtoSATBCount:0,VRAMtoVRAMCount:0,RasterCount:64,VDCProgressClock:0,DrawBGYLine:0,DrawBGLine:0,VScreenWidth:0,VScreenHeight:0,VScreenHeightMask:0,ScreenWidth:0,ScreenSize:0,DrawLineWidth:0,DrawBGIndex:0,HDS:0,HSW:0,HDE:0,HDW:0,VDS:0,VSW:0,VDW:0,VCR:0};for(let e=0;e0;n--)o[r]=o[h],h=h+i&65535,r=r+a&65535;return}s.VDCRegisterSelect==19&&(s.VRAMtoSATBStartFlag=!0)}GetVRAMIncrement(t){switch(this.VDC[t].VDCRegister[5]&6144){case 0:return 1;case 2048:return 32;case 4096:return 64;case 6144:return 128}}GetVDCStatus(t){let e=this.VDC[t].VDCStatus;return this.VDC[t].VDCStatus&=64,e}GetVDCLow(t){return this.VDC[t].VDCRegister[this.VDC[t].VDCRegisterSelect]&255}GetVDCHigh(t){let e=this.VDC[t];if(e.VDCRegisterSelect==2||e.VDCRegisterSelect==3){let s=(e.VDCRegister[2]&65280)>>8;return e.VDCRegister[2]=e.VRAM[e.VDCRegister[1]],e.VDCRegister[3]=e.VDCRegister[2],e.VDCRegister[1]=e.VDCRegister[1]+this.GetVRAMIncrement(t)&65535,s}return(e.VDCRegister[e.VDCRegisterSelect]&65280)>>8}SoundConstruct(){this.WaveDataArray=[],this.WaveClockCounter=0,this.WaveVolume=1,this.WebAudioCtx=null,this.WebAudioJsNode=null,this.WebAudioGainNode=null,this.WebAudioBufferSize=2048,this.PSGClock=3579545}WebAudioFunction(t){let e=[],s=[];for(let i=0;i<2;i++){if(e[i]=t.outputBuffer.getChannelData(i),s[i]=new Float32Array(this.WebAudioBufferSize),this.WaveDataArray[i].lengththis.WebAudioBufferSize*2&&(this.WaveDataArray[i]=this.WaveDataArray[i].slice(this.WebAudioBufferSize))}e[i].set(s[i])}}SoundInit(){this.WaveClockCounter=0,this.WaveDataArray=[],this.WaveDataArray[0]=[],this.WaveDataArray[1]=[],typeof AudioContext!="undefined"&&this.WebAudioCtx==null&&this.CreateAudioContext()}CreateAudioContext(){this.WebAudioCtx=new window.AudioContext,this.WebAudioJsNode=this.WebAudioCtx.createScriptProcessor(this.WebAudioBufferSize,0,2),this.WebAudioJsNode.onaudioprocess=this.WebAudioFunction.bind(this),this.WebAudioGainNode=this.WebAudioCtx.createGain(),this.WebAudioJsNode.connect(this.WebAudioGainNode),this.WebAudioGainNode.connect(this.WebAudioCtx.destination)}SoundSet(){let t,e,s,i,a,h;if(this.WaveClockCounter+=this.WebAudioCtx.sampleRate,this.WaveClockCounter>=this.PSGClock){for(this.WaveClockCounter-=this.PSGClock,t=0,e=0,a=0;a<6;a++)(a!=1||!this.WaveLfoOn)&&(s=this.PSGChannel[a],a<4||!s.noiseon?h=s.keyon?s.dda?s.R[6]&31:s.wave[s.index]:0:h=(s.noise&1)==1?15:0,t+=h*s.leftvol,e+=h*s.rightvol);this.WaveDataArray[0].push(t*this.WaveVolumeLeft),this.WaveDataArray[1].push(e*this.WaveVolumeRight),this.WebAudioGainNode.gain.value=this.WaveVolume}}PSGConstruct(){this.PSGChannel=new Array(6),this.PSGBaseClock=this.BaseClock3,this.PSGProgressClock=0,this.WaveVolumeLeft=0,this.WaveVolumeRight=0,this.WaveLfoOn=!1,this.WaveLfoControl=0,this.WaveLfoFreqency=0}PSGInit(){this.SoundInit();for(let t=0;t0;){for(e--,s=0,this.WaveLfoOn&&(i=this.PSGChannel[0],a=this.PSGChannel[1],i.keyon&&(i.count==0?(i.index=i.index+1&31,h=0,this.WaveLfoControl!=0&&(h=a.wave[a.index],h=h>15?h-32:h&15,h<<=4*(this.WaveLfoControl-1)),h=i.freq+h,h<0&&(h=0),i.count=h):i.count--,a.count==0?(a.index=a.index+1&31,a.count=a.freq*this.WaveLfoFreqency):a.count--),s=2);s<6;s++)t=this.PSGChannel[s],s<4||!t.noiseon?t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.count=t.freq):t.count--):t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.index==0&&(t.noise=t.noise>>1|(t.noise<<12^t.noise<<15)&32768),t.count=t.noisefreq):t.count--);this.SoundSet()}}SetPSG(t,e){if(t==0){this.PSGChannel[0].R[0]=e&7;return}if(this.PSGChannel[0].R[0]>5)return;let s=this.PSGChannel[this.PSGChannel[0].R[0]];switch(s.R[t]=e,t){case 1:this.PSGChannel[0].R[1]=e,this.WaveVolumeLeft=(e&240)>>4,this.WaveVolumeRight=e&15;return;case 2:case 3:s.freq=(s.R[3]<<8|s.R[2])&4095;return;case 4:s.keyon=(e&128)==128,s.dda=(e&64)==64,(e&64)==64&&(s.index=0),s.vol=e&31;case 5:let i=s.R[4]&31;s.leftvol=((s.R[5]&240)>>4)*i,s.rightvol=(s.R[5]&15)*i;return;case 6:s.dda||(s.wave[s.index]=e&31,s.index=s.index+1&31);return;case 7:s.noiseon=(e&128)==128,s.noisefreq=e&31^31;return;case 8:this.PSGChannel[0].R[8]=e,this.WaveLfoFreqency=e;return;case 9:this.PSGChannel[0].R[9]=e,this.WaveLfoOn=(e&128)==128,this.WaveLfoControl=e&3;return}}GetPSG(t){return t>9?255:t==0||t==1||t==8||t==9?this.PSGChannel[0].R[t]:this.PSGChannel[0].R[0]>5?255:this.PSGChannel[this.PSGChannel[0].R[0]].R[t]}TimerConstruct(){this.TimerBaseClock=this.BaseClock7,this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}TimerInit(){this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}ReadTimerCounter(){return this.TimerCounter}TimerAcknowledge(){this.INTTIQ=0}WirteTimerReload(t){this.TimerReload=t&127}WirteTimerControl(t){!this.TimerFlag&&(t&1)==1&&(this.TimerCounter=this.TimerReload,this.TimerPrescaler=0),this.TimerFlag=(t&1)==1}TimerRun(){if(this.TimerFlag)for(this.TimerPrescaler+=this.ProgressClock;this.TimerPrescaler>=1024*this.TimerBaseClock;)this.TimerPrescaler-=1024*this.TimerBaseClock,this.TimerCounter--,this.TimerCounter<0&&(this.TimerCounter=this.TimerReload,this.INTTIQ=this.TIQFlag)}JoystickConstruct(){this.JoystickSEL=0,this.JoystickCLR=0,this.KeyUpFunction=null,this.KeyDownFunction=null,this.Keybord=new Array(5).fill([]),this.Keybord=this.Keybord.map(t=>new Array(4)),this.GamePad=new Array(5).fill([]),this.GamePad=this.Keybord.map(t=>new Array(4)),this.GamePadSelect=0,this.GamePadButtonSelect=0,this.GamePadBuffer=0,this.GamePadData=[],this.GamePadData["STANDARD PAD"]=[[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:2}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}]],[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:2}],[{type:"B",index:3}]]],this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"]=[[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:0}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}]],[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:0}],[{type:"B",index:3}]]],this.GamePadData["0f0d-0009-HORI PAD 3 TURBO"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadData["UNKNOWN PAD"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadKeyData=[{index:0,data:1},{index:0,data:2},{index:0,data:4},{index:0,data:8},{index:1,data:1},{index:1,data:4},{index:1,data:8},{index:1,data:2},{index:2,data:1},{index:2,data:2},{index:2,data:4},{index:2,data:8}],this.GamePadPovData=[1,3,2,6,4,12,8,9]}JoystickInit(){this.JoystickSEL=0,this.JoystickCLR=0;for(let t=0;t>1;if(this.JoystickSEL==1&&this.JoystickCLR==0&&e==1&&s==1){this.JoystickSEL=0,this.JoystickCLR=0,this.GamePadSelect=0,this.GamePadButton6&&(this.GamePadButtonSelect=this.GamePadButtonSelect^2),this.GamePadBuffer=176|this.CountryType;return}this.JoystickSEL==0&&this.JoystickCLR==0&&e==1&&s==0&&this.GamePadSelect++,this.JoystickSEL=e,this.JoystickCLR=s;let i=this.MultiTap?this.GamePadSelect-1:0;if(i<5){let a=this.GamePadButtonSelect|this.JoystickSEL;this.GamePadBuffer=this.Keybord[i][a]&this.GamePad[i][a]|this.CountryType}else this.GamePadBuffer=176|this.CountryType}GetJoystick(){return this.GamePadBuffer}UnsetButtonRUN(t){this.Keybord[t][0]|=8}UnsetButtonSELECT(t){this.Keybord[t][0]|=4}UnsetButtonSHOT2(t){this.Keybord[t][0]|=2}UnsetButtonSHOT1(t){this.Keybord[t][0]|=1}UnsetButtonLEFT(t){this.Keybord[t][1]|=8}UnsetButtonDOWN(t){this.Keybord[t][1]|=4}UnsetButtonRIGHT(t){this.Keybord[t][1]|=2}UnsetButtonUP(t){this.Keybord[t][1]|=1}UnsetButtonSHOT6(t){this.Keybord[t][2]|=8}UnsetButtonSHOT5(t){this.Keybord[t][2]|=4}UnsetButtonSHOT4(t){this.Keybord[t][2]|=2}UnsetButtonSHOT3(t){this.Keybord[t][2]|=1}SetButtonRUN(t){this.Keybord[t][0]&=-9}SetButtonSELECT(t){this.Keybord[t][0]&=-5}SetButtonSHOT2(t){this.Keybord[t][0]&=-3}SetButtonSHOT1(t){this.Keybord[t][0]&=-2}SetButtonLEFT(t){this.Keybord[t][1]&=-9}SetButtonDOWN(t){this.Keybord[t][1]&=-5}SetButtonRIGHT(t){this.Keybord[t][1]&=-3}SetButtonUP(t){this.Keybord[t][1]&=-2}SetButtonSHOT6(t){this.Keybord[t][2]&=-9}SetButtonSHOT5(t){this.Keybord[t][2]&=-5}SetButtonSHOT4(t){this.Keybord[t][2]&=-3}SetButtonSHOT3(t){this.Keybord[t][2]&=-2}CheckKeyUpFunction(t){switch(t.keyCode){case u.START.c:this.UnsetButtonRUN(0);break;case u.SELECT.c:this.UnsetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.UnsetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.UnsetButtonSHOT1(0);break;case 86:this.UnsetButtonSHOT2(0);break;case 66:this.UnsetButtonSHOT1(0);break;case 37:this.UnsetButtonLEFT(0);break;case 39:this.UnsetButtonRIGHT(0);break;case 40:this.UnsetButtonDOWN(0);break;case 38:this.UnsetButtonUP(0);break;case 71:this.UnsetButtonSHOT6(0);break;case 70:this.UnsetButtonSHOT5(0);break;case 68:this.UnsetButtonSHOT4(0);break;case 67:this.UnsetButtonSHOT3(0);break}}CheckKeyDownFunction(t){switch(t.keyCode){case u.START.c:this.SetButtonRUN(0);break;case u.SELECT.c:this.SetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.SetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.SetButtonSHOT1(0);break;case 86:this.SetButtonSHOT2(0);break;case 66:this.SetButtonSHOT1(0);break;case 37:this.SetButtonLEFT(0);break;case 39:this.SetButtonRIGHT(0);break;case 40:this.SetButtonDOWN(0);break;case 38:this.SetButtonUP(0);break;case 71:this.SetButtonSHOT6(0);break;case 70:this.SetButtonSHOT5(0);break;case 68:this.SetButtonSHOT4(0);break;case 67:this.SetButtonSHOT3(0);break}}JoystickEventInit(){this.KeyUpFunction=this.CheckKeyUpFunction.bind(this),this.KeyDownFunction=this.CheckKeyDownFunction.bind(this),this.MainCanvas.addEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.addEventListener("keydown",this.KeyDownFunction,!0)}JoystickEventRelease(){this.MainCanvas.removeEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.removeEventListener("keydown",this.KeyDownFunction,!0)}CheckGamePad(){for(let e=0;e.5&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"AB":s.axes[r.index]>-.75&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"P":let n=(s.axes[r.index]+1)*7/2+.5|0;this.GamePad[e][1]&=~(n<=7?this.GamePadPovData[n]:0);break}a++}}}}}; +//# sourceMappingURL=pce-ED7Y5QEG.js.map diff --git a/gen/pce-ED7Y5QEG.js.map b/gen/pce-ED7Y5QEG.js.map new file mode 100644 index 00000000..3198d054 --- /dev/null +++ b/gen/pce-ED7Y5QEG.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../src/platform/pce.ts"], + "sourcesContent": ["import { DisasmLine, Platform, Preset, getToolForFilename_6502 } from \"../common/baseplatform\";\nimport { Keys, PLATFORMS, RasterVideo } from \"../common/emu\";\n\nconst PCE_PRESETS = [\n { id: 'gfxtest.c', name: 'Graphics Test (tiles/sprites)' },\n { id: 'perftest.c', name: 'Graphics Pipeline Benchmark' },\n { id: 'solarian.c', name: 'Solarian' },\n { id: 'chase.c', name: 'Chase' },\n { id: 'test_conio.c', name: 'Hello World (conio)' },\n { id: 'siegegame.c', name: 'Siege Game (conio)' },\n { id: 'hello.wiz', name: 'Hello World (Wiz)' },\n]\n\nclass PCEnginePlatform implements Platform {\n mainElement: HTMLElement;\n pce: PCE;\n video: RasterVideo;\n\n constructor(mainElement) {\n this.mainElement = mainElement;\n }\n start(): void | Promise {\n this.pce = new PCE();\n this.video = new RasterVideo(this.mainElement, 684, 262, { overscan: true, aspect: 4 / 3 });\n this.video.create();\n this.pce.SetCanvas(this.video.canvas);\n }\n reset(): void {\n this.pce.Reset();\n }\n isRunning(): boolean {\n return this.pce.TimerID != null;\n }\n pause(): void {\n this.pce.Pause();\n }\n resume(): void {\n this.pce.CreateAudioContext();\n this.pce.Start();\n }\n getPresets(): Preset[] {\n return PCE_PRESETS;\n }\n loadROM(title: string, rom: Uint8Array) {\n this.pce.Pause();\n this.pce.Init();\n this.pce.SetROM(rom);\n }\n // headless hosts drive frames through advance(); the IDE uses the\n // requestAnimationFrame loop that resume() starts\n advance(novideo?: boolean): number {\n this.pce.Run();\n return 1;\n }\n getPlatformName(): string {\n return \"PC Engine\";\n }\n getToolForFilename(fn: string): string {\n return getToolForFilename_6502(fn);\n }\n getDefaultExtensions() {\n return [\".c\", \".cpp\", \".acme\", \".xa\", \".ca65\", \".dasm\", \".ecs\", \".wiz\"];\n }\n showHelp() {\n return \"https://8bitworkshop.com/docs/platforms/pce/\";\n }\n readAddress(addr: number): number {\n return this.pce.Get(addr);\n }\n writeAddress(addr: number, value: number): void {\n this.pce.Set(addr, value);\n }\n readVRAMAddress(addr: number): number {\n return this.pce.VDC[0].VRAM[addr];\n }\n // TODO\n /*\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassembleHuC6280(pc, read(pc), read(pc + 1), read(pc + 2));\n }\n */\n}\n\nPLATFORMS['pce'] = PCEnginePlatform;\n\n/*\n\nhttps://github.com/yhzmr442/jspce\n\nMIT License\n\nCopyright (c) 2019 yhzmr442\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nclass PCE {\n SuperGrafx: boolean;\n CountryTypePCE: number;\n CountryTypeTG16: number;\n CountryType: any;\n GamePadButton6: boolean;\n MultiTap: boolean;\n TimerID: number | null; c\n MainCanvas: HTMLCanvasElement | null = null;\n Ctx: CanvasRenderingContext2D | null = null;\n ImageData: ImageData | null = null;\n DrawFlag: boolean;\n Mapper: any;\n OpCycles: number[];\n OpBytes: number[];\n A: number;\n X: number;\n Y: number;\n PC: number;\n S: number;\n P: number;\n NZCacheTable: Uint8Array;\n NFlag: number;\n VFlag: number;\n TFlag: number;\n BFlag: number;\n DFlag: number;\n IFlag: number;\n ZFlag: number;\n CFlag: number;\n TIQFlag: number;\n IRQ1Flag: number;\n IRQ2Flag: number;\n ProgressClock: number;\n CPUBaseClock: number;\n BaseClock1: number;\n BaseClock3: number;\n BaseClock5: number;\n BaseClock7: number;\n BaseClock10: number;\n TransferSrc: number;\n TransferDist: number;\n TransferLen: number;\n TransferAlt: number;\n LastInt: number;\n MPRSelect: any;\n MPR: any;\n RAM: Uint8Array;\n RAMMask: number;\n BRAM: Uint8Array;\n BRAMUse: boolean;\n INTIRQ2: number;\n IntDisableRegister: number;\n MapperBase = class {\n ROM: number[];\n Core: any;\n constructor(rom, core) {\n this.ROM = rom;\n this.Core = core;\n }\n\n Init() {\n }\n\n Read(address) {\n return 0xFF;\n }\n\n Write(address, data) {\n }\n };\n Mapper0: typeof this.MapperBase;\n Mapper1: typeof this.MapperBase;\n Mapper2: typeof this.MapperBase;\n VDC: any[];\n INTTIQ: number;\n Palette: any[];\n PaletteData: any[];\n MonoPaletteData: any[];\n VCEBaseClock: number;\n VCEControl: number;\n VCEAddress: number;\n VCEData: number;\n VPCRegister: Uint8Array;\n VPCWindow1: number;\n VPCWindow2: number;\n VPCPriority: Uint8Array;\n VDCPutLineProgressClock: number;\n VDCPutLine: number;\n VDCLineClock: number;\n ScreenSize: any[];\n PutScreenSize: any[];\n VScreenWidthArray: any[];\n ReverseBit: Uint8Array;\n ReverseBit16: Uint16Array;\n ReverseBit256: Uint32Array;\n SPAddressMask: any[];\n WaveDataArray: any[];\n WaveClockCounter: number;\n WaveVolume: number;\n WebAudioCtx: AudioContext;\n WebAudioJsNode: any;\n WebAudioGainNode: any;\n WebAudioBufferSize: number;\n PSGClock: number;\n WaveLfoOn: any;\n PSGChannel: any;\n WaveVolumeLeft: any;\n WaveVolumeRight: any;\n PSGBaseClock: any;\n PSGProgressClock: number;\n WaveLfoControl: number;\n WaveLfoFreqency: number;\n TimerBaseClock: any;\n TimerReload: number;\n TimerFlag: boolean;\n TimerCounter: number;\n TimerPrescaler: number;\n JoystickSEL: number;\n JoystickCLR: number;\n KeyUpFunction: null;\n KeyDownFunction: null;\n Keybord: any[];\n GamePad: any[];\n GamePadSelect: number;\n GamePadButtonSelect: number;\n GamePadBuffer: number;\n GamePadData: any[];\n GamePadKeyData: { index: number; data: number; }[];\n GamePadPovData: number[];\n VDCSelect: number = 0;\n ScreenWidthMAX = 0;\n ScreenHeightMAX = 0;\n\n constructor() {\n /* ***************** */\n /* **** Setting **** */\n /* ***************** */\n this.SuperGrafx = false;\n this.CountryTypePCE = 0x40;\n this.CountryTypeTG16 = 0x00;\n this.CountryType = this.CountryTypePCE;\n this.GamePadButton6 = false;\n this.MultiTap = false;\n\n /* ******************* */\n /* **** Construct **** */\n /* ******************* */\n this.EtcConstruct();\n this.CPUConstruct();\n this.StorageConstruct();\n this.VCEConstruct();\n this.VPCConstruct();\n this.VDCConstruct();\n this.SoundConstruct();\n this.PSGConstruct();\n this.TimerConstruct();\n this.JoystickConstruct();\n }\n\n\n /* ************* */\n /* **** ETC **** */\n /* ************* */\n EtcConstruct() {\n this.TimerID = null;\n this.MainCanvas = null;\n this.Ctx = null;\n this.ImageData = null;\n }\n\n\n UpdateAnimationFrame() {\n this.TimerID = window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this));\n this.Run();\n }\n\n\n CancelAnimationFrame() {\n window.cancelAnimationFrame(this.TimerID);\n this.TimerID = null;\n }\n\n\n Pause() {\n if (this.TimerID != null) {\n this.JoystickEventRelease();\n this.CancelAnimationFrame();\n }\n }\n\n\n Start() {\n if (this.TimerID == null) {\n this.JoystickEventInit();\n this.UpdateAnimationFrame();\n }\n }\n\n\n Run() {\n this.CheckGamePad();\n this.DrawFlag = false;\n while (!this.DrawFlag) {\n this.CPURun();\n this.VDCRun();\n this.TimerRun();\n this.PSGRun();\n }\n }\n\n\n Reset() {\n this.StorageReset();\n this.Mapper.Init();\n this.CPUInit();\n this.VCEInit();\n this.VPCInit();\n this.VDCInit();\n this.TimerInit();\n this.JoystickInit();\n this.PSGInit();\n this.CPUReset();\n }\n\n\n Init() {\n this.StorageInit();\n this.CPUInit();\n this.VCEInit();\n this.VPCInit();\n this.VDCInit();\n this.TimerInit();\n this.JoystickInit();\n this.PSGInit();\n }\n\n\n SetCanvas(canvas: HTMLCanvasElement) {\n this.MainCanvas = canvas;\n if (!this.MainCanvas.getContext)\n return false;\n\n this.Ctx = this.MainCanvas.getContext(\"2d\");\n this.ImageData = this.Ctx.createImageData(this.MainCanvas.width, this.MainCanvas.height); // this.ScreenWidthMAX, this.ScreenHeightMAX);\n for (let i = 0; i < this.MainCanvas.width * this.MainCanvas.height * 4; i += 4) {\n this.ImageData.data[i] = 0;\n this.ImageData.data[i + 1] = 0;\n this.ImageData.data[i + 2] = 0;\n this.ImageData.data[i + 3] = 255;\n }\n this.Ctx.putImageData(this.ImageData, 0, 0);\n\n return true;\n }\n\n /* ************* */\n /* **** CPU **** */\n /* ************* */\n CPUConstruct() {\n this.OpCycles = [\n 8, 7, 3, 4, 6, 4, 6, 7, 3, 2, 2, 2, 7, 5, 7, 6,// 0x00\n 2, 7, 7, 4, 6, 4, 6, 7, 2, 5, 2, 2, 7, 5, 7, 6,// 0x10\n 7, 7, 3, 4, 4, 4, 6, 7, 3, 2, 2, 2, 5, 5, 7, 6,// 0x20\n 2, 7, 7, 2, 4, 4, 6, 7, 2, 5, 2, 2, 5, 5, 7, 6,// 0x30\n 7, 7, 3, 4, 8, 4, 6, 7, 3, 2, 2, 2, 4, 5, 7, 6,// 0x40\n 2, 7, 7, 5, 2, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6,// 0x50\n 7, 7, 2, 2, 4, 4, 6, 7, 3, 2, 2, 2, 7, 5, 7, 6,// 0x60\n 2, 7, 7, 0, 4, 4, 6, 7, 2, 5, 3, 2, 7, 5, 7, 6,// 0x70\n 4, 7, 2, 7, 4, 4, 4, 7, 2, 2, 2, 2, 5, 5, 5, 6,// 0x80\n 2, 7, 7, 8, 4, 4, 4, 7, 2, 5, 2, 2, 5, 5, 5, 6,// 0x90\n 2, 7, 2, 7, 4, 4, 4, 7, 2, 2, 2, 2, 5, 5, 5, 6,// 0xA0\n 2, 7, 7, 8, 4, 4, 4, 7, 2, 5, 2, 2, 5, 5, 5, 6,// 0xB0\n 2, 7, 2, 0, 4, 4, 6, 7, 2, 2, 2, 2, 5, 5, 7, 6,// 0xC0\n 2, 7, 7, 0, 2, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6,// 0xD0\n 2, 7, 2, 0, 4, 4, 6, 7, 2, 2, 2, 2, 5, 5, 7, 6,// 0xE0\n 2, 7, 7, 0, 2, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6];//0xF0\n\n this.OpBytes = [\n 0, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0x00\n 0, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0x10\n 0, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0x20\n 0, 2, 2, 1, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0x30\n 0, 2, 1, 2, 0, 2, 2, 2, 1, 2, 1, 1, 0, 3, 3, 0,// 0x40\n 0, 2, 2, 2, 1, 2, 2, 2, 1, 3, 1, 1, 1, 3, 3, 0,// 0x50\n 0, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 0, 3, 3, 0,// 0x60\n 0, 2, 2, 0, 2, 2, 2, 2, 1, 3, 1, 1, 0, 3, 3, 0,// 0x70\n 0, 2, 1, 3, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0x80\n 0, 2, 2, 4, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0x90\n 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0xA0\n 0, 2, 2, 4, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0xB0\n 2, 2, 1, 0, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0xC0\n 0, 2, 2, 0, 1, 2, 2, 2, 1, 3, 1, 1, 1, 3, 3, 0,// 0xD0\n 2, 2, 1, 0, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0xE0\n 0, 2, 2, 0, 1, 2, 2, 2, 1, 3, 1, 1, 1, 3, 3, 0];//0xF0\n\n this.A = 0;\n this.X = 0;\n this.Y = 0;\n this.PC = 0;\n this.S = 0;\n this.P = 0;\n\n this.NZCacheTable = new Uint8Array(0x100);\n this.NZCacheTable = this.NZCacheTable.map((d, i) => { return i & 0x80; });\n this.NZCacheTable[0x00] = 0x02;\n\n this.NFlag = 0x80;\n this.VFlag = 0x40;\n this.TFlag = 0x20;\n this.BFlag = 0x10;\n this.DFlag = 0x08;\n this.IFlag = 0x04;\n this.ZFlag = 0x02;\n this.CFlag = 0x01;\n\n this.TIQFlag = 0x04;\n this.IRQ1Flag = 0x02;\n this.IRQ2Flag = 0x01;\n\n this.ProgressClock = 0;\n this.CPUBaseClock = 0;\n\n this.BaseClock1 = 12;\n this.BaseClock3 = 6;\n this.BaseClock5 = 4;\n this.BaseClock7 = 3;\n this.BaseClock10 = 2;\n\n this.TransferSrc = 0;\n this.TransferDist = 0;\n this.TransferLen = 0;\n this.TransferAlt = 0;\n }\n\n\n CPUReset() {\n this.TransferSrc = 0;\n this.TransferDist = 0;\n this.TransferLen = 0;\n this.TransferAlt = 0;\n\n this.CPUBaseClock = this.BaseClock1;\n\n this.SetIFlag();\n this.PC = this.Get16(0xFFFE);\n }\n\n\n CPUInit() {\n this.A = 0;\n this.X = 0;\n this.Y = 0;\n this.PC = 0;\n this.S = 0;\n this.P = 0x00;\n\n this.ProgressClock = 0;\n this.CPUBaseClock = this.BaseClock1;\n\n this.TransferSrc = 0;\n this.TransferDist = 0;\n this.TransferLen = 0;\n this.TransferAlt = 0;\n\n this.LastInt = 0x00;\n }\n\n\n CPURun() {\n this.ProgressClock = 0;\n\n let tmp = this.LastInt;\n this.LastInt = (this.P & this.IFlag) == 0x00 ? this.GetIntStatus() : 0x00;\n\n if (tmp != 0x00 && this.TransferLen == 0) {\n this.LastInt = 0x00;\n\n if ((tmp & this.TIQFlag) == this.TIQFlag) {//TIQ\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Push(this.P);\n this.P = 0x04;\n this.PC = this.Get16(0xFFFA);\n } else if ((tmp & this.IRQ1Flag) == this.IRQ1Flag) {//IRQ1\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Push(this.P);\n this.P = 0x04;\n this.PC = this.Get16(0xFFF8);\n } else if ((tmp & this.IRQ2Flag) == this.IRQ2Flag) {//IRQ2\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Push(this.P);\n this.SetIFlag();\n this.PC = this.Get16(0xFFF6);\n }\n this.ProgressClock = 8 * this.CPUBaseClock;\n } else\n this.OpExec();\n }\n\n\n OpExec() {\n let address;\n let tmp;\n let data;\n let bit;\n let i;\n\n let op = this.Get(this.PC);\n\n switch (op) {\n case 0x69: // ADC IMM\n this.ADC(this.PC + 1);\n break;\n case 0x65: // ADC ZP\n this.ADC(this.ZP());\n break;\n case 0x75: // ADC ZP, X\n this.ADC(this.ZP_X());\n break;\n case 0x72: // ADC (IND)\n this.ADC(this.IND());\n break;\n case 0x61: // ADC (IND, X)\n this.ADC(this.IND_X());\n break;\n case 0x71: // ADC (IND), Y\n this.ADC(this.IND_Y());\n break;\n case 0x6D: // ADC ABS\n this.ADC(this.ABS());\n break;\n case 0x7D: // ADC ABS, X\n this.ADC(this.ABS_X());\n break;\n case 0x79: // ADC ABS, Y\n this.ADC(this.ABS_Y());\n break;\n\n case 0xE9: // SBC IMM\n this.SBC(this.PC + 1);\n break;\n case 0xE5: // SBC ZP\n this.SBC(this.ZP());\n break;\n case 0xF5: // SBC ZP, X\n this.SBC(this.ZP_X());\n break;\n case 0xF2: // SBC (IND)\n this.SBC(this.IND());\n break;\n case 0xE1: // SBC (IND, X)\n this.SBC(this.IND_X());\n break;\n case 0xF1: // SBC (IND), Y\n this.SBC(this.IND_Y());\n break;\n case 0xED: // SBC ABS\n this.SBC(this.ABS());\n break;\n case 0xFD: // SBC ABS, X\n this.SBC(this.ABS_X());\n break;\n case 0xF9: // SBC ABS, Y\n this.SBC(this.ABS_Y());\n break;\n\n case 0x29: // AND IMM\n this.AND(this.PC + 1);\n break;\n case 0x25: // AND ZP\n this.AND(this.ZP());\n break;\n case 0x35: // AND ZP, X\n this.AND(this.ZP_X());\n break;\n case 0x32: // AND (IND)\n this.AND(this.IND());\n break;\n case 0x21: // AND (IND, X)\n this.AND(this.IND_X());\n break;\n case 0x31: // AND (IND), Y\n this.AND(this.IND_Y());\n break;\n case 0x2D: // AND ABS\n this.AND(this.ABS());\n break;\n case 0x3D: // AND ABS, X\n this.AND(this.ABS_X());\n break;\n case 0x39: // AND ABS, Y\n this.AND(this.ABS_Y());\n break;\n\n case 0x49: // EOR IMM\n this.EOR(this.PC + 1);\n break;\n case 0x45: // EOR ZP\n this.EOR(this.ZP());\n break;\n case 0x55: // EOR ZP, X\n this.EOR(this.ZP_X());\n break;\n case 0x52: // EOR (IND)\n this.EOR(this.IND());\n break;\n case 0x41: // EOR (IND, X)\n this.EOR(this.IND_X());\n break;\n case 0x51: // EOR (IND), Y\n this.EOR(this.IND_Y());\n break;\n case 0x4D: // EOR ABS\n this.EOR(this.ABS());\n break;\n case 0x5D: // EOR ABS, X\n this.EOR(this.ABS_X());\n break;\n case 0x59: // EOR ABS, Y\n this.EOR(this.ABS_Y());\n break;\n\n case 0x09: // ORA IMM\n this.ORA(this.PC + 1);\n break;\n case 0x05: // ORA ZP\n this.ORA(this.ZP());\n break;\n case 0x15: // ORA ZP, X\n this.ORA(this.ZP_X());\n break;\n case 0x12: // ORA (IND)\n this.ORA(this.IND());\n break;\n case 0x01: // ORA (IND, X)\n this.ORA(this.IND_X());\n break;\n case 0x11: // ORA (IND), Y\n this.ORA(this.IND_Y());\n break;\n case 0x0D: // ORA ABS\n this.ORA(this.ABS());\n break;\n case 0x1D: // ORA ABS, X\n this.ORA(this.ABS_X());\n break;\n case 0x19: // ORA ABS, Y\n this.ORA(this.ABS_Y());\n break;\n\n case 0x06: // ASL ZP\n address = this.ZP();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x16: // ASL ZP, X\n address = this.ZP_X();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x0E: // ASL ABS\n address = this.ABS();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x1E: // ASL ABS, X\n address = this.ABS_X();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x0A: // ASL A\n this.A = this.ASL(this.A);\n break;\n\n case 0x46: // LSR ZP\n address = this.ZP();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x56: // LSR ZP, X\n address = this.ZP_X();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x4E: // LSR ABS\n address = this.ABS();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x5E: // LSR ABS, X\n address = this.ABS_X();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x4A: // LSR A\n this.A = this.LSR(this.A);\n break;\n\n case 0x26: // ROL ZP\n address = this.ZP();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x36: // ROL ZP, X\n address = this.ZP_X();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x2E: // ROL ABS\n address = this.ABS();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x3E: // ROL ABS, X\n address = this.ABS_X();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x2A: // ROL A\n this.A = this.ROL(this.A);\n break;\n\n case 0x66: // ROR ZP\n address = this.ZP();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x76: // ROR ZP, X\n address = this.ZP_X();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x6E: // ROR ABS\n address = this.ABS();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x7E: // ROR ABS, X\n address = this.ABS_X();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x6A: // ROR A\n this.A = this.ROR(this.A);\n break;\n\n case 0x0F: // BBR0\n this.BBRi(0);\n break;\n case 0x1F: // BBR1\n this.BBRi(1);\n break;\n case 0x2F: // BBR2\n this.BBRi(2);\n break;\n case 0x3F: // BBR3\n this.BBRi(3);\n break;\n case 0x4F: // BBR4\n this.BBRi(4);\n break;\n case 0x5F: // BBR5\n this.BBRi(5);\n break;\n case 0x6F: // BBR6\n this.BBRi(6);\n break;\n case 0x7F: // BBR7\n this.BBRi(7);\n break;\n\n case 0x8F: // BBS0\n this.BBSi(0);\n break;\n case 0x9F: // BBS1\n this.BBSi(1);\n break;\n case 0xAF: // BBS2\n this.BBSi(2);\n break;\n case 0xBF: // BBS3\n this.BBSi(3);\n break;\n case 0xCF: // BBS4\n this.BBSi(4);\n break;\n case 0xDF: // BBS5\n this.BBSi(5);\n break;\n case 0xEF: // BBS6\n this.BBSi(6);\n break;\n case 0xFF: // BBS7\n this.BBSi(7);\n break;\n\n case 0x90: // BCC\n this.Branch((this.P & this.CFlag) == 0x00, 1);\n break;\n case 0xB0: // BCS\n this.Branch((this.P & this.CFlag) == this.CFlag, 1);\n break;\n case 0xD0: // BNE\n this.Branch((this.P & this.ZFlag) == 0x00, 1);\n break;\n case 0xF0: // BEQ\n this.Branch((this.P & this.ZFlag) == this.ZFlag, 1);\n break;\n case 0x10: // BPL\n this.Branch((this.P & this.NFlag) == 0x00, 1);\n break;\n case 0x30: // BMI\n this.Branch((this.P & this.NFlag) == this.NFlag, 1);\n break;\n case 0x50: // BVC\n this.Branch((this.P & this.VFlag) == 0x00, 1);\n break;\n case 0x70: // BVS\n this.Branch((this.P & this.VFlag) == this.VFlag, 1);\n break;\n case 0x80: // BRA\n this.Branch(true, 1);\n break;\n\n case 0x44: // BSR\n this.PC++;\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Branch(true, 0);\n break;\n case 0x20: // JSR ABS\n tmp = this.ABS();\n this.PC += 2;\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.PC = tmp;\n this.ClearTFlag();\n break;\n\n case 0x40: // RTI\n this.P = this.Pull();\n this.toPCL(this.Pull());\n this.toPCH(this.Pull());\n break;\n case 0x60: // RTS\n this.ClearTFlag();\n this.toPCL(this.Pull());\n this.toPCH(this.Pull());\n this.PC++;\n break;\n\n case 0x4C: // JMP ABS\n this.PC = this.ABS();\n this.ClearTFlag();\n break;\n case 0x6C: // JMP (ABS)\n this.PC = this.ABS_IND();\n this.ClearTFlag();\n break;\n case 0x7C: // JMP (ABS, X)\n this.PC = this.ABS_X_IND();\n this.ClearTFlag();\n break;\n\n case 0x00: // BRK\n this.PC += 2;\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.SetBFlag();\n this.Push(this.P);\n this.ClearDFlag();\n this.ClearTFlag();\n this.SetIFlag();\n this.PC = this.Get16(0xFFF6);\n break;\n\n case 0x62: // CLA\n this.A = 0x00;\n this.ClearTFlag();\n break;\n case 0x82: // CLX\n this.X = 0x00;\n this.ClearTFlag();\n break;\n case 0xC2: // CLY\n this.Y = 0x00;\n this.ClearTFlag();\n break;\n\n case 0x18: // CLC\n this.ClearCFlag();\n this.ClearTFlag();\n break;\n case 0xD8: // CLD\n this.ClearDFlag();\n this.ClearTFlag();\n break;\n case 0x58: // CLI\n this.ClearIFlag();\n this.ClearTFlag();\n break;\n case 0xB8: // CLV\n this.ClearVFlag();\n this.ClearTFlag();\n break;\n\n case 0x38: // SEC\n this.SetCFlag();\n this.ClearTFlag();\n break;\n case 0xF8: // SED\n this.SetDFlag();\n this.ClearTFlag();\n break;\n case 0x78: // SEI\n this.SetIFlag();\n this.ClearTFlag();\n break;\n case 0xF4: // SET\n this.SetTFlag();\n break;\n\n case 0xC9: // CMP IMM\n this.Compare(this.A, this.PC + 1);\n break;\n case 0xC5: // CMP ZP\n this.Compare(this.A, this.ZP());\n break;\n case 0xD5: // CMP ZP, X\n this.Compare(this.A, this.ZP_X());\n break;\n case 0xD2: // CMP (IND)\n this.Compare(this.A, this.IND());\n break;\n case 0xC1: // CMP (IND, X)\n this.Compare(this.A, this.IND_X());\n break;\n case 0xD1: // CMP (IND), Y\n this.Compare(this.A, this.IND_Y());\n break;\n case 0xCD: // CMP ABS\n this.Compare(this.A, this.ABS());\n break;\n case 0xDD: // CMP ABS, X\n this.Compare(this.A, this.ABS_X());\n break;\n case 0xD9: // CMP ABS, Y\n this.Compare(this.A, this.ABS_Y());\n break;\n case 0xE0: // CPX IMM\n this.Compare(this.X, this.PC + 1);\n break;\n case 0xE4: // CPX ZP\n this.Compare(this.X, this.ZP());\n break;\n case 0xEC: // CPX ABS\n this.Compare(this.X, this.ABS());\n break;\n case 0xC0: // CPY IMM\n this.Compare(this.Y, this.PC + 1);\n break;\n case 0xC4: // CPY ZP\n this.Compare(this.Y, this.ZP());\n break;\n case 0xCC: // CPY ABS\n this.Compare(this.Y, this.ABS());\n break;\n\n case 0xC6: // DEC ZP\n address = this.ZP();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0xD6: // DEC ZP, X\n address = this.ZP_X();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0xCE: // DEC ABS\n address = this.ABS();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0xDE: // DEC ABS, X\n address = this.ABS_X();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0x3A: // DEC A\n this.A = this.Decrement(this.A);\n break;\n case 0xCA: // DEX\n this.X = this.Decrement(this.X);\n break;\n case 0x88: // DEY\n this.Y = this.Decrement(this.Y);\n break;\n\n case 0xE6: // INC ZP\n address = this.ZP();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0xF6: // INC ZP, X\n address = this.ZP_X();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0xEE: // INC ABS\n address = this.ABS();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0xFE: // INC ABS, X\n address = this.ABS_X();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0x1A: // INC A\n this.A = this.Increment(this.A);\n break;\n case 0xE8: // INX\n this.X = this.Increment(this.X);\n break;\n case 0xC8: // INY\n this.Y = this.Increment(this.Y);\n break;\n\n case 0x48: // PHA\n this.Push(this.A);\n this.ClearTFlag();\n break;\n case 0x08: // PHP\n this.Push(this.P);\n this.ClearTFlag();\n break;\n case 0xDA: // PHX\n this.Push(this.X);\n this.ClearTFlag();\n break;\n case 0x5A: // PHY\n this.Push(this.Y);\n this.ClearTFlag();\n break;\n\n case 0x68: // PLA\n this.A = this.Pull();\n this.SetNZFlag(this.A);\n this.ClearTFlag();\n break;\n case 0x28: // PLP\n this.P = this.Pull();\n break;\n case 0xFA: // PLX\n this.X = this.Pull();\n this.SetNZFlag(this.X);\n this.ClearTFlag();\n break;\n case 0x7A: // PLY\n this.Y = this.Pull();\n this.SetNZFlag(this.Y);\n this.ClearTFlag();\n break;\n\n case 0x07: // RMB0\n this.RMBi(0);\n break;\n case 0x17: // RMB1\n this.RMBi(1);\n break;\n case 0x27: // RMB2\n this.RMBi(2);\n break;\n case 0x37: // RMB3\n this.RMBi(3);\n break;\n case 0x47: // RMB4\n this.RMBi(4);\n break;\n case 0x57: // RMB5\n this.RMBi(5);\n break;\n case 0x67: // RMB6\n this.RMBi(6);\n break;\n case 0x77: // RMB7\n this.RMBi(7);\n break;\n\n case 0x87: // SMB0\n this.SMBi(0);\n break;\n case 0x97: // SMB1\n this.SMBi(1);\n break;\n case 0xA7: // SMB2\n this.SMBi(2);\n break;\n case 0xB7: // SMB3\n this.SMBi(3);\n break;\n case 0xC7: // SMB4\n this.SMBi(4);\n break;\n case 0xD7: // SMB5\n this.SMBi(5);\n break;\n case 0xE7: // SMB6\n this.SMBi(6);\n break;\n case 0xF7: // SMB7\n this.SMBi(7);\n break;\n\n case 0x22: // SAX\n tmp = this.A;\n this.A = this.X;\n this.X = tmp;\n this.ClearTFlag();\n break;\n case 0x42: // SAY\n tmp = this.A;\n this.A = this.Y;\n this.Y = tmp;\n this.ClearTFlag();\n break;\n case 0x02: // SXY\n tmp = this.X;\n this.X = this.Y;\n this.Y = tmp;\n this.ClearTFlag();\n break;\n\n case 0xAA: // TAX\n this.X = this.A;\n this.SetNZFlag(this.X);\n this.ClearTFlag();\n break;\n case 0xA8: // TAY\n this.Y = this.A;\n this.SetNZFlag(this.Y);\n this.ClearTFlag();\n break;\n case 0xBA: // TSX\n this.X = this.S;\n this.SetNZFlag(this.X);\n this.ClearTFlag();\n break;\n case 0x8A: // TXA\n this.A = this.X;\n this.SetNZFlag(this.A);\n this.ClearTFlag();\n break;\n case 0x9A: // TXS\n this.S = this.X;\n this.ClearTFlag();\n break;\n case 0x98: // TYA\n this.A = this.Y;\n this.SetNZFlag(this.A);\n this.ClearTFlag();\n break;\n\n case 0x89: // BIT IMM\n this.BIT(this.PC + 1);\n break;\n case 0x24: // BIT ZP\n this.BIT(this.ZP());\n break;\n case 0x34: // BIT ZP, X\n this.BIT(this.ZP_X());\n break;\n case 0x2C: // BIT ABS\n this.BIT(this.ABS());\n break;\n case 0x3C: // BIT ABS, X\n this.BIT(this.ABS_X());\n break;\n\n case 0x83: // TST IMM ZP\n this.TST(this.PC + 1, 0x2000 | this.Get(this.PC + 2));\n break;\n case 0xA3: // TST IMM ZP, X\n this.TST(this.PC + 1, 0x2000 | ((this.Get(this.PC + 2) + this.X) & 0xFF));\n break;\n case 0x93: // TST IMM ABS\n this.TST(this.PC + 1, this.Get16(this.PC + 2));\n break;\n case 0xB3: // TST IMM ABS, X\n this.TST(this.PC + 1, (this.Get16(this.PC + 2) + this.X) & 0xFFFF);\n break;\n\n case 0x14: // TRB ZP\n this.TRB(this.ZP())\n break;\n case 0x1C: // TRB ABS\n this.TRB(this.ABS())\n break;\n\n case 0x04: // TSB ZP\n this.TSB(this.ZP())\n break;\n case 0x0C: // TSB ABS\n this.TSB(this.ABS())\n break;\n\n case 0xA9: // LDA IMM\n this.A = this.Load(this.PC + 1);\n break;\n case 0xA5: // LDA ZP\n this.A = this.Load(this.ZP());\n break;\n case 0xB5: // LDA ZP, X\n this.A = this.Load(this.ZP_X());\n break;\n case 0xB2: // LDA (IND)\n this.A = this.Load(this.IND());\n break;\n case 0xA1: // LDA (IND, X)\n this.A = this.Load(this.IND_X());\n break;\n case 0xB1: // LDA (IND), Y\n this.A = this.Load(this.IND_Y());\n break;\n case 0xAD: // LDA ABS\n this.A = this.Load(this.ABS());\n break;\n case 0xBD: // LDA ABS, X\n this.A = this.Load(this.ABS_X());\n break;\n case 0xB9: // LDA ABS, Y\n this.A = this.Load(this.ABS_Y());\n break;\n case 0xA2: // LDX IMM\n this.X = this.Load(this.PC + 1);\n break;\n case 0xA6: // LDX ZP\n this.X = this.Load(this.ZP());\n break;\n case 0xB6: // LDX ZP, Y\n this.X = this.Load(this.ZP_Y());\n break;\n case 0xAE: // LDX ABS\n this.X = this.Load(this.ABS());\n break;\n case 0xBE: // LDX ABS, Y\n this.X = this.Load(this.ABS_Y());\n break;\n case 0xA0: // LDY IMM\n this.Y = this.Load(this.PC + 1);\n break;\n case 0xA4: // LDY ZP\n this.Y = this.Load(this.ZP());\n break;\n case 0xB4: // LDY ZP, X\n this.Y = this.Load(this.ZP_X());\n break;\n case 0xAC: // LDY ABS\n this.Y = this.Load(this.ABS());\n break;\n case 0xBC: // LDY ABS, X\n this.Y = this.Load(this.ABS_X());\n break;\n\n case 0x85: // STA ZP\n this.Store(this.ZP(), this.A);\n break;\n case 0x95: // STA ZP, X\n this.Store(this.ZP_X(), this.A);\n break;\n case 0x92: // STA (IND)\n this.Store(this.IND(), this.A);\n break;\n case 0x81: // STA (IND, X)\n this.Store(this.IND_X(), this.A);\n break;\n case 0x91: // STA (IND), Y\n this.Store(this.IND_Y(), this.A);\n break;\n case 0x8D: // STA ABS\n this.Store(this.ABS(), this.A);\n break;\n case 0x9D: // STA ABS, X\n this.Store(this.ABS_X(), this.A);\n break;\n case 0x99: // STA ABS, Y\n this.Store(this.ABS_Y(), this.A);\n break;\n case 0x86: // STX ZP\n this.Store(this.ZP(), this.X);\n break;\n case 0x96: // STX ZP, Y\n this.Store(this.ZP_Y(), this.X);\n break;\n case 0x8E: // STX ABS\n this.Store(this.ABS(), this.X);\n break;\n case 0x84: // STY ZP\n this.Store(this.ZP(), this.Y);\n break;\n case 0x94: // STY ZP, X\n this.Store(this.ZP_X(), this.Y);\n break;\n case 0x8C: // STY ABS\n this.Store(this.ABS(), this.Y);\n break;\n case 0x64: // STZ ZP\n this.Store(this.ZP(), 0x00);\n break;\n case 0x74: // STZ ZP, X\n this.Store(this.ZP_X(), 0x00);\n break;\n case 0x9C: // STZ ABS\n this.Store(this.ABS(), 0x00);\n break;\n case 0x9E: // STZ ABS, X\n this.Store(this.ABS_X(), 0x00);\n break;\n\n case 0xEA: // NOP\n this.ClearTFlag();\n break;\n\n case 0x03: // ST0\n this.SetVDCRegister(this.Get(this.PC + 1), this.VDCSelect);\n this.ClearTFlag();\n break;\n case 0x13: // ST1\n this.SetVDCLow(this.Get(this.PC + 1), this.VDCSelect);\n this.ClearTFlag();\n break;\n case 0x23: // ST2\n this.SetVDCHigh(this.Get(this.PC + 1), this.VDCSelect);\n this.ClearTFlag();\n break;\n\n case 0x53: // TAMi\n data = this.Get(this.PC + 1);\n bit = 0x01;\n if (data == 0x00)\n data = this.MPRSelect;\n else\n this.MPRSelect = data;\n for (i = 0; i < 8; i++)\n if ((data & (bit << i)) != 0x00)\n this.MPR[i] = this.A << 13;\n break;\n case 0x43: // TMAi\n data = this.Get(this.PC + 1);\n bit = 0x01;\n if (data == 0x00)\n data = this.MPRSelect;\n else\n this.MPRSelect = data;\n for (i = 0; i < 8; i++)\n if ((data & (bit << i)) != 0x00)\n this.A = this.MPR[i] >>> 13;\n break;\n\n case 0xF3: // TAI\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.TransferAlt = 1;\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + this.TransferAlt) & 0xFFFF;\n this.TransferDist = (this.TransferDist + 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.TransferAlt = this.TransferAlt == 1 ? -1 : 1;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n case 0xC3: // TDD\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc - 1) & 0xFFFF;\n this.TransferDist = (this.TransferDist - 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n case 0xE3: // TIA\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.TransferAlt = 1;\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + 1) & 0xFFFF;\n this.TransferDist = (this.TransferDist + this.TransferAlt) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.TransferAlt = this.TransferAlt == 1 ? -1 : 1;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n case 0x73: // TII\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + 1) & 0xFFFF;\n this.TransferDist = (this.TransferDist + 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n\n break;\n case 0xD3: // TIN\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n\n case 0xD4: // CSH\n this.ClearTFlag();\n this.CPUBaseClock = this.BaseClock7;\n break;\n case 0x54: // CSL\n this.ClearTFlag();\n this.CPUBaseClock = this.BaseClock1;\n break;\n default:\n this.ClearTFlag();//NOP\n break;\n }\n this.PC += this.OpBytes[op];\n this.ProgressClock = (this.ProgressClock + this.OpCycles[op]) * this.CPUBaseClock;\n }\n\n Adder(address, neg) {\n let data0;\n let data1 = this.Get(address);\n\n if (!neg && (this.P & this.TFlag) == this.TFlag) {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n } else\n data0 = this.A;\n\n if (neg)\n data1 = ~data1 & 0xFF;\n\n let carry = this.P & 0x01;\n let tmp = data0 + data1 + carry;\n\n if ((this.P & this.DFlag) == 0x00) {\n if ((((~data0 & ~data1 & tmp) | (data0 & data1 & ~tmp)) & 0x80) == 0x80)\n this.SetVFlag();\n else\n this.ClearVFlag();\n } else {\n this.ProgressClock += 1;\n if (neg) {\n if ((tmp & 0x0F) > 0x09)\n tmp -= 0x06;\n if ((tmp & 0xF0) > 0x90)\n tmp -= 0x60;\n } else {\n if (((data0 & 0x0F) + (data1 & 0x0F) + carry) > 0x09)\n tmp += 0x06;\n if ((tmp & 0x1F0) > 0x90)\n tmp += 0x60;\n }\n }\n\n if (tmp > 0xFF)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n tmp &= 0xFF;\n this.SetNZFlag(tmp);\n\n if (!neg && (this.P & this.TFlag) == this.TFlag)\n this.Set(0x2000 | this.X, tmp);\n else\n this.A = tmp;\n\n this.ClearTFlag();\n }\n\n\n ADC(address) {\n this.Adder(address, false);\n }\n\n\n SBC(address) {\n this.Adder(address, true);\n }\n\n\n AND(address) {\n let data0;\n let data1 = this.Get(address);\n\n if ((this.P & this.TFlag) == 0x00) {\n data0 = this.A;\n } else {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n }\n\n let tmp = data0 & data1;\n this.SetNZFlag(tmp);\n\n if ((this.P & this.TFlag) == 0x00)\n this.A = tmp;\n else\n this.Set(0x2000 | this.X, tmp);\n\n this.ClearTFlag();\n }\n\n\n EOR(address) {\n let data0;\n let data1 = this.Get(address);\n\n if ((this.P & this.TFlag) == 0x00) {\n data0 = this.A;\n } else {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n }\n\n let tmp = data0 ^ data1;\n this.SetNZFlag(tmp);\n\n if ((this.P & this.TFlag) == 0x00)\n this.A = tmp;\n else\n this.Set(0x2000 | this.X, tmp);\n\n this.ClearTFlag();\n }\n\n\n ORA(address) {\n let data0;\n let data1 = this.Get(address);\n\n if ((this.P & this.TFlag) == 0x00) {\n data0 = this.A;\n } else {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n }\n\n let tmp = data0 | data1;\n this.SetNZFlag(tmp);\n\n if ((this.P & this.TFlag) == 0x00)\n this.A = tmp;\n else\n this.Set(0x2000 | this.X, tmp);\n\n this.ClearTFlag();\n }\n\n\n ASL(data) {\n data <<= 1;\n if (data > 0xFF)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data &= 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n LSR(data) {\n if ((data & 0x01) == 0x01)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data >>= 1;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n ROL(data) {\n data = (data << 1) | (this.P & 0x01);\n if (data > 0xFF)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data &= 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n ROR(data) {\n let tmp = this.P & this.CFlag;\n if ((data & 0x01) == 0x01)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data = (data >> 1) | (tmp << 7);\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n BBRi(bit) {\n let tmp = this.Get(this.ZP());\n tmp = (tmp >> bit) & 0x01;\n this.Branch(tmp == 0, 2);\n }\n\n\n BBSi(bit) {\n let tmp = this.Get(this.ZP());\n tmp = (tmp >> bit) & 0x01;\n this.Branch(tmp == 1, 2);\n }\n\n\n Branch(status, adr) {\n this.ClearTFlag();\n if (status) {\n let tmp = this.Get(this.PC + adr);\n if (tmp >= 0x80)\n tmp |= 0xFF00;\n this.PC = (this.PC + adr + 1 + tmp) & 0xFFFF;\n this.ProgressClock = 2;\n } else\n this.PC += adr + 1;\n }\n\n\n Compare(data0, data1) {\n data0 -= this.Get(data1);\n if (data0 < 0)\n this.ClearCFlag();\n else\n this.SetCFlag();\n\n this.ClearTFlag();\n this.SetNZFlag(data0 & 0xFF);\n }\n\n\n Decrement(data) {\n data = (data - 1) & 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n Increment(data) {\n data = (data + 1) & 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n Push(data) {\n this.Set(0x2100 | this.S, data);\n this.S = (this.S - 1) & 0xFF;\n }\n\n\n Pull() {\n this.S = (this.S + 1) & 0xFF;\n return this.Get(0x2100 | this.S);\n }\n\n\n RMBi(bit) {\n let address = this.ZP();\n this.Set(address, this.Get(address) & ~(0x01 << bit));\n this.ClearTFlag();\n }\n\n\n SMBi(bit) {\n let address = this.ZP();\n this.Set(address, this.Get(address) | (0x01 << bit));\n this.ClearTFlag();\n }\n\n\n BIT(address) {\n let tmp = this.Get(address);\n this.SetNZFlag(this.A & tmp);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n TST(address0, address1) {\n let tmp0 = this.Get(address0);\n let tmp1 = this.Get(address1);\n this.SetNZFlag(tmp0 & tmp1);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp1 & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n TRB(address) {\n let tmp = this.Get(address);\n let res = ~this.A & tmp;\n this.Set(address, res);\n this.SetNZFlag(res);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n TSB(address) {\n let tmp = this.Get(address);\n let res = this.A | tmp;\n this.Set(address, res);\n this.SetNZFlag(res);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n Load(address) {\n let data = this.Get(address);\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n Store(address, data) {\n this.Set(address, data);\n this.ClearTFlag();\n }\n\n\n ZP() {\n return 0x2000 | this.Get(this.PC + 1);\n }\n\n\n ZP_X() {\n return 0x2000 | ((this.Get(this.PC + 1) + this.X) & 0xFF);\n }\n\n\n ZP_Y() {\n return 0x2000 | ((this.Get(this.PC + 1) + this.Y) & 0xFF);\n }\n\n\n IND() {\n return this.Get16(0x2000 | this.Get(this.PC + 1));\n }\n\n\n IND_X() {\n return this.Get16(0x2000 | ((this.Get(this.PC + 1) + this.X) & 0xFF));\n }\n\n\n IND_Y() {\n return (this.Get16(0x2000 | this.Get(this.PC + 1)) + this.Y) & 0xFFFF;\n }\n\n\n ABS() {\n return this.Get16(this.PC + 1);\n }\n\n\n ABS_X() {\n return (this.Get16(this.PC + 1) + this.X) & 0xFFFF;\n }\n\n\n ABS_Y() {\n return (this.Get16(this.PC + 1) + this.Y) & 0xFFFF;\n }\n\n\n ABS_IND() {\n return this.Get16(this.Get16(this.PC + 1));\n }\n\n\n ABS_X_IND() {\n return this.Get16((this.Get16(this.PC + 1) + this.X) & 0xFFFF);\n }\n\n\n SetNZFlag(data) { // Set N Z Flags\n this.P = (this.P & ~(this.NFlag | this.ZFlag)) | this.NZCacheTable[data];\n }\n\n\n SetVFlag() { // Set V Flag\n this.P |= this.VFlag;\n }\n\n\n ClearVFlag() { // Clear V Flag\n this.P &= ~this.VFlag;\n }\n\n\n SetTFlag() { // Set T Flag\n this.P |= this.TFlag;\n }\n\n\n ClearTFlag() { // Clear T Flag\n this.P &= ~this.TFlag;\n }\n\n\n SetBFlag() { // Set B Flag\n this.P |= this.BFlag;\n }\n\n\n ClearBFlag() { // Clear B Flag\n this.P &= ~this.BFlag;\n }\n\n\n SetDFlag() { // Set D Flag\n this.P |= this.DFlag;\n }\n\n\n ClearDFlag() { // Clear D Flag\n this.P &= ~this.DFlag;\n }\n\n\n SetIFlag() { // Set I Flag\n this.P |= this.IFlag;\n }\n\n\n ClearIFlag() { // Clear I Flag\n this.P &= ~this.IFlag;\n }\n\n\n SetCFlag() { // Set C Flag\n this.P |= this.CFlag;\n }\n\n\n ClearCFlag() { // Clear C Flag\n this.P &= ~this.CFlag;\n }\n\n\n PCH() {\n return this.PC >> 8;\n }\n\n\n PCL() {\n return this.PC & 0x00FF;\n }\n\n\n toPCH(data) {\n this.PC = (this.PC & 0x00FF) | (data << 8);\n }\n\n\n toPCL(data) {\n this.PC = (this.PC & 0xFF00) | data;\n }\n\n\n /* ***************** */\n /* **** Storage **** */\n /* ***************** */\n StorageConstruct() {\n this.MPR = new Array(8);\n this.MPRSelect = 0;\n this.RAM = new Uint8Array(0x8000);\n this.RAMMask = 0x1FFF;\n this.BRAM = new Uint8Array(0x2000).fill(0x00);\n this.BRAMUse = false;\n\n this.INTIRQ2 = 0x00;\n this.IntDisableRegister = 0;\n\n this.Mapper = null;\n\n this.Mapper0 = class extends this.MapperBase {\n Address: number;\n constructor(rom, core) {\n super(rom, core);\n\n let tmp = this.ROM.length - 1;\n this.Address = 0x80000;\n while (this.Address > 0x0000) {\n if ((this.Address & tmp) != 0x0000)\n break;\n this.Address >>>= 1;\n }\n }\n\n Read(address) {\n if (address >= this.ROM.length)\n return this.ROM[(address & (this.Address - 1)) | this.Address];\n else\n return this.ROM[address];\n }\n };\n\n this.Mapper1 = class extends this.MapperBase {\n ROM: any;\n Address: number;\n constructor(rom, core) {\n super(rom, core);\n this.Address = 0;\n }\n\n Init() {\n this.Address = 0;\n }\n\n Read(address) {\n if (address < 0x80000)\n return this.ROM[address];\n else\n return this.ROM[this.Address | (address & 0x7FFFF)];\n }\n\n Write(address, data) {\n this.Address = ((address & 0x000F) + 1) << 19;\n }\n };\n\n this.Mapper2 = class extends this.MapperBase {\n ROM: any;\n constructor(rom, core) {\n super(rom, core);\n this.ROM = rom;\n }\n\n Read(address) {\n return this.ROM[address] || 0;\n }\n\n Write(address, data) {\n if (address >= 0x80000)\n this.ROM[address] = data;\n }\n };\n }\n\n\n GetIntStatus() {\n return ~this.IntDisableRegister & this.GetIntReqest();\n }\n\n\n GetIntDisable() {\n return this.IntDisableRegister;\n }\n\n\n SetIntDisable(data) {\n this.IntDisableRegister = data;\n this.TimerAcknowledge();\n }\n\n\n GetIntReqest() {\n return (((this.VDC[0].VDCStatus | this.VDC[1].VDCStatus) & 0x3F) != 0x00 ? this.IRQ1Flag : 0x00) | this.INTIRQ2 | this.INTTIQ;\n }\n\n\n SetIntReqest(data) {\n this.TimerAcknowledge();\n }\n\n\n SetROM(rom) {\n this.Init();\n let tmp = rom.slice(rom.length % 8192);\n //if(tmp[0x001FFF] < 0xE0)\n //\ttmp = tmp.map((d) => {return this.ReverseBit[d];});\n this.Mapper = new this.Mapper0(tmp, this);\n this.CPUReset();\n }\n\n\n StorageInit() {\n this.RAM.fill(0x00);\n this.RAMMask = this.SuperGrafx ? 0x7FFF : 0x1FFF;\n this.StorageReset();\n }\n\n\n StorageReset() {\n this.IntDisableRegister = 0x00;//IntInit\n\n for (let i = 0; i < 7; i++)\n this.MPR[i] = 0xFF << 13;\n this.MPR[7] = 0x00;\n\n this.MPRSelect = 0x01;\n }\n\n\n Get16(address) {\n return (this.Get(address + 1) << 8) | this.Get(address);\n }\n\n\n Get(address) {\n address = this.MPR[address >> 13] | (address & 0x1FFF);\n\n if (address < 0x100000)// ROM\n return this.Mapper.Read(address);\n\n if (address < 0x1EE000)// NOT USE\n return 0xFF;\n\n if (address < 0x1F0000) {// BRAM\n if (this.BRAMUse)\n return this.BRAM[address & 0x1FFF];\n else\n return 0xFF;\n }\n\n if (address < 0x1F8000)// RAM\n return this.RAM[address & this.RAMMask];\n\n if (address < 0x1FE000)// NOT USE\n return 0xFF;\n\n if (address < 0x1FE400) {// VDC\n if (this.SuperGrafx) {\n let tmp = address & 0x00001F;\n if (tmp < 0x00008) {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n return this.GetVDCStatus(0);\n case 0x01:\n return 0x00;\n case 0x02:\n return this.GetVDCLow(0);\n case 0x03:\n return this.GetVDCHigh(0);\n }\n } else if (tmp < 0x00010) {// VPC\n return this.GetVPC(tmp & 0x000007);\n } else if (tmp < 0x00018) {// VDC#2\n switch (address & 0x000003) {\n case 0x00:\n return this.GetVDCStatus(1);\n case 0x01:\n return 0x00;\n case 0x02:\n return this.GetVDCLow(1);\n case 0x03:\n return this.GetVDCHigh(1);\n }\n } else {\n return 0xFF;\n }\n } else {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n return this.GetVDCStatus(0);\n case 0x01:\n return 0x00;\n case 0x02:\n return this.GetVDCLow(0);\n case 0x03:\n return this.GetVDCHigh(0);\n }\n }\n }\n\n if (address < 0x1FE800) {// VCE\n switch (address & 0x000007) {\n case 0x04:\n return this.GetVCEDataLow();\n case 0x05:\n return this.GetVCEDataHigh();\n default:\n return 0x00;\n\n }\n }\n\n if (address < 0x1FEC00)// PSG\n return this.GetPSG(address & 0x00000F);\n\n if (address < 0x1FF000)// TIMER\n return this.ReadTimerCounter();\n\n if (address < 0x1FF400)// IO\n return this.GetJoystick();\n\n if (address < 0x1FF800) {// INT Register\n switch (address & 0x000003) {\n case 0x02:\n return this.GetIntDisable();\n case 0x03:\n return this.GetIntReqest();\n default:\n return 0x00;\n }\n }\n\n return 0xFF;//EXT\n }\n\n\n Set(address, data) {\n address = this.MPR[address >> 13] | (address & 0x1FFF);\n\n if (address < 0x100000) {// ROM\n this.Mapper.Write(address, data);\n return;\n }\n\n if (address < 0x1EE000)// NOT USE\n return;\n\n if (address < 0x1F0000) {// BRAM\n if (this.BRAMUse)\n this.BRAM[address & 0x1FFF] = data;\n return;\n }\n\n if (address < 0x1F8000) {// RAM\n this.RAM[address & this.RAMMask] = data;\n return;\n }\n\n if (address < 0x1FE000)// NOT USE\n return;\n\n if (address < 0x1FE400) {// VDC\n if (this.SuperGrafx) {\n let tmp = address & 0x00001F;\n if (tmp < 0x00008) {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n this.SetVDCRegister(data, 0);\n break;\n case 0x02:\n this.SetVDCLow(data, 0);\n break;\n case 0x03:\n this.SetVDCHigh(data, 0);\n break;\n }\n } else if (tmp < 0x00010) {// VPC\n this.SetVPC(tmp & 0x000007, data);\n } else if (tmp < 0x00018) {// VDC#2\n switch (address & 0x000003) {\n case 0x00:\n this.SetVDCRegister(data, 1);\n break;\n case 0x02:\n this.SetVDCLow(data, 1);\n break;\n case 0x03:\n this.SetVDCHigh(data, 1);\n break;\n }\n }\n } else {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n this.SetVDCRegister(data, 0);\n break;\n case 0x01:\n break;\n case 0x02:\n this.SetVDCLow(data, 0);\n break;\n case 0x03:\n this.SetVDCHigh(data, 0);\n break;\n }\n }\n return;\n }\n\n if (address < 0x1FE800) {// VCE\n switch (address & 0x000007) {\n case 0x00:\n this.SetVCEControl(data);\n break;\n case 0x02:\n this.SetVCEAddressLow(data);\n break;\n case 0x03:\n this.SetVCEAddressHigh(data);\n break;\n case 0x04:\n this.SetVCEDataLow(data);\n break;\n case 0x05:\n this.SetVCEDataHigh(data);\n break;\n }\n return;\n }\n\n if (address < 0x1FEC00) {// PSG\n this.SetPSG(address & 0x00000F, data);\n return;\n }\n\n if (address < 0x1FF000) {// TIMER\n switch (address & 0x000001) {\n case 0x00:\n this.WirteTimerReload(data);\n break;\n case 0x01:\n this.WirteTimerControl(data);\n break;\n }\n return;\n }\n\n if (address < 0x1FF400) {// IO\n this.SetJoystick(data);\n return;\n }\n\n if (address < 0x1FF800) {// INT Register\n switch (address & 0x000003) {\n case 0x02:\n this.SetIntDisable(data);\n break;\n case 0x03:\n this.SetIntReqest(data);\n break;\n }\n return;\n }\n }\n\n\n /* ************* */\n /* **** VCE **** */\n /* ************* */\n VCEConstruct() {\n this.Palette = new Array(512);\n this.PaletteData = new Array(512);\n this.MonoPaletteData = new Array(512);\n\n this.VCEBaseClock = 0;\n this.VCEControl = 0;\n this.VCEAddress = 0;\n this.VCEData = 0;\n }\n\n\n VCEInit() {\n this.Palette.fill(0x0000);\n for (let i = 0; i < 512; i++) {\n this.PaletteData[i] = { r: 0, g: 0, b: 0 };\n this.MonoPaletteData[i] = { r: 0, g: 0, b: 0 };\n }\n\n this.VCEBaseClock = this.BaseClock5;\n this.VCEControl = 0x00;\n this.VCEAddress = 0x00;\n this.VCEData = 0x00;\n }\n\n\n SetVCEControl(data) {\n this.VCEControl = data;\n\n switch (data & 0x03) {\n case 0x00:\n this.VCEBaseClock = this.BaseClock5;\n break;\n case 0x01:\n this.VCEBaseClock = this.BaseClock7;\n break;\n case 0x02:\n case 0x03:\n this.VCEBaseClock = this.BaseClock10;\n break;\n }\n }\n\n\n SetVCEAddressLow(data) {\n this.VCEAddress = (this.VCEAddress & 0xFF00) | data;\n }\n\n\n SetVCEAddressHigh(data) {\n this.VCEAddress = ((this.VCEAddress & 0x00FF) | (data << 8)) & 0x01FF;\n }\n\n\n GetVCEDataLow() {\n return this.Palette[this.VCEAddress] & 0x00FF;\n }\n\n\n GetVCEDataHigh() {\n let tmp = (this.Palette[this.VCEAddress] & 0xFF00) >> 8;\n this.VCEAddress = (this.VCEAddress + 1) & 0x01FF;\n return tmp;\n }\n\n\n SetVCEDataLow(data) {\n this.Palette[this.VCEAddress] = (this.Palette[this.VCEAddress] & 0xFF00) | data;\n this.ToPalettes();\n }\n\n\n SetVCEDataHigh(data) {\n this.Palette[this.VCEAddress] = (this.Palette[this.VCEAddress] & 0x00FF) | (data << 8);\n this.ToPalettes();\n this.VCEAddress = (this.VCEAddress + 1) & 0x01FF;\n }\n\n\n ToPalettes() {\n let color = this.Palette[this.VCEAddress];\n let tmp = this.PaletteData[this.VCEAddress];\n tmp.r = ((color >> 3) & 0x07) * 36;\n tmp.g = ((color >> 6) & 0x07) * 36;\n tmp.b = (color & 0x07) * 36;\n\n let mono = tmp.r * 0.299 + tmp.g * 0.587 + tmp.b * 0.114;\n this.MonoPaletteData[this.VCEAddress].r = mono;\n this.MonoPaletteData[this.VCEAddress].g = mono;\n this.MonoPaletteData[this.VCEAddress].b = mono;\n }\n\n\n /* ************* */\n /* **** VPC **** */\n /* ************* */\n VPCConstruct() {\n this.VPCRegister = new Uint8Array(8);\n this.VDCSelect = 0;\n this.VPCWindow1 = 0;\n this.VPCWindow2 = 0;\n this.VPCPriority = new Uint8Array(4);\n }\n\n\n VPCInit() {\n this.VPCRegister.fill(0x00);\n this.VPCRegister[0] = 0x11;\n this.VPCRegister[1] = 0x11;\n this.VPCRegister[7] = 0xFF;\n\n this.VDCSelect = 0;\n this.VPCWindow1 = 0;\n this.VPCWindow2 = 0;\n this.VPCPriority.fill(0x01);\n }\n\n\n SetVPC(no, data) {\n if (no == 0x07)\n return;\n\n this.VPCRegister[no] = data;\n if (no == 0x06)\n this.VDCSelect = data & 0x01;\n\n if (no == 0x02 || no == 0x03) {\n this.VPCWindow1 = (this.VPCRegister[0x02] | ((this.VPCRegister[0x03] & 0x03) << 8)) - 64;\n if (this.VPCWindow1 < 0)\n this.VPCWindow1 = 1024;\n }\n\n if (no == 0x04 || no == 0x05) {\n this.VPCWindow2 = (this.VPCRegister[0x04] | ((this.VPCRegister[0x05] & 0x03) << 8)) - 64;\n if (this.VPCWindow2 < 0)\n this.VPCWindow2 = -1;\n }\n\n if (no == 0x00) {\n this.VPCPriority[2] = this.VPCRegister[0x00] >> 4;\n this.VPCPriority[3] = this.VPCRegister[0x00] & 0x0F;\n }\n\n if (no == 0x01) {\n this.VPCPriority[0] = this.VPCRegister[0x01] >> 4;\n this.VPCPriority[1] = this.VPCRegister[0x01] & 0x0F;\n }\n }\n\n\n GetVPC(no) {\n return this.VPCRegister[no];\n }\n\n\n /* ************* */\n /* **** VDC **** */\n /* ************* */\n VDCConstruct() {\n this.DrawFlag = false;\n this.VDCPutLineProgressClock = 0;\n this.VDCPutLine = 0;\n this.VDC = new Array(2);\n\n this.VDCLineClock = 1368;\n\n this.ScreenSize = [];\n this.ScreenSize[this.BaseClock5] = 342;\n this.ScreenSize[this.BaseClock7] = 456;\n this.ScreenSize[this.BaseClock10] = 684;\n\n this.PutScreenSize = [];\n this.PutScreenSize[this.BaseClock5] = 320;\n this.PutScreenSize[this.BaseClock7] = 428;\n this.PutScreenSize[this.BaseClock10] = 640;\n\n this.ScreenHeightMAX = 262;\n this.ScreenWidthMAX = 684;\n\n this.VScreenWidthArray = [];\n this.VScreenWidthArray[0x00] = 32;\n this.VScreenWidthArray[0x10] = 64;\n this.VScreenWidthArray[0x20] = 128;\n this.VScreenWidthArray[0x30] = 128;\n\n this.ReverseBit = new Uint8Array(0x100);\n this.ReverseBit = this.ReverseBit.map((d, i) => {\n return ((i & 0x80) >> 7) | ((i & 0x40) >> 5) |\n ((i & 0x20) >> 3) | ((i & 0x10) >> 1) |\n ((i & 0x08) << 1) | ((i & 0x04) << 3) |\n ((i & 0x02) << 5) | ((i & 0x01) << 7);\n });\n\n this.ReverseBit16 = new Uint16Array(0x10000).fill(0x00);\n this.ReverseBit16 = this.ReverseBit16.map((d, i) => { return (this.ReverseBit[i & 0x00FF] << 8) | this.ReverseBit[(i & 0xFF00) >> 8]; });\n\n this.ReverseBit256 = new Uint32Array(0x100).fill(0x00);\n this.ReverseBit256 = this.ReverseBit256.map((d, i) => {\n let b = this.ReverseBit[i];\n return ((b & 0x80) << (28 - 7)) |\n ((b & 0x40) << (24 - 6)) |\n ((b & 0x20) << (20 - 5)) |\n ((b & 0x10) << (16 - 4)) |\n ((b & 0x08) << (12 - 3)) |\n ((b & 0x04) << (8 - 2)) |\n ((b & 0x02) << (4 - 1)) |\n ((b & 0x01) << (0 - 0));\n });\n\n this.SPAddressMask = [];\n this.SPAddressMask[16] = [];\n this.SPAddressMask[32] = [];\n this.SPAddressMask[16][16] = 0x07FE;\n this.SPAddressMask[16][32] = 0x07FE & 0x07FA;\n this.SPAddressMask[16][64] = 0x07FE & 0x07F2;\n this.SPAddressMask[32][16] = 0x07FC;\n this.SPAddressMask[32][32] = 0x07FC & 0x07FA;\n this.SPAddressMask[32][64] = 0x07FC & 0x07F2;\n }\n\n\n MakeSpriteLine(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n let sp = vdcc.SPLine;\n for (let i = 0; i < vdcc.ScreenWidth; i++) {\n let spi = sp[i];\n spi.data = 0x00;\n spi.palette = 0x000;\n spi.no = 255;\n spi.priority = 0x00;\n }\n\n if ((vdcc.VDCRegister[0x05] & 0x0040) == 0x0000)\n return;\n\n let dotcount = 0;\n let line = vdcc.DrawBGYLine - (vdcc.VDS + vdcc.VSW) + 64;\n\n let vram = vdcc.VRAM;\n let satb = vdcc.SATB;\n let revbit16 = this.ReverseBit16;\n for (let i = 0, s = 0; i < 64; i++, s += 4) {\n let y = satb[s] & 0x3FF;\n let attribute = satb[s + 3];\n\n let height = ((attribute & 0x3000) >> 8) + 16;\n height = height > 32 ? 64 : height;\n\n if (line < y || line > (y + height - 1))\n continue;\n\n let x = (satb[s + 1] & 0x3FF) - 32;\n let width = ((attribute & 0x0100) >> 4) + 16;\n if ((x + width) <= 0)\n continue;\n\n let spy = line - y;\n if ((attribute & 0x8000) == 0x8000)\n spy = (height - 1) - spy;\n\n let index = ((satb[s + 2] & this.SPAddressMask[width][height]) << 5) | (((spy & 0x30) << 3) | (spy & 0x0F));\n\n let data0;\n let data1;\n let data2;\n let data3;\n if ((attribute & 0x0800) == 0x0000) {\n data0 = revbit16[vram[index]];\n data1 = revbit16[vram[index + 16]];\n data2 = revbit16[vram[index + 32]];\n data3 = revbit16[vram[index + 48]];\n if (width == 32) {\n data0 |= revbit16[vram[(index | 0x0040)]] << 16;\n data1 |= revbit16[vram[(index | 0x0040) + 16]] << 16;\n data2 |= revbit16[vram[(index | 0x0040) + 32]] << 16;\n data3 |= revbit16[vram[(index | 0x0040) + 48]] << 16;\n }\n } else {\n data0 = vram[index];\n data1 = vram[index + 16];\n data2 = vram[index + 32];\n data3 = vram[index + 48];\n if (width == 32) {\n data0 = (data0 << 16) | vram[(index | 0x0040)];\n data1 = (data1 << 16) | vram[(index | 0x0040) + 16];\n data2 = (data2 << 16) | vram[(index | 0x0040) + 32];\n data3 = (data3 << 16) | vram[(index | 0x0040) + 48];\n }\n }\n\n let palette = ((attribute & 0x000F) << 4) | 0x0100;\n let priority = attribute & 0x0080;\n\n let j = 0;\n if (x < 0) {\n j -= x;\n x = 0;\n }\n\n for (; j < width && x < vdcc.ScreenWidth; j++, x++) {\n let spx = sp[x];\n if (spx.data == 0x00) {\n let dot = ((data0 >>> j) & 0x0001)\n | (((data1 >>> j) << 1) & 0x0002)\n | (((data2 >>> j) << 2) & 0x0004)\n | (((data3 >>> j) << 3) & 0x0008);\n if (dot != 0x00) {\n spx.data = dot;\n spx.palette = palette;\n spx.priority = priority;\n }\n }\n\n if (spx.no == 255)\n spx.no = i;\n\n if (i != 0 && spx.no == 0)\n vdcc.VDCStatus |= vdcc.VDCRegister[0x05] & 0x0001;//SetSpriteCollisionINT\n\n if (++dotcount == 256) {\n vdcc.VDCStatus |= vdcc.VDCRegister[0x05] & 0x0002;//SetSpriteOverINT\n if (vdcc.SpriteLimit)\n return;\n }\n }\n }\n }\n\n\n MakeBGLine(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n let sp = vdcc.SPLine;\n let bg = vdcc.BGLine;\n let sw = vdcc.ScreenWidth;\n let leftblank = ((vdcc.HDS + vdcc.HSW) << 3) + vdcc.DrawBGIndex;\n\n if ((vdcc.VDCRegister[0x05] & 0x0080) == 0x0080) {\n let WidthMask = vdcc.VScreenWidth - 1;\n\n let x = vdcc.VDCRegister[0x07];\n let index_x = (x >> 3) & WidthMask;\n x = (x & 0x07) << 2;\n\n let y = vdcc.DrawBGLine;\n let index_y = ((y >> 3) & (vdcc.VScreenHeight - 1)) * vdcc.VScreenWidth;\n y = y & 0x07;\n\n let vram = vdcc.VRAM;\n let bgx = 0;\n let revbit = this.ReverseBit256;\n\n while (bgx < sw) {\n let tmp = vram[index_x + index_y];\n let address = ((tmp & 0x0FFF) << 4) + y;\n let palette = (tmp & 0xF000) >> 8;\n\n let data0 = vram[address];\n let data1 = vram[address + 8];\n let data = (revbit[data0 & 0x00FF]) |\n (revbit[(data0 & 0xFF00) >> 8] << 1) |\n (revbit[data1 & 0x00FF] << 2) |\n (revbit[(data1 & 0xFF00) >> 8] << 3);\n\n for (; x < 32 && bgx < sw; x += 4, bgx++) {\n let dot = (data >>> x) & 0x0F;\n let spbgx = sp[bgx];\n bg[bgx + leftblank] = spbgx.data != 0x00 && (dot == 0x00 || spbgx.priority == 0x0080) ?\n spbgx.data | spbgx.palette : dot | (dot == 0x00 ? 0x00 : palette);\n }\n\n x = 0;\n index_x = (index_x + 1) & WidthMask;\n }\n } else {\n for (let i = 0; i < sw; i++)\n bg[i + leftblank] = sp[i].data | sp[i].palette;\n }\n }\n\n\n MakeBGColorLineVDC(vdcno) {\n this.VDC[vdcno].BGLine.fill(0x100);\n }\n\n\n VDCProcessDMA(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VRAMtoSATBCount > 0) {//VRAMtoSATB\n vdcc.VRAMtoSATBCount -= this.ProgressClock;\n if (vdcc.VRAMtoSATBCount <= 0)\n vdcc.VDCStatus = (vdcc.VDCStatus & 0xBF) | ((vdcc.VDCRegister[0x0F] & 0x0001) << 3);//VRAMtoSATB INT\n }\n\n if (vdcc.VRAMtoVRAMCount > 0) {//VRAMtoVRAM\n vdcc.VRAMtoVRAMCount -= this.ProgressClock;\n if (vdcc.VRAMtoVRAMCount <= 0)\n vdcc.VDCStatus = (vdcc.VDCStatus & 0xBF) | ((vdcc.VDCRegister[0x0F] & 0x0002) << 3);//VRAMtoVRAM INT\n }\n }\n\n\n VDCProcess(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n vdcc.VDCProgressClock -= this.VDCLineClock;\n\n vdcc.DrawBGIndex = 0;\n vdcc.BGLine.fill(0x100);\n\n for (let i = 0; i < vdcc.ScreenSize; i += vdcc.DrawLineWidth) {\n vdcc.DrawBGYLine++;\n\n if (vdcc.DrawBGYLine == this.ScreenHeightMAX)\n vdcc.DrawBGYLine = 0;\n\n if (vdcc.DrawBGYLine < (vdcc.VDS + vdcc.VSW)) {//OVER SCAN\n this.MakeBGColorLineVDC(vdcno);\n } else if (vdcc.DrawBGYLine <= (vdcc.VDS + vdcc.VSW + vdcc.VDW)) {//ACTIVE DISPLAY\n vdcc.DrawBGLine = (vdcc.DrawBGYLine == (vdcc.VDS + vdcc.VSW) ? vdcc.VDCRegister[0x08] : (vdcc.DrawBGLine + 1)) & vdcc.VScreenHeightMask;\n if (!vdcc.VDCBurst) {\n this.MakeSpriteLine(vdcno);\n this.MakeBGLine(vdcno);\n } else\n this.MakeBGColorLineVDC(vdcno);\n } else {//OVER SCAN\n this.MakeBGColorLineVDC(vdcno);\n }\n\n let vline = vdcc.VDS + vdcc.VSW + vdcc.VDW + 1;\n if (vline > 261)\n vline -= 261;\n if (vdcc.DrawBGYLine == vline) {\n vdcc.VDCStatus |= (vdcc.VDCRegister[0x05] & 0x0008) << 2;//SetVSync INT\n if (vdcc.VRAMtoSATBStartFlag) {//VRAMtoSATB\n for (let i = 0, addr = vdcc.VDCRegister[0x13]; i < 256; i++, addr++)\n vdcc.SATB[i] = vdcc.VRAM[addr];\n vdcc.VRAMtoSATBCount = 256 * this.VCEBaseClock;\n vdcc.VDCStatus |= 0x40;\n vdcc.VRAMtoSATBStartFlag = (vdcc.VDCRegister[0x0F] & 0x0010) == 0x0010;\n }\n }\n\n vdcc.RasterCount++;\n if (vdcc.DrawBGYLine == (vdcc.VDS + vdcc.VSW - 1))\n vdcc.RasterCount = 64;\n\n if (vdcc.RasterCount == vdcc.VDCRegister[0x06] && (vdcc.VDCStatus & 0x20) == 0x00)\n vdcc.VDCStatus |= vdcc.VDCRegister[0x05] & 0x0004;//SetRaster INT\n\n vdcc.DrawBGIndex += vdcc.DrawLineWidth;\n }\n }\n\n\n VDCRun() {\n this.VDCProcessDMA(0);\n this.VDC[0].VDCProgressClock += this.ProgressClock;\n\n if (this.SuperGrafx) {\n this.VDCProcessDMA(1);\n this.VDC[1].VDCProgressClock += this.ProgressClock;\n }\n\n while (this.VDC[0].VDCProgressClock >= this.VDCLineClock) {\n this.VDCProcess(0);\n if (this.SuperGrafx)\n this.VDCProcess(1);\n }\n\n this.VDCPutLineProgressClock += this.ProgressClock;\n if (this.VDCPutLineProgressClock >= this.VDCLineClock) {\n this.VDCPutLineProgressClock -= this.VDCLineClock;\n this.VDCPutLine++;\n\n if (this.VDCPutLine == this.ScreenHeightMAX) {\n this.VDCPutLine = 0;\n this.GetScreenSize(0);\n this.VDC[0].DrawBGYLine = 0;\n if (this.SuperGrafx) {\n this.GetScreenSize(1);\n this.VDC[1].DrawBGYLine = 0;\n }\n this.DrawFlag = true;\n this.Ctx.putImageData(this.ImageData, 0, 0);\n }\n\n let palettes = (this.VCEControl & 0x80) == 0x00 ? this.PaletteData : this.MonoPaletteData;\n\n let data = this.ImageData.data;\n let imageIndex = this.VDCPutLine * this.ScreenWidthMAX * 4;\n let black = palettes[0x100];\n\n let sw = this.ScreenSize[this.VCEBaseClock];\n let bgl0 = this.VDC[0].BGLine;\n\n if (this.SuperGrafx) {//VPC\n let window1 = this.VPCWindow1;\n let window2 = this.VPCWindow2;\n let priority = this.VPCPriority;\n\n let bgl1 = this.VDC[1].BGLine;\n for (let bgx = 0; bgx < sw; bgx++, imageIndex += 4) {\n let wflag = 0x00;\n if (bgx >= window1)\n wflag |= 0x01;\n if (bgx <= window2)\n wflag |= 0x02;\n\n let bg0 = bgl0[bgx];\n let bg1 = bgl1[bgx];\n\n let color;\n switch (priority[wflag]) {\n case 0x04 | 0x03:\n if (bg0 > 0x100 || bg1 > 0x100)\n color = palettes[bg0 > 0x100 ? bg0 : bg1];\n else\n color = palettes[(bg0 & 0x0FF) != 0x000 ? bg0 : bg1];\n\n break;\n case 0x08 | 0x03:\n if (bg0 < 0x100 && bg0 != 0x000)\n color = palettes[bg0];\n else\n color = palettes[(bg1 & 0x0FF) != 0x000 ? bg1 : bg0];\n break;\n case 0x00 | 0x03:\n case 0x0C | 0x03:\n color = palettes[(bg0 & 0x0FF) != 0x000 ? bg0 : bg1];\n break;\n case 0x00 | 0x01:\n case 0x04 | 0x01:\n case 0x08 | 0x01:\n case 0x0C | 0x01:\n color = palettes[bg0];\n break;\n case 0x00 | 0x02:\n case 0x04 | 0x02:\n case 0x08 | 0x02:\n case 0x0C | 0x02:\n color = palettes[bg1];\n break;\n default:\n color = black;\n break;\n }\n data[imageIndex] = color.r;\n data[imageIndex + 1] = color.g;\n data[imageIndex + 2] = color.b;\n }\n } else {\n for (let bgx = 0; bgx < sw; bgx++, imageIndex += 4) {\n let color = palettes[bgl0[bgx]];\n data[imageIndex] = color.r;\n data[imageIndex + 1] = color.g;\n data[imageIndex + 2] = color.b;\n }\n }\n }\n }\n\n\n GetScreenSize(vdcno) {\n let vdcc = this.VDC[vdcno];\n let r = vdcc.VDCRegister;\n\n vdcc.VScreenWidth = this.VScreenWidthArray[r[0x09] & 0x0030];\n\n vdcc.VScreenHeight = (r[0x09] & 0x0040) == 0x0000 ? 32 : 64;\n vdcc.VScreenHeightMask = vdcc.VScreenHeight * 8 - 1;\n vdcc.ScreenWidth = ((r[0x0B] & 0x007F) + 1) * 8;\n\n if (vdcc.ScreenWidth > this.ScreenWidthMAX)\n vdcc.ScreenWidth = this.ScreenWidthMAX;\n\n vdcc.HDS = (r[0x0A] & 0x7F00) >> 8;\n vdcc.HSW = r[0x0A] & 0x001F;\n\n vdcc.HDE = (r[0x0B] & 0x7F00) >> 8;\n vdcc.HDW = r[0x0B] & 0x007F;\n\n vdcc.VDS = ((r[0x0C] & 0xFF00) >> 8);\n vdcc.VSW = r[0x0C] & 0x001F;\n\n vdcc.VDW = r[0x0D] & 0x01FF;\n\n vdcc.VCR = r[0x0E] & 0x00FF;\n\n vdcc.ScreenSize = this.ScreenSize[this.VCEBaseClock];\n if (this.MainCanvas.width != vdcc.ScreenSize) {\n //this.MainCanvas.style.width = (this.PutScreenSize[this.VCEBaseClock] * 2) + 'px';\n this.MainCanvas.width = this.PutScreenSize[this.VCEBaseClock];\n }\n\n vdcc.DrawLineWidth = (vdcc.HDS + vdcc.HSW + vdcc.HDE + vdcc.HDW + 1) << 3;\n if (vdcc.DrawLineWidth <= this.ScreenSize[this.BaseClock5])\n vdcc.DrawLineWidth = this.ScreenSize[this.BaseClock5];\n else if (vdcc.DrawLineWidth <= this.ScreenSize[this.BaseClock7])\n vdcc.DrawLineWidth = this.ScreenSize[this.BaseClock7];\n else vdcc.DrawLineWidth = this.ScreenSize[this.BaseClock10];\n\n vdcc.VDCBurst = (r[0x05] & 0x00C0) == 0x0000 ? true : false;\n }\n\n\n VDCInit() {\n this.VDCPutLineProgressClock = 0;\n this.VDCPutLine = 0;\n this.DrawFlag = false;\n\n for (let vdcno = 0; vdcno < 2; vdcno++) {\n this.VDC[vdcno] = {\n VDCRegister: new Uint16Array(20).fill(0x0000),\n VRAM: new Uint16Array(0x10000).fill(0x0000),\n SATB: new Uint16Array(256).fill(0x0000),\n VDCBurst: false,\n SpriteLimit: false,\n\n SPLine: new Array(this.ScreenWidthMAX),\n BGLine: new Array(this.ScreenWidthMAX).fill(0x00),\n\n VDCStatus: 0x00,\n VDCRegisterSelect: 0x00,\n WriteVRAMData: 0x0000,\n\n VRAMtoSATBStartFlag: false,\n VRAMtoSATBCount: 0,\n VRAMtoVRAMCount: 0,\n\n RasterCount: 64,\n VDCProgressClock: 0,\n DrawBGYLine: 0,\n DrawBGLine: 0,\n\n VScreenWidth: 0,\n VScreenHeight: 0,\n VScreenHeightMask: 0,\n ScreenWidth: 0,\n ScreenSize: 0,\n DrawLineWidth: 0,\n DrawBGIndex: 0,\n\n HDS: 0,\n HSW: 0,\n HDE: 0,\n HDW: 0,\n VDS: 0,\n VSW: 0,\n VDW: 0,\n VCR: 0\n };\n\n for (let i = 0; i < this.VDC[vdcno].SPLine.length; i++)\n this.VDC[vdcno].SPLine[i] = { data: 0x00, no: 255, priority: 0x00 };\n\n this.VDC[vdcno].VDCRegister[0x09] = 0x0010;\n this.VDC[vdcno].VDCRegister[0x0A] = 0x0202;\n this.VDC[vdcno].VDCRegister[0x0B] = 0x031F;\n this.VDC[vdcno].VDCRegister[0x0C] = 0x0F02;\n this.VDC[vdcno].VDCRegister[0x0D] = 0x00EF;\n this.VDC[vdcno].VDCRegister[0x0E] = 0x0003;\n }\n\n this.GetScreenSize(0);\n this.GetScreenSize(1);\n }\n\n\n SetVDCRegister(data, vdcno) {\n this.VDC[vdcno].VDCRegisterSelect = data & 0x1F;\n }\n\n\n SetVDCLow(data, vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VDCRegisterSelect == 0x02)\n vdcc.WriteVRAMData = data;\n else\n vdcc.VDCRegister[vdcc.VDCRegisterSelect] = (vdcc.VDCRegister[vdcc.VDCRegisterSelect] & 0xFF00) | data;\n\n if (vdcc.VDCRegisterSelect == 0x01) {\n vdcc.VDCRegister[0x02] = vdcc.VRAM[vdcc.VDCRegister[0x01]];\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x08) {\n vdcc.DrawBGLine = vdcc.VDCRegister[0x08];\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x0F)\n vdcc.VRAMtoSATBStartFlag = (vdcc.VDCRegister[0x0F] & 0x10) == 0x10;\n }\n\n\n SetVDCHigh(data, vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VDCRegisterSelect == 0x02) {\n vdcc.VRAM[vdcc.VDCRegister[0x00]] = vdcc.WriteVRAMData | (data << 8);\n vdcc.VDCRegister[0x00] = (vdcc.VDCRegister[0x00] + this.GetVRAMIncrement(vdcno)) & 0xFFFF;\n return;\n }\n\n vdcc.VDCRegister[vdcc.VDCRegisterSelect] = (vdcc.VDCRegister[vdcc.VDCRegisterSelect] & 0x00FF) | (data << 8);\n\n if (vdcc.VDCRegisterSelect == 0x01) {\n vdcc.VDCRegister[0x02] = vdcc.VRAM[vdcc.VDCRegister[0x01]];\n vdcc.VDCRegister[0x03] = vdcc.VDCRegister[0x02];\n vdcc.VDCRegister[0x01] = (vdcc.VDCRegister[0x01] + this.GetVRAMIncrement(vdcno)) & 0xFFFF;\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x08) {\n vdcc.DrawBGLine = vdcc.VDCRegister[0x08];\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x12) {//VRAMtoVRAM\n let si = (vdcc.VDCRegister[0x0F] & 0x0004) == 0x0000 ? 1 : -1;\n let di = (vdcc.VDCRegister[0x0F] & 0x0008) == 0x0000 ? 1 : -1;\n\n let s = vdcc.VDCRegister[0x10];\n let d = vdcc.VDCRegister[0x11];\n let l = vdcc.VDCRegister[0x12] + 1;\n\n vdcc.VRAMtoVRAMCount = l * this.VCEBaseClock;\n vdcc.VDCStatus |= 0x40;\n\n let vram = vdcc.VRAM;\n for (; l > 0; l--) {\n vram[d] = vram[s];\n s = (s + si) & 0xFFFF;\n d = (d + di) & 0xFFFF;\n }\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x13)//VRAMtoSATB\n vdcc.VRAMtoSATBStartFlag = true;\n }\n\n\n GetVRAMIncrement(vdcno) {\n switch (this.VDC[vdcno].VDCRegister[0x05] & 0x1800) {\n case 0x0000:\n return 1;\n case 0x0800:\n return 32;\n case 0x1000:\n return 64;\n case 0x1800:\n return 128;\n }\n }\n\n\n GetVDCStatus(vdcno) {\n let tmp = this.VDC[vdcno].VDCStatus;\n this.VDC[vdcno].VDCStatus &= 0x40;\n return tmp;\n }\n\n\n GetVDCLow(vdcno) {\n return this.VDC[vdcno].VDCRegister[this.VDC[vdcno].VDCRegisterSelect] & 0x00FF;\n }\n\n\n GetVDCHigh(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VDCRegisterSelect == 0x02 || vdcc.VDCRegisterSelect == 0x03) {\n let tmp = (vdcc.VDCRegister[0x02] & 0xFF00) >> 8;\n vdcc.VDCRegister[0x02] = vdcc.VRAM[vdcc.VDCRegister[0x01]];\n vdcc.VDCRegister[0x03] = vdcc.VDCRegister[0x02];\n vdcc.VDCRegister[0x01] = (vdcc.VDCRegister[0x01] + this.GetVRAMIncrement(vdcno)) & 0xFFFF;\n return tmp;\n }\n\n return (vdcc.VDCRegister[vdcc.VDCRegisterSelect] & 0xFF00) >> 8;\n }\n\n\n /* *************** */\n /* **** Sound **** */\n /* *************** */\n SoundConstruct() {\n this.WaveDataArray = [];\n this.WaveClockCounter = 0;\n this.WaveVolume = 1.0;\n\n this.WebAudioCtx = null;\n this.WebAudioJsNode = null;\n this.WebAudioGainNode = null;\n this.WebAudioBufferSize = 2048;\n\n this.PSGClock = 3579545;\n }\n\n\n WebAudioFunction(e) {\n let output = [];\n let data = [];\n\n for (let i = 0; i < 2; i++) {\n output[i] = e.outputBuffer.getChannelData(i);\n data[i] = new Float32Array(this.WebAudioBufferSize);\n if (this.WaveDataArray[i].length < this.WebAudioBufferSize) {\n data[i].fill(0.0);\n } else {\n for (let j = 0; j < data[i].length; j++)\n data[i][j] = this.WaveDataArray[i].shift() / ((32 * 16 * 32) * 8 * 16);\n if (this.WaveDataArray[i].length > this.WebAudioBufferSize * 2)\n this.WaveDataArray[i] = this.WaveDataArray[i].slice(this.WebAudioBufferSize);\n }\n output[i].set(data[i]);\n }\n }\n\n SoundInit() {\n this.WaveClockCounter = 0;\n this.WaveDataArray = [];\n this.WaveDataArray[0] = [];\n this.WaveDataArray[1] = [];\n\n if (typeof AudioContext !== \"undefined\" && this.WebAudioCtx == null) {\n this.CreateAudioContext();\n }\n }\n\n CreateAudioContext() {\n this.WebAudioCtx = new window.AudioContext();\n this.WebAudioJsNode = this.WebAudioCtx.createScriptProcessor(this.WebAudioBufferSize, 0, 2);\n this.WebAudioJsNode.onaudioprocess = this.WebAudioFunction.bind(this);\n this.WebAudioGainNode = this.WebAudioCtx.createGain();\n this.WebAudioJsNode.connect(this.WebAudioGainNode);\n this.WebAudioGainNode.connect(this.WebAudioCtx.destination);\n }\n\n SoundSet() {\n let waveoutleft;\n let waveoutright;\n let ch;\n\n let i;\n let j;\n let out;\n\n this.WaveClockCounter += this.WebAudioCtx.sampleRate;\n if (this.WaveClockCounter >= this.PSGClock) {\n this.WaveClockCounter -= this.PSGClock;\n\n waveoutleft = 0;\n waveoutright = 0;\n for (j = 0; j < 6; j++) {\n if (j != 1 || !this.WaveLfoOn) {\n ch = this.PSGChannel[j];\n\n if (j < 4 || !ch.noiseon)\n out = ch.keyon ? (ch.dda ? ch.R[6] & 0x1F : ch.wave[ch.index]) : 0;\n else\n out = (ch.noise & 0x0001) == 0x0001 ? 0x0F : 0;\n\n waveoutleft += out * ch.leftvol;\n waveoutright += out * ch.rightvol;\n }\n }\n this.WaveDataArray[0].push(waveoutleft * this.WaveVolumeLeft);\n this.WaveDataArray[1].push(waveoutright * this.WaveVolumeRight);\n this.WebAudioGainNode.gain.value = this.WaveVolume;\n }\n }\n\n\n /* ************* */\n /* **** PSG **** */\n /* ************* */\n PSGConstruct() {\n this.PSGChannel = new Array(6);\n this.PSGBaseClock = this.BaseClock3;\n\n this.PSGProgressClock = 0;\n\n this.WaveVolumeLeft = 0;\n this.WaveVolumeRight = 0;\n\n this.WaveLfoOn = false;\n this.WaveLfoControl = 0;\n this.WaveLfoFreqency = 0;\n }\n\n\n PSGInit() {\n this.SoundInit();\n\n for (let i = 0; i < this.PSGChannel.length; i++)\n this.PSGChannel[i] = {\n R: new Array(10).fill(0),\n keyon: false,\n dda: false,\n freq: 0,\n count: 0,\n vol: 0,\n leftvol: 0,\n rightvol: 0,\n noiseon: false,\n noisefreq: 0,\n noise: 0x8000,\n noisestate: 0,\n index: 0,\n wave: new Uint8Array(32)\n };\n }\n\n\n PSGRun() {\n if (this.WebAudioCtx == null)\n return;\n\n let ch;\n let i;\n let j;\n let ch0;\n let ch1;\n let freqtmp;\n\n this.PSGProgressClock += this.ProgressClock;\n i = (this.PSGProgressClock / this.PSGBaseClock) | 0;\n this.PSGProgressClock %= this.PSGBaseClock;\n\n while (i > 0) {\n i--;\n j = 0;\n\n if (this.WaveLfoOn) {\n ch0 = this.PSGChannel[0];\n ch1 = this.PSGChannel[1];\n if (ch0.keyon) {\n if (ch0.count == 0) {\n ch0.index = (ch0.index + 1) & 0x1F;\n freqtmp = 0;\n if (this.WaveLfoControl != 0x00) {\n freqtmp = ch1.wave[ch1.index];\n freqtmp = freqtmp > 0x0F ? freqtmp - 0x20 : freqtmp & 0x0F;\n freqtmp <<= 4 * (this.WaveLfoControl - 1);\n }\n freqtmp = ch0.freq + freqtmp;\n if (freqtmp < 0)\n freqtmp = 0;\n ch0.count = freqtmp;\n } else\n ch0.count--;\n\n if (ch1.count == 0) {\n ch1.index = (ch1.index + 1) & 0x1F;\n ch1.count = ch1.freq * this.WaveLfoFreqency;\n } else\n ch1.count--;\n }\n j = 2;\n }\n\n for (; j < 6; j++) {\n ch = this.PSGChannel[j];\n if (j < 4 || !ch.noiseon) {\n if (ch.keyon && !ch.dda) {\n if (ch.count == 0) {\n ch.index = (ch.index + 1) & 0x1F;\n ch.count = ch.freq;\n } else\n ch.count--;\n }\n } else {\n if (ch.keyon && !ch.dda) {\n if (ch.count == 0) {\n ch.index = (ch.index + 1) & 0x1F;\n if (ch.index == 0)\n ch.noise = (ch.noise >> 1) | (((ch.noise << 12) ^ (ch.noise << 15)) & 0x8000);\n ch.count = ch.noisefreq;\n } else\n ch.count--;\n }\n }\n }\n this.SoundSet();\n }\n }\n\n\n SetPSG(r, data) {\n if (r == 0) {\n this.PSGChannel[0].R[0] = data & 0x07;\n return;\n }\n\n if (this.PSGChannel[0].R[0] > 5)\n return;\n\n let ch = this.PSGChannel[this.PSGChannel[0].R[0]];\n ch.R[r] = data;\n\n switch (r) {\n case 1:\n this.PSGChannel[0].R[1] = data;\n this.WaveVolumeLeft = (data & 0xF0) >> 4;\n this.WaveVolumeRight = data & 0x0F;\n return;\n\n case 2:\n case 3:\n ch.freq = ((ch.R[3] << 8) | ch.R[2]) & 0x0FFF;\n return;\n\n case 4:\n ch.keyon = (data & 0x80) == 0x80 ? true : false;\n ch.dda = (data & 0x40) == 0x40 ? true : false;\n if ((data & 0x40) == 0x40)\n ch.index = 0;\n ch.vol = data & 0x1F;\n case 5:\n let vol = ch.R[4] & 0x1F;\n ch.leftvol = ((ch.R[5] & 0xF0) >> 4) * vol;\n ch.rightvol = (ch.R[5] & 0x0F) * vol;\n return;\n\n case 6:\n if (!ch.dda) {\n ch.wave[ch.index] = data & 0x1F;\n ch.index = (ch.index + 1) & 0x1F;\n }\n return;\n\n case 7:\n ch.noiseon = (data & 0x80) == 0x80 ? true : false;\n ch.noisefreq = (data & 0x1F) ^ 0x1F;\n return;\n\n case 8:\n this.PSGChannel[0].R[8] = data;\n this.WaveLfoFreqency = data;\n return;\n\n case 9:\n this.PSGChannel[0].R[9] = data;\n this.WaveLfoOn = (data & 0x80) == 0x80 ? true : false;\n this.WaveLfoControl = data & 0x03;\n return;\n }\n }\n\n\n GetPSG(r) {\n if (r > 9)\n return 0xFF;\n if (r == 0 || r == 1 || r == 8 || r == 9)\n return this.PSGChannel[0].R[r];\n if (this.PSGChannel[0].R[0] > 5)\n return 0xFF;\n return this.PSGChannel[this.PSGChannel[0].R[0]].R[r];\n }\n\n\n /* *************** */\n /* **** TIMER **** */\n /* *************** */\n TimerConstruct() {\n this.TimerBaseClock = this.BaseClock7;\n this.TimerReload = 0;\n this.TimerFlag = false;\n this.TimerCounter = 0;\n this.TimerPrescaler = 0;\n this.INTTIQ = 0;\n }\n\n\n TimerInit() {\n this.TimerReload = 0x00;\n this.TimerFlag = false;\n this.TimerCounter = 0x00;\n this.TimerPrescaler = 0;\n this.INTTIQ = 0x00;\n }\n\n\n ReadTimerCounter() {\n return this.TimerCounter;\n }\n\n\n TimerAcknowledge() {\n this.INTTIQ = 0x00;\n }\n\n\n WirteTimerReload(data) {\n this.TimerReload = data & 0x7F;\n }\n\n\n WirteTimerControl(data) {\n if (!this.TimerFlag && (data & 0x01) == 0x01) {\n this.TimerCounter = this.TimerReload;\n this.TimerPrescaler = 0;\n }\n\n this.TimerFlag = (data & 0x01) == 0x01 ? true : false;\n }\n\n\n TimerRun() {\n if (this.TimerFlag) {\n this.TimerPrescaler += this.ProgressClock;\n while (this.TimerPrescaler >= (1024 * this.TimerBaseClock)) {\n this.TimerPrescaler -= 1024 * this.TimerBaseClock;\n this.TimerCounter--;\n if (this.TimerCounter < 0) {\n this.TimerCounter = this.TimerReload;\n this.INTTIQ = this.TIQFlag;\n }\n }\n }\n }\n\n\n /* ****************** */\n /* **** Joystick **** */\n /* ****************** */\n JoystickConstruct() {\n this.JoystickSEL = 0;\n this.JoystickCLR = 0;\n this.KeyUpFunction = null;\n this.KeyDownFunction = null;\n\n this.Keybord = new Array(5).fill([]);\n this.Keybord = this.Keybord.map((d) => { return new Array(4); });\n\n this.GamePad = new Array(5).fill([]);\n this.GamePad = this.Keybord.map((d) => { return new Array(4); });\n\n this.GamePadSelect = 0x00;\n this.GamePadButtonSelect = 0x00;\n this.GamePadBuffer = 0x00;\n\n this.GamePadData = [];\n this.GamePadData[\"STANDARD PAD\"] = [\n [[{ type: \"B\", index: 1 }],// SHOT1\n [{ type: \"B\", index: 0 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }, { type: \"B\", index: 2 }],// RUN\n [{ type: \"B\", index: 12 }],// UP\n [{ type: \"B\", index: 13 }],// DOWN\n [{ type: \"B\", index: 14 }],// LEFT\n [{ type: \"B\", index: 15 }]],// RIGHT\n\n [[{ type: \"B\", index: 1 }],// SHOT1\n [{ type: \"B\", index: 0 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }],// RUN\n [{ type: \"B\", index: 12 }],// UP\n [{ type: \"B\", index: 13 }],// DOWN\n [{ type: \"B\", index: 14 }],// LEFT\n [{ type: \"B\", index: 15 }],// RIGHT\n [{ type: \"B\", index: 7 }],// SHOT3\n [{ type: \"B\", index: 5 }],// SHOT4\n [{ type: \"B\", index: 2 }],// SHOT5\n [{ type: \"B\", index: 3 }]]];// SHOT6\n\n this.GamePadData[\"HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)\"] = [// Chrome\n [[{ type: \"B\", index: 2 }],// SHOT1\n [{ type: \"B\", index: 1 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }, { type: \"B\", index: 0 }],// RUN\n [{ type: \"P\", index: 9 }],// UP (POV)\n [{ type: \"N\", index: 0 }],// DOWN (POV)\n [{ type: \"N\", index: 0 }],// LEFT (POV)\n [{ type: \"N\", index: 0 }]],// RIGHT (POV)\n\n [[{ type: \"B\", index: 2 }],// SHOT1\n [{ type: \"B\", index: 1 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }],// RUN\n [{ type: \"P\", index: 9 }],// UP (POV)\n [{ type: \"N\", index: 0 }],// DOWN (POV)\n [{ type: \"N\", index: 0 }],// LEFT (POV)\n [{ type: \"N\", index: 0 }],// RIGHT (POV)\n [{ type: \"B\", index: 7 }],// SHOT3\n [{ type: \"B\", index: 5 }],// SHOT4\n [{ type: \"B\", index: 0 }],// SHOT5\n [{ type: \"B\", index: 3 }]]];// SHOT6\n\n this.GamePadData[\"0f0d-0009-HORI PAD 3 TURBO\"] = this.GamePadData[\"HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)\"];// Firefox\n this.GamePadData[\"UNKNOWN PAD\"] = this.GamePadData[\"HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)\"];\n\n this.GamePadKeyData = [{ index: 0, data: 0x01 }, { index: 0, data: 0x02 },\n { index: 0, data: 0x04 }, { index: 0, data: 0x08 },\n { index: 1, data: 0x01 }, { index: 1, data: 0x04 },\n { index: 1, data: 0x08 }, { index: 1, data: 0x02 },\n { index: 2, data: 0x01 }, { index: 2, data: 0x02 },\n { index: 2, data: 0x04 }, { index: 2, data: 0x08 }];\n\n this.GamePadPovData = [0x01, 0x01 | 0x02, 0x02, 0x02 | 0x04, 0x04, 0x04 | 0x08, 0x08, 0x01 | 0x08];\n }\n\n\n JoystickInit() {\n this.JoystickSEL = 0;\n this.JoystickCLR = 0;\n\n for (let i = 0; i < this.Keybord.length; i++) {\n this.Keybord[i][0] = 0xBF;\n this.Keybord[i][1] = 0xBF;\n this.Keybord[i][2] = 0xBF;\n this.Keybord[i][3] = 0xB0;\n }\n\n this.GamePadSelect = 0;\n this.GamePadButtonSelect = 0x00;\n this.GamePadBuffer = 0x00;\n }\n\n\n SetJoystick(data) {\n let sel = data & 0x01;\n let clr = (data & 0x02) >> 1;\n\n if ((this.JoystickSEL == 1 && this.JoystickCLR == 0) && (sel == 1 && clr == 1)) {\n this.JoystickSEL = 0;\n this.JoystickCLR = 0;\n this.GamePadSelect = 0;\n if (this.GamePadButton6)\n this.GamePadButtonSelect = this.GamePadButtonSelect ^ 0x02;\n this.GamePadBuffer = 0xB0 | this.CountryType;\n return;\n }\n\n if ((this.JoystickSEL == 0 && this.JoystickCLR == 0) && (sel == 1 && clr == 0))\n this.GamePadSelect++;\n\n this.JoystickSEL = sel;\n this.JoystickCLR = clr;\n\n let no = this.MultiTap ? this.GamePadSelect - 1 : 0;\n if (no < 5) {\n let tmp = this.GamePadButtonSelect | this.JoystickSEL;\n this.GamePadBuffer = (this.Keybord[no][tmp] & this.GamePad[no][tmp]) | this.CountryType;\n } else\n this.GamePadBuffer = 0xB0 | this.CountryType;\n }\n\n\n GetJoystick() {\n return this.GamePadBuffer;\n }\n\n\n UnsetButtonRUN(no) {\n this.Keybord[no][0] |= 0x08;\n }\n\n\n UnsetButtonSELECT(no) {\n this.Keybord[no][0] |= 0x04;\n }\n\n\n UnsetButtonSHOT2(no) {\n this.Keybord[no][0] |= 0x02;\n }\n\n\n UnsetButtonSHOT1(no) {\n this.Keybord[no][0] |= 0x01;\n }\n\n\n UnsetButtonLEFT(no) {\n this.Keybord[no][1] |= 0x08;\n }\n\n\n UnsetButtonDOWN(no) {\n this.Keybord[no][1] |= 0x04;\n }\n\n\n UnsetButtonRIGHT(no) {\n this.Keybord[no][1] |= 0x02;\n }\n\n\n UnsetButtonUP(no) {\n this.Keybord[no][1] |= 0x01;\n }\n\n\n UnsetButtonSHOT6(no) {\n this.Keybord[no][2] |= 0x08;\n }\n\n\n UnsetButtonSHOT5(no) {\n this.Keybord[no][2] |= 0x04;\n }\n\n\n UnsetButtonSHOT4(no) {\n this.Keybord[no][2] |= 0x02;\n }\n\n\n UnsetButtonSHOT3(no) {\n this.Keybord[no][2] |= 0x01;\n }\n\n\n SetButtonRUN(no) {\n this.Keybord[no][0] &= ~0x08;\n }\n\n\n SetButtonSELECT(no) {\n this.Keybord[no][0] &= ~0x04;\n }\n\n\n SetButtonSHOT2(no) {\n this.Keybord[no][0] &= ~0x02;\n }\n\n\n SetButtonSHOT1(no) {\n this.Keybord[no][0] &= ~0x01;\n }\n\n\n SetButtonLEFT(no) {\n this.Keybord[no][1] &= ~0x08;\n }\n\n\n SetButtonDOWN(no) {\n this.Keybord[no][1] &= ~0x04;\n }\n\n\n SetButtonRIGHT(no) {\n this.Keybord[no][1] &= ~0x02;\n }\n\n\n SetButtonUP(no) {\n this.Keybord[no][1] &= ~0x01;\n }\n\n\n SetButtonSHOT6(no) {\n this.Keybord[no][2] &= ~0x08;\n }\n\n\n SetButtonSHOT5(no) {\n this.Keybord[no][2] &= ~0x04;\n }\n\n\n SetButtonSHOT4(no) {\n this.Keybord[no][2] &= ~0x02;\n }\n\n\n SetButtonSHOT3(no) {\n this.Keybord[no][2] &= ~0x01;\n }\n\n\n CheckKeyUpFunction(evt) {\n switch (evt.keyCode) {\n case Keys['START'].c:// RUN 'S'\n this.UnsetButtonRUN(0);\n break;\n case Keys['SELECT'].c:// SELECT 'A'\n this.UnsetButtonSELECT(0);\n break;\n case Keys['A'].c:// SHOT2 'Z'\n case Keys['GP_A'].c:// SHOT2 'Z'\n this.UnsetButtonSHOT2(0);\n break;\n case Keys['B'].c:// SHOT1 'X'\n case Keys['GP_B'].c:// SHOT1 'X'\n this.UnsetButtonSHOT1(0);\n break;\n\n case 86:// SHOT2 'V'\n this.UnsetButtonSHOT2(0);\n break;\n case 66:// SHOT1 'B'\n this.UnsetButtonSHOT1(0);\n break;\n\n case 37:// LEFT\n this.UnsetButtonLEFT(0);\n break;\n case 39:// RIGHT\n this.UnsetButtonRIGHT(0);\n break;\n case 40:// DOWN\n this.UnsetButtonDOWN(0);\n break;\n case 38:// UP\n this.UnsetButtonUP(0);\n break;\n\n case 71:// SHOT6 'G'\n this.UnsetButtonSHOT6(0);\n break;\n case 70:// SHOT5 'F'\n this.UnsetButtonSHOT5(0);\n break;\n case 68:// SHOT4 'D'\n this.UnsetButtonSHOT4(0);\n break;\n case 67:// SHOT3 'C'\n this.UnsetButtonSHOT3(0);\n break;\n }\n //evt.preventDefault();\n }\n\n\n CheckKeyDownFunction(evt) {\n switch (evt.keyCode) {\n case Keys['START'].c:// RUN 'S'\n this.SetButtonRUN(0);\n break;\n case Keys['SELECT'].c:// SELECT 'A'\n this.SetButtonSELECT(0);\n break;\n case Keys['A'].c:// SHOT2 'Z'\n case Keys['GP_A'].c:// SHOT2 'Z'\n this.SetButtonSHOT2(0);\n break;\n case Keys['B'].c:// SHOT2 'Z'\n case Keys['GP_B'].c:// SHOT2 'Z'\n this.SetButtonSHOT1(0);\n break;\n\n case 86:// SHOT2 'V'\n this.SetButtonSHOT2(0);\n break;\n case 66:// SHOT1 'B'\n this.SetButtonSHOT1(0);\n break;\n\n case 37:// LEFT\n this.SetButtonLEFT(0);\n break;\n case 39:// RIGHT\n this.SetButtonRIGHT(0);\n break;\n case 40:// DOWN\n this.SetButtonDOWN(0);\n break;\n case 38:// UP\n this.SetButtonUP(0);\n break;\n\n case 71:// SHOT6 'G'\n this.SetButtonSHOT6(0);\n break;\n case 70:// SHOT5 'F'\n this.SetButtonSHOT5(0);\n break;\n case 68:// SHOT4 'D'\n this.SetButtonSHOT4(0);\n break;\n case 67:// SHOT3 'C'\n this.SetButtonSHOT3(0);\n break;\n }\n //evt.preventDefault();\n }\n\n\n JoystickEventInit() {\n this.KeyUpFunction = this.CheckKeyUpFunction.bind(this);\n this.KeyDownFunction = this.CheckKeyDownFunction.bind(this);\n this.MainCanvas.addEventListener(\"keyup\", this.KeyUpFunction, true);\n this.MainCanvas.addEventListener(\"keydown\", this.KeyDownFunction, true);\n }\n\n\n JoystickEventRelease() {\n this.MainCanvas.removeEventListener(\"keyup\", this.KeyUpFunction, true);\n this.MainCanvas.removeEventListener(\"keydown\", this.KeyDownFunction, true);\n }\n\n CheckGamePad() {\n for (let i = 0; i < this.GamePad.length; i++) {\n this.GamePad[i][0] = 0xBF;\n this.GamePad[i][1] = 0xBF;\n this.GamePad[i][2] = 0xBF;\n this.GamePad[i][3] = 0xB0;\n }\n\n if (typeof navigator.getGamepads === \"undefined\")\n return;\n\n let pads = navigator.getGamepads();\n for (let i = 0; i < 5; i++) {\n let pad = pads[i];\n if (typeof pad !== \"undefined\" && pad !== null) {\n\n let paddata;\n if (pad.mapping === \"standard\")\n paddata = this.GamePadData[\"STANDARD PAD\"];\n else {\n paddata = this.GamePadData[pad.id];\n if (typeof paddata === \"undefined\")\n paddata = this.GamePadData[\"UNKNOWN PAD\"];\n }\n paddata = this.GamePadButton6 ? paddata[1] : paddata[0];\n\n let tmp = 0;\n for (const val0 of paddata) {\n for (const val1 of val0) {\n switch (val1.type) {\n case \"B\":\n if (pad.buttons[val1.index].pressed)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"A-\":\n if (pad.axes[val1.index] < -0.5)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"A+\":\n if (pad.axes[val1.index] > 0.5)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"AB\":\n if (pad.axes[val1.index] > -0.75)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"P\":\n let povtmp = ((pad.axes[val1.index] + 1) * 7 / 2 + 0.5) | 0;\n this.GamePad[i][1] &= ~(povtmp <= 7 ? this.GamePadPovData[povtmp] : 0x00);\n break;\n }\n }\n tmp++;\n }\n }\n }\n }\n}\n"], + "mappings": "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AAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAElD,KAAK,QAAU,CACX,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EA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", + "names": ["PCE_PRESETS", "PCEnginePlatform", "mainElement", "PCE", "RasterVideo", "title", "rom", "novideo", "fn", "getToolForFilename_6502", "addr", "value", "PLATFORMS", "core", "address", "data", "canvas", "i", "d", "tmp", "bit", "op", "neg", "data0", "data1", "carry", "status", "adr", "address0", "address1", "tmp0", "tmp1", "res", "color", "mono", "no", "b", "vdcno", "vdcc", "sp", "spi", "dotcount", "line", "vram", "satb", "revbit16", "s", "y", "attribute", "height", "width", "spy", "index", "data2", "data3", "palette", "priority", "j", "spx", "dot", "bg", "sw", "leftblank", "WidthMask", "x", "index_x", "index_y", "bgx", "revbit", "spbgx", "vline", "palettes", "imageIndex", "black", "bgl0", "window1", "window2", "bgl1", "wflag", "bg0", "bg1", "r", "si", "di", "l", "e", "output", "waveoutleft", "waveoutright", "ch", "out", "ch0", "ch1", "freqtmp", "vol", "sel", "clr", "evt", "Keys", "pads", "pad", "paddata", "val0", "val1", "povtmp"] +} diff --git a/gen/pce-TKEXWG4K.js b/gen/pce-TKEXWG4K.js deleted file mode 100644 index 35d63290..00000000 --- a/gen/pce-TKEXWG4K.js +++ /dev/null @@ -1,2 +0,0 @@ -import"./chunk-4WX2XTAI.js";import{a as y}from"./chunk-UACHXWHT.js";import{K as m,Q as G,Y as u}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var M=[{id:"gfxtest.c",name:"Graphics Test (tiles/sprites)"},{id:"perftest.c",name:"Graphics Pipeline Benchmark"},{id:"solarian.c",name:"Solarian"},{id:"chase.c",name:"Chase"},{id:"test_conio.c",name:"Hello World (conio)"},{id:"siegegame.c",name:"Siege Game (conio)"},{id:"hello.wiz",name:"Hello World (Wiz)"}],V=class{constructor(t){this.mainElement=t}start(){this.pce=new R,this.video=new G(this.mainElement,684,262,{overscan:!0,aspect:4/3}),this.video.create(),this.pce.SetCanvas(this.video.canvas)}reset(){this.pce.Reset()}isRunning(){return this.pce.TimerID!=null}pause(){this.pce.Pause()}resume(){this.pce.CreateAudioContext(),this.pce.Start()}getPresets(){return M}loadROM(t,e){this.pce.Pause(),this.pce.Init(),this.pce.SetROM(e)}getPlatformName(){return"PC Engine"}getToolForFilename(t){return y(t)}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}showHelp(){return"https://8bitworkshop.com/docs/platforms/pce/"}readAddress(t){return this.pce.Get(t)}writeAddress(t,e){this.pce.Set(t,e)}readVRAMAddress(t){return this.pce.VDC[0].VRAM[t]}};m.pce=V;var R=class{constructor(){this.MainCanvas=null;this.Ctx=null;this.ImageData=null;this.MapperBase=class{constructor(t,e){this.ROM=t,this.Core=e}Init(){}Read(t){return 255}Write(t,e){}};this.VDCSelect=0;this.ScreenWidthMAX=0;this.ScreenHeightMAX=0;this.SuperGrafx=!1,this.CountryTypePCE=64,this.CountryTypeTG16=0,this.CountryType=this.CountryTypePCE,this.GamePadButton6=!1,this.MultiTap=!1,this.EtcConstruct(),this.CPUConstruct(),this.StorageConstruct(),this.VCEConstruct(),this.VPCConstruct(),this.VDCConstruct(),this.SoundConstruct(),this.PSGConstruct(),this.TimerConstruct(),this.JoystickConstruct()}EtcConstruct(){this.TimerID=null,this.MainCanvas=null,this.Ctx=null,this.ImageData=null}UpdateAnimationFrame(){this.TimerID=window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this)),this.Run()}CancelAnimationFrame(){window.cancelAnimationFrame(this.TimerID),this.TimerID=null}Pause(){this.TimerID!=null&&(this.JoystickEventRelease(),this.CancelAnimationFrame())}Start(){this.TimerID==null&&(this.JoystickEventInit(),this.UpdateAnimationFrame())}Run(){for(this.CheckGamePad(),this.DrawFlag=!1;!this.DrawFlag;)this.CPURun(),this.VDCRun(),this.TimerRun(),this.PSGRun()}Reset(){this.StorageReset(),this.Mapper.Init(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit(),this.CPUReset()}Init(){this.StorageInit(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit()}SetCanvas(t){if(this.MainCanvas=t,!this.MainCanvas.getContext)return!1;this.Ctx=this.MainCanvas.getContext("2d"),this.ImageData=this.Ctx.createImageData(this.MainCanvas.width,this.MainCanvas.height);for(let e=0;ee&128),this.NZCacheTable[0]=2,this.NFlag=128,this.VFlag=64,this.TFlag=32,this.BFlag=16,this.DFlag=8,this.IFlag=4,this.ZFlag=2,this.CFlag=1,this.TIQFlag=4,this.IRQ1Flag=2,this.IRQ2Flag=1,this.ProgressClock=0,this.CPUBaseClock=0,this.BaseClock1=12,this.BaseClock3=6,this.BaseClock5=4,this.BaseClock7=3,this.BaseClock10=2,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0}CPUReset(){this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.CPUBaseClock=this.BaseClock1,this.SetIFlag(),this.PC=this.Get16(65534)}CPUInit(){this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.ProgressClock=0,this.CPUBaseClock=this.BaseClock1,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.LastInt=0}CPURun(){this.ProgressClock=0;let t=this.LastInt;this.LastInt=(this.P&this.IFlag)==0?this.GetIntStatus():0,t!=0&&this.TransferLen==0?(this.LastInt=0,(t&this.TIQFlag)==this.TIQFlag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65530)):(t&this.IRQ1Flag)==this.IRQ1Flag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65528)):(t&this.IRQ2Flag)==this.IRQ2Flag&&(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.SetIFlag(),this.PC=this.Get16(65526)),this.ProgressClock=8*this.CPUBaseClock):this.OpExec()}OpExec(){let t,e,s,i,a,h=this.Get(this.PC);switch(h){case 105:this.ADC(this.PC+1);break;case 101:this.ADC(this.ZP());break;case 117:this.ADC(this.ZP_X());break;case 114:this.ADC(this.IND());break;case 97:this.ADC(this.IND_X());break;case 113:this.ADC(this.IND_Y());break;case 109:this.ADC(this.ABS());break;case 125:this.ADC(this.ABS_X());break;case 121:this.ADC(this.ABS_Y());break;case 233:this.SBC(this.PC+1);break;case 229:this.SBC(this.ZP());break;case 245:this.SBC(this.ZP_X());break;case 242:this.SBC(this.IND());break;case 225:this.SBC(this.IND_X());break;case 241:this.SBC(this.IND_Y());break;case 237:this.SBC(this.ABS());break;case 253:this.SBC(this.ABS_X());break;case 249:this.SBC(this.ABS_Y());break;case 41:this.AND(this.PC+1);break;case 37:this.AND(this.ZP());break;case 53:this.AND(this.ZP_X());break;case 50:this.AND(this.IND());break;case 33:this.AND(this.IND_X());break;case 49:this.AND(this.IND_Y());break;case 45:this.AND(this.ABS());break;case 61:this.AND(this.ABS_X());break;case 57:this.AND(this.ABS_Y());break;case 73:this.EOR(this.PC+1);break;case 69:this.EOR(this.ZP());break;case 85:this.EOR(this.ZP_X());break;case 82:this.EOR(this.IND());break;case 65:this.EOR(this.IND_X());break;case 81:this.EOR(this.IND_Y());break;case 77:this.EOR(this.ABS());break;case 93:this.EOR(this.ABS_X());break;case 89:this.EOR(this.ABS_Y());break;case 9:this.ORA(this.PC+1);break;case 5:this.ORA(this.ZP());break;case 21:this.ORA(this.ZP_X());break;case 18:this.ORA(this.IND());break;case 1:this.ORA(this.IND_X());break;case 17:this.ORA(this.IND_Y());break;case 13:this.ORA(this.ABS());break;case 29:this.ORA(this.ABS_X());break;case 25:this.ORA(this.ABS_Y());break;case 6:t=this.ZP(),this.Set(t,this.ASL(this.Get(t)));break;case 22:t=this.ZP_X(),this.Set(t,this.ASL(this.Get(t)));break;case 14:t=this.ABS(),this.Set(t,this.ASL(this.Get(t)));break;case 30:t=this.ABS_X(),this.Set(t,this.ASL(this.Get(t)));break;case 10:this.A=this.ASL(this.A);break;case 70:t=this.ZP(),this.Set(t,this.LSR(this.Get(t)));break;case 86:t=this.ZP_X(),this.Set(t,this.LSR(this.Get(t)));break;case 78:t=this.ABS(),this.Set(t,this.LSR(this.Get(t)));break;case 94:t=this.ABS_X(),this.Set(t,this.LSR(this.Get(t)));break;case 74:this.A=this.LSR(this.A);break;case 38:t=this.ZP(),this.Set(t,this.ROL(this.Get(t)));break;case 54:t=this.ZP_X(),this.Set(t,this.ROL(this.Get(t)));break;case 46:t=this.ABS(),this.Set(t,this.ROL(this.Get(t)));break;case 62:t=this.ABS_X(),this.Set(t,this.ROL(this.Get(t)));break;case 42:this.A=this.ROL(this.A);break;case 102:t=this.ZP(),this.Set(t,this.ROR(this.Get(t)));break;case 118:t=this.ZP_X(),this.Set(t,this.ROR(this.Get(t)));break;case 110:t=this.ABS(),this.Set(t,this.ROR(this.Get(t)));break;case 126:t=this.ABS_X(),this.Set(t,this.ROR(this.Get(t)));break;case 106:this.A=this.ROR(this.A);break;case 15:this.BBRi(0);break;case 31:this.BBRi(1);break;case 47:this.BBRi(2);break;case 63:this.BBRi(3);break;case 79:this.BBRi(4);break;case 95:this.BBRi(5);break;case 111:this.BBRi(6);break;case 127:this.BBRi(7);break;case 143:this.BBSi(0);break;case 159:this.BBSi(1);break;case 175:this.BBSi(2);break;case 191:this.BBSi(3);break;case 207:this.BBSi(4);break;case 223:this.BBSi(5);break;case 239:this.BBSi(6);break;case 255:this.BBSi(7);break;case 144:this.Branch((this.P&this.CFlag)==0,1);break;case 176:this.Branch((this.P&this.CFlag)==this.CFlag,1);break;case 208:this.Branch((this.P&this.ZFlag)==0,1);break;case 240:this.Branch((this.P&this.ZFlag)==this.ZFlag,1);break;case 16:this.Branch((this.P&this.NFlag)==0,1);break;case 48:this.Branch((this.P&this.NFlag)==this.NFlag,1);break;case 80:this.Branch((this.P&this.VFlag)==0,1);break;case 112:this.Branch((this.P&this.VFlag)==this.VFlag,1);break;case 128:this.Branch(!0,1);break;case 68:this.PC++,this.Push(this.PCH()),this.Push(this.PCL()),this.Branch(!0,0);break;case 32:e=this.ABS(),this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.PC=e,this.ClearTFlag();break;case 64:this.P=this.Pull(),this.toPCL(this.Pull()),this.toPCH(this.Pull());break;case 96:this.ClearTFlag(),this.toPCL(this.Pull()),this.toPCH(this.Pull()),this.PC++;break;case 76:this.PC=this.ABS(),this.ClearTFlag();break;case 108:this.PC=this.ABS_IND(),this.ClearTFlag();break;case 124:this.PC=this.ABS_X_IND(),this.ClearTFlag();break;case 0:this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.SetBFlag(),this.Push(this.P),this.ClearDFlag(),this.ClearTFlag(),this.SetIFlag(),this.PC=this.Get16(65526);break;case 98:this.A=0,this.ClearTFlag();break;case 130:this.X=0,this.ClearTFlag();break;case 194:this.Y=0,this.ClearTFlag();break;case 24:this.ClearCFlag(),this.ClearTFlag();break;case 216:this.ClearDFlag(),this.ClearTFlag();break;case 88:this.ClearIFlag(),this.ClearTFlag();break;case 184:this.ClearVFlag(),this.ClearTFlag();break;case 56:this.SetCFlag(),this.ClearTFlag();break;case 248:this.SetDFlag(),this.ClearTFlag();break;case 120:this.SetIFlag(),this.ClearTFlag();break;case 244:this.SetTFlag();break;case 201:this.Compare(this.A,this.PC+1);break;case 197:this.Compare(this.A,this.ZP());break;case 213:this.Compare(this.A,this.ZP_X());break;case 210:this.Compare(this.A,this.IND());break;case 193:this.Compare(this.A,this.IND_X());break;case 209:this.Compare(this.A,this.IND_Y());break;case 205:this.Compare(this.A,this.ABS());break;case 221:this.Compare(this.A,this.ABS_X());break;case 217:this.Compare(this.A,this.ABS_Y());break;case 224:this.Compare(this.X,this.PC+1);break;case 228:this.Compare(this.X,this.ZP());break;case 236:this.Compare(this.X,this.ABS());break;case 192:this.Compare(this.Y,this.PC+1);break;case 196:this.Compare(this.Y,this.ZP());break;case 204:this.Compare(this.Y,this.ABS());break;case 198:t=this.ZP(),this.Set(t,this.Decrement(this.Get(t)));break;case 214:t=this.ZP_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 206:t=this.ABS(),this.Set(t,this.Decrement(this.Get(t)));break;case 222:t=this.ABS_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 58:this.A=this.Decrement(this.A);break;case 202:this.X=this.Decrement(this.X);break;case 136:this.Y=this.Decrement(this.Y);break;case 230:t=this.ZP(),this.Set(t,this.Increment(this.Get(t)));break;case 246:t=this.ZP_X(),this.Set(t,this.Increment(this.Get(t)));break;case 238:t=this.ABS(),this.Set(t,this.Increment(this.Get(t)));break;case 254:t=this.ABS_X(),this.Set(t,this.Increment(this.Get(t)));break;case 26:this.A=this.Increment(this.A);break;case 232:this.X=this.Increment(this.X);break;case 200:this.Y=this.Increment(this.Y);break;case 72:this.Push(this.A),this.ClearTFlag();break;case 8:this.Push(this.P),this.ClearTFlag();break;case 218:this.Push(this.X),this.ClearTFlag();break;case 90:this.Push(this.Y),this.ClearTFlag();break;case 104:this.A=this.Pull(),this.SetNZFlag(this.A),this.ClearTFlag();break;case 40:this.P=this.Pull();break;case 250:this.X=this.Pull(),this.SetNZFlag(this.X),this.ClearTFlag();break;case 122:this.Y=this.Pull(),this.SetNZFlag(this.Y),this.ClearTFlag();break;case 7:this.RMBi(0);break;case 23:this.RMBi(1);break;case 39:this.RMBi(2);break;case 55:this.RMBi(3);break;case 71:this.RMBi(4);break;case 87:this.RMBi(5);break;case 103:this.RMBi(6);break;case 119:this.RMBi(7);break;case 135:this.SMBi(0);break;case 151:this.SMBi(1);break;case 167:this.SMBi(2);break;case 183:this.SMBi(3);break;case 199:this.SMBi(4);break;case 215:this.SMBi(5);break;case 231:this.SMBi(6);break;case 247:this.SMBi(7);break;case 34:e=this.A,this.A=this.X,this.X=e,this.ClearTFlag();break;case 66:e=this.A,this.A=this.Y,this.Y=e,this.ClearTFlag();break;case 2:e=this.X,this.X=this.Y,this.Y=e,this.ClearTFlag();break;case 170:this.X=this.A,this.SetNZFlag(this.X),this.ClearTFlag();break;case 168:this.Y=this.A,this.SetNZFlag(this.Y),this.ClearTFlag();break;case 186:this.X=this.S,this.SetNZFlag(this.X),this.ClearTFlag();break;case 138:this.A=this.X,this.SetNZFlag(this.A),this.ClearTFlag();break;case 154:this.S=this.X,this.ClearTFlag();break;case 152:this.A=this.Y,this.SetNZFlag(this.A),this.ClearTFlag();break;case 137:this.BIT(this.PC+1);break;case 36:this.BIT(this.ZP());break;case 52:this.BIT(this.ZP_X());break;case 44:this.BIT(this.ABS());break;case 60:this.BIT(this.ABS_X());break;case 131:this.TST(this.PC+1,8192|this.Get(this.PC+2));break;case 163:this.TST(this.PC+1,8192|this.Get(this.PC+2)+this.X&255);break;case 147:this.TST(this.PC+1,this.Get16(this.PC+2));break;case 179:this.TST(this.PC+1,this.Get16(this.PC+2)+this.X&65535);break;case 20:this.TRB(this.ZP());break;case 28:this.TRB(this.ABS());break;case 4:this.TSB(this.ZP());break;case 12:this.TSB(this.ABS());break;case 169:this.A=this.Load(this.PC+1);break;case 165:this.A=this.Load(this.ZP());break;case 181:this.A=this.Load(this.ZP_X());break;case 178:this.A=this.Load(this.IND());break;case 161:this.A=this.Load(this.IND_X());break;case 177:this.A=this.Load(this.IND_Y());break;case 173:this.A=this.Load(this.ABS());break;case 189:this.A=this.Load(this.ABS_X());break;case 185:this.A=this.Load(this.ABS_Y());break;case 162:this.X=this.Load(this.PC+1);break;case 166:this.X=this.Load(this.ZP());break;case 182:this.X=this.Load(this.ZP_Y());break;case 174:this.X=this.Load(this.ABS());break;case 190:this.X=this.Load(this.ABS_Y());break;case 160:this.Y=this.Load(this.PC+1);break;case 164:this.Y=this.Load(this.ZP());break;case 180:this.Y=this.Load(this.ZP_X());break;case 172:this.Y=this.Load(this.ABS());break;case 188:this.Y=this.Load(this.ABS_X());break;case 133:this.Store(this.ZP(),this.A);break;case 149:this.Store(this.ZP_X(),this.A);break;case 146:this.Store(this.IND(),this.A);break;case 129:this.Store(this.IND_X(),this.A);break;case 145:this.Store(this.IND_Y(),this.A);break;case 141:this.Store(this.ABS(),this.A);break;case 157:this.Store(this.ABS_X(),this.A);break;case 153:this.Store(this.ABS_Y(),this.A);break;case 134:this.Store(this.ZP(),this.X);break;case 150:this.Store(this.ZP_Y(),this.X);break;case 142:this.Store(this.ABS(),this.X);break;case 132:this.Store(this.ZP(),this.Y);break;case 148:this.Store(this.ZP_X(),this.Y);break;case 140:this.Store(this.ABS(),this.Y);break;case 100:this.Store(this.ZP(),0);break;case 116:this.Store(this.ZP_X(),0);break;case 156:this.Store(this.ABS(),0);break;case 158:this.Store(this.ABS_X(),0);break;case 234:this.ClearTFlag();break;case 3:this.SetVDCRegister(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 19:this.SetVDCLow(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 35:this.SetVDCHigh(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 83:for(s=this.Get(this.PC+1),i=1,s==0?s=this.MPRSelect:this.MPRSelect=s,a=0;a<8;a++)(s&i<>>13);break;case 243:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+this.TransferAlt&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 195:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc-1&65535,this.TransferDist=this.TransferDist-1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 227:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+this.TransferAlt&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 115:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 211:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 212:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock7;break;case 84:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock1;break;default:this.ClearTFlag();break}this.PC+=this.OpBytes[h],this.ProgressClock=(this.ProgressClock+this.OpCycles[h])*this.CPUBaseClock}Adder(t,e){let s,i=this.Get(t);!e&&(this.P&this.TFlag)==this.TFlag?(this.ProgressClock=3,s=this.Get(8192|this.X)):s=this.A,e&&(i=~i&255);let a=this.P&1,h=s+i+a;(this.P&this.DFlag)==0?((~s&~i&h|s&i&~h)&128)==128?this.SetVFlag():this.ClearVFlag():(this.ProgressClock+=1,e?((h&15)>9&&(h-=6),(h&240)>144&&(h-=96)):((s&15)+(i&15)+a>9&&(h+=6),(h&496)>144&&(h+=96))),h>255?this.SetCFlag():this.ClearCFlag(),h&=255,this.SetNZFlag(h),!e&&(this.P&this.TFlag)==this.TFlag?this.Set(8192|this.X,h):this.A=h,this.ClearTFlag()}ADC(t){this.Adder(t,!1)}SBC(t){this.Adder(t,!0)}AND(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e&s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}EOR(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e^s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ORA(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e|s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ASL(t){return t<<=1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}LSR(t){return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t>>=1,this.SetNZFlag(t),this.ClearTFlag(),t}ROL(t){return t=t<<1|this.P&1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}ROR(t){let e=this.P&this.CFlag;return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t=t>>1|e<<7,this.SetNZFlag(t),this.ClearTFlag(),t}BBRi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==0,2)}BBSi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==1,2)}Branch(t,e){if(this.ClearTFlag(),t){let s=this.Get(this.PC+e);s>=128&&(s|=65280),this.PC=this.PC+e+1+s&65535,this.ProgressClock=2}else this.PC+=e+1}Compare(t,e){t-=this.Get(e),t<0?this.ClearCFlag():this.SetCFlag(),this.ClearTFlag(),this.SetNZFlag(t&255)}Decrement(t){return t=t-1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Increment(t){return t=t+1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Push(t){this.Set(8448|this.S,t),this.S=this.S-1&255}Pull(){return this.S=this.S+1&255,this.Get(8448|this.S)}RMBi(t){let e=this.ZP();this.Set(e,this.Get(e)&~(1<>8}PCL(){return this.PC&255}toPCH(t){this.PC=this.PC&255|t<<8}toPCL(t){this.PC=this.PC&65280|t}StorageConstruct(){this.MPR=new Array(8),this.MPRSelect=0,this.RAM=new Uint8Array(32768),this.RAMMask=8191,this.BRAM=new Uint8Array(8192).fill(0),this.BRAMUse=!1,this.INTIRQ2=0,this.IntDisableRegister=0,this.Mapper=null,this.Mapper0=class extends this.MapperBase{constructor(t,e){super(t,e);let s=this.ROM.length-1;for(this.Address=524288;this.Address>0&&(this.Address&s)==0;)this.Address>>>=1}Read(t){return t>=this.ROM.length?this.ROM[t&this.Address-1|this.Address]:this.ROM[t]}},this.Mapper1=class extends this.MapperBase{constructor(t,e){super(t,e),this.Address=0}Init(){this.Address=0}Read(t){return t<524288?this.ROM[t]:this.ROM[this.Address|t&524287]}Write(t,e){this.Address=(t&15)+1<<19}},this.Mapper2=class extends this.MapperBase{constructor(t,e){super(t,e),this.ROM=t}Read(t){return this.ROM[t]||0}Write(t,e){t>=524288&&(this.ROM[t]=e)}}}GetIntStatus(){return~this.IntDisableRegister&this.GetIntReqest()}GetIntDisable(){return this.IntDisableRegister}SetIntDisable(t){this.IntDisableRegister=t,this.TimerAcknowledge()}GetIntReqest(){return(((this.VDC[0].VDCStatus|this.VDC[1].VDCStatus)&63)!=0?this.IRQ1Flag:0)|this.INTIRQ2|this.INTTIQ}SetIntReqest(t){this.TimerAcknowledge()}SetROM(t){this.Init();let e=t.slice(t.length%8192);this.Mapper=new this.Mapper0(e,this),this.CPUReset()}StorageInit(){this.RAM.fill(0),this.RAMMask=this.SuperGrafx?32767:8191,this.StorageReset()}StorageReset(){this.IntDisableRegister=0;for(let t=0;t<7;t++)this.MPR[t]=2088960;this.MPR[7]=0,this.MPRSelect=1}Get16(t){return this.Get(t+1)<<8|this.Get(t)}Get(t){if(t=this.MPR[t>>13]|t&8191,t<1048576)return this.Mapper.Read(t);if(t<2023424)return 255;if(t<2031616)return this.BRAMUse?this.BRAM[t&8191]:255;if(t<2064384)return this.RAM[t&this.RAMMask];if(t<2088960)return 255;if(t<2089984)if(this.SuperGrafx){let e=t&31;if(e<8)switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}else{if(e<16)return this.GetVPC(e&7);if(e<24)switch(t&3){case 0:return this.GetVDCStatus(1);case 1:return 0;case 2:return this.GetVDCLow(1);case 3:return this.GetVDCHigh(1)}else return 255}}else switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}if(t<2091008)switch(t&7){case 4:return this.GetVCEDataLow();case 5:return this.GetVCEDataHigh();default:return 0}if(t<2092032)return this.GetPSG(t&15);if(t<2093056)return this.ReadTimerCounter();if(t<2094080)return this.GetJoystick();if(t<2095104)switch(t&3){case 2:return this.GetIntDisable();case 3:return this.GetIntReqest();default:return 0}return 255}Set(t,e){if(t=this.MPR[t>>13]|t&8191,t<1048576){this.Mapper.Write(t,e);return}if(!(t<2023424)){if(t<2031616){this.BRAMUse&&(this.BRAM[t&8191]=e);return}if(t<2064384){this.RAM[t&this.RAMMask]=e;return}if(!(t<2088960)){if(t<2089984){if(this.SuperGrafx){let s=t&31;if(s<8)switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}else if(s<16)this.SetVPC(s&7,e);else if(s<24)switch(t&3){case 0:this.SetVDCRegister(e,1);break;case 2:this.SetVDCLow(e,1);break;case 3:this.SetVDCHigh(e,1);break}}else switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 1:break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}return}if(t<2091008){switch(t&7){case 0:this.SetVCEControl(e);break;case 2:this.SetVCEAddressLow(e);break;case 3:this.SetVCEAddressHigh(e);break;case 4:this.SetVCEDataLow(e);break;case 5:this.SetVCEDataHigh(e);break}return}if(t<2092032){this.SetPSG(t&15,e);return}if(t<2093056){switch(t&1){case 0:this.WirteTimerReload(e);break;case 1:this.WirteTimerControl(e);break}return}if(t<2094080){this.SetJoystick(e);return}if(t<2095104){switch(t&3){case 2:this.SetIntDisable(e);break;case 3:this.SetIntReqest(e);break}return}}}}VCEConstruct(){this.Palette=new Array(512),this.PaletteData=new Array(512),this.MonoPaletteData=new Array(512),this.VCEBaseClock=0,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}VCEInit(){this.Palette.fill(0);for(let t=0;t<512;t++)this.PaletteData[t]={r:0,g:0,b:0},this.MonoPaletteData[t]={r:0,g:0,b:0};this.VCEBaseClock=this.BaseClock5,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}SetVCEControl(t){switch(this.VCEControl=t,t&3){case 0:this.VCEBaseClock=this.BaseClock5;break;case 1:this.VCEBaseClock=this.BaseClock7;break;case 2:case 3:this.VCEBaseClock=this.BaseClock10;break}}SetVCEAddressLow(t){this.VCEAddress=this.VCEAddress&65280|t}SetVCEAddressHigh(t){this.VCEAddress=(this.VCEAddress&255|t<<8)&511}GetVCEDataLow(){return this.Palette[this.VCEAddress]&255}GetVCEDataHigh(){let t=(this.Palette[this.VCEAddress]&65280)>>8;return this.VCEAddress=this.VCEAddress+1&511,t}SetVCEDataLow(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&65280|t,this.ToPalettes()}SetVCEDataHigh(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&255|t<<8,this.ToPalettes(),this.VCEAddress=this.VCEAddress+1&511}ToPalettes(){let t=this.Palette[this.VCEAddress],e=this.PaletteData[this.VCEAddress];e.r=(t>>3&7)*36,e.g=(t>>6&7)*36,e.b=(t&7)*36;let s=e.r*.299+e.g*.587+e.b*.114;this.MonoPaletteData[this.VCEAddress].r=s,this.MonoPaletteData[this.VCEAddress].g=s,this.MonoPaletteData[this.VCEAddress].b=s}VPCConstruct(){this.VPCRegister=new Uint8Array(8),this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority=new Uint8Array(4)}VPCInit(){this.VPCRegister.fill(0),this.VPCRegister[0]=17,this.VPCRegister[1]=17,this.VPCRegister[7]=255,this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority.fill(1)}SetVPC(t,e){t!=7&&(this.VPCRegister[t]=e,t==6&&(this.VDCSelect=e&1),(t==2||t==3)&&(this.VPCWindow1=(this.VPCRegister[2]|(this.VPCRegister[3]&3)<<8)-64,this.VPCWindow1<0&&(this.VPCWindow1=1024)),(t==4||t==5)&&(this.VPCWindow2=(this.VPCRegister[4]|(this.VPCRegister[5]&3)<<8)-64,this.VPCWindow2<0&&(this.VPCWindow2=-1)),t==0&&(this.VPCPriority[2]=this.VPCRegister[0]>>4,this.VPCPriority[3]=this.VPCRegister[0]&15),t==1&&(this.VPCPriority[0]=this.VPCRegister[1]>>4,this.VPCPriority[1]=this.VPCRegister[1]&15))}GetVPC(t){return this.VPCRegister[t]}VDCConstruct(){this.DrawFlag=!1,this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.VDC=new Array(2),this.VDCLineClock=1368,this.ScreenSize=[],this.ScreenSize[this.BaseClock5]=342,this.ScreenSize[this.BaseClock7]=456,this.ScreenSize[this.BaseClock10]=684,this.PutScreenSize=[],this.PutScreenSize[this.BaseClock5]=320,this.PutScreenSize[this.BaseClock7]=428,this.PutScreenSize[this.BaseClock10]=640,this.ScreenHeightMAX=262,this.ScreenWidthMAX=684,this.VScreenWidthArray=[],this.VScreenWidthArray[0]=32,this.VScreenWidthArray[16]=64,this.VScreenWidthArray[32]=128,this.VScreenWidthArray[48]=128,this.ReverseBit=new Uint8Array(256),this.ReverseBit=this.ReverseBit.map((t,e)=>(e&128)>>7|(e&64)>>5|(e&32)>>3|(e&16)>>1|(e&8)<<1|(e&4)<<3|(e&2)<<5|(e&1)<<7),this.ReverseBit16=new Uint16Array(65536).fill(0),this.ReverseBit16=this.ReverseBit16.map((t,e)=>this.ReverseBit[e&255]<<8|this.ReverseBit[(e&65280)>>8]),this.ReverseBit256=new Uint32Array(256).fill(0),this.ReverseBit256=this.ReverseBit256.map((t,e)=>{let s=this.ReverseBit[e];return(s&128)<<21|(s&64)<<18|(s&32)<<15|(s&16)<<12|(s&8)<<9|(s&4)<<6|(s&2)<<3|(s&1)<<0}),this.SPAddressMask=[],this.SPAddressMask[16]=[],this.SPAddressMask[32]=[],this.SPAddressMask[16][16]=2046,this.SPAddressMask[16][32]=2042,this.SPAddressMask[16][64]=2034,this.SPAddressMask[32][16]=2044,this.SPAddressMask[32][32]=2040,this.SPAddressMask[32][64]=2032}MakeSpriteLine(t){let e=this.VDC[t],s=e.SPLine;for(let o=0;o>8)+16;if(l=l>32?64:l,aP+l-1)continue;let x=(r[S+1]&1023)-32,C=((F&256)>>4)+16;if(x+C<=0)continue;let A=a-P;(F&32768)==32768&&(A=l-1-A);let c=(r[S+2]&this.SPAddressMask[C][l])<<5|((A&48)<<3|A&15),k,b,g,D;(F&2048)==0?(k=n[h[c]],b=n[h[c+16]],g=n[h[c+32]],D=n[h[c+48]],C==32&&(k|=n[h[c|64]]<<16,b|=n[h[(c|64)+16]]<<16,g|=n[h[(c|64)+32]]<<16,D|=n[h[(c|64)+48]]<<16)):(k=h[c],b=h[c+16],g=h[c+32],D=h[c+48],C==32&&(k=k<<16|h[c|64],b=b<<16|h[(c|64)+16],g=g<<16|h[(c|64)+32],D=D<<16|h[(c|64)+48]));let d=(F&15)<<4|256,L=F&128,B=0;for(x<0&&(B-=x,x=0);B>>B&1|b>>>B<<1&2|g>>>B<<2&4|D>>>B<<3&8;T!=0&&(f.data=T,f.palette=d,f.priority=L)}if(f.no==255&&(f.no=o),o!=0&&f.no==0&&(e.VDCStatus|=e.VDCRegister[5]&1),++i==256&&(e.VDCStatus|=e.VDCRegister[5]&2,e.SpriteLimit))return}}}MakeBGLine(t){let e=this.VDC[t],s=e.SPLine,i=e.BGLine,a=e.ScreenWidth,h=(e.HDS+e.HSW<<3)+e.DrawBGIndex;if((e.VDCRegister[5]&128)==128){let r=e.VScreenWidth-1,n=e.VDCRegister[7],o=n>>3&r;n=(n&7)<<2;let S=e.DrawBGLine,P=(S>>3&e.VScreenHeight-1)*e.VScreenWidth;S=S&7;let F=e.VRAM,l=0,x=this.ReverseBit256;for(;l>8,k=F[A],b=F[A+8],g=x[k&255]|x[(k&65280)>>8]<<1|x[b&255]<<2|x[(b&65280)>>8]<<3;for(;n<32&&l>>n&15,d=s[l];i[l+h]=d.data!=0&&(D==0||d.priority==128)?d.data|d.palette:D|(D==0?0:c)}n=0,o=o+1&r}}else for(let r=0;r0&&(e.VRAMtoSATBCount-=this.ProgressClock,e.VRAMtoSATBCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&1)<<3)),e.VRAMtoVRAMCount>0&&(e.VRAMtoVRAMCount-=this.ProgressClock,e.VRAMtoVRAMCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&2)<<3))}VDCProcess(t){let e=this.VDC[t];e.VDCProgressClock-=this.VDCLineClock,e.DrawBGIndex=0,e.BGLine.fill(256);for(let s=0;s261&&(i-=261),e.DrawBGYLine==i&&(e.VDCStatus|=(e.VDCRegister[5]&8)<<2,e.VRAMtoSATBStartFlag)){for(let a=0,h=e.VDCRegister[19];a<256;a++,h++)e.SATB[a]=e.VRAM[h];e.VRAMtoSATBCount=256*this.VCEBaseClock,e.VDCStatus|=64,e.VRAMtoSATBStartFlag=(e.VDCRegister[15]&16)==16}e.RasterCount++,e.DrawBGYLine==e.VDS+e.VSW-1&&(e.RasterCount=64),e.RasterCount==e.VDCRegister[6]&&(e.VDCStatus&32)==0&&(e.VDCStatus|=e.VDCRegister[5]&4),e.DrawBGIndex+=e.DrawLineWidth}}VDCRun(){for(this.VDCProcessDMA(0),this.VDC[0].VDCProgressClock+=this.ProgressClock,this.SuperGrafx&&(this.VDCProcessDMA(1),this.VDC[1].VDCProgressClock+=this.ProgressClock);this.VDC[0].VDCProgressClock>=this.VDCLineClock;)this.VDCProcess(0),this.SuperGrafx&&this.VDCProcess(1);if(this.VDCPutLineProgressClock+=this.ProgressClock,this.VDCPutLineProgressClock>=this.VDCLineClock){this.VDCPutLineProgressClock-=this.VDCLineClock,this.VDCPutLine++,this.VDCPutLine==this.ScreenHeightMAX&&(this.VDCPutLine=0,this.GetScreenSize(0),this.VDC[0].DrawBGYLine=0,this.SuperGrafx&&(this.GetScreenSize(1),this.VDC[1].DrawBGYLine=0),this.DrawFlag=!0,this.Ctx.putImageData(this.ImageData,0,0));let t=(this.VCEControl&128)==0?this.PaletteData:this.MonoPaletteData,e=this.ImageData.data,s=this.VDCPutLine*this.ScreenWidthMAX*4,i=t[256],a=this.ScreenSize[this.VCEBaseClock],h=this.VDC[0].BGLine;if(this.SuperGrafx){let r=this.VPCWindow1,n=this.VPCWindow2,o=this.VPCPriority,S=this.VDC[1].BGLine;for(let P=0;P=r&&(F|=1),P<=n&&(F|=2);let l=h[P],x=S[P],C;switch(o[F]){case 7:l>256||x>256?C=t[l>256?l:x]:C=t[(l&255)!=0?l:x];break;case 11:l<256&&l!=0?C=t[l]:C=t[(x&255)!=0?x:l];break;case 3:case 15:C=t[(l&255)!=0?l:x];break;case 1:case 5:case 9:case 13:C=t[l];break;case 2:case 6:case 10:case 14:C=t[x];break;default:C=i;break}e[s]=C.r,e[s+1]=C.g,e[s+2]=C.b}}else for(let r=0;rthis.ScreenWidthMAX&&(e.ScreenWidth=this.ScreenWidthMAX),e.HDS=(s[10]&32512)>>8,e.HSW=s[10]&31,e.HDE=(s[11]&32512)>>8,e.HDW=s[11]&127,e.VDS=(s[12]&65280)>>8,e.VSW=s[12]&31,e.VDW=s[13]&511,e.VCR=s[14]&255,e.ScreenSize=this.ScreenSize[this.VCEBaseClock],this.MainCanvas.width!=e.ScreenSize&&(this.MainCanvas.width=this.PutScreenSize[this.VCEBaseClock]),e.DrawLineWidth=e.HDS+e.HSW+e.HDE+e.HDW+1<<3,e.DrawLineWidth<=this.ScreenSize[this.BaseClock5]?e.DrawLineWidth=this.ScreenSize[this.BaseClock5]:e.DrawLineWidth<=this.ScreenSize[this.BaseClock7]?e.DrawLineWidth=this.ScreenSize[this.BaseClock7]:e.DrawLineWidth=this.ScreenSize[this.BaseClock10],e.VDCBurst=(s[5]&192)==0}VDCInit(){this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.DrawFlag=!1;for(let t=0;t<2;t++){this.VDC[t]={VDCRegister:new Uint16Array(20).fill(0),VRAM:new Uint16Array(65536).fill(0),SATB:new Uint16Array(256).fill(0),VDCBurst:!1,SpriteLimit:!1,SPLine:new Array(this.ScreenWidthMAX),BGLine:new Array(this.ScreenWidthMAX).fill(0),VDCStatus:0,VDCRegisterSelect:0,WriteVRAMData:0,VRAMtoSATBStartFlag:!1,VRAMtoSATBCount:0,VRAMtoVRAMCount:0,RasterCount:64,VDCProgressClock:0,DrawBGYLine:0,DrawBGLine:0,VScreenWidth:0,VScreenHeight:0,VScreenHeightMask:0,ScreenWidth:0,ScreenSize:0,DrawLineWidth:0,DrawBGIndex:0,HDS:0,HSW:0,HDE:0,HDW:0,VDS:0,VSW:0,VDW:0,VCR:0};for(let e=0;e0;n--)o[r]=o[h],h=h+i&65535,r=r+a&65535;return}s.VDCRegisterSelect==19&&(s.VRAMtoSATBStartFlag=!0)}GetVRAMIncrement(t){switch(this.VDC[t].VDCRegister[5]&6144){case 0:return 1;case 2048:return 32;case 4096:return 64;case 6144:return 128}}GetVDCStatus(t){let e=this.VDC[t].VDCStatus;return this.VDC[t].VDCStatus&=64,e}GetVDCLow(t){return this.VDC[t].VDCRegister[this.VDC[t].VDCRegisterSelect]&255}GetVDCHigh(t){let e=this.VDC[t];if(e.VDCRegisterSelect==2||e.VDCRegisterSelect==3){let s=(e.VDCRegister[2]&65280)>>8;return e.VDCRegister[2]=e.VRAM[e.VDCRegister[1]],e.VDCRegister[3]=e.VDCRegister[2],e.VDCRegister[1]=e.VDCRegister[1]+this.GetVRAMIncrement(t)&65535,s}return(e.VDCRegister[e.VDCRegisterSelect]&65280)>>8}SoundConstruct(){this.WaveDataArray=[],this.WaveClockCounter=0,this.WaveVolume=1,this.WebAudioCtx=null,this.WebAudioJsNode=null,this.WebAudioGainNode=null,this.WebAudioBufferSize=2048,this.PSGClock=3579545}WebAudioFunction(t){let e=[],s=[];for(let i=0;i<2;i++){if(e[i]=t.outputBuffer.getChannelData(i),s[i]=new Float32Array(this.WebAudioBufferSize),this.WaveDataArray[i].lengththis.WebAudioBufferSize*2&&(this.WaveDataArray[i]=this.WaveDataArray[i].slice(this.WebAudioBufferSize))}e[i].set(s[i])}}SoundInit(){this.WaveClockCounter=0,this.WaveDataArray=[],this.WaveDataArray[0]=[],this.WaveDataArray[1]=[],typeof AudioContext!="undefined"&&this.WebAudioCtx==null&&this.CreateAudioContext()}CreateAudioContext(){this.WebAudioCtx=new window.AudioContext,this.WebAudioJsNode=this.WebAudioCtx.createScriptProcessor(this.WebAudioBufferSize,0,2),this.WebAudioJsNode.onaudioprocess=this.WebAudioFunction.bind(this),this.WebAudioGainNode=this.WebAudioCtx.createGain(),this.WebAudioJsNode.connect(this.WebAudioGainNode),this.WebAudioGainNode.connect(this.WebAudioCtx.destination)}SoundSet(){let t,e,s,i,a,h;if(this.WaveClockCounter+=this.WebAudioCtx.sampleRate,this.WaveClockCounter>=this.PSGClock){for(this.WaveClockCounter-=this.PSGClock,t=0,e=0,a=0;a<6;a++)(a!=1||!this.WaveLfoOn)&&(s=this.PSGChannel[a],a<4||!s.noiseon?h=s.keyon?s.dda?s.R[6]&31:s.wave[s.index]:0:h=(s.noise&1)==1?15:0,t+=h*s.leftvol,e+=h*s.rightvol);this.WaveDataArray[0].push(t*this.WaveVolumeLeft),this.WaveDataArray[1].push(e*this.WaveVolumeRight),this.WebAudioGainNode.gain.value=this.WaveVolume}}PSGConstruct(){this.PSGChannel=new Array(6),this.PSGBaseClock=this.BaseClock3,this.PSGProgressClock=0,this.WaveVolumeLeft=0,this.WaveVolumeRight=0,this.WaveLfoOn=!1,this.WaveLfoControl=0,this.WaveLfoFreqency=0}PSGInit(){this.SoundInit();for(let t=0;t0;){for(e--,s=0,this.WaveLfoOn&&(i=this.PSGChannel[0],a=this.PSGChannel[1],i.keyon&&(i.count==0?(i.index=i.index+1&31,h=0,this.WaveLfoControl!=0&&(h=a.wave[a.index],h=h>15?h-32:h&15,h<<=4*(this.WaveLfoControl-1)),h=i.freq+h,h<0&&(h=0),i.count=h):i.count--,a.count==0?(a.index=a.index+1&31,a.count=a.freq*this.WaveLfoFreqency):a.count--),s=2);s<6;s++)t=this.PSGChannel[s],s<4||!t.noiseon?t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.count=t.freq):t.count--):t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.index==0&&(t.noise=t.noise>>1|(t.noise<<12^t.noise<<15)&32768),t.count=t.noisefreq):t.count--);this.SoundSet()}}SetPSG(t,e){if(t==0){this.PSGChannel[0].R[0]=e&7;return}if(this.PSGChannel[0].R[0]>5)return;let s=this.PSGChannel[this.PSGChannel[0].R[0]];switch(s.R[t]=e,t){case 1:this.PSGChannel[0].R[1]=e,this.WaveVolumeLeft=(e&240)>>4,this.WaveVolumeRight=e&15;return;case 2:case 3:s.freq=(s.R[3]<<8|s.R[2])&4095;return;case 4:s.keyon=(e&128)==128,s.dda=(e&64)==64,(e&64)==64&&(s.index=0),s.vol=e&31;case 5:let i=s.R[4]&31;s.leftvol=((s.R[5]&240)>>4)*i,s.rightvol=(s.R[5]&15)*i;return;case 6:s.dda||(s.wave[s.index]=e&31,s.index=s.index+1&31);return;case 7:s.noiseon=(e&128)==128,s.noisefreq=e&31^31;return;case 8:this.PSGChannel[0].R[8]=e,this.WaveLfoFreqency=e;return;case 9:this.PSGChannel[0].R[9]=e,this.WaveLfoOn=(e&128)==128,this.WaveLfoControl=e&3;return}}GetPSG(t){return t>9?255:t==0||t==1||t==8||t==9?this.PSGChannel[0].R[t]:this.PSGChannel[0].R[0]>5?255:this.PSGChannel[this.PSGChannel[0].R[0]].R[t]}TimerConstruct(){this.TimerBaseClock=this.BaseClock7,this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}TimerInit(){this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}ReadTimerCounter(){return this.TimerCounter}TimerAcknowledge(){this.INTTIQ=0}WirteTimerReload(t){this.TimerReload=t&127}WirteTimerControl(t){!this.TimerFlag&&(t&1)==1&&(this.TimerCounter=this.TimerReload,this.TimerPrescaler=0),this.TimerFlag=(t&1)==1}TimerRun(){if(this.TimerFlag)for(this.TimerPrescaler+=this.ProgressClock;this.TimerPrescaler>=1024*this.TimerBaseClock;)this.TimerPrescaler-=1024*this.TimerBaseClock,this.TimerCounter--,this.TimerCounter<0&&(this.TimerCounter=this.TimerReload,this.INTTIQ=this.TIQFlag)}JoystickConstruct(){this.JoystickSEL=0,this.JoystickCLR=0,this.KeyUpFunction=null,this.KeyDownFunction=null,this.Keybord=new Array(5).fill([]),this.Keybord=this.Keybord.map(t=>new Array(4)),this.GamePad=new Array(5).fill([]),this.GamePad=this.Keybord.map(t=>new Array(4)),this.GamePadSelect=0,this.GamePadButtonSelect=0,this.GamePadBuffer=0,this.GamePadData=[],this.GamePadData["STANDARD PAD"]=[[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:2}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}]],[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:2}],[{type:"B",index:3}]]],this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"]=[[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:0}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}]],[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:0}],[{type:"B",index:3}]]],this.GamePadData["0f0d-0009-HORI PAD 3 TURBO"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadData["UNKNOWN PAD"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadKeyData=[{index:0,data:1},{index:0,data:2},{index:0,data:4},{index:0,data:8},{index:1,data:1},{index:1,data:4},{index:1,data:8},{index:1,data:2},{index:2,data:1},{index:2,data:2},{index:2,data:4},{index:2,data:8}],this.GamePadPovData=[1,3,2,6,4,12,8,9]}JoystickInit(){this.JoystickSEL=0,this.JoystickCLR=0;for(let t=0;t>1;if(this.JoystickSEL==1&&this.JoystickCLR==0&&e==1&&s==1){this.JoystickSEL=0,this.JoystickCLR=0,this.GamePadSelect=0,this.GamePadButton6&&(this.GamePadButtonSelect=this.GamePadButtonSelect^2),this.GamePadBuffer=176|this.CountryType;return}this.JoystickSEL==0&&this.JoystickCLR==0&&e==1&&s==0&&this.GamePadSelect++,this.JoystickSEL=e,this.JoystickCLR=s;let i=this.MultiTap?this.GamePadSelect-1:0;if(i<5){let a=this.GamePadButtonSelect|this.JoystickSEL;this.GamePadBuffer=this.Keybord[i][a]&this.GamePad[i][a]|this.CountryType}else this.GamePadBuffer=176|this.CountryType}GetJoystick(){return this.GamePadBuffer}UnsetButtonRUN(t){this.Keybord[t][0]|=8}UnsetButtonSELECT(t){this.Keybord[t][0]|=4}UnsetButtonSHOT2(t){this.Keybord[t][0]|=2}UnsetButtonSHOT1(t){this.Keybord[t][0]|=1}UnsetButtonLEFT(t){this.Keybord[t][1]|=8}UnsetButtonDOWN(t){this.Keybord[t][1]|=4}UnsetButtonRIGHT(t){this.Keybord[t][1]|=2}UnsetButtonUP(t){this.Keybord[t][1]|=1}UnsetButtonSHOT6(t){this.Keybord[t][2]|=8}UnsetButtonSHOT5(t){this.Keybord[t][2]|=4}UnsetButtonSHOT4(t){this.Keybord[t][2]|=2}UnsetButtonSHOT3(t){this.Keybord[t][2]|=1}SetButtonRUN(t){this.Keybord[t][0]&=-9}SetButtonSELECT(t){this.Keybord[t][0]&=-5}SetButtonSHOT2(t){this.Keybord[t][0]&=-3}SetButtonSHOT1(t){this.Keybord[t][0]&=-2}SetButtonLEFT(t){this.Keybord[t][1]&=-9}SetButtonDOWN(t){this.Keybord[t][1]&=-5}SetButtonRIGHT(t){this.Keybord[t][1]&=-3}SetButtonUP(t){this.Keybord[t][1]&=-2}SetButtonSHOT6(t){this.Keybord[t][2]&=-9}SetButtonSHOT5(t){this.Keybord[t][2]&=-5}SetButtonSHOT4(t){this.Keybord[t][2]&=-3}SetButtonSHOT3(t){this.Keybord[t][2]&=-2}CheckKeyUpFunction(t){switch(t.keyCode){case u.START.c:this.UnsetButtonRUN(0);break;case u.SELECT.c:this.UnsetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.UnsetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.UnsetButtonSHOT1(0);break;case 86:this.UnsetButtonSHOT2(0);break;case 66:this.UnsetButtonSHOT1(0);break;case 37:this.UnsetButtonLEFT(0);break;case 39:this.UnsetButtonRIGHT(0);break;case 40:this.UnsetButtonDOWN(0);break;case 38:this.UnsetButtonUP(0);break;case 71:this.UnsetButtonSHOT6(0);break;case 70:this.UnsetButtonSHOT5(0);break;case 68:this.UnsetButtonSHOT4(0);break;case 67:this.UnsetButtonSHOT3(0);break}}CheckKeyDownFunction(t){switch(t.keyCode){case u.START.c:this.SetButtonRUN(0);break;case u.SELECT.c:this.SetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.SetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.SetButtonSHOT1(0);break;case 86:this.SetButtonSHOT2(0);break;case 66:this.SetButtonSHOT1(0);break;case 37:this.SetButtonLEFT(0);break;case 39:this.SetButtonRIGHT(0);break;case 40:this.SetButtonDOWN(0);break;case 38:this.SetButtonUP(0);break;case 71:this.SetButtonSHOT6(0);break;case 70:this.SetButtonSHOT5(0);break;case 68:this.SetButtonSHOT4(0);break;case 67:this.SetButtonSHOT3(0);break}}JoystickEventInit(){this.KeyUpFunction=this.CheckKeyUpFunction.bind(this),this.KeyDownFunction=this.CheckKeyDownFunction.bind(this),this.MainCanvas.addEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.addEventListener("keydown",this.KeyDownFunction,!0)}JoystickEventRelease(){this.MainCanvas.removeEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.removeEventListener("keydown",this.KeyDownFunction,!0)}CheckGamePad(){for(let e=0;e.5&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"AB":s.axes[r.index]>-.75&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"P":let n=(s.axes[r.index]+1)*7/2+.5|0;this.GamePad[e][1]&=~(n<=7?this.GamePadPovData[n]:0);break}a++}}}}}; -//# sourceMappingURL=pce-TKEXWG4K.js.map diff --git a/gen/pce-TKEXWG4K.js.map b/gen/pce-TKEXWG4K.js.map deleted file mode 100644 index e8b96f28..00000000 --- a/gen/pce-TKEXWG4K.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../src/platform/pce.ts"], - "sourcesContent": ["import { DisasmLine, Platform, Preset, getToolForFilename_6502 } from \"../common/baseplatform\";\nimport { Keys, PLATFORMS, RasterVideo } from \"../common/emu\";\n\nconst PCE_PRESETS = [\n { id: 'gfxtest.c', name: 'Graphics Test (tiles/sprites)' },\n { id: 'perftest.c', name: 'Graphics Pipeline Benchmark' },\n { id: 'solarian.c', name: 'Solarian' },\n { id: 'chase.c', name: 'Chase' },\n { id: 'test_conio.c', name: 'Hello World (conio)' },\n { id: 'siegegame.c', name: 'Siege Game (conio)' },\n { id: 'hello.wiz', name: 'Hello World (Wiz)' },\n]\n\nclass PCEnginePlatform implements Platform {\n mainElement: HTMLElement;\n pce: PCE;\n video: RasterVideo;\n\n constructor(mainElement) {\n this.mainElement = mainElement;\n }\n start(): void | Promise {\n this.pce = new PCE();\n this.video = new RasterVideo(this.mainElement, 684, 262, { overscan: true, aspect: 4 / 3 });\n this.video.create();\n this.pce.SetCanvas(this.video.canvas);\n }\n reset(): void {\n this.pce.Reset();\n }\n isRunning(): boolean {\n return this.pce.TimerID != null;\n }\n pause(): void {\n this.pce.Pause();\n }\n resume(): void {\n this.pce.CreateAudioContext();\n this.pce.Start();\n }\n getPresets(): Preset[] {\n return PCE_PRESETS;\n }\n loadROM(title: string, rom: Uint8Array) {\n this.pce.Pause();\n this.pce.Init();\n this.pce.SetROM(rom);\n }\n getPlatformName(): string {\n return \"PC Engine\";\n }\n getToolForFilename(fn: string): string {\n return getToolForFilename_6502(fn);\n }\n getDefaultExtensions() {\n return [\".c\", \".cpp\", \".acme\", \".xa\", \".ca65\", \".dasm\", \".ecs\", \".wiz\"];\n }\n showHelp() {\n return \"https://8bitworkshop.com/docs/platforms/pce/\";\n }\n readAddress(addr: number): number {\n return this.pce.Get(addr);\n }\n writeAddress(addr: number, value: number): void {\n this.pce.Set(addr, value);\n }\n readVRAMAddress(addr: number): number {\n return this.pce.VDC[0].VRAM[addr];\n }\n // TODO\n /*\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassembleHuC6280(pc, read(pc), read(pc + 1), read(pc + 2));\n }\n */\n}\n\nPLATFORMS['pce'] = PCEnginePlatform;\n\n/*\n\nhttps://github.com/yhzmr442/jspce\n\nMIT License\n\nCopyright (c) 2019 yhzmr442\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nclass PCE {\n SuperGrafx: boolean;\n CountryTypePCE: number;\n CountryTypeTG16: number;\n CountryType: any;\n GamePadButton6: boolean;\n MultiTap: boolean;\n TimerID: number | null; c\n MainCanvas: HTMLCanvasElement | null = null;\n Ctx: CanvasRenderingContext2D | null = null;\n ImageData: ImageData | null = null;\n DrawFlag: boolean;\n Mapper: any;\n OpCycles: number[];\n OpBytes: number[];\n A: number;\n X: number;\n Y: number;\n PC: number;\n S: number;\n P: number;\n NZCacheTable: Uint8Array;\n NFlag: number;\n VFlag: number;\n TFlag: number;\n BFlag: number;\n DFlag: number;\n IFlag: number;\n ZFlag: number;\n CFlag: number;\n TIQFlag: number;\n IRQ1Flag: number;\n IRQ2Flag: number;\n ProgressClock: number;\n CPUBaseClock: number;\n BaseClock1: number;\n BaseClock3: number;\n BaseClock5: number;\n BaseClock7: number;\n BaseClock10: number;\n TransferSrc: number;\n TransferDist: number;\n TransferLen: number;\n TransferAlt: number;\n LastInt: number;\n MPRSelect: any;\n MPR: any;\n RAM: Uint8Array;\n RAMMask: number;\n BRAM: Uint8Array;\n BRAMUse: boolean;\n INTIRQ2: number;\n IntDisableRegister: number;\n MapperBase = class {\n ROM: number[];\n Core: any;\n constructor(rom, core) {\n this.ROM = rom;\n this.Core = core;\n }\n\n Init() {\n }\n\n Read(address) {\n return 0xFF;\n }\n\n Write(address, data) {\n }\n };\n Mapper0: typeof this.MapperBase;\n Mapper1: typeof this.MapperBase;\n Mapper2: typeof this.MapperBase;\n VDC: any[];\n INTTIQ: number;\n Palette: any[];\n PaletteData: any[];\n MonoPaletteData: any[];\n VCEBaseClock: number;\n VCEControl: number;\n VCEAddress: number;\n VCEData: number;\n VPCRegister: Uint8Array;\n VPCWindow1: number;\n VPCWindow2: number;\n VPCPriority: Uint8Array;\n VDCPutLineProgressClock: number;\n VDCPutLine: number;\n VDCLineClock: number;\n ScreenSize: any[];\n PutScreenSize: any[];\n VScreenWidthArray: any[];\n ReverseBit: Uint8Array;\n ReverseBit16: Uint16Array;\n ReverseBit256: Uint32Array;\n SPAddressMask: any[];\n WaveDataArray: any[];\n WaveClockCounter: number;\n WaveVolume: number;\n WebAudioCtx: AudioContext;\n WebAudioJsNode: any;\n WebAudioGainNode: any;\n WebAudioBufferSize: number;\n PSGClock: number;\n WaveLfoOn: any;\n PSGChannel: any;\n WaveVolumeLeft: any;\n WaveVolumeRight: any;\n PSGBaseClock: any;\n PSGProgressClock: number;\n WaveLfoControl: number;\n WaveLfoFreqency: number;\n TimerBaseClock: any;\n TimerReload: number;\n TimerFlag: boolean;\n TimerCounter: number;\n TimerPrescaler: number;\n JoystickSEL: number;\n JoystickCLR: number;\n KeyUpFunction: null;\n KeyDownFunction: null;\n Keybord: any[];\n GamePad: any[];\n GamePadSelect: number;\n GamePadButtonSelect: number;\n GamePadBuffer: number;\n GamePadData: any[];\n GamePadKeyData: { index: number; data: number; }[];\n GamePadPovData: number[];\n VDCSelect: number = 0;\n ScreenWidthMAX = 0;\n ScreenHeightMAX = 0;\n\n constructor() {\n /* ***************** */\n /* **** Setting **** */\n /* ***************** */\n this.SuperGrafx = false;\n this.CountryTypePCE = 0x40;\n this.CountryTypeTG16 = 0x00;\n this.CountryType = this.CountryTypePCE;\n this.GamePadButton6 = false;\n this.MultiTap = false;\n\n /* ******************* */\n /* **** Construct **** */\n /* ******************* */\n this.EtcConstruct();\n this.CPUConstruct();\n this.StorageConstruct();\n this.VCEConstruct();\n this.VPCConstruct();\n this.VDCConstruct();\n this.SoundConstruct();\n this.PSGConstruct();\n this.TimerConstruct();\n this.JoystickConstruct();\n }\n\n\n /* ************* */\n /* **** ETC **** */\n /* ************* */\n EtcConstruct() {\n this.TimerID = null;\n this.MainCanvas = null;\n this.Ctx = null;\n this.ImageData = null;\n }\n\n\n UpdateAnimationFrame() {\n this.TimerID = window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this));\n this.Run();\n }\n\n\n CancelAnimationFrame() {\n window.cancelAnimationFrame(this.TimerID);\n this.TimerID = null;\n }\n\n\n Pause() {\n if (this.TimerID != null) {\n this.JoystickEventRelease();\n this.CancelAnimationFrame();\n }\n }\n\n\n Start() {\n if (this.TimerID == null) {\n this.JoystickEventInit();\n this.UpdateAnimationFrame();\n }\n }\n\n\n Run() {\n this.CheckGamePad();\n this.DrawFlag = false;\n while (!this.DrawFlag) {\n this.CPURun();\n this.VDCRun();\n this.TimerRun();\n this.PSGRun();\n }\n }\n\n\n Reset() {\n this.StorageReset();\n this.Mapper.Init();\n this.CPUInit();\n this.VCEInit();\n this.VPCInit();\n this.VDCInit();\n this.TimerInit();\n this.JoystickInit();\n this.PSGInit();\n this.CPUReset();\n }\n\n\n Init() {\n this.StorageInit();\n this.CPUInit();\n this.VCEInit();\n this.VPCInit();\n this.VDCInit();\n this.TimerInit();\n this.JoystickInit();\n this.PSGInit();\n }\n\n\n SetCanvas(canvas: HTMLCanvasElement) {\n this.MainCanvas = canvas;\n if (!this.MainCanvas.getContext)\n return false;\n\n this.Ctx = this.MainCanvas.getContext(\"2d\");\n this.ImageData = this.Ctx.createImageData(this.MainCanvas.width, this.MainCanvas.height); // this.ScreenWidthMAX, this.ScreenHeightMAX);\n for (let i = 0; i < this.MainCanvas.width * this.MainCanvas.height * 4; i += 4) {\n this.ImageData.data[i] = 0;\n this.ImageData.data[i + 1] = 0;\n this.ImageData.data[i + 2] = 0;\n this.ImageData.data[i + 3] = 255;\n }\n this.Ctx.putImageData(this.ImageData, 0, 0);\n\n return true;\n }\n\n /* ************* */\n /* **** CPU **** */\n /* ************* */\n CPUConstruct() {\n this.OpCycles = [\n 8, 7, 3, 4, 6, 4, 6, 7, 3, 2, 2, 2, 7, 5, 7, 6,// 0x00\n 2, 7, 7, 4, 6, 4, 6, 7, 2, 5, 2, 2, 7, 5, 7, 6,// 0x10\n 7, 7, 3, 4, 4, 4, 6, 7, 3, 2, 2, 2, 5, 5, 7, 6,// 0x20\n 2, 7, 7, 2, 4, 4, 6, 7, 2, 5, 2, 2, 5, 5, 7, 6,// 0x30\n 7, 7, 3, 4, 8, 4, 6, 7, 3, 2, 2, 2, 4, 5, 7, 6,// 0x40\n 2, 7, 7, 5, 2, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6,// 0x50\n 7, 7, 2, 2, 4, 4, 6, 7, 3, 2, 2, 2, 7, 5, 7, 6,// 0x60\n 2, 7, 7, 0, 4, 4, 6, 7, 2, 5, 3, 2, 7, 5, 7, 6,// 0x70\n 4, 7, 2, 7, 4, 4, 4, 7, 2, 2, 2, 2, 5, 5, 5, 6,// 0x80\n 2, 7, 7, 8, 4, 4, 4, 7, 2, 5, 2, 2, 5, 5, 5, 6,// 0x90\n 2, 7, 2, 7, 4, 4, 4, 7, 2, 2, 2, 2, 5, 5, 5, 6,// 0xA0\n 2, 7, 7, 8, 4, 4, 4, 7, 2, 5, 2, 2, 5, 5, 5, 6,// 0xB0\n 2, 7, 2, 0, 4, 4, 6, 7, 2, 2, 2, 2, 5, 5, 7, 6,// 0xC0\n 2, 7, 7, 0, 2, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6,// 0xD0\n 2, 7, 2, 0, 4, 4, 6, 7, 2, 2, 2, 2, 5, 5, 7, 6,// 0xE0\n 2, 7, 7, 0, 2, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6];//0xF0\n\n this.OpBytes = [\n 0, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0x00\n 0, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0x10\n 0, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0x20\n 0, 2, 2, 1, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0x30\n 0, 2, 1, 2, 0, 2, 2, 2, 1, 2, 1, 1, 0, 3, 3, 0,// 0x40\n 0, 2, 2, 2, 1, 2, 2, 2, 1, 3, 1, 1, 1, 3, 3, 0,// 0x50\n 0, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 0, 3, 3, 0,// 0x60\n 0, 2, 2, 0, 2, 2, 2, 2, 1, 3, 1, 1, 0, 3, 3, 0,// 0x70\n 0, 2, 1, 3, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0x80\n 0, 2, 2, 4, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0x90\n 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0xA0\n 0, 2, 2, 4, 2, 2, 2, 2, 1, 3, 1, 1, 3, 3, 3, 0,// 0xB0\n 2, 2, 1, 0, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0xC0\n 0, 2, 2, 0, 1, 2, 2, 2, 1, 3, 1, 1, 1, 3, 3, 0,// 0xD0\n 2, 2, 1, 0, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 3, 0,// 0xE0\n 0, 2, 2, 0, 1, 2, 2, 2, 1, 3, 1, 1, 1, 3, 3, 0];//0xF0\n\n this.A = 0;\n this.X = 0;\n this.Y = 0;\n this.PC = 0;\n this.S = 0;\n this.P = 0;\n\n this.NZCacheTable = new Uint8Array(0x100);\n this.NZCacheTable = this.NZCacheTable.map((d, i) => { return i & 0x80; });\n this.NZCacheTable[0x00] = 0x02;\n\n this.NFlag = 0x80;\n this.VFlag = 0x40;\n this.TFlag = 0x20;\n this.BFlag = 0x10;\n this.DFlag = 0x08;\n this.IFlag = 0x04;\n this.ZFlag = 0x02;\n this.CFlag = 0x01;\n\n this.TIQFlag = 0x04;\n this.IRQ1Flag = 0x02;\n this.IRQ2Flag = 0x01;\n\n this.ProgressClock = 0;\n this.CPUBaseClock = 0;\n\n this.BaseClock1 = 12;\n this.BaseClock3 = 6;\n this.BaseClock5 = 4;\n this.BaseClock7 = 3;\n this.BaseClock10 = 2;\n\n this.TransferSrc = 0;\n this.TransferDist = 0;\n this.TransferLen = 0;\n this.TransferAlt = 0;\n }\n\n\n CPUReset() {\n this.TransferSrc = 0;\n this.TransferDist = 0;\n this.TransferLen = 0;\n this.TransferAlt = 0;\n\n this.CPUBaseClock = this.BaseClock1;\n\n this.SetIFlag();\n this.PC = this.Get16(0xFFFE);\n }\n\n\n CPUInit() {\n this.A = 0;\n this.X = 0;\n this.Y = 0;\n this.PC = 0;\n this.S = 0;\n this.P = 0x00;\n\n this.ProgressClock = 0;\n this.CPUBaseClock = this.BaseClock1;\n\n this.TransferSrc = 0;\n this.TransferDist = 0;\n this.TransferLen = 0;\n this.TransferAlt = 0;\n\n this.LastInt = 0x00;\n }\n\n\n CPURun() {\n this.ProgressClock = 0;\n\n let tmp = this.LastInt;\n this.LastInt = (this.P & this.IFlag) == 0x00 ? this.GetIntStatus() : 0x00;\n\n if (tmp != 0x00 && this.TransferLen == 0) {\n this.LastInt = 0x00;\n\n if ((tmp & this.TIQFlag) == this.TIQFlag) {//TIQ\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Push(this.P);\n this.P = 0x04;\n this.PC = this.Get16(0xFFFA);\n } else if ((tmp & this.IRQ1Flag) == this.IRQ1Flag) {//IRQ1\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Push(this.P);\n this.P = 0x04;\n this.PC = this.Get16(0xFFF8);\n } else if ((tmp & this.IRQ2Flag) == this.IRQ2Flag) {//IRQ2\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Push(this.P);\n this.SetIFlag();\n this.PC = this.Get16(0xFFF6);\n }\n this.ProgressClock = 8 * this.CPUBaseClock;\n } else\n this.OpExec();\n }\n\n\n OpExec() {\n let address;\n let tmp;\n let data;\n let bit;\n let i;\n\n let op = this.Get(this.PC);\n\n switch (op) {\n case 0x69: // ADC IMM\n this.ADC(this.PC + 1);\n break;\n case 0x65: // ADC ZP\n this.ADC(this.ZP());\n break;\n case 0x75: // ADC ZP, X\n this.ADC(this.ZP_X());\n break;\n case 0x72: // ADC (IND)\n this.ADC(this.IND());\n break;\n case 0x61: // ADC (IND, X)\n this.ADC(this.IND_X());\n break;\n case 0x71: // ADC (IND), Y\n this.ADC(this.IND_Y());\n break;\n case 0x6D: // ADC ABS\n this.ADC(this.ABS());\n break;\n case 0x7D: // ADC ABS, X\n this.ADC(this.ABS_X());\n break;\n case 0x79: // ADC ABS, Y\n this.ADC(this.ABS_Y());\n break;\n\n case 0xE9: // SBC IMM\n this.SBC(this.PC + 1);\n break;\n case 0xE5: // SBC ZP\n this.SBC(this.ZP());\n break;\n case 0xF5: // SBC ZP, X\n this.SBC(this.ZP_X());\n break;\n case 0xF2: // SBC (IND)\n this.SBC(this.IND());\n break;\n case 0xE1: // SBC (IND, X)\n this.SBC(this.IND_X());\n break;\n case 0xF1: // SBC (IND), Y\n this.SBC(this.IND_Y());\n break;\n case 0xED: // SBC ABS\n this.SBC(this.ABS());\n break;\n case 0xFD: // SBC ABS, X\n this.SBC(this.ABS_X());\n break;\n case 0xF9: // SBC ABS, Y\n this.SBC(this.ABS_Y());\n break;\n\n case 0x29: // AND IMM\n this.AND(this.PC + 1);\n break;\n case 0x25: // AND ZP\n this.AND(this.ZP());\n break;\n case 0x35: // AND ZP, X\n this.AND(this.ZP_X());\n break;\n case 0x32: // AND (IND)\n this.AND(this.IND());\n break;\n case 0x21: // AND (IND, X)\n this.AND(this.IND_X());\n break;\n case 0x31: // AND (IND), Y\n this.AND(this.IND_Y());\n break;\n case 0x2D: // AND ABS\n this.AND(this.ABS());\n break;\n case 0x3D: // AND ABS, X\n this.AND(this.ABS_X());\n break;\n case 0x39: // AND ABS, Y\n this.AND(this.ABS_Y());\n break;\n\n case 0x49: // EOR IMM\n this.EOR(this.PC + 1);\n break;\n case 0x45: // EOR ZP\n this.EOR(this.ZP());\n break;\n case 0x55: // EOR ZP, X\n this.EOR(this.ZP_X());\n break;\n case 0x52: // EOR (IND)\n this.EOR(this.IND());\n break;\n case 0x41: // EOR (IND, X)\n this.EOR(this.IND_X());\n break;\n case 0x51: // EOR (IND), Y\n this.EOR(this.IND_Y());\n break;\n case 0x4D: // EOR ABS\n this.EOR(this.ABS());\n break;\n case 0x5D: // EOR ABS, X\n this.EOR(this.ABS_X());\n break;\n case 0x59: // EOR ABS, Y\n this.EOR(this.ABS_Y());\n break;\n\n case 0x09: // ORA IMM\n this.ORA(this.PC + 1);\n break;\n case 0x05: // ORA ZP\n this.ORA(this.ZP());\n break;\n case 0x15: // ORA ZP, X\n this.ORA(this.ZP_X());\n break;\n case 0x12: // ORA (IND)\n this.ORA(this.IND());\n break;\n case 0x01: // ORA (IND, X)\n this.ORA(this.IND_X());\n break;\n case 0x11: // ORA (IND), Y\n this.ORA(this.IND_Y());\n break;\n case 0x0D: // ORA ABS\n this.ORA(this.ABS());\n break;\n case 0x1D: // ORA ABS, X\n this.ORA(this.ABS_X());\n break;\n case 0x19: // ORA ABS, Y\n this.ORA(this.ABS_Y());\n break;\n\n case 0x06: // ASL ZP\n address = this.ZP();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x16: // ASL ZP, X\n address = this.ZP_X();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x0E: // ASL ABS\n address = this.ABS();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x1E: // ASL ABS, X\n address = this.ABS_X();\n this.Set(address, this.ASL(this.Get(address)));\n break;\n case 0x0A: // ASL A\n this.A = this.ASL(this.A);\n break;\n\n case 0x46: // LSR ZP\n address = this.ZP();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x56: // LSR ZP, X\n address = this.ZP_X();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x4E: // LSR ABS\n address = this.ABS();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x5E: // LSR ABS, X\n address = this.ABS_X();\n this.Set(address, this.LSR(this.Get(address)));\n break;\n case 0x4A: // LSR A\n this.A = this.LSR(this.A);\n break;\n\n case 0x26: // ROL ZP\n address = this.ZP();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x36: // ROL ZP, X\n address = this.ZP_X();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x2E: // ROL ABS\n address = this.ABS();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x3E: // ROL ABS, X\n address = this.ABS_X();\n this.Set(address, this.ROL(this.Get(address)));\n break;\n case 0x2A: // ROL A\n this.A = this.ROL(this.A);\n break;\n\n case 0x66: // ROR ZP\n address = this.ZP();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x76: // ROR ZP, X\n address = this.ZP_X();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x6E: // ROR ABS\n address = this.ABS();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x7E: // ROR ABS, X\n address = this.ABS_X();\n this.Set(address, this.ROR(this.Get(address)));\n break;\n case 0x6A: // ROR A\n this.A = this.ROR(this.A);\n break;\n\n case 0x0F: // BBR0\n this.BBRi(0);\n break;\n case 0x1F: // BBR1\n this.BBRi(1);\n break;\n case 0x2F: // BBR2\n this.BBRi(2);\n break;\n case 0x3F: // BBR3\n this.BBRi(3);\n break;\n case 0x4F: // BBR4\n this.BBRi(4);\n break;\n case 0x5F: // BBR5\n this.BBRi(5);\n break;\n case 0x6F: // BBR6\n this.BBRi(6);\n break;\n case 0x7F: // BBR7\n this.BBRi(7);\n break;\n\n case 0x8F: // BBS0\n this.BBSi(0);\n break;\n case 0x9F: // BBS1\n this.BBSi(1);\n break;\n case 0xAF: // BBS2\n this.BBSi(2);\n break;\n case 0xBF: // BBS3\n this.BBSi(3);\n break;\n case 0xCF: // BBS4\n this.BBSi(4);\n break;\n case 0xDF: // BBS5\n this.BBSi(5);\n break;\n case 0xEF: // BBS6\n this.BBSi(6);\n break;\n case 0xFF: // BBS7\n this.BBSi(7);\n break;\n\n case 0x90: // BCC\n this.Branch((this.P & this.CFlag) == 0x00, 1);\n break;\n case 0xB0: // BCS\n this.Branch((this.P & this.CFlag) == this.CFlag, 1);\n break;\n case 0xD0: // BNE\n this.Branch((this.P & this.ZFlag) == 0x00, 1);\n break;\n case 0xF0: // BEQ\n this.Branch((this.P & this.ZFlag) == this.ZFlag, 1);\n break;\n case 0x10: // BPL\n this.Branch((this.P & this.NFlag) == 0x00, 1);\n break;\n case 0x30: // BMI\n this.Branch((this.P & this.NFlag) == this.NFlag, 1);\n break;\n case 0x50: // BVC\n this.Branch((this.P & this.VFlag) == 0x00, 1);\n break;\n case 0x70: // BVS\n this.Branch((this.P & this.VFlag) == this.VFlag, 1);\n break;\n case 0x80: // BRA\n this.Branch(true, 1);\n break;\n\n case 0x44: // BSR\n this.PC++;\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.Branch(true, 0);\n break;\n case 0x20: // JSR ABS\n tmp = this.ABS();\n this.PC += 2;\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.PC = tmp;\n this.ClearTFlag();\n break;\n\n case 0x40: // RTI\n this.P = this.Pull();\n this.toPCL(this.Pull());\n this.toPCH(this.Pull());\n break;\n case 0x60: // RTS\n this.ClearTFlag();\n this.toPCL(this.Pull());\n this.toPCH(this.Pull());\n this.PC++;\n break;\n\n case 0x4C: // JMP ABS\n this.PC = this.ABS();\n this.ClearTFlag();\n break;\n case 0x6C: // JMP (ABS)\n this.PC = this.ABS_IND();\n this.ClearTFlag();\n break;\n case 0x7C: // JMP (ABS, X)\n this.PC = this.ABS_X_IND();\n this.ClearTFlag();\n break;\n\n case 0x00: // BRK\n this.PC += 2;\n this.Push(this.PCH());\n this.Push(this.PCL());\n this.SetBFlag();\n this.Push(this.P);\n this.ClearDFlag();\n this.ClearTFlag();\n this.SetIFlag();\n this.PC = this.Get16(0xFFF6);\n break;\n\n case 0x62: // CLA\n this.A = 0x00;\n this.ClearTFlag();\n break;\n case 0x82: // CLX\n this.X = 0x00;\n this.ClearTFlag();\n break;\n case 0xC2: // CLY\n this.Y = 0x00;\n this.ClearTFlag();\n break;\n\n case 0x18: // CLC\n this.ClearCFlag();\n this.ClearTFlag();\n break;\n case 0xD8: // CLD\n this.ClearDFlag();\n this.ClearTFlag();\n break;\n case 0x58: // CLI\n this.ClearIFlag();\n this.ClearTFlag();\n break;\n case 0xB8: // CLV\n this.ClearVFlag();\n this.ClearTFlag();\n break;\n\n case 0x38: // SEC\n this.SetCFlag();\n this.ClearTFlag();\n break;\n case 0xF8: // SED\n this.SetDFlag();\n this.ClearTFlag();\n break;\n case 0x78: // SEI\n this.SetIFlag();\n this.ClearTFlag();\n break;\n case 0xF4: // SET\n this.SetTFlag();\n break;\n\n case 0xC9: // CMP IMM\n this.Compare(this.A, this.PC + 1);\n break;\n case 0xC5: // CMP ZP\n this.Compare(this.A, this.ZP());\n break;\n case 0xD5: // CMP ZP, X\n this.Compare(this.A, this.ZP_X());\n break;\n case 0xD2: // CMP (IND)\n this.Compare(this.A, this.IND());\n break;\n case 0xC1: // CMP (IND, X)\n this.Compare(this.A, this.IND_X());\n break;\n case 0xD1: // CMP (IND), Y\n this.Compare(this.A, this.IND_Y());\n break;\n case 0xCD: // CMP ABS\n this.Compare(this.A, this.ABS());\n break;\n case 0xDD: // CMP ABS, X\n this.Compare(this.A, this.ABS_X());\n break;\n case 0xD9: // CMP ABS, Y\n this.Compare(this.A, this.ABS_Y());\n break;\n case 0xE0: // CPX IMM\n this.Compare(this.X, this.PC + 1);\n break;\n case 0xE4: // CPX ZP\n this.Compare(this.X, this.ZP());\n break;\n case 0xEC: // CPX ABS\n this.Compare(this.X, this.ABS());\n break;\n case 0xC0: // CPY IMM\n this.Compare(this.Y, this.PC + 1);\n break;\n case 0xC4: // CPY ZP\n this.Compare(this.Y, this.ZP());\n break;\n case 0xCC: // CPY ABS\n this.Compare(this.Y, this.ABS());\n break;\n\n case 0xC6: // DEC ZP\n address = this.ZP();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0xD6: // DEC ZP, X\n address = this.ZP_X();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0xCE: // DEC ABS\n address = this.ABS();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0xDE: // DEC ABS, X\n address = this.ABS_X();\n this.Set(address, this.Decrement(this.Get(address)));\n break;\n case 0x3A: // DEC A\n this.A = this.Decrement(this.A);\n break;\n case 0xCA: // DEX\n this.X = this.Decrement(this.X);\n break;\n case 0x88: // DEY\n this.Y = this.Decrement(this.Y);\n break;\n\n case 0xE6: // INC ZP\n address = this.ZP();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0xF6: // INC ZP, X\n address = this.ZP_X();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0xEE: // INC ABS\n address = this.ABS();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0xFE: // INC ABS, X\n address = this.ABS_X();\n this.Set(address, this.Increment(this.Get(address)));\n break;\n case 0x1A: // INC A\n this.A = this.Increment(this.A);\n break;\n case 0xE8: // INX\n this.X = this.Increment(this.X);\n break;\n case 0xC8: // INY\n this.Y = this.Increment(this.Y);\n break;\n\n case 0x48: // PHA\n this.Push(this.A);\n this.ClearTFlag();\n break;\n case 0x08: // PHP\n this.Push(this.P);\n this.ClearTFlag();\n break;\n case 0xDA: // PHX\n this.Push(this.X);\n this.ClearTFlag();\n break;\n case 0x5A: // PHY\n this.Push(this.Y);\n this.ClearTFlag();\n break;\n\n case 0x68: // PLA\n this.A = this.Pull();\n this.SetNZFlag(this.A);\n this.ClearTFlag();\n break;\n case 0x28: // PLP\n this.P = this.Pull();\n break;\n case 0xFA: // PLX\n this.X = this.Pull();\n this.SetNZFlag(this.X);\n this.ClearTFlag();\n break;\n case 0x7A: // PLY\n this.Y = this.Pull();\n this.SetNZFlag(this.Y);\n this.ClearTFlag();\n break;\n\n case 0x07: // RMB0\n this.RMBi(0);\n break;\n case 0x17: // RMB1\n this.RMBi(1);\n break;\n case 0x27: // RMB2\n this.RMBi(2);\n break;\n case 0x37: // RMB3\n this.RMBi(3);\n break;\n case 0x47: // RMB4\n this.RMBi(4);\n break;\n case 0x57: // RMB5\n this.RMBi(5);\n break;\n case 0x67: // RMB6\n this.RMBi(6);\n break;\n case 0x77: // RMB7\n this.RMBi(7);\n break;\n\n case 0x87: // SMB0\n this.SMBi(0);\n break;\n case 0x97: // SMB1\n this.SMBi(1);\n break;\n case 0xA7: // SMB2\n this.SMBi(2);\n break;\n case 0xB7: // SMB3\n this.SMBi(3);\n break;\n case 0xC7: // SMB4\n this.SMBi(4);\n break;\n case 0xD7: // SMB5\n this.SMBi(5);\n break;\n case 0xE7: // SMB6\n this.SMBi(6);\n break;\n case 0xF7: // SMB7\n this.SMBi(7);\n break;\n\n case 0x22: // SAX\n tmp = this.A;\n this.A = this.X;\n this.X = tmp;\n this.ClearTFlag();\n break;\n case 0x42: // SAY\n tmp = this.A;\n this.A = this.Y;\n this.Y = tmp;\n this.ClearTFlag();\n break;\n case 0x02: // SXY\n tmp = this.X;\n this.X = this.Y;\n this.Y = tmp;\n this.ClearTFlag();\n break;\n\n case 0xAA: // TAX\n this.X = this.A;\n this.SetNZFlag(this.X);\n this.ClearTFlag();\n break;\n case 0xA8: // TAY\n this.Y = this.A;\n this.SetNZFlag(this.Y);\n this.ClearTFlag();\n break;\n case 0xBA: // TSX\n this.X = this.S;\n this.SetNZFlag(this.X);\n this.ClearTFlag();\n break;\n case 0x8A: // TXA\n this.A = this.X;\n this.SetNZFlag(this.A);\n this.ClearTFlag();\n break;\n case 0x9A: // TXS\n this.S = this.X;\n this.ClearTFlag();\n break;\n case 0x98: // TYA\n this.A = this.Y;\n this.SetNZFlag(this.A);\n this.ClearTFlag();\n break;\n\n case 0x89: // BIT IMM\n this.BIT(this.PC + 1);\n break;\n case 0x24: // BIT ZP\n this.BIT(this.ZP());\n break;\n case 0x34: // BIT ZP, X\n this.BIT(this.ZP_X());\n break;\n case 0x2C: // BIT ABS\n this.BIT(this.ABS());\n break;\n case 0x3C: // BIT ABS, X\n this.BIT(this.ABS_X());\n break;\n\n case 0x83: // TST IMM ZP\n this.TST(this.PC + 1, 0x2000 | this.Get(this.PC + 2));\n break;\n case 0xA3: // TST IMM ZP, X\n this.TST(this.PC + 1, 0x2000 | ((this.Get(this.PC + 2) + this.X) & 0xFF));\n break;\n case 0x93: // TST IMM ABS\n this.TST(this.PC + 1, this.Get16(this.PC + 2));\n break;\n case 0xB3: // TST IMM ABS, X\n this.TST(this.PC + 1, (this.Get16(this.PC + 2) + this.X) & 0xFFFF);\n break;\n\n case 0x14: // TRB ZP\n this.TRB(this.ZP())\n break;\n case 0x1C: // TRB ABS\n this.TRB(this.ABS())\n break;\n\n case 0x04: // TSB ZP\n this.TSB(this.ZP())\n break;\n case 0x0C: // TSB ABS\n this.TSB(this.ABS())\n break;\n\n case 0xA9: // LDA IMM\n this.A = this.Load(this.PC + 1);\n break;\n case 0xA5: // LDA ZP\n this.A = this.Load(this.ZP());\n break;\n case 0xB5: // LDA ZP, X\n this.A = this.Load(this.ZP_X());\n break;\n case 0xB2: // LDA (IND)\n this.A = this.Load(this.IND());\n break;\n case 0xA1: // LDA (IND, X)\n this.A = this.Load(this.IND_X());\n break;\n case 0xB1: // LDA (IND), Y\n this.A = this.Load(this.IND_Y());\n break;\n case 0xAD: // LDA ABS\n this.A = this.Load(this.ABS());\n break;\n case 0xBD: // LDA ABS, X\n this.A = this.Load(this.ABS_X());\n break;\n case 0xB9: // LDA ABS, Y\n this.A = this.Load(this.ABS_Y());\n break;\n case 0xA2: // LDX IMM\n this.X = this.Load(this.PC + 1);\n break;\n case 0xA6: // LDX ZP\n this.X = this.Load(this.ZP());\n break;\n case 0xB6: // LDX ZP, Y\n this.X = this.Load(this.ZP_Y());\n break;\n case 0xAE: // LDX ABS\n this.X = this.Load(this.ABS());\n break;\n case 0xBE: // LDX ABS, Y\n this.X = this.Load(this.ABS_Y());\n break;\n case 0xA0: // LDY IMM\n this.Y = this.Load(this.PC + 1);\n break;\n case 0xA4: // LDY ZP\n this.Y = this.Load(this.ZP());\n break;\n case 0xB4: // LDY ZP, X\n this.Y = this.Load(this.ZP_X());\n break;\n case 0xAC: // LDY ABS\n this.Y = this.Load(this.ABS());\n break;\n case 0xBC: // LDY ABS, X\n this.Y = this.Load(this.ABS_X());\n break;\n\n case 0x85: // STA ZP\n this.Store(this.ZP(), this.A);\n break;\n case 0x95: // STA ZP, X\n this.Store(this.ZP_X(), this.A);\n break;\n case 0x92: // STA (IND)\n this.Store(this.IND(), this.A);\n break;\n case 0x81: // STA (IND, X)\n this.Store(this.IND_X(), this.A);\n break;\n case 0x91: // STA (IND), Y\n this.Store(this.IND_Y(), this.A);\n break;\n case 0x8D: // STA ABS\n this.Store(this.ABS(), this.A);\n break;\n case 0x9D: // STA ABS, X\n this.Store(this.ABS_X(), this.A);\n break;\n case 0x99: // STA ABS, Y\n this.Store(this.ABS_Y(), this.A);\n break;\n case 0x86: // STX ZP\n this.Store(this.ZP(), this.X);\n break;\n case 0x96: // STX ZP, Y\n this.Store(this.ZP_Y(), this.X);\n break;\n case 0x8E: // STX ABS\n this.Store(this.ABS(), this.X);\n break;\n case 0x84: // STY ZP\n this.Store(this.ZP(), this.Y);\n break;\n case 0x94: // STY ZP, X\n this.Store(this.ZP_X(), this.Y);\n break;\n case 0x8C: // STY ABS\n this.Store(this.ABS(), this.Y);\n break;\n case 0x64: // STZ ZP\n this.Store(this.ZP(), 0x00);\n break;\n case 0x74: // STZ ZP, X\n this.Store(this.ZP_X(), 0x00);\n break;\n case 0x9C: // STZ ABS\n this.Store(this.ABS(), 0x00);\n break;\n case 0x9E: // STZ ABS, X\n this.Store(this.ABS_X(), 0x00);\n break;\n\n case 0xEA: // NOP\n this.ClearTFlag();\n break;\n\n case 0x03: // ST0\n this.SetVDCRegister(this.Get(this.PC + 1), this.VDCSelect);\n this.ClearTFlag();\n break;\n case 0x13: // ST1\n this.SetVDCLow(this.Get(this.PC + 1), this.VDCSelect);\n this.ClearTFlag();\n break;\n case 0x23: // ST2\n this.SetVDCHigh(this.Get(this.PC + 1), this.VDCSelect);\n this.ClearTFlag();\n break;\n\n case 0x53: // TAMi\n data = this.Get(this.PC + 1);\n bit = 0x01;\n if (data == 0x00)\n data = this.MPRSelect;\n else\n this.MPRSelect = data;\n for (i = 0; i < 8; i++)\n if ((data & (bit << i)) != 0x00)\n this.MPR[i] = this.A << 13;\n break;\n case 0x43: // TMAi\n data = this.Get(this.PC + 1);\n bit = 0x01;\n if (data == 0x00)\n data = this.MPRSelect;\n else\n this.MPRSelect = data;\n for (i = 0; i < 8; i++)\n if ((data & (bit << i)) != 0x00)\n this.A = this.MPR[i] >>> 13;\n break;\n\n case 0xF3: // TAI\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.TransferAlt = 1;\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + this.TransferAlt) & 0xFFFF;\n this.TransferDist = (this.TransferDist + 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.TransferAlt = this.TransferAlt == 1 ? -1 : 1;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n case 0xC3: // TDD\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc - 1) & 0xFFFF;\n this.TransferDist = (this.TransferDist - 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n case 0xE3: // TIA\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.TransferAlt = 1;\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + 1) & 0xFFFF;\n this.TransferDist = (this.TransferDist + this.TransferAlt) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.TransferAlt = this.TransferAlt == 1 ? -1 : 1;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n case 0x73: // TII\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + 1) & 0xFFFF;\n this.TransferDist = (this.TransferDist + 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n\n break;\n case 0xD3: // TIN\n if (this.TransferLen == 0) {\n this.TransferSrc = this.Get16(this.PC + 1);\n this.TransferDist = this.Get16(this.PC + 3);\n this.TransferLen = this.Get16(this.PC + 5);\n this.ProgressClock = 17;\n }\n\n this.Set(this.TransferDist, this.Get(this.TransferSrc));\n this.TransferSrc = (this.TransferSrc + 1) & 0xFFFF;\n this.TransferLen = (this.TransferLen - 1) & 0xFFFF;\n this.ProgressClock += 6;\n\n if (this.TransferLen == 0) {\n this.ClearTFlag();\n this.PC += 7;\n }\n break;\n\n case 0xD4: // CSH\n this.ClearTFlag();\n this.CPUBaseClock = this.BaseClock7;\n break;\n case 0x54: // CSL\n this.ClearTFlag();\n this.CPUBaseClock = this.BaseClock1;\n break;\n default:\n this.ClearTFlag();//NOP\n break;\n }\n this.PC += this.OpBytes[op];\n this.ProgressClock = (this.ProgressClock + this.OpCycles[op]) * this.CPUBaseClock;\n }\n\n Adder(address, neg) {\n let data0;\n let data1 = this.Get(address);\n\n if (!neg && (this.P & this.TFlag) == this.TFlag) {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n } else\n data0 = this.A;\n\n if (neg)\n data1 = ~data1 & 0xFF;\n\n let carry = this.P & 0x01;\n let tmp = data0 + data1 + carry;\n\n if ((this.P & this.DFlag) == 0x00) {\n if ((((~data0 & ~data1 & tmp) | (data0 & data1 & ~tmp)) & 0x80) == 0x80)\n this.SetVFlag();\n else\n this.ClearVFlag();\n } else {\n this.ProgressClock += 1;\n if (neg) {\n if ((tmp & 0x0F) > 0x09)\n tmp -= 0x06;\n if ((tmp & 0xF0) > 0x90)\n tmp -= 0x60;\n } else {\n if (((data0 & 0x0F) + (data1 & 0x0F) + carry) > 0x09)\n tmp += 0x06;\n if ((tmp & 0x1F0) > 0x90)\n tmp += 0x60;\n }\n }\n\n if (tmp > 0xFF)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n tmp &= 0xFF;\n this.SetNZFlag(tmp);\n\n if (!neg && (this.P & this.TFlag) == this.TFlag)\n this.Set(0x2000 | this.X, tmp);\n else\n this.A = tmp;\n\n this.ClearTFlag();\n }\n\n\n ADC(address) {\n this.Adder(address, false);\n }\n\n\n SBC(address) {\n this.Adder(address, true);\n }\n\n\n AND(address) {\n let data0;\n let data1 = this.Get(address);\n\n if ((this.P & this.TFlag) == 0x00) {\n data0 = this.A;\n } else {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n }\n\n let tmp = data0 & data1;\n this.SetNZFlag(tmp);\n\n if ((this.P & this.TFlag) == 0x00)\n this.A = tmp;\n else\n this.Set(0x2000 | this.X, tmp);\n\n this.ClearTFlag();\n }\n\n\n EOR(address) {\n let data0;\n let data1 = this.Get(address);\n\n if ((this.P & this.TFlag) == 0x00) {\n data0 = this.A;\n } else {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n }\n\n let tmp = data0 ^ data1;\n this.SetNZFlag(tmp);\n\n if ((this.P & this.TFlag) == 0x00)\n this.A = tmp;\n else\n this.Set(0x2000 | this.X, tmp);\n\n this.ClearTFlag();\n }\n\n\n ORA(address) {\n let data0;\n let data1 = this.Get(address);\n\n if ((this.P & this.TFlag) == 0x00) {\n data0 = this.A;\n } else {\n this.ProgressClock = 3;\n data0 = this.Get(0x2000 | this.X);\n }\n\n let tmp = data0 | data1;\n this.SetNZFlag(tmp);\n\n if ((this.P & this.TFlag) == 0x00)\n this.A = tmp;\n else\n this.Set(0x2000 | this.X, tmp);\n\n this.ClearTFlag();\n }\n\n\n ASL(data) {\n data <<= 1;\n if (data > 0xFF)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data &= 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n LSR(data) {\n if ((data & 0x01) == 0x01)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data >>= 1;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n ROL(data) {\n data = (data << 1) | (this.P & 0x01);\n if (data > 0xFF)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data &= 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n ROR(data) {\n let tmp = this.P & this.CFlag;\n if ((data & 0x01) == 0x01)\n this.SetCFlag();\n else\n this.ClearCFlag();\n\n data = (data >> 1) | (tmp << 7);\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n BBRi(bit) {\n let tmp = this.Get(this.ZP());\n tmp = (tmp >> bit) & 0x01;\n this.Branch(tmp == 0, 2);\n }\n\n\n BBSi(bit) {\n let tmp = this.Get(this.ZP());\n tmp = (tmp >> bit) & 0x01;\n this.Branch(tmp == 1, 2);\n }\n\n\n Branch(status, adr) {\n this.ClearTFlag();\n if (status) {\n let tmp = this.Get(this.PC + adr);\n if (tmp >= 0x80)\n tmp |= 0xFF00;\n this.PC = (this.PC + adr + 1 + tmp) & 0xFFFF;\n this.ProgressClock = 2;\n } else\n this.PC += adr + 1;\n }\n\n\n Compare(data0, data1) {\n data0 -= this.Get(data1);\n if (data0 < 0)\n this.ClearCFlag();\n else\n this.SetCFlag();\n\n this.ClearTFlag();\n this.SetNZFlag(data0 & 0xFF);\n }\n\n\n Decrement(data) {\n data = (data - 1) & 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n Increment(data) {\n data = (data + 1) & 0xFF;\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n Push(data) {\n this.Set(0x2100 | this.S, data);\n this.S = (this.S - 1) & 0xFF;\n }\n\n\n Pull() {\n this.S = (this.S + 1) & 0xFF;\n return this.Get(0x2100 | this.S);\n }\n\n\n RMBi(bit) {\n let address = this.ZP();\n this.Set(address, this.Get(address) & ~(0x01 << bit));\n this.ClearTFlag();\n }\n\n\n SMBi(bit) {\n let address = this.ZP();\n this.Set(address, this.Get(address) | (0x01 << bit));\n this.ClearTFlag();\n }\n\n\n BIT(address) {\n let tmp = this.Get(address);\n this.SetNZFlag(this.A & tmp);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n TST(address0, address1) {\n let tmp0 = this.Get(address0);\n let tmp1 = this.Get(address1);\n this.SetNZFlag(tmp0 & tmp1);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp1 & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n TRB(address) {\n let tmp = this.Get(address);\n let res = ~this.A & tmp;\n this.Set(address, res);\n this.SetNZFlag(res);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n TSB(address) {\n let tmp = this.Get(address);\n let res = this.A | tmp;\n this.Set(address, res);\n this.SetNZFlag(res);\n this.P = (this.P & ~(this.NFlag | this.VFlag)) | (tmp & (this.NFlag | this.VFlag));\n this.ClearTFlag();\n }\n\n\n Load(address) {\n let data = this.Get(address);\n this.SetNZFlag(data);\n this.ClearTFlag();\n return data;\n }\n\n\n Store(address, data) {\n this.Set(address, data);\n this.ClearTFlag();\n }\n\n\n ZP() {\n return 0x2000 | this.Get(this.PC + 1);\n }\n\n\n ZP_X() {\n return 0x2000 | ((this.Get(this.PC + 1) + this.X) & 0xFF);\n }\n\n\n ZP_Y() {\n return 0x2000 | ((this.Get(this.PC + 1) + this.Y) & 0xFF);\n }\n\n\n IND() {\n return this.Get16(0x2000 | this.Get(this.PC + 1));\n }\n\n\n IND_X() {\n return this.Get16(0x2000 | ((this.Get(this.PC + 1) + this.X) & 0xFF));\n }\n\n\n IND_Y() {\n return (this.Get16(0x2000 | this.Get(this.PC + 1)) + this.Y) & 0xFFFF;\n }\n\n\n ABS() {\n return this.Get16(this.PC + 1);\n }\n\n\n ABS_X() {\n return (this.Get16(this.PC + 1) + this.X) & 0xFFFF;\n }\n\n\n ABS_Y() {\n return (this.Get16(this.PC + 1) + this.Y) & 0xFFFF;\n }\n\n\n ABS_IND() {\n return this.Get16(this.Get16(this.PC + 1));\n }\n\n\n ABS_X_IND() {\n return this.Get16((this.Get16(this.PC + 1) + this.X) & 0xFFFF);\n }\n\n\n SetNZFlag(data) { // Set N Z Flags\n this.P = (this.P & ~(this.NFlag | this.ZFlag)) | this.NZCacheTable[data];\n }\n\n\n SetVFlag() { // Set V Flag\n this.P |= this.VFlag;\n }\n\n\n ClearVFlag() { // Clear V Flag\n this.P &= ~this.VFlag;\n }\n\n\n SetTFlag() { // Set T Flag\n this.P |= this.TFlag;\n }\n\n\n ClearTFlag() { // Clear T Flag\n this.P &= ~this.TFlag;\n }\n\n\n SetBFlag() { // Set B Flag\n this.P |= this.BFlag;\n }\n\n\n ClearBFlag() { // Clear B Flag\n this.P &= ~this.BFlag;\n }\n\n\n SetDFlag() { // Set D Flag\n this.P |= this.DFlag;\n }\n\n\n ClearDFlag() { // Clear D Flag\n this.P &= ~this.DFlag;\n }\n\n\n SetIFlag() { // Set I Flag\n this.P |= this.IFlag;\n }\n\n\n ClearIFlag() { // Clear I Flag\n this.P &= ~this.IFlag;\n }\n\n\n SetCFlag() { // Set C Flag\n this.P |= this.CFlag;\n }\n\n\n ClearCFlag() { // Clear C Flag\n this.P &= ~this.CFlag;\n }\n\n\n PCH() {\n return this.PC >> 8;\n }\n\n\n PCL() {\n return this.PC & 0x00FF;\n }\n\n\n toPCH(data) {\n this.PC = (this.PC & 0x00FF) | (data << 8);\n }\n\n\n toPCL(data) {\n this.PC = (this.PC & 0xFF00) | data;\n }\n\n\n /* ***************** */\n /* **** Storage **** */\n /* ***************** */\n StorageConstruct() {\n this.MPR = new Array(8);\n this.MPRSelect = 0;\n this.RAM = new Uint8Array(0x8000);\n this.RAMMask = 0x1FFF;\n this.BRAM = new Uint8Array(0x2000).fill(0x00);\n this.BRAMUse = false;\n\n this.INTIRQ2 = 0x00;\n this.IntDisableRegister = 0;\n\n this.Mapper = null;\n\n this.Mapper0 = class extends this.MapperBase {\n Address: number;\n constructor(rom, core) {\n super(rom, core);\n\n let tmp = this.ROM.length - 1;\n this.Address = 0x80000;\n while (this.Address > 0x0000) {\n if ((this.Address & tmp) != 0x0000)\n break;\n this.Address >>>= 1;\n }\n }\n\n Read(address) {\n if (address >= this.ROM.length)\n return this.ROM[(address & (this.Address - 1)) | this.Address];\n else\n return this.ROM[address];\n }\n };\n\n this.Mapper1 = class extends this.MapperBase {\n ROM: any;\n Address: number;\n constructor(rom, core) {\n super(rom, core);\n this.Address = 0;\n }\n\n Init() {\n this.Address = 0;\n }\n\n Read(address) {\n if (address < 0x80000)\n return this.ROM[address];\n else\n return this.ROM[this.Address | (address & 0x7FFFF)];\n }\n\n Write(address, data) {\n this.Address = ((address & 0x000F) + 1) << 19;\n }\n };\n\n this.Mapper2 = class extends this.MapperBase {\n ROM: any;\n constructor(rom, core) {\n super(rom, core);\n this.ROM = rom;\n }\n\n Read(address) {\n return this.ROM[address] || 0;\n }\n\n Write(address, data) {\n if (address >= 0x80000)\n this.ROM[address] = data;\n }\n };\n }\n\n\n GetIntStatus() {\n return ~this.IntDisableRegister & this.GetIntReqest();\n }\n\n\n GetIntDisable() {\n return this.IntDisableRegister;\n }\n\n\n SetIntDisable(data) {\n this.IntDisableRegister = data;\n this.TimerAcknowledge();\n }\n\n\n GetIntReqest() {\n return (((this.VDC[0].VDCStatus | this.VDC[1].VDCStatus) & 0x3F) != 0x00 ? this.IRQ1Flag : 0x00) | this.INTIRQ2 | this.INTTIQ;\n }\n\n\n SetIntReqest(data) {\n this.TimerAcknowledge();\n }\n\n\n SetROM(rom) {\n this.Init();\n let tmp = rom.slice(rom.length % 8192);\n //if(tmp[0x001FFF] < 0xE0)\n //\ttmp = tmp.map((d) => {return this.ReverseBit[d];});\n this.Mapper = new this.Mapper0(tmp, this);\n this.CPUReset();\n }\n\n\n StorageInit() {\n this.RAM.fill(0x00);\n this.RAMMask = this.SuperGrafx ? 0x7FFF : 0x1FFF;\n this.StorageReset();\n }\n\n\n StorageReset() {\n this.IntDisableRegister = 0x00;//IntInit\n\n for (let i = 0; i < 7; i++)\n this.MPR[i] = 0xFF << 13;\n this.MPR[7] = 0x00;\n\n this.MPRSelect = 0x01;\n }\n\n\n Get16(address) {\n return (this.Get(address + 1) << 8) | this.Get(address);\n }\n\n\n Get(address) {\n address = this.MPR[address >> 13] | (address & 0x1FFF);\n\n if (address < 0x100000)// ROM\n return this.Mapper.Read(address);\n\n if (address < 0x1EE000)// NOT USE\n return 0xFF;\n\n if (address < 0x1F0000) {// BRAM\n if (this.BRAMUse)\n return this.BRAM[address & 0x1FFF];\n else\n return 0xFF;\n }\n\n if (address < 0x1F8000)// RAM\n return this.RAM[address & this.RAMMask];\n\n if (address < 0x1FE000)// NOT USE\n return 0xFF;\n\n if (address < 0x1FE400) {// VDC\n if (this.SuperGrafx) {\n let tmp = address & 0x00001F;\n if (tmp < 0x00008) {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n return this.GetVDCStatus(0);\n case 0x01:\n return 0x00;\n case 0x02:\n return this.GetVDCLow(0);\n case 0x03:\n return this.GetVDCHigh(0);\n }\n } else if (tmp < 0x00010) {// VPC\n return this.GetVPC(tmp & 0x000007);\n } else if (tmp < 0x00018) {// VDC#2\n switch (address & 0x000003) {\n case 0x00:\n return this.GetVDCStatus(1);\n case 0x01:\n return 0x00;\n case 0x02:\n return this.GetVDCLow(1);\n case 0x03:\n return this.GetVDCHigh(1);\n }\n } else {\n return 0xFF;\n }\n } else {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n return this.GetVDCStatus(0);\n case 0x01:\n return 0x00;\n case 0x02:\n return this.GetVDCLow(0);\n case 0x03:\n return this.GetVDCHigh(0);\n }\n }\n }\n\n if (address < 0x1FE800) {// VCE\n switch (address & 0x000007) {\n case 0x04:\n return this.GetVCEDataLow();\n case 0x05:\n return this.GetVCEDataHigh();\n default:\n return 0x00;\n\n }\n }\n\n if (address < 0x1FEC00)// PSG\n return this.GetPSG(address & 0x00000F);\n\n if (address < 0x1FF000)// TIMER\n return this.ReadTimerCounter();\n\n if (address < 0x1FF400)// IO\n return this.GetJoystick();\n\n if (address < 0x1FF800) {// INT Register\n switch (address & 0x000003) {\n case 0x02:\n return this.GetIntDisable();\n case 0x03:\n return this.GetIntReqest();\n default:\n return 0x00;\n }\n }\n\n return 0xFF;//EXT\n }\n\n\n Set(address, data) {\n address = this.MPR[address >> 13] | (address & 0x1FFF);\n\n if (address < 0x100000) {// ROM\n this.Mapper.Write(address, data);\n return;\n }\n\n if (address < 0x1EE000)// NOT USE\n return;\n\n if (address < 0x1F0000) {// BRAM\n if (this.BRAMUse)\n this.BRAM[address & 0x1FFF] = data;\n return;\n }\n\n if (address < 0x1F8000) {// RAM\n this.RAM[address & this.RAMMask] = data;\n return;\n }\n\n if (address < 0x1FE000)// NOT USE\n return;\n\n if (address < 0x1FE400) {// VDC\n if (this.SuperGrafx) {\n let tmp = address & 0x00001F;\n if (tmp < 0x00008) {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n this.SetVDCRegister(data, 0);\n break;\n case 0x02:\n this.SetVDCLow(data, 0);\n break;\n case 0x03:\n this.SetVDCHigh(data, 0);\n break;\n }\n } else if (tmp < 0x00010) {// VPC\n this.SetVPC(tmp & 0x000007, data);\n } else if (tmp < 0x00018) {// VDC#2\n switch (address & 0x000003) {\n case 0x00:\n this.SetVDCRegister(data, 1);\n break;\n case 0x02:\n this.SetVDCLow(data, 1);\n break;\n case 0x03:\n this.SetVDCHigh(data, 1);\n break;\n }\n }\n } else {\n switch (address & 0x000003) {// VDC#1\n case 0x00:\n this.SetVDCRegister(data, 0);\n break;\n case 0x01:\n break;\n case 0x02:\n this.SetVDCLow(data, 0);\n break;\n case 0x03:\n this.SetVDCHigh(data, 0);\n break;\n }\n }\n return;\n }\n\n if (address < 0x1FE800) {// VCE\n switch (address & 0x000007) {\n case 0x00:\n this.SetVCEControl(data);\n break;\n case 0x02:\n this.SetVCEAddressLow(data);\n break;\n case 0x03:\n this.SetVCEAddressHigh(data);\n break;\n case 0x04:\n this.SetVCEDataLow(data);\n break;\n case 0x05:\n this.SetVCEDataHigh(data);\n break;\n }\n return;\n }\n\n if (address < 0x1FEC00) {// PSG\n this.SetPSG(address & 0x00000F, data);\n return;\n }\n\n if (address < 0x1FF000) {// TIMER\n switch (address & 0x000001) {\n case 0x00:\n this.WirteTimerReload(data);\n break;\n case 0x01:\n this.WirteTimerControl(data);\n break;\n }\n return;\n }\n\n if (address < 0x1FF400) {// IO\n this.SetJoystick(data);\n return;\n }\n\n if (address < 0x1FF800) {// INT Register\n switch (address & 0x000003) {\n case 0x02:\n this.SetIntDisable(data);\n break;\n case 0x03:\n this.SetIntReqest(data);\n break;\n }\n return;\n }\n }\n\n\n /* ************* */\n /* **** VCE **** */\n /* ************* */\n VCEConstruct() {\n this.Palette = new Array(512);\n this.PaletteData = new Array(512);\n this.MonoPaletteData = new Array(512);\n\n this.VCEBaseClock = 0;\n this.VCEControl = 0;\n this.VCEAddress = 0;\n this.VCEData = 0;\n }\n\n\n VCEInit() {\n this.Palette.fill(0x0000);\n for (let i = 0; i < 512; i++) {\n this.PaletteData[i] = { r: 0, g: 0, b: 0 };\n this.MonoPaletteData[i] = { r: 0, g: 0, b: 0 };\n }\n\n this.VCEBaseClock = this.BaseClock5;\n this.VCEControl = 0x00;\n this.VCEAddress = 0x00;\n this.VCEData = 0x00;\n }\n\n\n SetVCEControl(data) {\n this.VCEControl = data;\n\n switch (data & 0x03) {\n case 0x00:\n this.VCEBaseClock = this.BaseClock5;\n break;\n case 0x01:\n this.VCEBaseClock = this.BaseClock7;\n break;\n case 0x02:\n case 0x03:\n this.VCEBaseClock = this.BaseClock10;\n break;\n }\n }\n\n\n SetVCEAddressLow(data) {\n this.VCEAddress = (this.VCEAddress & 0xFF00) | data;\n }\n\n\n SetVCEAddressHigh(data) {\n this.VCEAddress = ((this.VCEAddress & 0x00FF) | (data << 8)) & 0x01FF;\n }\n\n\n GetVCEDataLow() {\n return this.Palette[this.VCEAddress] & 0x00FF;\n }\n\n\n GetVCEDataHigh() {\n let tmp = (this.Palette[this.VCEAddress] & 0xFF00) >> 8;\n this.VCEAddress = (this.VCEAddress + 1) & 0x01FF;\n return tmp;\n }\n\n\n SetVCEDataLow(data) {\n this.Palette[this.VCEAddress] = (this.Palette[this.VCEAddress] & 0xFF00) | data;\n this.ToPalettes();\n }\n\n\n SetVCEDataHigh(data) {\n this.Palette[this.VCEAddress] = (this.Palette[this.VCEAddress] & 0x00FF) | (data << 8);\n this.ToPalettes();\n this.VCEAddress = (this.VCEAddress + 1) & 0x01FF;\n }\n\n\n ToPalettes() {\n let color = this.Palette[this.VCEAddress];\n let tmp = this.PaletteData[this.VCEAddress];\n tmp.r = ((color >> 3) & 0x07) * 36;\n tmp.g = ((color >> 6) & 0x07) * 36;\n tmp.b = (color & 0x07) * 36;\n\n let mono = tmp.r * 0.299 + tmp.g * 0.587 + tmp.b * 0.114;\n this.MonoPaletteData[this.VCEAddress].r = mono;\n this.MonoPaletteData[this.VCEAddress].g = mono;\n this.MonoPaletteData[this.VCEAddress].b = mono;\n }\n\n\n /* ************* */\n /* **** VPC **** */\n /* ************* */\n VPCConstruct() {\n this.VPCRegister = new Uint8Array(8);\n this.VDCSelect = 0;\n this.VPCWindow1 = 0;\n this.VPCWindow2 = 0;\n this.VPCPriority = new Uint8Array(4);\n }\n\n\n VPCInit() {\n this.VPCRegister.fill(0x00);\n this.VPCRegister[0] = 0x11;\n this.VPCRegister[1] = 0x11;\n this.VPCRegister[7] = 0xFF;\n\n this.VDCSelect = 0;\n this.VPCWindow1 = 0;\n this.VPCWindow2 = 0;\n this.VPCPriority.fill(0x01);\n }\n\n\n SetVPC(no, data) {\n if (no == 0x07)\n return;\n\n this.VPCRegister[no] = data;\n if (no == 0x06)\n this.VDCSelect = data & 0x01;\n\n if (no == 0x02 || no == 0x03) {\n this.VPCWindow1 = (this.VPCRegister[0x02] | ((this.VPCRegister[0x03] & 0x03) << 8)) - 64;\n if (this.VPCWindow1 < 0)\n this.VPCWindow1 = 1024;\n }\n\n if (no == 0x04 || no == 0x05) {\n this.VPCWindow2 = (this.VPCRegister[0x04] | ((this.VPCRegister[0x05] & 0x03) << 8)) - 64;\n if (this.VPCWindow2 < 0)\n this.VPCWindow2 = -1;\n }\n\n if (no == 0x00) {\n this.VPCPriority[2] = this.VPCRegister[0x00] >> 4;\n this.VPCPriority[3] = this.VPCRegister[0x00] & 0x0F;\n }\n\n if (no == 0x01) {\n this.VPCPriority[0] = this.VPCRegister[0x01] >> 4;\n this.VPCPriority[1] = this.VPCRegister[0x01] & 0x0F;\n }\n }\n\n\n GetVPC(no) {\n return this.VPCRegister[no];\n }\n\n\n /* ************* */\n /* **** VDC **** */\n /* ************* */\n VDCConstruct() {\n this.DrawFlag = false;\n this.VDCPutLineProgressClock = 0;\n this.VDCPutLine = 0;\n this.VDC = new Array(2);\n\n this.VDCLineClock = 1368;\n\n this.ScreenSize = [];\n this.ScreenSize[this.BaseClock5] = 342;\n this.ScreenSize[this.BaseClock7] = 456;\n this.ScreenSize[this.BaseClock10] = 684;\n\n this.PutScreenSize = [];\n this.PutScreenSize[this.BaseClock5] = 320;\n this.PutScreenSize[this.BaseClock7] = 428;\n this.PutScreenSize[this.BaseClock10] = 640;\n\n this.ScreenHeightMAX = 262;\n this.ScreenWidthMAX = 684;\n\n this.VScreenWidthArray = [];\n this.VScreenWidthArray[0x00] = 32;\n this.VScreenWidthArray[0x10] = 64;\n this.VScreenWidthArray[0x20] = 128;\n this.VScreenWidthArray[0x30] = 128;\n\n this.ReverseBit = new Uint8Array(0x100);\n this.ReverseBit = this.ReverseBit.map((d, i) => {\n return ((i & 0x80) >> 7) | ((i & 0x40) >> 5) |\n ((i & 0x20) >> 3) | ((i & 0x10) >> 1) |\n ((i & 0x08) << 1) | ((i & 0x04) << 3) |\n ((i & 0x02) << 5) | ((i & 0x01) << 7);\n });\n\n this.ReverseBit16 = new Uint16Array(0x10000).fill(0x00);\n this.ReverseBit16 = this.ReverseBit16.map((d, i) => { return (this.ReverseBit[i & 0x00FF] << 8) | this.ReverseBit[(i & 0xFF00) >> 8]; });\n\n this.ReverseBit256 = new Uint32Array(0x100).fill(0x00);\n this.ReverseBit256 = this.ReverseBit256.map((d, i) => {\n let b = this.ReverseBit[i];\n return ((b & 0x80) << (28 - 7)) |\n ((b & 0x40) << (24 - 6)) |\n ((b & 0x20) << (20 - 5)) |\n ((b & 0x10) << (16 - 4)) |\n ((b & 0x08) << (12 - 3)) |\n ((b & 0x04) << (8 - 2)) |\n ((b & 0x02) << (4 - 1)) |\n ((b & 0x01) << (0 - 0));\n });\n\n this.SPAddressMask = [];\n this.SPAddressMask[16] = [];\n this.SPAddressMask[32] = [];\n this.SPAddressMask[16][16] = 0x07FE;\n this.SPAddressMask[16][32] = 0x07FE & 0x07FA;\n this.SPAddressMask[16][64] = 0x07FE & 0x07F2;\n this.SPAddressMask[32][16] = 0x07FC;\n this.SPAddressMask[32][32] = 0x07FC & 0x07FA;\n this.SPAddressMask[32][64] = 0x07FC & 0x07F2;\n }\n\n\n MakeSpriteLine(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n let sp = vdcc.SPLine;\n for (let i = 0; i < vdcc.ScreenWidth; i++) {\n let spi = sp[i];\n spi.data = 0x00;\n spi.palette = 0x000;\n spi.no = 255;\n spi.priority = 0x00;\n }\n\n if ((vdcc.VDCRegister[0x05] & 0x0040) == 0x0000)\n return;\n\n let dotcount = 0;\n let line = vdcc.DrawBGYLine - (vdcc.VDS + vdcc.VSW) + 64;\n\n let vram = vdcc.VRAM;\n let satb = vdcc.SATB;\n let revbit16 = this.ReverseBit16;\n for (let i = 0, s = 0; i < 64; i++, s += 4) {\n let y = satb[s] & 0x3FF;\n let attribute = satb[s + 3];\n\n let height = ((attribute & 0x3000) >> 8) + 16;\n height = height > 32 ? 64 : height;\n\n if (line < y || line > (y + height - 1))\n continue;\n\n let x = (satb[s + 1] & 0x3FF) - 32;\n let width = ((attribute & 0x0100) >> 4) + 16;\n if ((x + width) <= 0)\n continue;\n\n let spy = line - y;\n if ((attribute & 0x8000) == 0x8000)\n spy = (height - 1) - spy;\n\n let index = ((satb[s + 2] & this.SPAddressMask[width][height]) << 5) | (((spy & 0x30) << 3) | (spy & 0x0F));\n\n let data0;\n let data1;\n let data2;\n let data3;\n if ((attribute & 0x0800) == 0x0000) {\n data0 = revbit16[vram[index]];\n data1 = revbit16[vram[index + 16]];\n data2 = revbit16[vram[index + 32]];\n data3 = revbit16[vram[index + 48]];\n if (width == 32) {\n data0 |= revbit16[vram[(index | 0x0040)]] << 16;\n data1 |= revbit16[vram[(index | 0x0040) + 16]] << 16;\n data2 |= revbit16[vram[(index | 0x0040) + 32]] << 16;\n data3 |= revbit16[vram[(index | 0x0040) + 48]] << 16;\n }\n } else {\n data0 = vram[index];\n data1 = vram[index + 16];\n data2 = vram[index + 32];\n data3 = vram[index + 48];\n if (width == 32) {\n data0 = (data0 << 16) | vram[(index | 0x0040)];\n data1 = (data1 << 16) | vram[(index | 0x0040) + 16];\n data2 = (data2 << 16) | vram[(index | 0x0040) + 32];\n data3 = (data3 << 16) | vram[(index | 0x0040) + 48];\n }\n }\n\n let palette = ((attribute & 0x000F) << 4) | 0x0100;\n let priority = attribute & 0x0080;\n\n let j = 0;\n if (x < 0) {\n j -= x;\n x = 0;\n }\n\n for (; j < width && x < vdcc.ScreenWidth; j++, x++) {\n let spx = sp[x];\n if (spx.data == 0x00) {\n let dot = ((data0 >>> j) & 0x0001)\n | (((data1 >>> j) << 1) & 0x0002)\n | (((data2 >>> j) << 2) & 0x0004)\n | (((data3 >>> j) << 3) & 0x0008);\n if (dot != 0x00) {\n spx.data = dot;\n spx.palette = palette;\n spx.priority = priority;\n }\n }\n\n if (spx.no == 255)\n spx.no = i;\n\n if (i != 0 && spx.no == 0)\n vdcc.VDCStatus |= vdcc.VDCRegister[0x05] & 0x0001;//SetSpriteCollisionINT\n\n if (++dotcount == 256) {\n vdcc.VDCStatus |= vdcc.VDCRegister[0x05] & 0x0002;//SetSpriteOverINT\n if (vdcc.SpriteLimit)\n return;\n }\n }\n }\n }\n\n\n MakeBGLine(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n let sp = vdcc.SPLine;\n let bg = vdcc.BGLine;\n let sw = vdcc.ScreenWidth;\n let leftblank = ((vdcc.HDS + vdcc.HSW) << 3) + vdcc.DrawBGIndex;\n\n if ((vdcc.VDCRegister[0x05] & 0x0080) == 0x0080) {\n let WidthMask = vdcc.VScreenWidth - 1;\n\n let x = vdcc.VDCRegister[0x07];\n let index_x = (x >> 3) & WidthMask;\n x = (x & 0x07) << 2;\n\n let y = vdcc.DrawBGLine;\n let index_y = ((y >> 3) & (vdcc.VScreenHeight - 1)) * vdcc.VScreenWidth;\n y = y & 0x07;\n\n let vram = vdcc.VRAM;\n let bgx = 0;\n let revbit = this.ReverseBit256;\n\n while (bgx < sw) {\n let tmp = vram[index_x + index_y];\n let address = ((tmp & 0x0FFF) << 4) + y;\n let palette = (tmp & 0xF000) >> 8;\n\n let data0 = vram[address];\n let data1 = vram[address + 8];\n let data = (revbit[data0 & 0x00FF]) |\n (revbit[(data0 & 0xFF00) >> 8] << 1) |\n (revbit[data1 & 0x00FF] << 2) |\n (revbit[(data1 & 0xFF00) >> 8] << 3);\n\n for (; x < 32 && bgx < sw; x += 4, bgx++) {\n let dot = (data >>> x) & 0x0F;\n let spbgx = sp[bgx];\n bg[bgx + leftblank] = spbgx.data != 0x00 && (dot == 0x00 || spbgx.priority == 0x0080) ?\n spbgx.data | spbgx.palette : dot | (dot == 0x00 ? 0x00 : palette);\n }\n\n x = 0;\n index_x = (index_x + 1) & WidthMask;\n }\n } else {\n for (let i = 0; i < sw; i++)\n bg[i + leftblank] = sp[i].data | sp[i].palette;\n }\n }\n\n\n MakeBGColorLineVDC(vdcno) {\n this.VDC[vdcno].BGLine.fill(0x100);\n }\n\n\n VDCProcessDMA(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VRAMtoSATBCount > 0) {//VRAMtoSATB\n vdcc.VRAMtoSATBCount -= this.ProgressClock;\n if (vdcc.VRAMtoSATBCount <= 0)\n vdcc.VDCStatus = (vdcc.VDCStatus & 0xBF) | ((vdcc.VDCRegister[0x0F] & 0x0001) << 3);//VRAMtoSATB INT\n }\n\n if (vdcc.VRAMtoVRAMCount > 0) {//VRAMtoVRAM\n vdcc.VRAMtoVRAMCount -= this.ProgressClock;\n if (vdcc.VRAMtoVRAMCount <= 0)\n vdcc.VDCStatus = (vdcc.VDCStatus & 0xBF) | ((vdcc.VDCRegister[0x0F] & 0x0002) << 3);//VRAMtoVRAM INT\n }\n }\n\n\n VDCProcess(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n vdcc.VDCProgressClock -= this.VDCLineClock;\n\n vdcc.DrawBGIndex = 0;\n vdcc.BGLine.fill(0x100);\n\n for (let i = 0; i < vdcc.ScreenSize; i += vdcc.DrawLineWidth) {\n vdcc.DrawBGYLine++;\n\n if (vdcc.DrawBGYLine == this.ScreenHeightMAX)\n vdcc.DrawBGYLine = 0;\n\n if (vdcc.DrawBGYLine < (vdcc.VDS + vdcc.VSW)) {//OVER SCAN\n this.MakeBGColorLineVDC(vdcno);\n } else if (vdcc.DrawBGYLine <= (vdcc.VDS + vdcc.VSW + vdcc.VDW)) {//ACTIVE DISPLAY\n vdcc.DrawBGLine = (vdcc.DrawBGYLine == (vdcc.VDS + vdcc.VSW) ? vdcc.VDCRegister[0x08] : (vdcc.DrawBGLine + 1)) & vdcc.VScreenHeightMask;\n if (!vdcc.VDCBurst) {\n this.MakeSpriteLine(vdcno);\n this.MakeBGLine(vdcno);\n } else\n this.MakeBGColorLineVDC(vdcno);\n } else {//OVER SCAN\n this.MakeBGColorLineVDC(vdcno);\n }\n\n let vline = vdcc.VDS + vdcc.VSW + vdcc.VDW + 1;\n if (vline > 261)\n vline -= 261;\n if (vdcc.DrawBGYLine == vline) {\n vdcc.VDCStatus |= (vdcc.VDCRegister[0x05] & 0x0008) << 2;//SetVSync INT\n if (vdcc.VRAMtoSATBStartFlag) {//VRAMtoSATB\n for (let i = 0, addr = vdcc.VDCRegister[0x13]; i < 256; i++, addr++)\n vdcc.SATB[i] = vdcc.VRAM[addr];\n vdcc.VRAMtoSATBCount = 256 * this.VCEBaseClock;\n vdcc.VDCStatus |= 0x40;\n vdcc.VRAMtoSATBStartFlag = (vdcc.VDCRegister[0x0F] & 0x0010) == 0x0010;\n }\n }\n\n vdcc.RasterCount++;\n if (vdcc.DrawBGYLine == (vdcc.VDS + vdcc.VSW - 1))\n vdcc.RasterCount = 64;\n\n if (vdcc.RasterCount == vdcc.VDCRegister[0x06] && (vdcc.VDCStatus & 0x20) == 0x00)\n vdcc.VDCStatus |= vdcc.VDCRegister[0x05] & 0x0004;//SetRaster INT\n\n vdcc.DrawBGIndex += vdcc.DrawLineWidth;\n }\n }\n\n\n VDCRun() {\n this.VDCProcessDMA(0);\n this.VDC[0].VDCProgressClock += this.ProgressClock;\n\n if (this.SuperGrafx) {\n this.VDCProcessDMA(1);\n this.VDC[1].VDCProgressClock += this.ProgressClock;\n }\n\n while (this.VDC[0].VDCProgressClock >= this.VDCLineClock) {\n this.VDCProcess(0);\n if (this.SuperGrafx)\n this.VDCProcess(1);\n }\n\n this.VDCPutLineProgressClock += this.ProgressClock;\n if (this.VDCPutLineProgressClock >= this.VDCLineClock) {\n this.VDCPutLineProgressClock -= this.VDCLineClock;\n this.VDCPutLine++;\n\n if (this.VDCPutLine == this.ScreenHeightMAX) {\n this.VDCPutLine = 0;\n this.GetScreenSize(0);\n this.VDC[0].DrawBGYLine = 0;\n if (this.SuperGrafx) {\n this.GetScreenSize(1);\n this.VDC[1].DrawBGYLine = 0;\n }\n this.DrawFlag = true;\n this.Ctx.putImageData(this.ImageData, 0, 0);\n }\n\n let palettes = (this.VCEControl & 0x80) == 0x00 ? this.PaletteData : this.MonoPaletteData;\n\n let data = this.ImageData.data;\n let imageIndex = this.VDCPutLine * this.ScreenWidthMAX * 4;\n let black = palettes[0x100];\n\n let sw = this.ScreenSize[this.VCEBaseClock];\n let bgl0 = this.VDC[0].BGLine;\n\n if (this.SuperGrafx) {//VPC\n let window1 = this.VPCWindow1;\n let window2 = this.VPCWindow2;\n let priority = this.VPCPriority;\n\n let bgl1 = this.VDC[1].BGLine;\n for (let bgx = 0; bgx < sw; bgx++, imageIndex += 4) {\n let wflag = 0x00;\n if (bgx >= window1)\n wflag |= 0x01;\n if (bgx <= window2)\n wflag |= 0x02;\n\n let bg0 = bgl0[bgx];\n let bg1 = bgl1[bgx];\n\n let color;\n switch (priority[wflag]) {\n case 0x04 | 0x03:\n if (bg0 > 0x100 || bg1 > 0x100)\n color = palettes[bg0 > 0x100 ? bg0 : bg1];\n else\n color = palettes[(bg0 & 0x0FF) != 0x000 ? bg0 : bg1];\n\n break;\n case 0x08 | 0x03:\n if (bg0 < 0x100 && bg0 != 0x000)\n color = palettes[bg0];\n else\n color = palettes[(bg1 & 0x0FF) != 0x000 ? bg1 : bg0];\n break;\n case 0x00 | 0x03:\n case 0x0C | 0x03:\n color = palettes[(bg0 & 0x0FF) != 0x000 ? bg0 : bg1];\n break;\n case 0x00 | 0x01:\n case 0x04 | 0x01:\n case 0x08 | 0x01:\n case 0x0C | 0x01:\n color = palettes[bg0];\n break;\n case 0x00 | 0x02:\n case 0x04 | 0x02:\n case 0x08 | 0x02:\n case 0x0C | 0x02:\n color = palettes[bg1];\n break;\n default:\n color = black;\n break;\n }\n data[imageIndex] = color.r;\n data[imageIndex + 1] = color.g;\n data[imageIndex + 2] = color.b;\n }\n } else {\n for (let bgx = 0; bgx < sw; bgx++, imageIndex += 4) {\n let color = palettes[bgl0[bgx]];\n data[imageIndex] = color.r;\n data[imageIndex + 1] = color.g;\n data[imageIndex + 2] = color.b;\n }\n }\n }\n }\n\n\n GetScreenSize(vdcno) {\n let vdcc = this.VDC[vdcno];\n let r = vdcc.VDCRegister;\n\n vdcc.VScreenWidth = this.VScreenWidthArray[r[0x09] & 0x0030];\n\n vdcc.VScreenHeight = (r[0x09] & 0x0040) == 0x0000 ? 32 : 64;\n vdcc.VScreenHeightMask = vdcc.VScreenHeight * 8 - 1;\n vdcc.ScreenWidth = ((r[0x0B] & 0x007F) + 1) * 8;\n\n if (vdcc.ScreenWidth > this.ScreenWidthMAX)\n vdcc.ScreenWidth = this.ScreenWidthMAX;\n\n vdcc.HDS = (r[0x0A] & 0x7F00) >> 8;\n vdcc.HSW = r[0x0A] & 0x001F;\n\n vdcc.HDE = (r[0x0B] & 0x7F00) >> 8;\n vdcc.HDW = r[0x0B] & 0x007F;\n\n vdcc.VDS = ((r[0x0C] & 0xFF00) >> 8);\n vdcc.VSW = r[0x0C] & 0x001F;\n\n vdcc.VDW = r[0x0D] & 0x01FF;\n\n vdcc.VCR = r[0x0E] & 0x00FF;\n\n vdcc.ScreenSize = this.ScreenSize[this.VCEBaseClock];\n if (this.MainCanvas.width != vdcc.ScreenSize) {\n //this.MainCanvas.style.width = (this.PutScreenSize[this.VCEBaseClock] * 2) + 'px';\n this.MainCanvas.width = this.PutScreenSize[this.VCEBaseClock];\n }\n\n vdcc.DrawLineWidth = (vdcc.HDS + vdcc.HSW + vdcc.HDE + vdcc.HDW + 1) << 3;\n if (vdcc.DrawLineWidth <= this.ScreenSize[this.BaseClock5])\n vdcc.DrawLineWidth = this.ScreenSize[this.BaseClock5];\n else if (vdcc.DrawLineWidth <= this.ScreenSize[this.BaseClock7])\n vdcc.DrawLineWidth = this.ScreenSize[this.BaseClock7];\n else vdcc.DrawLineWidth = this.ScreenSize[this.BaseClock10];\n\n vdcc.VDCBurst = (r[0x05] & 0x00C0) == 0x0000 ? true : false;\n }\n\n\n VDCInit() {\n this.VDCPutLineProgressClock = 0;\n this.VDCPutLine = 0;\n this.DrawFlag = false;\n\n for (let vdcno = 0; vdcno < 2; vdcno++) {\n this.VDC[vdcno] = {\n VDCRegister: new Uint16Array(20).fill(0x0000),\n VRAM: new Uint16Array(0x10000).fill(0x0000),\n SATB: new Uint16Array(256).fill(0x0000),\n VDCBurst: false,\n SpriteLimit: false,\n\n SPLine: new Array(this.ScreenWidthMAX),\n BGLine: new Array(this.ScreenWidthMAX).fill(0x00),\n\n VDCStatus: 0x00,\n VDCRegisterSelect: 0x00,\n WriteVRAMData: 0x0000,\n\n VRAMtoSATBStartFlag: false,\n VRAMtoSATBCount: 0,\n VRAMtoVRAMCount: 0,\n\n RasterCount: 64,\n VDCProgressClock: 0,\n DrawBGYLine: 0,\n DrawBGLine: 0,\n\n VScreenWidth: 0,\n VScreenHeight: 0,\n VScreenHeightMask: 0,\n ScreenWidth: 0,\n ScreenSize: 0,\n DrawLineWidth: 0,\n DrawBGIndex: 0,\n\n HDS: 0,\n HSW: 0,\n HDE: 0,\n HDW: 0,\n VDS: 0,\n VSW: 0,\n VDW: 0,\n VCR: 0\n };\n\n for (let i = 0; i < this.VDC[vdcno].SPLine.length; i++)\n this.VDC[vdcno].SPLine[i] = { data: 0x00, no: 255, priority: 0x00 };\n\n this.VDC[vdcno].VDCRegister[0x09] = 0x0010;\n this.VDC[vdcno].VDCRegister[0x0A] = 0x0202;\n this.VDC[vdcno].VDCRegister[0x0B] = 0x031F;\n this.VDC[vdcno].VDCRegister[0x0C] = 0x0F02;\n this.VDC[vdcno].VDCRegister[0x0D] = 0x00EF;\n this.VDC[vdcno].VDCRegister[0x0E] = 0x0003;\n }\n\n this.GetScreenSize(0);\n this.GetScreenSize(1);\n }\n\n\n SetVDCRegister(data, vdcno) {\n this.VDC[vdcno].VDCRegisterSelect = data & 0x1F;\n }\n\n\n SetVDCLow(data, vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VDCRegisterSelect == 0x02)\n vdcc.WriteVRAMData = data;\n else\n vdcc.VDCRegister[vdcc.VDCRegisterSelect] = (vdcc.VDCRegister[vdcc.VDCRegisterSelect] & 0xFF00) | data;\n\n if (vdcc.VDCRegisterSelect == 0x01) {\n vdcc.VDCRegister[0x02] = vdcc.VRAM[vdcc.VDCRegister[0x01]];\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x08) {\n vdcc.DrawBGLine = vdcc.VDCRegister[0x08];\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x0F)\n vdcc.VRAMtoSATBStartFlag = (vdcc.VDCRegister[0x0F] & 0x10) == 0x10;\n }\n\n\n SetVDCHigh(data, vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VDCRegisterSelect == 0x02) {\n vdcc.VRAM[vdcc.VDCRegister[0x00]] = vdcc.WriteVRAMData | (data << 8);\n vdcc.VDCRegister[0x00] = (vdcc.VDCRegister[0x00] + this.GetVRAMIncrement(vdcno)) & 0xFFFF;\n return;\n }\n\n vdcc.VDCRegister[vdcc.VDCRegisterSelect] = (vdcc.VDCRegister[vdcc.VDCRegisterSelect] & 0x00FF) | (data << 8);\n\n if (vdcc.VDCRegisterSelect == 0x01) {\n vdcc.VDCRegister[0x02] = vdcc.VRAM[vdcc.VDCRegister[0x01]];\n vdcc.VDCRegister[0x03] = vdcc.VDCRegister[0x02];\n vdcc.VDCRegister[0x01] = (vdcc.VDCRegister[0x01] + this.GetVRAMIncrement(vdcno)) & 0xFFFF;\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x08) {\n vdcc.DrawBGLine = vdcc.VDCRegister[0x08];\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x12) {//VRAMtoVRAM\n let si = (vdcc.VDCRegister[0x0F] & 0x0004) == 0x0000 ? 1 : -1;\n let di = (vdcc.VDCRegister[0x0F] & 0x0008) == 0x0000 ? 1 : -1;\n\n let s = vdcc.VDCRegister[0x10];\n let d = vdcc.VDCRegister[0x11];\n let l = vdcc.VDCRegister[0x12] + 1;\n\n vdcc.VRAMtoVRAMCount = l * this.VCEBaseClock;\n vdcc.VDCStatus |= 0x40;\n\n let vram = vdcc.VRAM;\n for (; l > 0; l--) {\n vram[d] = vram[s];\n s = (s + si) & 0xFFFF;\n d = (d + di) & 0xFFFF;\n }\n return;\n }\n\n if (vdcc.VDCRegisterSelect == 0x13)//VRAMtoSATB\n vdcc.VRAMtoSATBStartFlag = true;\n }\n\n\n GetVRAMIncrement(vdcno) {\n switch (this.VDC[vdcno].VDCRegister[0x05] & 0x1800) {\n case 0x0000:\n return 1;\n case 0x0800:\n return 32;\n case 0x1000:\n return 64;\n case 0x1800:\n return 128;\n }\n }\n\n\n GetVDCStatus(vdcno) {\n let tmp = this.VDC[vdcno].VDCStatus;\n this.VDC[vdcno].VDCStatus &= 0x40;\n return tmp;\n }\n\n\n GetVDCLow(vdcno) {\n return this.VDC[vdcno].VDCRegister[this.VDC[vdcno].VDCRegisterSelect] & 0x00FF;\n }\n\n\n GetVDCHigh(vdcno) {\n let vdcc = this.VDC[vdcno];\n\n if (vdcc.VDCRegisterSelect == 0x02 || vdcc.VDCRegisterSelect == 0x03) {\n let tmp = (vdcc.VDCRegister[0x02] & 0xFF00) >> 8;\n vdcc.VDCRegister[0x02] = vdcc.VRAM[vdcc.VDCRegister[0x01]];\n vdcc.VDCRegister[0x03] = vdcc.VDCRegister[0x02];\n vdcc.VDCRegister[0x01] = (vdcc.VDCRegister[0x01] + this.GetVRAMIncrement(vdcno)) & 0xFFFF;\n return tmp;\n }\n\n return (vdcc.VDCRegister[vdcc.VDCRegisterSelect] & 0xFF00) >> 8;\n }\n\n\n /* *************** */\n /* **** Sound **** */\n /* *************** */\n SoundConstruct() {\n this.WaveDataArray = [];\n this.WaveClockCounter = 0;\n this.WaveVolume = 1.0;\n\n this.WebAudioCtx = null;\n this.WebAudioJsNode = null;\n this.WebAudioGainNode = null;\n this.WebAudioBufferSize = 2048;\n\n this.PSGClock = 3579545;\n }\n\n\n WebAudioFunction(e) {\n let output = [];\n let data = [];\n\n for (let i = 0; i < 2; i++) {\n output[i] = e.outputBuffer.getChannelData(i);\n data[i] = new Float32Array(this.WebAudioBufferSize);\n if (this.WaveDataArray[i].length < this.WebAudioBufferSize) {\n data[i].fill(0.0);\n } else {\n for (let j = 0; j < data[i].length; j++)\n data[i][j] = this.WaveDataArray[i].shift() / ((32 * 16 * 32) * 8 * 16);\n if (this.WaveDataArray[i].length > this.WebAudioBufferSize * 2)\n this.WaveDataArray[i] = this.WaveDataArray[i].slice(this.WebAudioBufferSize);\n }\n output[i].set(data[i]);\n }\n }\n\n SoundInit() {\n this.WaveClockCounter = 0;\n this.WaveDataArray = [];\n this.WaveDataArray[0] = [];\n this.WaveDataArray[1] = [];\n\n if (typeof AudioContext !== \"undefined\" && this.WebAudioCtx == null) {\n this.CreateAudioContext();\n }\n }\n\n CreateAudioContext() {\n this.WebAudioCtx = new window.AudioContext();\n this.WebAudioJsNode = this.WebAudioCtx.createScriptProcessor(this.WebAudioBufferSize, 0, 2);\n this.WebAudioJsNode.onaudioprocess = this.WebAudioFunction.bind(this);\n this.WebAudioGainNode = this.WebAudioCtx.createGain();\n this.WebAudioJsNode.connect(this.WebAudioGainNode);\n this.WebAudioGainNode.connect(this.WebAudioCtx.destination);\n }\n\n SoundSet() {\n let waveoutleft;\n let waveoutright;\n let ch;\n\n let i;\n let j;\n let out;\n\n this.WaveClockCounter += this.WebAudioCtx.sampleRate;\n if (this.WaveClockCounter >= this.PSGClock) {\n this.WaveClockCounter -= this.PSGClock;\n\n waveoutleft = 0;\n waveoutright = 0;\n for (j = 0; j < 6; j++) {\n if (j != 1 || !this.WaveLfoOn) {\n ch = this.PSGChannel[j];\n\n if (j < 4 || !ch.noiseon)\n out = ch.keyon ? (ch.dda ? ch.R[6] & 0x1F : ch.wave[ch.index]) : 0;\n else\n out = (ch.noise & 0x0001) == 0x0001 ? 0x0F : 0;\n\n waveoutleft += out * ch.leftvol;\n waveoutright += out * ch.rightvol;\n }\n }\n this.WaveDataArray[0].push(waveoutleft * this.WaveVolumeLeft);\n this.WaveDataArray[1].push(waveoutright * this.WaveVolumeRight);\n this.WebAudioGainNode.gain.value = this.WaveVolume;\n }\n }\n\n\n /* ************* */\n /* **** PSG **** */\n /* ************* */\n PSGConstruct() {\n this.PSGChannel = new Array(6);\n this.PSGBaseClock = this.BaseClock3;\n\n this.PSGProgressClock = 0;\n\n this.WaveVolumeLeft = 0;\n this.WaveVolumeRight = 0;\n\n this.WaveLfoOn = false;\n this.WaveLfoControl = 0;\n this.WaveLfoFreqency = 0;\n }\n\n\n PSGInit() {\n this.SoundInit();\n\n for (let i = 0; i < this.PSGChannel.length; i++)\n this.PSGChannel[i] = {\n R: new Array(10).fill(0),\n keyon: false,\n dda: false,\n freq: 0,\n count: 0,\n vol: 0,\n leftvol: 0,\n rightvol: 0,\n noiseon: false,\n noisefreq: 0,\n noise: 0x8000,\n noisestate: 0,\n index: 0,\n wave: new Uint8Array(32)\n };\n }\n\n\n PSGRun() {\n if (this.WebAudioCtx == null)\n return;\n\n let ch;\n let i;\n let j;\n let ch0;\n let ch1;\n let freqtmp;\n\n this.PSGProgressClock += this.ProgressClock;\n i = (this.PSGProgressClock / this.PSGBaseClock) | 0;\n this.PSGProgressClock %= this.PSGBaseClock;\n\n while (i > 0) {\n i--;\n j = 0;\n\n if (this.WaveLfoOn) {\n ch0 = this.PSGChannel[0];\n ch1 = this.PSGChannel[1];\n if (ch0.keyon) {\n if (ch0.count == 0) {\n ch0.index = (ch0.index + 1) & 0x1F;\n freqtmp = 0;\n if (this.WaveLfoControl != 0x00) {\n freqtmp = ch1.wave[ch1.index];\n freqtmp = freqtmp > 0x0F ? freqtmp - 0x20 : freqtmp & 0x0F;\n freqtmp <<= 4 * (this.WaveLfoControl - 1);\n }\n freqtmp = ch0.freq + freqtmp;\n if (freqtmp < 0)\n freqtmp = 0;\n ch0.count = freqtmp;\n } else\n ch0.count--;\n\n if (ch1.count == 0) {\n ch1.index = (ch1.index + 1) & 0x1F;\n ch1.count = ch1.freq * this.WaveLfoFreqency;\n } else\n ch1.count--;\n }\n j = 2;\n }\n\n for (; j < 6; j++) {\n ch = this.PSGChannel[j];\n if (j < 4 || !ch.noiseon) {\n if (ch.keyon && !ch.dda) {\n if (ch.count == 0) {\n ch.index = (ch.index + 1) & 0x1F;\n ch.count = ch.freq;\n } else\n ch.count--;\n }\n } else {\n if (ch.keyon && !ch.dda) {\n if (ch.count == 0) {\n ch.index = (ch.index + 1) & 0x1F;\n if (ch.index == 0)\n ch.noise = (ch.noise >> 1) | (((ch.noise << 12) ^ (ch.noise << 15)) & 0x8000);\n ch.count = ch.noisefreq;\n } else\n ch.count--;\n }\n }\n }\n this.SoundSet();\n }\n }\n\n\n SetPSG(r, data) {\n if (r == 0) {\n this.PSGChannel[0].R[0] = data & 0x07;\n return;\n }\n\n if (this.PSGChannel[0].R[0] > 5)\n return;\n\n let ch = this.PSGChannel[this.PSGChannel[0].R[0]];\n ch.R[r] = data;\n\n switch (r) {\n case 1:\n this.PSGChannel[0].R[1] = data;\n this.WaveVolumeLeft = (data & 0xF0) >> 4;\n this.WaveVolumeRight = data & 0x0F;\n return;\n\n case 2:\n case 3:\n ch.freq = ((ch.R[3] << 8) | ch.R[2]) & 0x0FFF;\n return;\n\n case 4:\n ch.keyon = (data & 0x80) == 0x80 ? true : false;\n ch.dda = (data & 0x40) == 0x40 ? true : false;\n if ((data & 0x40) == 0x40)\n ch.index = 0;\n ch.vol = data & 0x1F;\n case 5:\n let vol = ch.R[4] & 0x1F;\n ch.leftvol = ((ch.R[5] & 0xF0) >> 4) * vol;\n ch.rightvol = (ch.R[5] & 0x0F) * vol;\n return;\n\n case 6:\n if (!ch.dda) {\n ch.wave[ch.index] = data & 0x1F;\n ch.index = (ch.index + 1) & 0x1F;\n }\n return;\n\n case 7:\n ch.noiseon = (data & 0x80) == 0x80 ? true : false;\n ch.noisefreq = (data & 0x1F) ^ 0x1F;\n return;\n\n case 8:\n this.PSGChannel[0].R[8] = data;\n this.WaveLfoFreqency = data;\n return;\n\n case 9:\n this.PSGChannel[0].R[9] = data;\n this.WaveLfoOn = (data & 0x80) == 0x80 ? true : false;\n this.WaveLfoControl = data & 0x03;\n return;\n }\n }\n\n\n GetPSG(r) {\n if (r > 9)\n return 0xFF;\n if (r == 0 || r == 1 || r == 8 || r == 9)\n return this.PSGChannel[0].R[r];\n if (this.PSGChannel[0].R[0] > 5)\n return 0xFF;\n return this.PSGChannel[this.PSGChannel[0].R[0]].R[r];\n }\n\n\n /* *************** */\n /* **** TIMER **** */\n /* *************** */\n TimerConstruct() {\n this.TimerBaseClock = this.BaseClock7;\n this.TimerReload = 0;\n this.TimerFlag = false;\n this.TimerCounter = 0;\n this.TimerPrescaler = 0;\n this.INTTIQ = 0;\n }\n\n\n TimerInit() {\n this.TimerReload = 0x00;\n this.TimerFlag = false;\n this.TimerCounter = 0x00;\n this.TimerPrescaler = 0;\n this.INTTIQ = 0x00;\n }\n\n\n ReadTimerCounter() {\n return this.TimerCounter;\n }\n\n\n TimerAcknowledge() {\n this.INTTIQ = 0x00;\n }\n\n\n WirteTimerReload(data) {\n this.TimerReload = data & 0x7F;\n }\n\n\n WirteTimerControl(data) {\n if (!this.TimerFlag && (data & 0x01) == 0x01) {\n this.TimerCounter = this.TimerReload;\n this.TimerPrescaler = 0;\n }\n\n this.TimerFlag = (data & 0x01) == 0x01 ? true : false;\n }\n\n\n TimerRun() {\n if (this.TimerFlag) {\n this.TimerPrescaler += this.ProgressClock;\n while (this.TimerPrescaler >= (1024 * this.TimerBaseClock)) {\n this.TimerPrescaler -= 1024 * this.TimerBaseClock;\n this.TimerCounter--;\n if (this.TimerCounter < 0) {\n this.TimerCounter = this.TimerReload;\n this.INTTIQ = this.TIQFlag;\n }\n }\n }\n }\n\n\n /* ****************** */\n /* **** Joystick **** */\n /* ****************** */\n JoystickConstruct() {\n this.JoystickSEL = 0;\n this.JoystickCLR = 0;\n this.KeyUpFunction = null;\n this.KeyDownFunction = null;\n\n this.Keybord = new Array(5).fill([]);\n this.Keybord = this.Keybord.map((d) => { return new Array(4); });\n\n this.GamePad = new Array(5).fill([]);\n this.GamePad = this.Keybord.map((d) => { return new Array(4); });\n\n this.GamePadSelect = 0x00;\n this.GamePadButtonSelect = 0x00;\n this.GamePadBuffer = 0x00;\n\n this.GamePadData = [];\n this.GamePadData[\"STANDARD PAD\"] = [\n [[{ type: \"B\", index: 1 }],// SHOT1\n [{ type: \"B\", index: 0 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }, { type: \"B\", index: 2 }],// RUN\n [{ type: \"B\", index: 12 }],// UP\n [{ type: \"B\", index: 13 }],// DOWN\n [{ type: \"B\", index: 14 }],// LEFT\n [{ type: \"B\", index: 15 }]],// RIGHT\n\n [[{ type: \"B\", index: 1 }],// SHOT1\n [{ type: \"B\", index: 0 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }],// RUN\n [{ type: \"B\", index: 12 }],// UP\n [{ type: \"B\", index: 13 }],// DOWN\n [{ type: \"B\", index: 14 }],// LEFT\n [{ type: \"B\", index: 15 }],// RIGHT\n [{ type: \"B\", index: 7 }],// SHOT3\n [{ type: \"B\", index: 5 }],// SHOT4\n [{ type: \"B\", index: 2 }],// SHOT5\n [{ type: \"B\", index: 3 }]]];// SHOT6\n\n this.GamePadData[\"HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)\"] = [// Chrome\n [[{ type: \"B\", index: 2 }],// SHOT1\n [{ type: \"B\", index: 1 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }, { type: \"B\", index: 0 }],// RUN\n [{ type: \"P\", index: 9 }],// UP (POV)\n [{ type: \"N\", index: 0 }],// DOWN (POV)\n [{ type: \"N\", index: 0 }],// LEFT (POV)\n [{ type: \"N\", index: 0 }]],// RIGHT (POV)\n\n [[{ type: \"B\", index: 2 }],// SHOT1\n [{ type: \"B\", index: 1 }],// SHOT2\n [{ type: \"B\", index: 8 }],// SELECT\n [{ type: \"B\", index: 9 }],// RUN\n [{ type: \"P\", index: 9 }],// UP (POV)\n [{ type: \"N\", index: 0 }],// DOWN (POV)\n [{ type: \"N\", index: 0 }],// LEFT (POV)\n [{ type: \"N\", index: 0 }],// RIGHT (POV)\n [{ type: \"B\", index: 7 }],// SHOT3\n [{ type: \"B\", index: 5 }],// SHOT4\n [{ type: \"B\", index: 0 }],// SHOT5\n [{ type: \"B\", index: 3 }]]];// SHOT6\n\n this.GamePadData[\"0f0d-0009-HORI PAD 3 TURBO\"] = this.GamePadData[\"HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)\"];// Firefox\n this.GamePadData[\"UNKNOWN PAD\"] = this.GamePadData[\"HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)\"];\n\n this.GamePadKeyData = [{ index: 0, data: 0x01 }, { index: 0, data: 0x02 },\n { index: 0, data: 0x04 }, { index: 0, data: 0x08 },\n { index: 1, data: 0x01 }, { index: 1, data: 0x04 },\n { index: 1, data: 0x08 }, { index: 1, data: 0x02 },\n { index: 2, data: 0x01 }, { index: 2, data: 0x02 },\n { index: 2, data: 0x04 }, { index: 2, data: 0x08 }];\n\n this.GamePadPovData = [0x01, 0x01 | 0x02, 0x02, 0x02 | 0x04, 0x04, 0x04 | 0x08, 0x08, 0x01 | 0x08];\n }\n\n\n JoystickInit() {\n this.JoystickSEL = 0;\n this.JoystickCLR = 0;\n\n for (let i = 0; i < this.Keybord.length; i++) {\n this.Keybord[i][0] = 0xBF;\n this.Keybord[i][1] = 0xBF;\n this.Keybord[i][2] = 0xBF;\n this.Keybord[i][3] = 0xB0;\n }\n\n this.GamePadSelect = 0;\n this.GamePadButtonSelect = 0x00;\n this.GamePadBuffer = 0x00;\n }\n\n\n SetJoystick(data) {\n let sel = data & 0x01;\n let clr = (data & 0x02) >> 1;\n\n if ((this.JoystickSEL == 1 && this.JoystickCLR == 0) && (sel == 1 && clr == 1)) {\n this.JoystickSEL = 0;\n this.JoystickCLR = 0;\n this.GamePadSelect = 0;\n if (this.GamePadButton6)\n this.GamePadButtonSelect = this.GamePadButtonSelect ^ 0x02;\n this.GamePadBuffer = 0xB0 | this.CountryType;\n return;\n }\n\n if ((this.JoystickSEL == 0 && this.JoystickCLR == 0) && (sel == 1 && clr == 0))\n this.GamePadSelect++;\n\n this.JoystickSEL = sel;\n this.JoystickCLR = clr;\n\n let no = this.MultiTap ? this.GamePadSelect - 1 : 0;\n if (no < 5) {\n let tmp = this.GamePadButtonSelect | this.JoystickSEL;\n this.GamePadBuffer = (this.Keybord[no][tmp] & this.GamePad[no][tmp]) | this.CountryType;\n } else\n this.GamePadBuffer = 0xB0 | this.CountryType;\n }\n\n\n GetJoystick() {\n return this.GamePadBuffer;\n }\n\n\n UnsetButtonRUN(no) {\n this.Keybord[no][0] |= 0x08;\n }\n\n\n UnsetButtonSELECT(no) {\n this.Keybord[no][0] |= 0x04;\n }\n\n\n UnsetButtonSHOT2(no) {\n this.Keybord[no][0] |= 0x02;\n }\n\n\n UnsetButtonSHOT1(no) {\n this.Keybord[no][0] |= 0x01;\n }\n\n\n UnsetButtonLEFT(no) {\n this.Keybord[no][1] |= 0x08;\n }\n\n\n UnsetButtonDOWN(no) {\n this.Keybord[no][1] |= 0x04;\n }\n\n\n UnsetButtonRIGHT(no) {\n this.Keybord[no][1] |= 0x02;\n }\n\n\n UnsetButtonUP(no) {\n this.Keybord[no][1] |= 0x01;\n }\n\n\n UnsetButtonSHOT6(no) {\n this.Keybord[no][2] |= 0x08;\n }\n\n\n UnsetButtonSHOT5(no) {\n this.Keybord[no][2] |= 0x04;\n }\n\n\n UnsetButtonSHOT4(no) {\n this.Keybord[no][2] |= 0x02;\n }\n\n\n UnsetButtonSHOT3(no) {\n this.Keybord[no][2] |= 0x01;\n }\n\n\n SetButtonRUN(no) {\n this.Keybord[no][0] &= ~0x08;\n }\n\n\n SetButtonSELECT(no) {\n this.Keybord[no][0] &= ~0x04;\n }\n\n\n SetButtonSHOT2(no) {\n this.Keybord[no][0] &= ~0x02;\n }\n\n\n SetButtonSHOT1(no) {\n this.Keybord[no][0] &= ~0x01;\n }\n\n\n SetButtonLEFT(no) {\n this.Keybord[no][1] &= ~0x08;\n }\n\n\n SetButtonDOWN(no) {\n this.Keybord[no][1] &= ~0x04;\n }\n\n\n SetButtonRIGHT(no) {\n this.Keybord[no][1] &= ~0x02;\n }\n\n\n SetButtonUP(no) {\n this.Keybord[no][1] &= ~0x01;\n }\n\n\n SetButtonSHOT6(no) {\n this.Keybord[no][2] &= ~0x08;\n }\n\n\n SetButtonSHOT5(no) {\n this.Keybord[no][2] &= ~0x04;\n }\n\n\n SetButtonSHOT4(no) {\n this.Keybord[no][2] &= ~0x02;\n }\n\n\n SetButtonSHOT3(no) {\n this.Keybord[no][2] &= ~0x01;\n }\n\n\n CheckKeyUpFunction(evt) {\n switch (evt.keyCode) {\n case Keys['START'].c:// RUN 'S'\n this.UnsetButtonRUN(0);\n break;\n case Keys['SELECT'].c:// SELECT 'A'\n this.UnsetButtonSELECT(0);\n break;\n case Keys['A'].c:// SHOT2 'Z'\n case Keys['GP_A'].c:// SHOT2 'Z'\n this.UnsetButtonSHOT2(0);\n break;\n case Keys['B'].c:// SHOT1 'X'\n case Keys['GP_B'].c:// SHOT1 'X'\n this.UnsetButtonSHOT1(0);\n break;\n\n case 86:// SHOT2 'V'\n this.UnsetButtonSHOT2(0);\n break;\n case 66:// SHOT1 'B'\n this.UnsetButtonSHOT1(0);\n break;\n\n case 37:// LEFT\n this.UnsetButtonLEFT(0);\n break;\n case 39:// RIGHT\n this.UnsetButtonRIGHT(0);\n break;\n case 40:// DOWN\n this.UnsetButtonDOWN(0);\n break;\n case 38:// UP\n this.UnsetButtonUP(0);\n break;\n\n case 71:// SHOT6 'G'\n this.UnsetButtonSHOT6(0);\n break;\n case 70:// SHOT5 'F'\n this.UnsetButtonSHOT5(0);\n break;\n case 68:// SHOT4 'D'\n this.UnsetButtonSHOT4(0);\n break;\n case 67:// SHOT3 'C'\n this.UnsetButtonSHOT3(0);\n break;\n }\n //evt.preventDefault();\n }\n\n\n CheckKeyDownFunction(evt) {\n switch (evt.keyCode) {\n case Keys['START'].c:// RUN 'S'\n this.SetButtonRUN(0);\n break;\n case Keys['SELECT'].c:// SELECT 'A'\n this.SetButtonSELECT(0);\n break;\n case Keys['A'].c:// SHOT2 'Z'\n case Keys['GP_A'].c:// SHOT2 'Z'\n this.SetButtonSHOT2(0);\n break;\n case Keys['B'].c:// SHOT2 'Z'\n case Keys['GP_B'].c:// SHOT2 'Z'\n this.SetButtonSHOT1(0);\n break;\n\n case 86:// SHOT2 'V'\n this.SetButtonSHOT2(0);\n break;\n case 66:// SHOT1 'B'\n this.SetButtonSHOT1(0);\n break;\n\n case 37:// LEFT\n this.SetButtonLEFT(0);\n break;\n case 39:// RIGHT\n this.SetButtonRIGHT(0);\n break;\n case 40:// DOWN\n this.SetButtonDOWN(0);\n break;\n case 38:// UP\n this.SetButtonUP(0);\n break;\n\n case 71:// SHOT6 'G'\n this.SetButtonSHOT6(0);\n break;\n case 70:// SHOT5 'F'\n this.SetButtonSHOT5(0);\n break;\n case 68:// SHOT4 'D'\n this.SetButtonSHOT4(0);\n break;\n case 67:// SHOT3 'C'\n this.SetButtonSHOT3(0);\n break;\n }\n //evt.preventDefault();\n }\n\n\n JoystickEventInit() {\n this.KeyUpFunction = this.CheckKeyUpFunction.bind(this);\n this.KeyDownFunction = this.CheckKeyDownFunction.bind(this);\n this.MainCanvas.addEventListener(\"keyup\", this.KeyUpFunction, true);\n this.MainCanvas.addEventListener(\"keydown\", this.KeyDownFunction, true);\n }\n\n\n JoystickEventRelease() {\n this.MainCanvas.removeEventListener(\"keyup\", this.KeyUpFunction, true);\n this.MainCanvas.removeEventListener(\"keydown\", this.KeyDownFunction, true);\n }\n\n CheckGamePad() {\n for (let i = 0; i < this.GamePad.length; i++) {\n this.GamePad[i][0] = 0xBF;\n this.GamePad[i][1] = 0xBF;\n this.GamePad[i][2] = 0xBF;\n this.GamePad[i][3] = 0xB0;\n }\n\n if (typeof navigator.getGamepads === \"undefined\")\n return;\n\n let pads = navigator.getGamepads();\n for (let i = 0; i < 5; i++) {\n let pad = pads[i];\n if (typeof pad !== \"undefined\" && pad !== null) {\n\n let paddata;\n if (pad.mapping === \"standard\")\n paddata = this.GamePadData[\"STANDARD PAD\"];\n else {\n paddata = this.GamePadData[pad.id];\n if (typeof paddata === \"undefined\")\n paddata = this.GamePadData[\"UNKNOWN PAD\"];\n }\n paddata = this.GamePadButton6 ? paddata[1] : paddata[0];\n\n let tmp = 0;\n for (const val0 of paddata) {\n for (const val1 of val0) {\n switch (val1.type) {\n case \"B\":\n if (pad.buttons[val1.index].pressed)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"A-\":\n if (pad.axes[val1.index] < -0.5)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"A+\":\n if (pad.axes[val1.index] > 0.5)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"AB\":\n if (pad.axes[val1.index] > -0.75)\n this.GamePad[i][this.GamePadKeyData[tmp].index] &= ~this.GamePadKeyData[tmp].data;\n break;\n case \"P\":\n let povtmp = ((pad.axes[val1.index] + 1) * 7 / 2 + 0.5) | 0;\n this.GamePad[i][1] &= ~(povtmp <= 7 ? this.GamePadPovData[povtmp] : 0x00);\n break;\n }\n }\n tmp++;\n }\n }\n }\n }\n}\n"], - "mappings": "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,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAElD,KAAK,QAAU,CACX,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG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", - "names": ["PCE_PRESETS", "PCEnginePlatform", "mainElement", "PCE", "RasterVideo", "title", "rom", "fn", "getToolForFilename_6502", "addr", "value", "PLATFORMS", "core", "address", "data", "canvas", "i", "d", "tmp", "bit", "op", "neg", "data0", "data1", "carry", "status", "adr", "address0", "address1", "tmp0", "tmp1", "res", "color", "mono", "no", "b", "vdcno", "vdcc", "sp", "spi", "dotcount", "line", "vram", "satb", "revbit16", "s", "y", "attribute", "height", "width", "spy", "index", "data2", "data3", "palette", "priority", "j", "spx", "dot", "bg", "sw", "leftblank", "WidthMask", "x", "index_x", "index_y", "bgx", "revbit", "spbgx", "vline", "palettes", "imageIndex", "black", "bgl0", "window1", "window2", "bgl1", "wflag", "bg0", "bg1", "r", "si", "di", "l", "e", "output", "waveoutleft", "waveoutright", "ch", "out", "ch0", "ch1", "freqtmp", "vol", "sel", "clr", "evt", "Keys", "pads", "pad", "paddata", "val0", "val1", "povtmp"] -} diff --git a/gen/platform/pce.js b/gen/platform/pce.js index cd4faebd..aaeb2fff 100644 --- a/gen/platform/pce.js +++ b/gen/platform/pce.js @@ -42,6 +42,12 @@ class PCEnginePlatform { this.pce.Init(); this.pce.SetROM(rom); } + // headless hosts drive frames through advance(); the IDE uses the + // requestAnimationFrame loop that resume() starts + advance(novideo) { + this.pce.Run(); + return 1; + } getPlatformName() { return "PC Engine"; } diff --git a/gen/platform/pce.js.map b/gen/platform/pce.js.map index abedf391..ab7dc28c 100644 --- a/gen/platform/pce.js.map +++ b/gen/platform/pce.js.map @@ -1 +1 @@ -{"version":3,"file":"pce.js","sourceRoot":"","sources":["../../src/platform/pce.ts"],"names":[],"mappings":"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EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SAAC,CAAC,CAAA,MAAM;QAE1D,IAAI,CAAC,OAAO,GAAG;YACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CA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"} \ No newline at end of file +{"version":3,"file":"pce.js","sourceRoot":"","sources":["../../src/platform/pce.ts"],"names":[],"mappings":"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E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SAAC,CAAC,CAAA,MAAM;QAE1D,IAAI,CAAC,OAAO,GAAG;YACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,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"} \ No newline at end of file diff --git a/gen/sms-B4PKFPAM.js b/gen/sms-HCHAUJEX.js similarity index 95% rename from gen/sms-B4PKFPAM.js rename to gen/sms-HCHAUJEX.js index 88b6f40c..5e50f46e 100644 --- a/gen/sms-B4PKFPAM.js +++ b/gen/sms-HCHAUJEX.js @@ -1,4 +1,4 @@ -import{a as P,b,c as w}from"./chunk-X7YXI42O.js";import{H as u,d as M,f as S}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{$ as g,K as c,Y as s,ba as p,ca as n,g as l}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var A=g([[s.UP,0,1],[s.DOWN,0,2],[s.LEFT,0,4],[s.RIGHT,0,8],[s.A,0,16],[s.B,0,32],[s.GP_A,0,16],[s.GP_B,0,32],[s.P2_UP,0,64],[s.P2_DOWN,0,128],[s.P2_LEFT,1,1],[s.P2_RIGHT,1,2],[s.P2_A,1,4],[s.P2_B,1,8],[s.VK_BACK_SLASH,1,16],[s.VK_ENTER,1,128]]),a=class extends w{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=49152;this.ram=new Uint8Array(1024);this.read=n([[49152,65535,1023,e=>this.ram[e]],[0,49151,65535,e=>this.rom&&this.rom[e]]]);this.write=n([[49152,65535,1023,(e,r)=>{this.ram[e]=r}]]);this.init(this,this.newIOBus(),new S(new M))}getKeyboardMap(){return A}vdpInterrupt(){return this.probe.logInterrupt(255),this.cpu.interrupt(255)}getVCounter(){return 0}getHCounter(){return 0}setMemoryControl(e){}setIOPortControl(e){}readIO(e){switch(e&193){case 64:return this.getVCounter();case 65:return this.getHCounter();case 128:return this.vdp.readData();case 129:return this.vdp.readStatus();case 192:return this.inputs[0]^255;case 193:return this.inputs[1]^255}return 0}writeIO(e,r){switch(e&193){case 0:return this.setMemoryControl(r);case 1:return this.setIOPortControl(r);case 64:case 65:return this.psg.setData(r);case 128:return this.vdp.writeData(r);case 129:return this.vdp.writeAddress(r)}}newIOBus(){return{read:e=>(e&=255,this.readIO(e)),write:(e,r)=>{e&=255,r&=255,this.writeIO(e,r)}}}},o=class extends a{constructor(){super(...arguments);this.cartram=new Uint8Array(0);this.pagingRegisters=new Uint8Array(4);this.latchedHCounter=0;this.ioControlFlags=0;this.ram=new Uint8Array(8192);this.read=n([[49152,65535,8191,e=>this.ram[e]],[0,1023,1023,e=>this.rom&&this.rom[e]],[1024,16383,16383,e=>this.getPagedROM(e,1)],[16384,32767,16383,e=>this.getPagedROM(e,2)],[32768,49151,16383,e=>{var r=this.pagingRegisters[0];return r&8?this.cartram[r&4?e+16384:e]:this.getPagedROM(e,3)}]]);this.write=n([[49152,65531,8191,(e,r)=>{this.ram[e]=r}],[65532,65535,3,(e,r)=>{this.pagingRegisters[e]=r,this.ram[e+8188]=r}],[32768,49151,16383,(e,r)=>{var m=this.pagingRegisters[0];m&8&&(this.cartram.length==0&&(this.cartram=new Uint8Array(32768)),this.cartram[m&4?e+16384:e]=r)}]])}newVDP(e,r,m){return new P(e,r,m)}reset(){super.reset(),this.pagingRegisters.set([0,0,1,2])}getVCounter(){var e=this.scanline;return e<=218?e:e-6}getHCounter(){return this.latchedHCounter}computeHCounter(){return 0}setIOPortControl(e){(e^this.ioControlFlags)&160&&(this.latchedHCounter=this.computeHCounter()),this.ioControlFlags=e}getPagedROM(e,r){return this.rom&&this.rom[e+((this.pagingRegisters[r]&this.romPageMask)<<14)]}loadROM(e){if(e.length<=49152)this.rom=p(e,49152),this.romPageMask=3;else switch(e.length){case 65536:case 131072:case 262144:case 524288:this.rom=e,this.romPageMask=(e.length>>14)-1;break;default:throw Error("Unknown rom size: $"+l(e.length))}this.reset()}loadState(e){super.loadState(e),this.pagingRegisters.set(e.pr),this.cartram.set(e.cr),this.latchedHCounter=e.lhc,this.ioControlFlags=e.iocf}saveState(){var e=super.saveState();return e.pr=this.pagingRegisters.slice(0),e.cr=this.cartram.slice(0),e.lhc=this.latchedHCounter,e.iocf=this.ioControlFlags,e}getDebugInfo(e,r){return e==="SMS"?super.getDebugInfo(e,r)+` +import{a as P,b,c as w}from"./chunk-YD7BCC55.js";import{H as u,d as M,f as S}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{$ as g,K as c,Y as s,ba as p,ca as n,g as l}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var A=g([[s.UP,0,1],[s.DOWN,0,2],[s.LEFT,0,4],[s.RIGHT,0,8],[s.A,0,16],[s.B,0,32],[s.GP_A,0,16],[s.GP_B,0,32],[s.P2_UP,0,64],[s.P2_DOWN,0,128],[s.P2_LEFT,1,1],[s.P2_RIGHT,1,2],[s.P2_A,1,4],[s.P2_B,1,8],[s.VK_BACK_SLASH,1,16],[s.VK_ENTER,1,128]]),a=class extends w{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=49152;this.ram=new Uint8Array(1024);this.read=n([[49152,65535,1023,e=>this.ram[e]],[0,49151,65535,e=>this.rom&&this.rom[e]]]);this.write=n([[49152,65535,1023,(e,r)=>{this.ram[e]=r}]]);this.init(this,this.newIOBus(),new S(new M))}getKeyboardMap(){return A}vdpInterrupt(){return this.probe.logInterrupt(255),this.cpu.interrupt(255)}getVCounter(){return 0}getHCounter(){return 0}setMemoryControl(e){}setIOPortControl(e){}readIO(e){switch(e&193){case 64:return this.getVCounter();case 65:return this.getHCounter();case 128:return this.vdp.readData();case 129:return this.vdp.readStatus();case 192:return this.inputs[0]^255;case 193:return this.inputs[1]^255}return 0}writeIO(e,r){switch(e&193){case 0:return this.setMemoryControl(r);case 1:return this.setIOPortControl(r);case 64:case 65:return this.psg.setData(r);case 128:return this.vdp.writeData(r);case 129:return this.vdp.writeAddress(r)}}newIOBus(){return{read:e=>(e&=255,this.readIO(e)),write:(e,r)=>{e&=255,r&=255,this.writeIO(e,r)}}}},o=class extends a{constructor(){super(...arguments);this.cartram=new Uint8Array(0);this.pagingRegisters=new Uint8Array(4);this.latchedHCounter=0;this.ioControlFlags=0;this.ram=new Uint8Array(8192);this.read=n([[49152,65535,8191,e=>this.ram[e]],[0,1023,1023,e=>this.rom&&this.rom[e]],[1024,16383,16383,e=>this.getPagedROM(e,1)],[16384,32767,16383,e=>this.getPagedROM(e,2)],[32768,49151,16383,e=>{var r=this.pagingRegisters[0];return r&8?this.cartram[r&4?e+16384:e]:this.getPagedROM(e,3)}]]);this.write=n([[49152,65531,8191,(e,r)=>{this.ram[e]=r}],[65532,65535,3,(e,r)=>{this.pagingRegisters[e]=r,this.ram[e+8188]=r}],[32768,49151,16383,(e,r)=>{var m=this.pagingRegisters[0];m&8&&(this.cartram.length==0&&(this.cartram=new Uint8Array(32768)),this.cartram[m&4?e+16384:e]=r)}]])}newVDP(e,r,m){return new P(e,r,m)}reset(){super.reset(),this.pagingRegisters.set([0,0,1,2])}getVCounter(){var e=this.scanline;return e<=218?e:e-6}getHCounter(){return this.latchedHCounter}computeHCounter(){return 0}setIOPortControl(e){(e^this.ioControlFlags)&160&&(this.latchedHCounter=this.computeHCounter()),this.ioControlFlags=e}getPagedROM(e,r){return this.rom&&this.rom[e+((this.pagingRegisters[r]&this.romPageMask)<<14)]}loadROM(e){if(e.length<=49152)this.rom=p(e,49152),this.romPageMask=3;else switch(e.length){case 65536:case 131072:case 262144:case 524288:this.rom=e,this.romPageMask=(e.length>>14)-1;break;default:throw Error("Unknown rom size: $"+l(e.length))}this.reset()}loadState(e){super.loadState(e),this.pagingRegisters.set(e.pr),this.cartram.set(e.cr),this.latchedHCounter=e.lhc,this.ioControlFlags=e.iocf}saveState(){var e=super.saveState();return e.pr=this.pagingRegisters.slice(0),e.cr=this.cartram.slice(0),e.lhc=this.latchedHCounter,e.iocf=this.ioControlFlags,e}getDebugInfo(e,r){return e==="SMS"?super.getDebugInfo(e,r)+` Bank Regs: `+this.pagingRegisters+` `:super.getDebugInfo(e,r)}},x=class extends o{newVDP(t,e,r){return new b(t,e,r)}readIO(t){switch(t&193){case 0:return~this.inputs[1]&128|64;case 220:return this.inputs[0]^255;case 221:return this.inputs[1]^255}return super.readIO(t)}};var R=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],C=[{id:"mode4test.c",name:"Mode 4 Test"},{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"siegegame.c",name:"Siege Game"},{id:"climber.c",name:"Climber Game"},{id:"solarian.c",name:"Solarian Game"}],O=[...C],_=[...C],f=class extends u{newMachine(){return new a}getPresets(){return R}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}},d=class extends u{newMachine(){return new o}getPresets(){return O}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}},h=class extends u{newMachine(){return new x}getPresets(){return _}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}};c["sms-sg1000-libcv"]=f;c["sms-sms-libcv"]=d;c["sms-gg-libcv"]=h;export{_ as GG_PRESETS,R as SG1000_PRESETS,O as SMS_PRESETS}; -//# sourceMappingURL=sms-B4PKFPAM.js.map +//# sourceMappingURL=sms-HCHAUJEX.js.map diff --git a/gen/sms-B4PKFPAM.js.map b/gen/sms-HCHAUJEX.js.map similarity index 100% rename from gen/sms-B4PKFPAM.js.map rename to gen/sms-HCHAUJEX.js.map diff --git a/gen/sound_konami-PL5IXBMA.js b/gen/sound_konami-LOYLXE65.js similarity index 90% rename from gen/sound_konami-PL5IXBMA.js rename to gen/sound_konami-LOYLXE65.js index bbd12e1f..aecff67d 100644 --- a/gen/sound_konami-PL5IXBMA.js +++ b/gen/sound_konami-LOYLXE65.js @@ -1,2 +1,2 @@ -import{C as w}from"./chunk-4WX2XTAI.js";import"./chunk-UACHXWHT.js";import{K as v,Q as x,S as p,W as C,ba as P,ca as d}from"./chunk-EK7ZCXAS.js";import"./chunk-VSC4MAII.js";var y=[],A=function(R){this.__proto__=new w;var t,i,o,f,l,u,c,m,s,M=0,a=0,n,g=14318e3/8,D=1789750/1280,S=g/60,b=g/D;this.getPresets=function(){return y},this.start=function(){i=new p(1024),f={read:d([[0,16383,16383,function(e){return o?o[e]:null}],[16384,24575,1023,function(e){return i.mem[e]}]]),write:d([[16384,24575,1023,function(e,r){i.mem[e]=r}]]),isContended:function(){return!1}},l={read:function(e){if(e&64){if(a==15){var r=t.getTstates()/b&1;return r?255:0}return n.readRegister(a)&255}return 0},write:function(e,r){e&128&&(a=r&15),e&64&&n.writeRegisterAY(a,r&255)}},this.readAddress=f.read,t=this.newCPU(f,l),n=new PsgDeviceChannel,c=new MasterChannel,n.setMode(PsgDeviceChannel.MODE_SIGNED),n.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),c.addChannel(n),u=new AudioLooper(512),u.setChannel(c),m=new x(R,256,256),m.create(),m.setKeyboardEvents(function(e,r,T){var h=e-49;h>=0&&T&1&&(n.writeRegister(14,h),n.writeRegister(15,128),t.setIFF1(1),t.requestInterrupt(56))}),s=new C(60,()=>{if(this.isRunning()){var e=this.getDebugCallback(),r=t.getTstates()+S;if(e)for(;t.getTstates()=0&&T&1&&(n.writeRegister(14,h),n.writeRegister(15,128),t.setIFF1(1),t.requestInterrupt(56))}),s=new C(60,()=>{if(this.isRunning()){var e=this.getDebugCallback(),r=t.getTstates()+S;if(e)for(;t.getTstates()this.rom&&this.rom[e]],[16384,32767,1023,e=>this.ram[e]]]);this.write=t([[16384,32767,1023,(e,s)=>{this.ram[e]=s}]]);this.cpu=new f,this.connectCPUMemoryBus(this),this.connectCPUIOBus({read:e=>this.command&255,write:(e,s)=>{let r=this.dac=s&255;this.dac_float=(r&128?-256+r:r)/128}})}advanceFrame(e){this.pixels&&this.pixels.fill(0);let s=this.cpuCyclesPerFrame;for(var r=0;r>8&255)+(255-this.dac<<8)]=4281597747,this.xpos=this.xpos+e&16777215),e}setKeyInput(e,s,r){var c=e-49;c>=0&&r&1&&(this.command=c&255,this.cpu.reset())}},i=class extends u{newMachine(){return new a}getPresets(){return h}readAddress(n){return this.machine.read(n)}};m["sound_williams-z80"]=i;export{i as WilliamsSoundPlatform}; -//# sourceMappingURL=sound_williams-JETC4QDO.js.map +import{H as u,c as f,q as o}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{K as m,ca as t}from"./chunk-ZTLOJICZ.js";import"./chunk-VSC4MAII.js";var h=[{id:"swave.c",name:"Wavetable Synth"}],a=class extends o{constructor(){super();this.cpuFrequency=18432e3/6;this.cpuCyclesPerFrame=this.cpuFrequency/60;this.cpuAudioFactor=32;this.canvasWidth=256;this.numVisibleScanlines=256;this.defaultROMSize=16384;this.sampleRate=this.cpuFrequency;this.overscan=!0;this.ram=new Uint8Array(1024);this.command=0;this.dac=0;this.dac_float=0;this.xpos=0;this.read=t([[0,16383,16383,e=>this.rom&&this.rom[e]],[16384,32767,1023,e=>this.ram[e]]]);this.write=t([[16384,32767,1023,(e,s)=>{this.ram[e]=s}]]);this.cpu=new f,this.connectCPUMemoryBus(this),this.connectCPUIOBus({read:e=>this.command&255,write:(e,s)=>{let r=this.dac=s&255;this.dac_float=(r&128?-256+r:r)/128}})}advanceFrame(e){this.pixels&&this.pixels.fill(0);let s=this.cpuCyclesPerFrame;for(var r=0;r>8&255)+(255-this.dac<<8)]=4281597747,this.xpos=this.xpos+e&16777215),e}setKeyInput(e,s,r){var c=e-49;c>=0&&r&1&&(this.command=c&255,this.cpu.reset())}},i=class extends u{newMachine(){return new a}getPresets(){return h}readAddress(n){return this.machine.read(n)}};m["sound_williams-z80"]=i;export{i as WilliamsSoundPlatform}; +//# sourceMappingURL=sound_williams-HKXF5LD7.js.map diff --git a/gen/sound_williams-JETC4QDO.js.map b/gen/sound_williams-HKXF5LD7.js.map similarity index 100% rename from gen/sound_williams-JETC4QDO.js.map rename to gen/sound_williams-HKXF5LD7.js.map diff --git a/gen/src/common/cpu/ARM.js b/gen/src/common/cpu/ARM.js index 8d1e7ea5..99bf4532 100644 --- a/gen/src/common/cpu/ARM.js +++ b/gen/src/common/cpu/ARM.js @@ -3548,7 +3548,7 @@ ARMCore.prototype.compileArm = function (instruction) { // test for UDF instruction if ((instruction & 0xfff000f0) == (0xe7f000f0 | 0)) { var immediate = instruction & 0x0000000f; // TODO: full range - throw new emu_1.EmuHalt("Program exited (" + immediate + ")"); + throw new emu_1.EmuHalt("Program exited (" + immediate + ")", undefined, true); } var address = function () { throw new emu_1.EmuHalt("Unimplemented memory access: 0x" + instruction.toString(16)); diff --git a/gen/src/common/cpu/ARM.js.map b/gen/src/common/cpu/ARM.js.map index e2bfab06..a9d2d94d 100644 --- a/gen/src/common/cpu/ARM.js.map +++ b/gen/src/common/cpu/ARM.js.map @@ -1 +1 @@ -{"version":3,"file":"ARM.js","sourceRoot":"","sources":["../../../../src/common/cpu/ARM.ts"],"names":[],"mappings":"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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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"} \ No newline at end of file +{"version":3,"file":"ARM.js","sourceRoot":"","sources":["../../../../src/common/cpu/ARM.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BE;;;AAGF,gCAAiC;AACjC,kCAA8B;AAuH9B,IAAY,OAWX;AAXD,WAAY,OAAO;IAClB,6CAAY,CAAA;IACZ,iDAAc,CAAA;IAEd,gDAAgB,CAAA;IAChB,8CAAe,CAAA;IACf,8CAAe,CAAA;IACf,4DAAsB,CAAA;IACtB,kDAAiB,CAAA;IACjB,0DAAqB,CAAA;IACrB,oDAAkB,CAAA;AACnB,CAAC,EAXW,OAAO,uBAAP,OAAO,QAWlB;AAED,IAAY,OAIX;AAJD,WAAY,OAAO;IAClB,kCAAO,CAAA;IACP,kCAAO,CAAA;IACP,kCAAO,CAAA;AACR,CAAC,EAJW,OAAO,uBAAP,OAAO,QAIlB;AAED,IAAY,YAmBX;AAnBD,WAAY,YAAY;IAEvB,yDAAa,CAAA;IACb,uDAAY,CAAA;IACZ,uDAAY,CAAA;IACZ,qEAAmB,CAAA;IACnB,2DAAc,CAAA;IACd,mEAAkB,CAAA;IAElB,iEAAiB,CAAA;IACjB,qEAAmB,CAAA;IAEnB,2DAAuB,CAAA;IACvB,2DAAuB,CAAA;IACvB,uDAAqB,CAAA;IACrB,0DAAsB,CAAA;IACtB,0DAAsB,CAAA;IACtB,wDAAqB,CAAA;IACrB,wDAAqB,CAAA;AACtB,CAAC,EAnBW,YAAY,4BAAZ,YAAY,QAmBvB;AAED,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,6BAA6B;AAC3D,MAAM,UAAU,GAAG,UAAU,CAAC;AAG9B,2EAA2E;AAE3E,SAAS,UAAU,CAAC,GAAgB;IACnC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAEf,IAAI,CAAC,yBAAyB,GAAG;QAChC,QAAQ;QACR,UAAS,EAAE,EAAE,MAAM,EAAE,MAAM;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,IAAI;QAEJ,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,MAAM,EAAE,MAAM;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,IAAI;QAEJ,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,MAAM,EAAE,MAAM;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;YACvC,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,UAAS,EAAE,EAAE,MAAM,EAAE,MAAM;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBAC7B,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,MAAM,EAAE,MAAM;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;YACvC,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,UAAS,EAAE,EAAE,MAAM,EAAE,MAAM;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBAC7B,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI;QACJ,IAAI;KACJ,CAAC;IAEF,IAAI,CAAC,wBAAwB,GAAG;QAC/B,QAAQ;QACR,UAAS,EAAE,EAAE,EAAE,EAAE,MAAM;YACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,IAAI;QAEJ,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,EAAE,EAAE,MAAM;YACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,IAAI;QAEJ,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,EAAE,EAAE,MAAM;YACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,UAAS,EAAE,EAAE,EAAE,EAAE,MAAM;YACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,EAAE,EAAE,MAAM;YACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,UAAS,EAAE,EAAE,EAAE,EAAE,MAAM;YACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI;QACJ,IAAI;KACJ,CAAC;IAEF,IAAI,CAAC,8BAA8B,GAAG;QACrC,QAAQ;QACR,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC;gBAChC,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,IAAI;QAEJ,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC;gBAChC,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,QAAQ;QACR,IAAI;QAEJ,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;YACtC,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,EAAE,CAAC;gBACV,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;gBACzC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI;QACJ,IAAI;QAEJ,QAAQ;QACR,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;YACtC,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,OAAO,GAAqB;gBAC/B,OAAO,EAAE,CAAC;gBACV,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;gBACzC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI;QACJ,IAAI;KACJ,CAAC;AACH,CAAC;AAED,UAAU,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAS,EAAE,EAAE,EAAE;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,QAAQ,GAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,QAAQ,IAAI,CAAC,CAAC;QACf,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACvB,GAAG,CAAC,cAAc,GAAG,QAAQ,IAAI,KAAK,CAAC;YACvC,GAAG,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3B,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;YAChC,GAAG,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YACvB,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,iCAAiC,GAAG,UAAS,SAAS;IAC1E,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,OAAO;QACN,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;QAC/B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,uCAAuC,GAAG,UAAS,SAAS,EAAE,MAAM;IACxF,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,OAAO;QACN,GAAG,CAAC,cAAc,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;IAChD,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAS,EAAE,EAAE,EAAE;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,QAAQ,GAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,QAAQ,IAAI,CAAC,CAAC;QACf,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACvB,GAAG,CAAC,cAAc,GAAG,QAAQ,IAAI,KAAK,CAAC;YACvC,GAAG,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YACvB,GAAG,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YACvB,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAS,EAAE,EAAE,EAAE;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,QAAQ,GAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,QAAQ,IAAI,CAAC,CAAC;QACf,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACvB,GAAG,CAAC,cAAc,GAAG,QAAQ,KAAK,KAAK,CAAC;YACxC,GAAG,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YACvB,GAAG,CAAC,eAAe,GAAG,QAAQ,IAAI,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YACvB,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAS,EAAE,EAAE,EAAE;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,QAAQ,GAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACtB,QAAQ,IAAI,CAAC,CAAC;QACf,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;QAC1B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YACnB,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YACzE,GAAG,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9B,GAAG,CAAC,eAAe,GAAG,QAAQ,IAAI,EAAE,CAAC;QACtC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,kCAAkC,GAAG,UAAS,WAAW,EAAE,SAAS,EAAE,MAAM;IAChG,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAChG,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,iCAAiC,GAAG,UAAS,WAAW,EAAE,EAAE,EAAE,MAAM;IACxF,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,uCAAuC,GAAG,UAAS,WAAW,EAAE,OAAO,EAAE,MAAM;IACnG,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,8BAA8B,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAS,SAAS,EAAE,EAAE;IACrE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,iCAAiC,GAAG,UAAS,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IAC/F,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO,UAAS,YAAY;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAChC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG;IACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,OAAO,cAAa,CAAC,CAAC;AACvB,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC;QAC1C,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;gBACnD,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7B,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;gBACvD,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7B,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QACzC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,SAAS,EAAE,MAAM;IAC3D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;IAC/B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,UAAS,SAAS,EAAE,MAAM;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;IAC/B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,UAAS,EAAE,EAAE,MAAM;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;QAC3D,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;YACvD,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAClC,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC3C,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;QAC3D,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;YACvD,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QACzC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAC/D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,OAAO;QACN,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,CAAC;gBACV,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,OAAO;QACN,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,CAAC;gBACV,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAC/D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IAClE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;YACxD,sEAAsE;YACtE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;YACxD,sEAAsE;YACtE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;IAC/B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC9B,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,CAAC,EAAE,MAAM;IACzD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IACjF,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;IACjC,mCAAmC;IACnC,mCAAmC;IACnC,IAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;IACjC,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC9B,OAAO,GAAG,SAAS,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YACnC,yDAAyD;YACzD,yDAAyD;YACzD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC;YACP,IAAI,IAAI,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;YAC3C,2EAA2E;YAC3E,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,KAAK,GAAG,OAAO,IAAI,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;gBACjC,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;gBACjC,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;YAClC,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;gBACpD,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;gBACjC,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IAC9D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;YACxD,sEAAsE;YACtE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IAC/D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;YACxD,sEAAsE;YACtE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;IAChC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC/B,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;IAC1C,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QACzC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACvD,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC;QAC1C,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;gBACnD,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACrE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QACzC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACrE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QACrD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAC/D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,CAAC;gBACV,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,CAAC;gBACV,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAC/D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,OAAO,EAAE,MAAM;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QACtC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;YAC3D,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;gBACvD,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,SAAS,EAAE,MAAM;IAC7D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IAC9D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IAC/D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC3C,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM;IACnE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;QACV,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC3C,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC;IAC9B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACrE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC;QAC7B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACpE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;IACrE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,GAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAS,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW;IACnH,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,8JAA8J;IAC9J,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,EAAE,OAAO;gBACd,QAAQ,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC;wBACL,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC5D,OAAO;gBACT,CAAC;gBACD,MAAM;YACP,KAAK,CAAC,EAAE,YAAY;gBACnB,QAAQ,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC;wBACL,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC5D,OAAO;oBACR,KAAK,CAAC;wBACL,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC5D,OAAO;gBACT,CAAC;gBACD,MAAM;YACP,KAAK,CAAC,EAAE,OAAO;gBACd,QAAQ,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC;wBACL,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC5D,OAAO;gBACT,CAAC;gBACD,MAAM;QACP,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAA,UAAG,EAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAA,UAAG,EAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;;EAaE;AACF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa;IACxH,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,GAAY,CAAC;QACjB,IAAI,IAAa,CAAC;QAClB,aAAa;QACb,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YAChC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACvB,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;QACD,UAAU;QACV,IAAI,UAAU,EAAE,CAAC;YAChB,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,GAAG,CAAC;QACZ,CAAC;QACD,eAAe;QACf,IAAI,UAAU,EAAE,CAAC;YAChB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACjB,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB;IAC5E,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/C,eAAe;QACf,IAAI,gBAAgB,EAAE,CAAC;YACtB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACF,CAAC,CAAC;AAEH,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU;IACjF,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,UAAU,EAAE,CAAC;YAChB,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,CAAC,OAAO,GAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAChF,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW;IAC1E,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC;QACX,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW;IACzE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC;QACX,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAA;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IAC1C;;;uDAGsD;IACtD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,GAAG,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IAC9B,IAAI,GAAG,GAAG,GAAG;QAAE,OAAO,MAAM,CAAC;;QACxB,OAAO,MAAM,CAAC;AACpB,CAAC;AAED,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACxE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,GAAG,EAAE,GAAG,CAAC;QACb,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACf,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACf,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAA;AACF,CAAC,CAAA;AAED,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAClE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,GAAG,EAAE,GAAG,GAAC,CAAC,CAAC;QACf,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAA;AACF,CAAC,CAAA;AACD,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACrE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC,CAAA;AACF,CAAC,CAAA;AAED,2EAA2E;AAE3E,SAAS,YAAY,CAAC,GAAG;IACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAChB,CAAC;AAAA,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;QACrC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;QACrC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IACzD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC;IACxD,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IACzC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,SAAS;IACxD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;IAC/B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACF,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACzB,IAAI,EAAE,EAAE,CAAC;YACR,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;YACF,CAAC;QACF,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAS,SAAS,EAAE,MAAM;IAC9D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;QAC/B,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAS,SAAS;IACtD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;IAC/B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,SAAS;IACvD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IACjD,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,SAAS;IACvD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAS,EAAE,EAAE,EAAE;IACnD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrD,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAClC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAClC,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;QAC1C,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC;AACH,CAAC,CAAA;AAED,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE;IACtD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;QACpB,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IACzD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC;QACvE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;QAC7C,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,EAAE,GAAG,CAAC,MAAM,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACzB,IAAI,EAAE,EAAE,CAAC;YACR,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;gBACnC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACF,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;QACnC,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAA;AAED,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACzB,IAAI,EAAE,EAAE,CAAC;YACR,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC5B,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACF,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QACrB,GAAG,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,CAAC;QAC5B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IACzD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE;IACrD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;YACxD,sEAAsE;YACtE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3D,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,CAAC;IACnD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,EAAE,GAAG,CAAC,MAAM,CAAC;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;YACxD,OAAO,IAAI,CAAC,CAAC;YACb,EAAE,KAAK,CAAC;QACT,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC5B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,CAAC;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,CAAC;YACb,EAAE,KAAK,CAAC;QACT,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,EAAE,KAAK,CAAC;gBACR,MAAM;YACP,CAAC;QACF,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACzB,IAAI,EAAE,EAAE,CAAC;YACR,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACnB,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5B,CAAC;QACF,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE;IACtD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,EAAE,KAAK,CAAC;gBACR,MAAM;YACP,CAAC;QACF,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,EAAE,KAAK,CAAC;YACT,CAAC;QACF,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IACpB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IACzD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IACjE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,SAAS;IAChE,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;QAC1C,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAA;AAED,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,SAAS;IAC5D,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;QAC1C,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IACzD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,SAAS;IACvD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC,CAAA;AACF,CAAC,CAAC;AAEF,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,EAAE,EAAE,EAAE;IACpD,IAAI,GAAG,GAAiB,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,OAAO;QACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAE3E,SAAS,OAAO;IACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAEb,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;IAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAExB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAEzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC3B,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;IAC5B,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;IAC5B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC3B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IAE3B,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB;IAC3E,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB;AAC1E,CAAC;AAAA,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAS,WAAW;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8DAA8D;IAEjF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC/C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjC,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC;IAEnD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAEhC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAEnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAEnB,IAAI,CAAC,eAAe,GAAG;QACtB,IAAI,UAAU,CAAC,CAAC,CAAC;QACjB,IAAI,UAAU,CAAC,CAAC,CAAC;QACjB,IAAI,UAAU,CAAC,CAAC,CAAC;QACjB,IAAI,UAAU,CAAC,CAAC,CAAC;QACjB,IAAI,UAAU,CAAC,CAAC,CAAC;QACjB,IAAI,UAAU,CAAC,CAAC,CAAC;KACjB,CAAC;IACF,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAEzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAErB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEjB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAsB,CAAC;IAEtC,IAAI,CAAC,IAAI,GAAG;QACX,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1H,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,CAAC;QAEd,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,yDAAyD;gBACxF,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACnF,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;YACrC,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC;gBACxC,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACvC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACf,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACP,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACb,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzB,CAAC;qBAAM,IAAK,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBACtC,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC/D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBACnF,CAAC;oBACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;gBACrC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACzB,CAAC;QACF,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IACzB,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG;IAC1B,OAAO;QACN,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB;QACzC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE;YACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACb;QACD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,iBAAiB,EAAE;YAClB;gBACC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YACD;gBACC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YACD;gBACC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YACD;gBACC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YACD;gBACC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YACD;gBACC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;SACD;QACD,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,aAAa,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SACnB;QACD,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;KACzC,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAAS,KAAmB;IACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAErB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;IAEtD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAEzB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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"} \ No newline at end of file diff --git a/gen/src/common/detect.js b/gen/src/common/detect.js index f1af5614..164b1a29 100644 --- a/gen/src/common/detect.js +++ b/gen/src/common/detect.js @@ -13,6 +13,9 @@ exports.isBuildableSource = isBuildableSource; exports.detectProject = detectProject; exports.isClearWinner = isClearWinner; exports.isStrongDetection = isStrongDetection; +exports.classifyFinding = classifyFinding; +exports.dropNestedFindings = dropNestedFindings; +exports.isMadeOfProjects = isMadeOfProjects; exports.isHeaderFile = isHeaderFile; exports.mainEvidence = mainEvidence; exports.detectionSummary = detectionSummary; @@ -68,6 +71,7 @@ const FINGERPRINTS = [ { re: /\bWait_Recal\b|\bIntensity_[0-9a-z]+\b/, platforms: ['vectrex'], reason: 'calls Vectrex BIOS routines' }, ]; const HEADER_EXTS = ['.h', '.inc', '.i']; +const C_EXTS = ['.c', '.cpp']; // a register or function name in a header is a declaration, not a use, so // it points at the library rather than at a program written for the platform const HEADER_FINGERPRINT_WEIGHT = 0.15; @@ -162,6 +166,8 @@ async function detectProject(input) { scores.set(platform, d = { platform, score: 0, evidence: [] }); if (d.evidence.some(e => e.reason === ev.reason)) return; + if (ev.kind === 'code') + d.hasCode = true; raw.set(platform, (raw.get(platform) || 0) + score); if (d.evidence.length < 8) d.evidence.push(ev); @@ -178,8 +184,8 @@ async function detectProject(input) { var badge = parseReadmeBadge((await input.read(readme)) || ''); if (badge) { return [{ - platform: badge.platform, mainFile: badge.mainFile, score: 1, - evidence: [{ file: readme, reason: 'has an 8bitworkshop link naming the platform' }], + platform: badge.platform, mainFile: badge.mainFile, score: 1, hasCode: true, + evidence: [{ file: readme, reason: 'has an 8bitworkshop link naming the platform', kind: 'code' }], }]; } } @@ -190,17 +196,17 @@ async function detectProject(input) { var ext = extname(file); var rom = exports.ROM_PLATFORMS[ext]; if (rom) - add(rom, 0.6, { file, reason: `is a ${ext} ROM` }); + add(rom, 0.6, { file, reason: `is a ${ext} ROM`, kind: 'rom' }); var base = basename(file); if (/^makefile$/i.test(base) || ext === '.mk') { var mk = await input.read(file); var m = mk && /(?:\s-t\s+|--target[\s=]+)([a-z0-9]+)/.exec(mk); if (m && CC65_TARGETS[m[1]]) - add(CC65_TARGETS[m[1]], 0.6, { file, reason: `builds for the cc65 "${m[1]}" target` }); + add(CC65_TARGETS[m[1]], 0.6, { file, reason: `builds for the cc65 "${m[1]}" target`, kind: 'code' }); continue; } if (ext === '.cfg' && CC65_TARGETS[base.replace(/\.cfg$/, '')]) { - add(CC65_TARGETS[base.replace(/\.cfg$/, '')], 0.3, { file, reason: 'is a cc65 linker config' }); + add(CC65_TARGETS[base.replace(/\.cfg$/, '')], 0.3, { file, reason: 'is a cc65 linker config', kind: 'hint' }); continue; } if (!isBuildableSource(file) && !HEADER_EXTS.includes(ext)) @@ -209,6 +215,8 @@ async function detectProject(input) { if (text == null) continue; texts.set(file, text); + // a header declares things for programs; it isn't one + var kind = HEADER_EXTS.includes(ext) ? 'hint' : 'code'; // includes, with their line numbers for the evidence. Quoted (C, ca65), // angle-bracketed (C), or bare (DASM, bB) -- name is whichever matched. var re = /^[ \t]*[#.]?[ \t]*include\s+(?:"([^"]+)"|<([^>]+)>|([^\s;]+))/gim; @@ -223,14 +231,14 @@ async function detectProject(input) { // a header a family shares (cv.h) points at each member, less strongly var weight = 0.6 / Math.sqrt(list.length); for (var p of list) - add(p, weight, { file, line, reason: `includes "${name}"` }); + add(p, weight, { file, line, reason: `includes "${name}"`, kind }); } for (var fp of FINGERPRINTS) { var fm = fp.re.exec(text); if (fm) { var fline = text.substring(0, fm.index).split('\n').length; var fweight = HEADER_EXTS.includes(ext) ? HEADER_FINGERPRINT_WEIGHT : 0.5; - addAll(fp.platforms, fweight, { file, line: fline, reason: fp.reason }); + addAll(fp.platforms, fweight, { file, line: fline, reason: fp.reason, kind }); } } } @@ -247,10 +255,10 @@ async function detectProject(input) { return meta && (meta.extensions || []).includes(ext); }); if (accepting.length > 0 && accepting.length <= 3) - addAll(accepting, 0.5, { file, reason: `has the ${ext} extension` }); + addAll(accepting, 0.5, { file, reason: `has the ${ext} extension`, kind: 'code' }); } if (input.dirName && platforms.has(input.dirName)) - add(input.dirName, 0.2, { file: '.', reason: `is in a folder named "${input.dirName}"` }); + add(input.dirName, 0.2, { file: '.', reason: `is in a folder named "${input.dirName}"`, kind: 'hint' }); var result = [...scores.values()]; // rank on the uncapped total, so two strong candidates still differ result.sort((a, b) => raw.get(b.platform) - raw.get(a.platform) || a.platform.localeCompare(b.platform)); @@ -277,9 +285,59 @@ function isClearWinner(detections) { var w = (d) => { var _a; return (_a = d.weight) !== null && _a !== void 0 ? _a : d.score; }; return detections.length == 1 || w(detections[0]) - w(detections[1]) >= 0.2; } -/** Strong enough to bring up unasked, on opening a folder. */ +/** + * Strong enough to bring up unasked, on opening a folder: a high score, + * and at least some of it from a program's own code. Headers, linker + * configs, ROMs, and folder names alone don't make a project. + */ function isStrongDetection(d) { - return d.score >= 0.5; + return d.score >= 0.5 && !!d.hasCode; +} +/** + * How a directory counts when scanning a folder for projects: "project" + * for a strong, clear detection; "potential" for weaker or ambiguous + * evidence around something to build or run, which is offered only when + * the user asks; undefined for nothing worth mentioning. + */ +function classifyFinding(detections) { + var _a; + var d = detections[0]; + if (!d) + return undefined; + if (isStrongDetection(d) && isClearWinner(detections)) + return 'project'; + var runnable = !!d.mainFile || (((_a = d.mainCandidates) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0 || d.evidence.some(e => e.kind === 'rom'); + if (runnable && d.score > 0.1) + return 'potential'; + return undefined; +} +function isInsideDir(parent, child) { + return parent !== child && (parent === '' || child.startsWith(parent + '/')); +} +/** + * Drop findings that belong to another: anything inside a project with a + * main file (its code and data folders), and a library folder inside a + * folder of programs. A nested project with its own main file stays. + */ +function dropNestedFindings(findings) { + return findings.filter(f => !findings.some(p => isInsideDir(p.dir, f.dir) && ((!p.potential && !!p.detection.mainFile) || + (isFolderOfPrograms(p.detection) && !f.detection.mainFile)))); +} +// unasked, this many projects anywhere in a folder is still worth a prompt +const FEW_PROJECTS = 5; +/** + * True if a folder is made of projects, so a prompt nobody asked for is + * welcome: a few projects, or projects in at least half its top-level + * folders (a folder of cloned repos). Projects scattered through a big + * codebase don't count. `allDirs` is every directory the scan saw. + */ +function isMadeOfProjects(projectDirs, allDirs) { + if (projectDirs.length <= FEW_PROJECTS) + return true; + var top = (d) => d.split('/')[0]; + var tops = new Set(allDirs.filter(d => d).map(top)); + var covered = new Set(projectDirs.filter(d => d).map(top)); + return covered.size * 2 >= tops.size; } /** True for a header or include file: a declaration, not a program. */ function isHeaderFile(fn) { @@ -333,7 +391,11 @@ function findMainCandidates(platform, files, texts) { for (var dep of deps) used.add(dep); } - var candidates = files.filter(f => isBuildableSource(f) && texts.has(f) && !used.has(f) && !used.has(basename(f))); + // a crt0 is the startup code a toolchain links in, not a program; a C + // program has a main(), so C without one is a library + var isProgram = (f) => !/^crt0\b/i.test(basename(f)) + && (!C_EXTS.includes(extname(f)) || /\bmain\s*\(/.test(texts.get(f))); + var candidates = files.filter(f => isBuildableSource(f) && texts.has(f) && !used.has(f) && !used.has(basename(f)) && isProgram(f)); var rank = (f) => { var t = texts.get(f) || ''; var r = 0; diff --git a/gen/src/common/detect.js.map b/gen/src/common/detect.js.map index 04b51484..1ef201a9 100644 --- a/gen/src/common/detect.js.map +++ b/gen/src/common/detect.js.map @@ -1 +1 @@ -{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/common/detect.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/common/detect.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;;;AAwG3E,4CAKC;AAOD,gDASC;AAMD,sCAMC;AAOD,wCAWC;AAGD,8CAOC;AAMD,sCAkHC;AAGD,sCAIC;AAOD,8CAEC;AAQD,0CAOC;AAkBD,gDAIC;AAWD,4CAMC;AAGD,oCAEC;AAGD,oCAEC;AAGD,4CAIC;AAGD,gDAEC;AAGD,8CAIC;AAGD,0CAOC;AAQD,gDA0BC;AA1aD,6CAAkD;AAClD,yCAAqG;AA2CrG,qDAAqD;AACxC,QAAA,aAAa,GAA8B;IACtD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;CAClD,CAAC;AAEF,8EAA8E;AAC9E,MAAM,cAAc,GAAmC;IACrD,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC;IACpF,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC;IACrF,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,aAAa,EAAE,CAAC,QAAQ,CAAC;IACzB,SAAS,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IACxC,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,aAAa,EAAE,CAAC,WAAW,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,SAAS,EAAE,CAAC,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,CAAC;IACd,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,WAAW,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC;AAEF,qEAAqE;AACrE,MAAM,YAAY,GAAiC;IACjD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ;IACvF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW;IAC3E,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CACjC,CAAC;AAEF,yEAAyE;AACzE,MAAM,YAAY,GAA0D;IAC1E,EAAE,EAAE,EAAE,yEAAyE,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,+BAA+B,EAAE;IAC9I,EAAE,EAAE,EAAE,gEAAgE,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE;IAC9H,EAAE,EAAE,EAAE,iFAAiF,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,4BAA4B,EAAE;IACnJ,EAAE,EAAE,EAAE,+BAA+B,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE;IACxG,EAAE,EAAE,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,0CAA0C,EAAE;IACzG,EAAE,EAAE,EAAE,uDAAuD,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,uCAAuC,EAAE;IAC1J,EAAE,EAAE,EAAE,iDAAiD,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE;IAC5G,EAAE,EAAE,EAAE,wCAAwC,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE;CAChH,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9B,0EAA0E;AAC1E,6EAA6E;AAC7E,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,wEAAwE;AACxE,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAE5E,uEAAuE;AACvE,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,IAAI,IAAI,GAAG,qDAAqD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,GAAG,yCAAyC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,OAAyC;IAC1E,IAAI,KAAK,GAAmC,EAAE,CAAC;IAC/C,KAAK,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,IAAI,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC7E,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,gFAAgF,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/G,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACzE,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/D,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,IAAY,EAAE,IAAY;IACzE,IAAI,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,MAAM,GAAG,IAAA,+BAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACzC,iEAAiE;IACjE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,IAAI,IAAI,GAAG,oBAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,+BAAkB,EAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7F,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iEAAiE;AACjE,SAAgB,iBAAiB,CAAC,EAAU;IAC1C,IAAI,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChD,KAAK,IAAI,EAAE,IAAI,oBAAS;QACtB,IAAI,CAAC,oBAAS,CAAC,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,aAAa,CAAC,KAAkB;IACpD,IAAI,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC1C,IAAI,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,IAAI,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,6EAA6E;IAC7E,IAAI,GAAG,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAkB,EAAE,EAAE;QAChE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACrC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC;YAAE,OAAO;QACzD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;YAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACzC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,IAAI,MAAM,GAAG,CAAC,IAAc,EAAE,KAAa,EAAE,EAAkB,EAAE,EAAE;QACjE,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC;IACF,IAAI,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtC,6DAA6D;IAC7D,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,KAAK,GAAG,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC;oBACN,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI;oBAC3E,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,8CAA8C,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBACnG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,OAAO,qBAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAE,CAAC;IAC3C,KAAK,IAAI,CAAC,IAAI,cAAc;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAE7D,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,GAAG,GAAG,qBAAa,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAC9C,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,EAAE,IAAI,uCAAuC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAClI,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9G,SAAS;QACX,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACrE,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,IAAI,IAAI;YAAE,SAAS;QAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtB,sDAAsD;QACtD,IAAI,IAAI,GAA2B,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/E,wEAAwE;QACxE,wEAAwE;QACxE,IAAI,EAAE,GAAG,kEAAkE,CAAC;QAC5E,IAAI,GAA2B,CAAC;QAChC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,2DAA2D;YAC3D,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAC3D,uEAAuE;YACvE,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,KAAK,IAAI,CAAC,IAAI,IAAI;gBAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,KAAK,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC;YAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC3D,IAAI,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1E,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,SAAS;QACvC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACzC,IAAI,IAAI,GAAG,IAAA,+BAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,IAAI,GAAG,IAAI,IAAI,oBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;YAC/C,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/C,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,yBAAyB,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1G,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,oEAAoE;IACpE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzG,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvD,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,8DAA8D;IAC9D,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM;QAC7C,IAAI,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,SAAgB,aAAa,CAAC,UAAuB;IACnD,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,CAAC,GAAG,CAAC,CAAY,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAC,KAAK,CAAA,EAAA,CAAC;IAC9C,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,CAAY;IAC5C,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,UAAuB;;IACrD,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACxE,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAA,MAAA,CAAC,CAAC,cAAc,0CAAE,MAAM,KAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAC7G,IAAI,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG;QAAE,OAAO,WAAW,CAAC;IAClD,OAAO,SAAS,CAAC;AACnB,CAAC;AASD,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa;IAChD,OAAO,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAuB,QAAa;IACpE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAC3E,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;QACxC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,2EAA2E;AAC3E,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,WAAqB,EAAE,OAAiB;IACvE,IAAI,WAAW,CAAC,MAAM,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,uEAAuE;AACvE,SAAgB,YAAY,CAAC,EAAU;IACrC,OAAO,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,8DAA8D;AAC9D,SAAgB,gBAAgB,CAAC,CAAY;;IAC3C,IAAI,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;IAClC,IAAI,CAAC,GAAG,CAAA,MAAA,CAAC,CAAC,cAAc,0CAAE,MAAM,KAAI,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,gFAAgF;AAChF,SAAgB,kBAAkB,CAAC,CAAY;;IAC7C,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAA,MAAA,CAAC,CAAC,cAAc,0CAAE,MAAM,KAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,6DAA6D;AAC7D,SAAgB,iBAAiB,CAAC,CAAY;IAC5C,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,OAAO,GAAG,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;AAC/F,CAAC;AAED,8EAA8E;AAC9E,SAAgB,eAAe,CAAC,CAAY;IAC1C,IAAI,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,cAAe,CAAC,MAAM,CAAC;QACjC,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,KAAe,EAAE,KAA0B;IAE9F,IAAI,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAA,+BAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,IAAI,GAAG,IAAA,kCAAuB,EAAC,IAAI,EAAE,IAAA,6BAAkB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aACzE,MAAM,CAAC,IAAA,kCAAuB,EAAC,IAAI,EAAE,IAAA,0BAAe,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,IAAI,GAAG,IAAI,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,sEAAsE;IACtE,sDAAsD;IACtD,IAAI,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;WACvD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACnI,IAAI,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACvB,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,8DAA8D,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,OAAO,CAAC,EAAU;IACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/gen/src/common/emu.js b/gen/src/common/emu.js index 19ec5455..af404770 100644 --- a/gen/src/common/emu.js +++ b/gen/src/common/emu.js @@ -253,10 +253,11 @@ class RAM { } exports.RAM = RAM; class EmuHalt extends Error { - constructor(msg, loc) { + constructor(msg, loc, normal = false) { super(msg); this.squelchError = true; this.$loc = loc; + this.normal = normal; Object.setPrototypeOf(this, EmuHalt.prototype); } } diff --git a/gen/src/common/emu.js.map b/gen/src/common/emu.js.map index a8459db7..d54f0127 100644 --- a/gen/src/common/emu.js.map +++ b/gen/src/common/emu.js.map @@ -1 +1 @@ -{"version":3,"file":"emu.js","sourceRoot":"","sources":["../../../src/common/emu.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"emu.js","sourceRoot":"","sources":["../../../src/common/emu.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/src/common/emucore.js b/gen/src/common/emucore.js index e2bda779..0d66d0b2 100644 --- a/gen/src/common/emucore.js +++ b/gen/src/common/emucore.js @@ -116,14 +116,25 @@ function installHeadlessVideo() { const datau8 = new Uint8Array(buffer); const datau32 = new Uint32Array(buffer); // the first one is the screen; later ones are debug views (nes nametables) - if (!pixels) { + const isScreen = !pixels; + if (isScreen) { params = { width, height, rotate: options === null || options === void 0 ? void 0 : options.rotate, aspect: options === null || options === void 0 ? void 0 : options.aspect }; pixels = datau32; } this.create = function () { this.width = width; this.height = height; }; + // verilog rotates at reset, when the design asks for it + this.setRotate = function (rotate) { if (isScreen) + params.rotate = rotate || undefined; }; this.setKeyboardEvents = setKeyboardEvents; this.getFrameData = function () { return datau32; }; this.getImageData = function () { return { data: datau8, width, height }; }; + // PCE (and other platforms) build their own ImageData from the canvas + // context during start(), so hand out a real one + this.createImageData = function (w, h) { + if (w === width && h === height) + return { data: datau8, width, height }; + return { data: new Uint8ClampedArray(w * h * 4), width: w, height: h }; + }; this.updateFrame = function () { }; this.clearRect = function () { }; this.setupMouseEvents = function () { }; @@ -213,7 +224,19 @@ class EmuCore { } } reset() { this.platform.reset(); } - loadROM(data, title = 'ROM') { this.platform.loadROM(title, data); } + /** + * `data` is a ROM image, or whatever else the build produced (verilog's + * compiled unit). Some platforms (verilog) load asynchronously; await this + * to see their errors. + */ + async loadROM(data, title = 'ROM') { await this.platform.loadROM(title, data); } + /** + * Project files the program reads at load time (verilog's $readmem), keyed + * by the name the program uses. The IDE gets these from the open project. + */ + setFileData(files) { + this.platform.sourceFileFetch = (path) => files[path]; + } loadBIOS(data, title = 'BIOS') { if (!this.platform.loadBIOS) return false; diff --git a/gen/src/common/emucore.js.map b/gen/src/common/emucore.js.map index 1aff9a44..653b94be 100644 --- a/gen/src/common/emucore.js.map +++ b/gen/src/common/emucore.js.map @@ -1 +1 @@ -{"version":3,"file":"emucore.js","sourceRoot":"","sources":["../../../src/common/emucore.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"emucore.js","sourceRoot":"","sources":["../../../src/common/emucore.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/src/platform/pce.js b/gen/src/platform/pce.js index cd4faebd..aaeb2fff 100644 --- a/gen/src/platform/pce.js +++ b/gen/src/platform/pce.js @@ -42,6 +42,12 @@ class PCEnginePlatform { this.pce.Init(); this.pce.SetROM(rom); } + // headless hosts drive frames through advance(); the IDE uses the + // requestAnimationFrame loop that resume() starts + advance(novideo) { + this.pce.Run(); + return 1; + } getPlatformName() { return "PC Engine"; } diff --git a/gen/src/platform/pce.js.map b/gen/src/platform/pce.js.map index e4285052..d79c6bbe 100644 --- a/gen/src/platform/pce.js.map +++ b/gen/src/platform/pce.js.map @@ -1 +1 @@ -{"version":3,"file":"pce.js","sourceRoot":"","sources":["../../../src/platform/pce.ts"],"names":[],"mappings":"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EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SAAC,CAAC,CAAA,MAAM;QAE1D,IAAI,CAAC,OAAO,GAAG;YACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CA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"} \ No newline at end of file +{"version":3,"file":"pce.js","sourceRoot":"","sources":["../../../src/platform/pce.ts"],"names":[],"mappings":"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E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SAAC,CAAC,CAAA,MAAM;QAE1D,IAAI,CAAC,OAAO,GAAG;YACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO;YACtD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,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"} \ No newline at end of file diff --git a/gen/src/tools/8bws.js b/gen/src/tools/8bws.js index 9acd9ca0..fece20e2 100644 --- a/gen/src/tools/8bws.js +++ b/gen/src/tools/8bws.js @@ -51,6 +51,7 @@ const cliformat_1 = require("./cliformat"); const emutarget_1 = require("./emutarget"); const runscript_1 = require("./runscript"); const symbolfile_1 = require("../common/symbols/symbolfile"); +const testlib_1 = require("./testlib"); const detect_1 = require("../common/detect"); /** Options that may be repeated; each occurrence adds to a list. */ const REPEATABLE_FLAGS = new Set([ @@ -148,7 +149,7 @@ async function compileSource(args, source, platform) { if (!result.success) { (0, cliformat_1.fail)('build', `${tool} failed on ${source}`, { errors: result.errors }); } - return { rom: romBytes(result), symbolmap: result.symbolmap || {}, tool, platform, source, result }; + return { rom: (0, testlib_1.romBytes)(result), symbolmap: result.symbolmap || {}, tool, platform, source, result }; } async function doBuild(args, positional) { let source = positional[0]; @@ -168,11 +169,14 @@ async function doBuild(args, positional) { const platform = platformArg || resolvedPlatform || await inferPlatform('build', source); const built = await compileSource(args, source, platform); const outputFile = str(args, 'output'); - if (outputFile && !checkOnly) + if (outputFile && !checkOnly) { + if (!built.rom) + (0, cliformat_1.fail)('build', `${built.tool} produces no ROM image to write`); fs.writeFileSync(outputFile, Buffer.from(built.rom)); + } const data = { tool: built.tool, platform, source, - outputSize: built.rom.length, + outputSize: built.rom ? built.rom.length : null, outputFile: outputFile || null, }; if (args['symbols']) { @@ -199,15 +203,6 @@ async function saveBuildFiles(source, data) { } data.saveDir = saveDir; } -function romBytes(result) { - var _a, _b; - const out = (_b = (_a = result.output) === null || _a === void 0 ? void 0 : _a.code) !== null && _b !== void 0 ? _b : result.output; - if (out instanceof Uint8Array) - return out; - if (typeof out === 'string') - return new TextEncoder().encode(out); - throw new Error('compiler produced no ROM image'); -} //////////////////////////////////////////////////////////////////////// // run /** A source file is anything that isn't obviously a ROM image. */ @@ -270,10 +265,16 @@ async function doRun(args, positional) { if (!platformId) platformId = await inferPlatform('run', input); built = await compileSource(args, input, platformId); - romFile = path.join(os.tmpdir(), '8bws-' + path.basename(input).replace(/\.\w+$/, '') + '.rom'); - fs.writeFileSync(romFile, Buffer.from(built.rom)); symbols = built.symbolmap; - (0, cliformat_1.note)(`built ${input} with ${built.tool} -> ${romFile} (${built.rom.length} bytes)`); + if (built.rom) { + romFile = path.join(os.tmpdir(), '8bws-' + path.basename(input).replace(/\.\w+$/, '') + '.rom'); + fs.writeFileSync(romFile, Buffer.from(built.rom)); + (0, cliformat_1.note)(`built ${input} with ${built.tool} -> ${romFile} (${built.rom.length} bytes)`); + } + else { + romFile = null; // loaded straight from the build + (0, cliformat_1.note)(`built ${input} with ${built.tool}`); + } } else if (!platformId) { (0, cliformat_1.fail)('run', `Cannot infer a platform from '${path.basename(input)}': pass --platform`); @@ -281,11 +282,18 @@ async function doRun(args, positional) { const target = await openTarget(args, platformId); // The temp file is always written as .rom, but some platforms use the title // to pick a load format -- an Atari XEX named .rom would load as a cartridge. - let romTitle = path.basename(romFile); - if (built && target.platform.getROMExtension) { - romTitle = path.basename(romFile, '.rom') + target.platform.getROMExtension(new Uint8Array(built.rom)); + if (built) + target.setFileData(built.result.files || {}); + if (romFile) { + let romTitle = path.basename(romFile); + if (built && target.platform.getROMExtension) { + romTitle = path.basename(romFile, '.rom') + target.platform.getROMExtension(new Uint8Array(built.rom)); + } + await target.loadROM(new Uint8Array(fs.readFileSync(romFile)), romTitle); + } + else { + await target.loadROM(built.result.output, path.basename(input)); } - target.loadROM(new Uint8Array(fs.readFileSync(romFile)), romTitle); const script = new runscript_1.RunScript(target); script.addSymbols(symbols); const symbolFile = str(args, 'symbols'); diff --git a/gen/src/tools/8bws.js.map b/gen/src/tools/8bws.js.map index d115be69..8e2cfba6 100644 --- a/gen/src/tools/8bws.js.map +++ b/gen/src/tools/8bws.js.map @@ -1 +1 @@ -{"version":3,"file":"8bws.js","sourceRoot":"","sources":["../../../src/tools/8bws.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"8bws.js","sourceRoot":"","sources":["../../../src/tools/8bws.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/src/tools/buildpresets.js b/gen/src/tools/buildpresets.js index 671d46ba..96635c5c 100644 --- a/gen/src/tools/buildpresets.js +++ b/gen/src/tools/buildpresets.js @@ -15,6 +15,13 @@ // npm run buildpresets -- --json out.json # machine-readable report // npm run buildpresets -- --baseline test/presets-baseline.json // npm run buildpresets -- --verbose # let the tools print as they run +// npm run buildpresets -- --run # run each build for 300 frames +// npm run buildpresets -- --run --png dir # ... and save a screenshot each +// +// With --run each preset that builds is loaded into its platform headlessly, +// advanced for --frames frames (default 300), and its screen checked for +// obvious trouble -- a blank or single-color frame, which usually means the +// program never got going. --png writes a screenshot for each one. // // Tool output is hidden unless the build it belongs to fails, and a tool that // exits, aborts, or wedges fails just its own preset (see --timeout, ms). @@ -70,6 +77,8 @@ var __rest = (this && this.__rest) || function (s, e) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.listPresets = listPresets; +exports.screenStats = screenStats; +exports.runPreset = runPreset; exports.buildPreset = buildPreset; exports.buildAllPresets = buildAllPresets; const fs = __importStar(require("fs")); @@ -84,6 +93,10 @@ const cliformat_1 = require("./cliformat"); const PRESETS_DIR = 'presets'; const PLATFORM_SRC_DIR = 'src/platform'; const DEFAULT_TIMEOUT = 120000; +const DEFAULT_RUN_FRAMES = 300; +// A frame this uniform after a few seconds almost always means nothing drew; +// a real screen has a background plus text or sprites. +const SOLID_FRACTION = 0.999; // skip these platforms, they aren't ready yet or otherwise broken const SKIP_PLATFORMS = [ 'vector-ataribw', @@ -99,6 +112,9 @@ async function importAllPlatforms(warn) { if (platformsLoaded) return; platformsLoaded = true; + acquireRejectionGuard(); + // listeners that exist before any platform module loads are the ones to keep + const keep = (0, emutarget_1.captureRejectionListeners)(); (0, emutarget_1.installNodeMocks)(); for (const entry of fs.readdirSync(PLATFORM_SRC_DIR).sort()) { if (!entry.endsWith('.ts') || entry.startsWith('_')) @@ -110,6 +126,7 @@ async function importAllPlatforms(warn) { warn(`platform module ${entry}: ${e}`); } } + (0, emutarget_1.dropAbortHandlers)(keep); } // Which tool builds a preset: the same table the IDE's platform objects use // (src/common/toolselect.ts). @@ -316,6 +333,20 @@ function releaseExitGuard() { restoreGuard = null; } } +const strayErrors = []; +let rejectGuard = null; +function acquireRejectionGuard() { + if (rejectGuard) + return; + const handler = (reason) => { + strayErrors.push({ + message: '' + ((reason && reason.message) || reason), + stack: reason && reason.stack, + }); + }; + process.on('unhandledRejection', handler); + rejectGuard = () => { process.off('unhandledRejection', handler); rejectGuard = null; }; +} // Tools chatter on stdout/stderr while they run -- banners, warnings, the // occasional fatal error. Buffer it all and only show the part that belongs // to a build that failed. @@ -360,6 +391,119 @@ function captureOutput() { // A build step can reach for a second tool -- a project that links sources of // more than one kind -- whose filesystem nobody preloaded. Load it and retry. const RE_NO_FS = /No filesystem for '([^']+)'/; +// --- running a built preset ------------------------------------------------ +// Reject when a platform's start() wedges, so one stuck emulator can't hold up +// the whole sweep. The underlying promise is abandoned, not cancelled. +function withTimeout(p, ms, what) { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => reject(new Error(`${what} timed out after ${ms}ms`)), ms); + p.then((v) => { clearTimeout(timer); resolve(v); }, (e) => { clearTimeout(timer); reject(e); }); + }); +} +// Some platforms pick a load format from the title's extension (an Atari XEX +// named .rom would load as a cartridge), the same as `8bws run`. +function romTitle(preset, rom, target) { + const base = path.basename(preset); + const ext = target.platform.getROMExtension && target.platform.getROMExtension(rom); + return ext ? base.replace(/\.[^.]*$/, '') + ext : base; +} +// Count the colors on the last frame. A single color -- or a frame nobody ever +// touched -- is the cheapest sign that a program didn't get going. Pure, so it +// can be checked without an emulator. +function screenStats(pixels, width = 0, height = 0) { + const counts = new Map(); + let top = 0, topColor = 0; + for (let i = 0; i < pixels.length; i++) { + const color = pixels[i]; + const n = (counts.get(color) || 0) + 1; + counts.set(color, n); + if (n > top) { + top = n; + topColor = color; + } + } + const dominant = top / (pixels.length || 1); + let verdict; + if (counts.size <= 1) { + // transparent black is the untouched headless buffer, not a drawn frame + verdict = (topColor >>> 24) === 0 ? 'blank' : 'solid'; + } + else { + verdict = dominant >= SOLID_FRACTION ? 'solid' : 'ok'; + } + return { width, height, colors: counts.size, dominant, color: topColor, verdict }; +} +function analyzeVideo(video, run) { + Object.assign(run, screenStats(video.pixels, video.width, video.height)); +} +async function writePresetPNG(video, preset, dir) { + const { encode } = await Promise.resolve().then(() => __importStar(require('fast-png'))); + const { pixels, width, height } = video; + const png = encode({ + width, height, + data: new Uint8Array(pixels.buffer, pixels.byteOffset, width * height * 4), + channels: 4, + }); + // flatten the preset path so presets//foo.c and a sibling + // foo.s never collide in the output directory + const file = path.join(dir, preset.replace(/[\\/]/g, '_') + '.png'); + fs.mkdirSync(path.dirname(file), { recursive: true }); + fs.writeFileSync(file, png); + return file; +} +/** Load a finished build into its platform and advance it a while. */ +async function runPreset(result, preset, platform, opts = {}) { + const started = Date.now(); + const frames = opts.frames || DEFAULT_RUN_FRAMES; + const run = { ok: false, frames, verdict: 'error', ms: 0 }; + const capture = opts.verbose ? null : captureOutput(); + let target = null; + try { + target = await (0, emutarget_1.loadPlatform)(platform); + await withTimeout(target.start(), opts.timeout || DEFAULT_TIMEOUT, 'platform start'); + if (result.files) + target.setFileData(result.files); + const rom = (0, testlib_1.romBytes)(result); + if (rom) + await target.loadROM(rom, romTitle(preset, rom, target)); + else + await target.loadROM(result.output, path.basename(preset)); + for (let i = 0; i < frames; i++) + target.advanceFrame(); + run.ok = true; + const video = target.getVideo(); + if (!video) { + run.verdict = 'novideo'; + } + else { + analyzeVideo(video, run); + if (opts.pngDir) + run.png = await writePresetPNG(video, preset, opts.pngDir); + } + } + catch (e) { + if (e instanceof emu_1.EmuHalt && e.normal) { + // the program stopped by design (arm32 semihost exit); the emulator + // did its job, so that's a clean halt. Other EmuHalts (HLT opcode, + // watchdog, illegal instruction) are still failures. + run.ok = true; + run.verdict = 'halted'; + run.error = '' + (e.message || e); + } + else { + run.ok = false; + run.verdict = 'error'; + run.error = '' + (e && e.message ? e.message : e); + } + } + // report what actually ran, which is less than requested if it threw + if (target) + run.frames = target.frameCount; + if (capture) + run.log = capture.stop() || undefined; + run.ms = Date.now() - started; + return run; +} async function buildPreset(preset, platform, tool, opts = {}) { const started = Date.now(); const timeout = opts.timeout || DEFAULT_TIMEOUT; @@ -417,7 +561,10 @@ async function buildPreset(preset, platform, tool, opts = {}) { const ms = Date.now() - started; if (errors.length) return { preset, platform, tool, ok: false, ms, errors, log: log || undefined }; - return { preset, platform, tool, ok: true, size: outputSize(result), ms }; + const built = { preset, platform, tool, ok: true, size: outputSize(result), ms }; + if (opts.run) + built.run = await runPreset(result, preset, platform, opts); + return built; } async function buildAllPresets(opts = {}) { const results = []; @@ -451,6 +598,22 @@ function arg(argv, name) { const i = argv.indexOf('--' + name); return i >= 0 ? argv[i + 1] : undefined; } +/** One short phrase describing what running a preset produced. */ +function runStatus(run) { + var _a; + const info = run.error + ? run.error + : `${run.colors} color${run.colors === 1 ? '' : 's'}, ${(100 * ((_a = run.dominant) !== null && _a !== void 0 ? _a : 1)).toFixed(1)}%` + + (run.color != null ? ` #${(run.color >>> 0).toString(16).padStart(8, '0')}` : ''); + switch (run.verdict) { + case 'ok': return green('run ok') + ' ' + dim(info); + case 'halted': return dim('run halted') + ' ' + dim(info); + case 'novideo': return dim('run: no video'); + case 'blank': return yellow(bold('run BLANK')) + ' ' + dim(info); + case 'solid': return yellow(bold('run SOLID')) + ' ' + dim(info); + default: return red(bold('run FAIL')) + ' ' + dim(info); + } +} function compareToBaseline(results, baselinePath) { const baseline = JSON.parse(fs.readFileSync(baselinePath, 'utf8')); const was = {}; @@ -490,7 +653,13 @@ async function main() { const baseline = arg(argv, 'baseline'); const quiet = argv.includes('--quiet'); const verbose = argv.includes('--verbose'); + // asking for frames or a screenshot only makes sense while running + const run = argv.includes('--run') || argv.includes('--frames') || argv.includes('--png'); + const frames = arg(argv, 'frames') ? parseInt(arg(argv, 'frames')) : undefined; + const pngDir = arg(argv, 'png'); const timeout = arg(argv, 'timeout') ? parseInt(arg(argv, 'timeout')) : undefined; + // collect stray async rejections so a misbehaving platform can't abort the sweep + acquireRejectionGuard(); const warnings = []; const errors = []; const presets = await listPresets(filter, platform, (w) => warnings.push(w), (e) => errors.push(e)); @@ -501,19 +670,27 @@ async function main() { if (errors.length) { console.error(red(`aborting: ${errors.length} platform(s) list preset files that don't exist`)); } - console.log(bold(`building ${presets.length} presets...`)); + console.log(bold(`${run ? 'building and running' : 'building'} ${presets.length} presets...`)); const results = await buildAllPresets({ - presets, timeout, verbose, onResult: (r) => { - if (quiet && r.ok) + presets, timeout, verbose, run, frames, pngDir, onResult: (r) => { + var _a, _b; + const clean = !r.run || r.run.verdict === 'ok' || r.run.verdict === 'novideo' || r.run.verdict === 'halted'; + if (quiet && r.ok && clean) return; const status = r.ok ? green('ok ') : red(bold('FAIL')); const size = r.size != null ? `${r.size} bytes` : ''; - console.log(`${status} ${r.preset} ${cyan(`[${r.tool}/${r.platform}]`)} ${dim(size)} ${dim(r.ms + 'ms')}`); + const runText = r.run ? ' ' + runStatus(r.run) : ''; + console.log(`${status} ${r.preset} ${cyan(`[${r.tool}/${r.platform}]`)} ${dim(size)} ${dim(r.ms + 'ms')}${runText}`); for (const e of r.errors || []) console.log(` ${yellow(e)}`); - // only a failure gets the tool's own output + if ((_a = r.run) === null || _a === void 0 ? void 0 : _a.png) + console.log(` ${dim(r.run.png)}`); + // only a failure gets the tool's / platform's own output if (r.log) console.log(dim(r.log.split('\n').map((l) => ' | ' + l).join('\n'))); + if (((_b = r.run) === null || _b === void 0 ? void 0 : _b.log) && r.run.verdict === 'error') { + console.log(dim(r.run.log.split('\n').map((l) => ' | ' + l).join('\n'))); + } } }); const failed = results.filter((r) => !r.ok); @@ -530,12 +707,34 @@ async function main() { console.log('\nby tool: ' + Object.keys(byTool).sort() .map((t) => `${cyan(t)}=${byTool[t]}`).join(' ')); } + // what the builds did when loaded, separately from whether they built + const ran = results.filter((r) => r.run); + if (ran.length) { + const problems = ran.filter((r) => r.run.verdict !== 'ok' && r.run.verdict !== 'novideo' && r.run.verdict !== 'halted'); + const tally2 = `${ran.length - problems.length}/${ran.length} presets run clean`; + console.log('\n' + bold(problems.length ? yellow(tally2) : green(tally2))); + if (problems.length) { + console.log('\n' + bold('run problems:')); + for (const r of problems) { + console.log(` ${red(r.preset)} ${cyan(`[${r.tool}/${r.platform}]`)} ${runStatus(r.run)}`); + } + } + } + // stray async failures from platforms that never settled + if (strayErrors.length) { + console.log('\n' + bold(yellow(`${strayErrors.length} stray async error(s):`))); + for (const e of strayErrors) { + console.log(' ' + red(e.message)); + if (verbose && e.stack) + console.log(dim(e.stack.split('\n').map((l) => ' ' + l).join('\n'))); + } + } if (jsonFile) { - // the captured tool output is for reading on the console, not for - // diffing against a baseline + // captured output is for reading on the console, not for diffing + // against a baseline const report = results.map((_a) => { var { log } = _a, r = __rest(_a, ["log"]); - return r; + return (Object.assign(Object.assign({}, r), { run: r.run ? Object.assign(Object.assign({}, r.run), { log: undefined }) : undefined })); }); fs.writeFileSync(jsonFile, JSON.stringify(report, null, 1)); console.log(dim(`\nwrote ${jsonFile}`)); diff --git a/gen/src/tools/buildpresets.js.map b/gen/src/tools/buildpresets.js.map index fe3b8ed0..7b6e272b 100644 --- a/gen/src/tools/buildpresets.js.map +++ b/gen/src/tools/buildpresets.js.map @@ -1 +1 @@ -{"version":3,"file":"buildpresets.js","sourceRoot":"","sources":["../../../src/tools/buildpresets.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"buildpresets.js","sourceRoot":"","sources":["../../../src/tools/buildpresets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/src/tools/emutarget.js b/gen/src/tools/emutarget.js index 65b0e2f3..6b1e5cc5 100644 --- a/gen/src/tools/emutarget.js +++ b/gen/src/tools/emutarget.js @@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_MAX_FRAMES = exports.DISASSEMBLERS = exports.EmuTarget = void 0; exports.loadPlatform = loadPlatform; +exports.captureRejectionListeners = captureRejectionListeners; +exports.dropAbortHandlers = dropAbortHandlers; exports.installNodeMocks = installNodeMocks; const emucore_1 = require("../common/emucore"); const emu_1 = require("../common/emu"); @@ -18,9 +20,16 @@ Object.defineProperty(exports, "DEFAULT_MAX_FRAMES", { enumerable: true, get: fu /** Load a platform module by ID (e.g. "nes", "c64.wasm", "atari8-5200"). */ async function loadPlatform(platformId) { installNodeMocks(); + // a headless host may load more than one platform (or the same one twice) + // in a process; scripts kept global state, so evaluate them fresh each time + (0, nodemock_1.resetScripts)(); const baseId = (0, util_1.getRootBasePlatform)(platformId); + // a platform module (verilog) may pull in an Emscripten runtime whose + // rejection handler aborts the host; disarm it around the import + const keep = captureRejectionListeners(); // the explicit import switch, so bundlers can find every platform module await (0, _index_1.importPlatform)(baseId); + dropAbortHandlers(keep); const PlatformClass = emu_1.PLATFORMS[platformId] || emu_1.PLATFORMS[baseId]; if (!PlatformClass) { throw new Error(`Platform '${platformId}' not found. Available: ${Object.keys(emu_1.PLATFORMS).sort().join(', ')}`); @@ -28,6 +37,31 @@ async function loadPlatform(platformId) { return new emucore_1.EmuCore(platformId, new PlatformClass(null)); } let mocksInstalled = false; +/** + * The process-level unhandledRejection listeners currently installed. Capture + * this before importing a platform (see dropAbortHandlers). + */ +function captureRejectionListeners() { + return new Set(process.listeners('unhandledRejection')); +} +/** + * Drop process-level unhandledRejection handlers added since `keep` was + * captured. Emscripten runtimes (binaryen, imported by the verilog platform) + * register one that aborts the host, so a stray async rejection from an + * emulator would otherwise kill the process or worker thread. A host that + * wants to collect the rejections installs its own listener before capturing; + * otherwise a logging one is left so Node doesn't fall back to its default + * throw. + */ +function dropAbortHandlers(keep) { + for (const listener of process.listeners('unhandledRejection')) { + if (!keep.has(listener)) + process.removeListener('unhandledRejection', listener); + } + if (process.listenerCount('unhandledRejection') === 0) { + process.on('unhandledRejection', (reason) => console.error('unhandled rejection:', reason)); + } +} /** * Stub out the browser APIs that the platform modules expect. fetch() reads * files (BIOS images, wasm cores) and loadScript() evaluates scripts relative diff --git a/gen/src/tools/emutarget.js.map b/gen/src/tools/emutarget.js.map index 253c446c..faf8c13e 100644 --- a/gen/src/tools/emutarget.js.map +++ b/gen/src/tools/emutarget.js.map @@ -1 +1 @@ -{"version":3,"file":"emutarget.js","sourceRoot":"","sources":["../../../src/tools/emutarget.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,8EAA8E;AAC9E,iDAAiD;;;AAajD,oCAUC;AASD,4CAQC;AAtCD,+CAA4C;AAC5C,uCAA0C;AAC1C,yCAAqD;AACrD,+CAAoD;AACpD,yCAAqF;AAErF,6CAA4F;AAAnF,oGAAA,OAAO,OAAa;AAAE,wGAAA,aAAa,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAIhE,4EAA4E;AACrE,KAAK,UAAU,YAAY,CAAC,UAAkB;IACnD,gBAAgB,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,IAAA,0BAAmB,EAAC,UAAU,CAAC,CAAC;IAC/C,yEAAyE;IACzE,MAAM,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,eAAS,CAAC,UAAU,CAAC,IAAI,eAAS,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,2BAA2B,MAAM,CAAC,IAAI,CAAC,eAAS,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,IAAI,iBAAO,CAAC,UAAU,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IACtB,IAAA,sBAAW,GAAE,CAAC;IACd,IAAA,oBAAS,GAAE,CAAC;IACZ,IAAA,oBAAS,EAAC,OAAO,CAAC,CAAC;IACnB,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,IAAA,kBAAO,GAAE,CAAC;AACZ,CAAC"} \ No newline at end of file +{"version":3,"file":"emutarget.js","sourceRoot":"","sources":["../../../src/tools/emutarget.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,8EAA8E;AAC9E,iDAAiD;;;AAajD,oCAiBC;AAQD,8DAEC;AAWD,8CAOC;AAOD,4CAQC;AAvED,+CAA4C;AAC5C,uCAA0C;AAC1C,yCAAqD;AACrD,+CAAoD;AACpD,yCAAmG;AAEnG,6CAA4F;AAAnF,oGAAA,OAAO,OAAa;AAAE,wGAAA,aAAa,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAIhE,4EAA4E;AACrE,KAAK,UAAU,YAAY,CAAC,UAAkB;IACnD,gBAAgB,EAAE,CAAC;IACnB,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAA,uBAAY,GAAE,CAAC;IACf,MAAM,MAAM,GAAG,IAAA,0BAAmB,EAAC,UAAU,CAAC,CAAC;IAC/C,sEAAsE;IACtE,iEAAiE;IACjE,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IACzC,yEAAyE;IACzE,MAAM,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,aAAa,GAAG,eAAS,CAAC,UAAU,CAAC,IAAI,eAAS,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,2BAA2B,MAAM,CAAC,IAAI,CAAC,eAAS,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,IAAI,iBAAO,CAAC,UAAU,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,SAAgB,yBAAyB;IACvC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,IAAmB;IACnD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IACtB,IAAA,sBAAW,GAAE,CAAC;IACd,IAAA,oBAAS,GAAE,CAAC;IACZ,IAAA,oBAAS,EAAC,OAAO,CAAC,CAAC;IACnB,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,IAAA,kBAAO,GAAE,CAAC;AACZ,CAAC"} \ No newline at end of file diff --git a/gen/src/tools/nodemock.js b/gen/src/tools/nodemock.js index 6c37636f..31711f84 100644 --- a/gen/src/tools/nodemock.js +++ b/gen/src/tools/nodemock.js @@ -8,6 +8,7 @@ exports.mockGlobals = mockGlobals; exports.mockAudio = mockAudio; exports.mockFetch = mockFetch; exports.mockScripts = mockScripts; +exports.resetScripts = resetScripts; exports.mockDOM = mockDOM; const util_1 = require("../common/util"); const fs_1 = __importDefault(require("fs")); @@ -44,18 +45,35 @@ class NullAudio { } exports.NullAudio = NullAudio; function mockAudio() { + // The real TSS PsgDeviceChannel is a small register machine; platforms + // (astrocade, vectrex) read/write its registers and set its clock, so the + // stand-in has to keep those too, not just absorb the calls. class NullPsgDeviceChannel { + constructor() { + this.clock = 0; + this.register = new Int32Array(16); + } setMode() { } setDevice() { } + setClock(clock) { this.clock = clock; } generate() { } setBufferLength() { } setSampleRate() { } getBuffer() { return []; } writeRegister() { } writeRegisterSN() { } - writeRegisterAY() { } - readRegister() { return 0; } + writeRegisterAY(addr, val) { if (addr >= 0 && addr < 16) + this.register[addr] = val & 0xff; } + readRegister(addr) { return this.register[addr & 0xf]; } } + // the constants the audio wrappers reference; values match tss/js/tss/PsgDeviceChannel.js + NullPsgDeviceChannel.MODE_UNSIGNED = 0; + NullPsgDeviceChannel.MODE_SIGNED = 1; + NullPsgDeviceChannel.DEVICE_PSG = 0; + NullPsgDeviceChannel.DEVICE_SSG = 1; + NullPsgDeviceChannel.DEVICE_AY_3_8910 = 0; + NullPsgDeviceChannel.DEVICE_YM_2149 = 1; + NullPsgDeviceChannel.DEVICE_SN76489 = 2; class NullMasterChannel { addChannel() { } } @@ -74,8 +92,10 @@ function mockFetch(rootDir = process.cwd()) { * Make loadScript() evaluate files from `rootDir` in the global scope, the * way a