From 5ee3d7acc1a09f4dc36df50bf9f318997c74dd5d Mon Sep 17 00:00:00 2001 From: ppeccin Date: Fri, 3 Jan 2020 23:27:06 -0300 Subject: [PATCH] Release v6.0 --- README.md | 125 +-- doc/README.md | 125 +-- doc/alpha/README.md | 342 -------- gruntfile.js | 2 +- package-lock.json | 2 +- package.json | 2 +- release/stable/5.3/cbios/embedded/wmsx.js | 440 ---------- .../stable/5.3/cbios/standalone/index.html | 690 ---------------- release/stable/5.3/embedded/wmsx.js | 464 ----------- release/stable/5.3/standalone/index.html | 714 ---------------- release/stable/5.3/symbos/-FDWMSX.DRV | Bin 152 -> 0 bytes .../stable/5.3/symbos/SymbOSWebMSX.dsk.zip | Bin 1680164 -> 0 bytes .../5.3/symbos/SymbOSWebMSXinAction.wst.zip | Bin 2040872 -> 0 bytes .../{5.3 => 6.0}/cbios/embedded/index.html | 0 release/stable/6.0/cbios/embedded/wmsx.js | 437 ++++++++++ .../cbios}/standalone/cache.manifest | 2 +- .../cbios/standalone/images/logo-icon192.png | Bin .../cbios/standalone/images/logo-icon512.png | Bin .../stable/6.0/cbios/standalone/index.html | 698 ++++++++++++++++ .../cbios/standalone/manifest.webapp | 0 .../stable/{5.3 => 6.0}/embedded/index.html | 0 release/stable/6.0/embedded/wmsx.js | 521 ++++++++++++ .../cbios => 6.0}/standalone/cache.manifest | 2 +- .../standalone/images/logo-icon192.png | Bin .../standalone/images/logo-icon512.png | Bin release/stable/6.0/standalone/index.html | 782 ++++++++++++++++++ .../{5.3 => 6.0}/standalone/manifest.webapp | 0 release/stable/6.0/symbos/-FDWMSX.DRV | Bin 0 -> 152 bytes .../stable/{5.3 => 6.0}/symbos/-HDWMSX.DRV | Bin .../stable/6.0/symbos/SymbOSWebMSX.dsk.zip | Bin 0 -> 1731733 bytes .../6.0/symbos/SymbOSWebMSXinAction.wst.zip | Bin 0 -> 1989171 bytes src/main/Launcher.js | 2 +- src/main/WMSX.js | 2 +- src/main/WMSXCBios.js | 2 +- src/runtime/standalone/cache.manifest | 2 +- src/runtime/standalone/index.base.html | 2 +- src/runtime/standalone/index.part2.html | 2 +- 37 files changed, 2589 insertions(+), 2771 deletions(-) delete mode 100644 doc/alpha/README.md delete mode 100644 release/stable/5.3/cbios/embedded/wmsx.js delete mode 100644 release/stable/5.3/cbios/standalone/index.html delete mode 100644 release/stable/5.3/embedded/wmsx.js delete mode 100644 release/stable/5.3/standalone/index.html delete mode 100644 release/stable/5.3/symbos/-FDWMSX.DRV delete mode 100644 release/stable/5.3/symbos/SymbOSWebMSX.dsk.zip delete mode 100644 release/stable/5.3/symbos/SymbOSWebMSXinAction.wst.zip rename release/stable/{5.3 => 6.0}/cbios/embedded/index.html (100%) create mode 100644 release/stable/6.0/cbios/embedded/wmsx.js rename release/stable/{5.3 => 6.0/cbios}/standalone/cache.manifest (87%) rename release/stable/{5.3 => 6.0}/cbios/standalone/images/logo-icon192.png (100%) rename release/stable/{5.3 => 6.0}/cbios/standalone/images/logo-icon512.png (100%) create mode 100644 release/stable/6.0/cbios/standalone/index.html rename release/stable/{5.3 => 6.0}/cbios/standalone/manifest.webapp (100%) rename release/stable/{5.3 => 6.0}/embedded/index.html (100%) create mode 100644 release/stable/6.0/embedded/wmsx.js rename release/stable/{5.3/cbios => 6.0}/standalone/cache.manifest (87%) rename release/stable/{5.3 => 6.0}/standalone/images/logo-icon192.png (100%) rename release/stable/{5.3 => 6.0}/standalone/images/logo-icon512.png (100%) create mode 100644 release/stable/6.0/standalone/index.html rename release/stable/{5.3 => 6.0}/standalone/manifest.webapp (100%) create mode 100644 release/stable/6.0/symbos/-FDWMSX.DRV rename release/stable/{5.3 => 6.0}/symbos/-HDWMSX.DRV (100%) create mode 100644 release/stable/6.0/symbos/SymbOSWebMSX.dsk.zip create mode 100644 release/stable/6.0/symbos/SymbOSWebMSXinAction.wst.zip diff --git a/README.md b/README.md index bd937573..31ae2ab8 100644 --- a/README.md +++ b/README.md @@ -13,33 +13,21 @@ Refer to [**/release**](https://github.com/ppeccin/WebMSX/tree/master/release) f MSX and the MSX logo are shown here as a tribute. All trademarks are property of their respective owners. -### New in Release 5.4 - -- CapsLock and Kana leds on screen -- Configurable Code key label and led for custom machines -- Option to sync time with host when loading States -- Option to flip Touch Controls horizontally - -#### New in Release 5.3 - -- Additional 5.37MHz (1.5x) CPU Turbo speed -- Light version with C-BIOS Machines -- CRT Scanlines simulation -- MegaRAM Extension (256KB - 2MB) -- Left-side Touch Control buttons -- Full Windowed mode (Shift + Alt + Enter) -- Screen Aspect (Pixel Aspect Ratio) changed to 1.14 -- Improved Settings with increase/decrease values -- Hotkeys + Shift modifier: decrease values -- New External Config File. Easier setup of custom Machines and Extensions -- New Environment concept. Isolated savestates, configs, preferences -- Mouse pointer auto-lock in Fullscreen modes -- Bugfixes: SD Snatcher Melancholia and overscan games now work +### New in Release 6.0 + +- 3 MSX turbo R machines (Japanese, European, American) +- V9990 video, Superimposed and Mixed modes, or Dual Screens +- Improved CPU Turbo emulation and control, Z80/R800 speed settings +- Improved Kanji support, with MSX-JE input editor and dictionary +- 6 MSX1 Palettes. Color, B&W, Green and Amber CRTs with scanlines +- New AZERTY key mapping. Simplified hotkeys ### Features -- 9 Generic machines (MSX1, MSX2, MSX2+). NTSC 60Hz or PAL 50Hz +- 12 Generic machines (MSX1, MSX2, MSX2+, MSX tR). NTSC 60Hz or PAL 50Hz +- V9918, V9938, V9958 and V9990 video, Superimposing, Mixed, Dual Screen modes - PSG, SCC, SCC-I, FM-PAC, PCM, MSX-MUSIC and OPL4-Wave sound +- Kanji support, with MSX-JE Japanese text input editor and dictionary - Cross platform HTML5/JS. Runs in any Browser, tested in Chrome/Firefox/Safari - Show MSX software running on any webpage, or with a link to the WebMSX page - Finally enjoy MSX games on your iPhone/iPad! Installs as a WebApp, runs offline @@ -59,8 +47,21 @@ All trademarks are property of their respective owners. - PSG/SCC/OPLL Stereo Sound simulation, configurable - Copy & Paste text, Screen Capture, Debug modes - CRT Scanlines, resizable Screen, Full Screen and Full Windowed modes +- 6 MSX1 Palettes. Color, B&W, Green and Amber phosphor simulation - Javascript API for loading media and machine control +## About the MSX turbo R machines + +We still have some limitations on the tR and R800 emulation in this release. +There is no PCM and MIDI support yet, and R800 CPU advanced timing may not be completely accurate. +Also, R800 emulation hits very hard on the emulator performance, so it may not run smoothly on all devices, specially smartphones. +There are options to tweak the R800 timing and clock speed from 0.5x to 2.0x. + +## About the V9990 Video chip + +The current V9990 implementation also has some limitations on the Command Termination and Horizontal INTs. +But none of the available/tested software seemed to rely on the incomplete functions. + ## About the light C-BIOS version The light version with only C-BIOS ROMs can be found at: [**https://webmsx.org/cbios**](https://webmsx.org/cbios) @@ -80,10 +81,10 @@ Another way of sharing your Session to users is sending them a link that will op In the NetPlay! dialog, once you are Hosting a Session, there will be a link button on the upper right, that will generate the link and copy it to your clipboard. **IMPORTANT:** NetPlay! performance is completely dependent on the network quality. The lower the network latency between users, the better. Higher bandwidths with higher latencies won't help much. -It uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-) +The Client may need some time to find and connect do the Server. It uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-) To make all this work seamlessly, WebMSX uses modern Web technologies including WebRTC, which are supported by all major browsers and platforms. -Unfortunately, those technologies are still not available on Apple iOS, so NetPlay! will not work on iOS devices. Sorry but there is not much we can do about it, until Apple feels it should allow its customers to access those technologies. +Unfortunately, those technologies may still not be available on Apple iOS, so NetPlay! may not work on those devices. ## About the Nextor Hard Disk Drive @@ -147,23 +148,26 @@ The ROM Format is auto-detected. To force a format, set the `CARTRIDGE1_FORMAT` You can also put the format specification in the ROM file name, between brackets. Example: `Game [KonamiSCC].rom` #### Valid Formats -`Normal`, `Mirrored`, `NotMirrored`, `ASCII8`, `ASCII16`, `Konami`, `KonamiSCC`, `KonamiSCCI`, `ASCII8SRAM2`, `ASCII8SRAM8`, `ASCII16SRAM2`, `ASCII16SRAM8`, `MegaRAM`, `GameMaster2`, `KoeiSRAM8`, `KoeiSRAM32`, `Wizardry`, `FMPAC`, `FMPAK`, `MSXDOS2`, `Majutsushi`, `Synthesizer`, `RType`, `CrossBlaim`, `Manbow2`, `HarryFox`, `AlQuran`, `AlQuranDecoded`, `Halnote`, `SuperSwangi`, `SuperLodeRunner`, `Dooly`, `Zemina80in1`, `Zemina90in1`, `Zemina126in1`, `MSXWrite` +`Normal`, `Mirrored`, `NotMirrored`, `ASCII8`, `ASCII16`, `Konami`, `KonamiSCC`, `KonamiSCCI`, `ASCII8SRAM2`, `ASCII8SRAM8`, `ASCII16SRAM2`, `ASCII16SRAM8`, `MegaRAM`, `GameMaster2`, `KoeiSRAM8`, `KoeiSRAM32`, `Wizardry`, `FMPAC`, `FMPAK`, `MSXDOS2`, `Majutsushi`, `Synthesizer`, `RType`, `CrossBlaim`, `Manbow2`, `HarryFox`, `AlQuran`, `AlQuranDecoded`, `Halnote`, `SuperSwangi`, `SuperLodeRunner`, `Dooly`, `Zemina80in1`, `Zemina90in1`, `Zemina126in1`, `MSXWrite`, `KonamiUltimateCollection` ## Choosing a Machine -There are 9 different generic machines. The default machine is the MSX2+, and the emulator will try to auto-detect your region. You can ask for a specific machine by setting the `MACHINE` parameter (or `M` for short) with the respective Machine ID: +There are 12 different generic machines. The default machine is the MSX2+, and the emulator will try to auto-detect your region. You can ask for a specific machine by setting the `MACHINE` parameter (or `M` for short) with the respective Machine ID: | Machine | Machine ID | Specific Machine | Machine ID | --- | :---: | --- | :---: -| MSX2+ Auto-detection | `MSX2P` | MSX2+ American (NTSC 60Hz) | `MSX2PA` -| | | MSX2+ European (PAL 50Hz) | `MSX2PE` -| | | MSX2+ Japanese (NTSC 60Hz) | `MSX2PJ` -| MSX2 Auto-detection | `MSX2` | MSX2 American (NTSC 60Hz) | `MSX2A` -| | | MSX2 European (PAL 50Hz) | `MSX2E` -| | | MSX2 Japanese (NTSC 60Hz) | `MSX2J` -| MSX1 Auto-detection | `MSX1` | MSX1 American (NTSC 60Hz) | `MSX1A` -| | | MSX1 European (PAL 50Hz) | `MSX1E` -| | | MSX1 Japanese (NTSC 60Hz) | `MSX1J` +| MSX tR Auto-detection | `MSXTR` | MSX tR American (NTSC 60Hz) | `MSXTRA` +| | | MSX tR European (PAL 50Hz) | `MSXTRE` +| | | MSX tR Japanese (NTSC 60Hz) | `MSXTRJ` +| MSX2+ Auto-detection | `MSX2P` | MSX2+ American (NTSC 60Hz) | `MSX2PA` +| | | MSX2+ European (PAL 50Hz) | `MSX2PE` +| | | MSX2+ Japanese (NTSC 60Hz) | `MSX2PJ` +| MSX2 Auto-detection | `MSX2` | MSX2 American (NTSC 60Hz) | `MSX2A` +| | | MSX2 European (PAL 50Hz) | `MSX2E` +| | | MSX2 Japanese (NTSC 60Hz) | `MSX2J` +| MSX1 Auto-detection | `MSX1` | MSX1 American (NTSC 60Hz) | `MSX1A` +| | | MSX1 European (PAL 50Hz) | `MSX1E` +| | | MSX1 Japanese (NTSC 60Hz) | `MSX1J` It's possible to define additional Custom Machines, by loading an external Configuration File (`CONFIG_URL` parameter). Contact the author for details! @@ -173,17 +177,18 @@ The emulator supports several Extensions, or optional components that can be tur | Extension | Default in Machine | Presets | --- | :---: | --- -| Hard Disk interface (Nextor) | -- | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` -| Floppy Disk interface with 2 drives | ALL | `DISK`, `NODISK` -| Standard RAM Mapper, adjustable size | MSX2, MSX2+ | `RAM128`..`RAM4096`, `RAMNORMAL` -| Support for Kanji Characters | Japanese MSX2, MSX2+ | `KANJI`, `NOKANJI` -| MSX-MUSIC sound with BASIC extension | MSX2, MSX2+ | `MSXMUSIC`, `NOMSXMUSIC` -| OPL4 Wave sound | -- | `OPL4` -| Double PSG | -- | `DOUBLEPSG` -| SCC-I Sound Cartridge with 128K RAM | -- | `SCCI`, `SCCI2` (in Slot 1/2) -| SCC Sound Cartridge | -- | `SCC`, `SCC2` (in Slot 1/2) -| PAC SRAM Cartridge | -- | `PAC`, `PAC2` (in Slot 1/2) -| MegaRAM Cartridge | -- | `MEGARAM`, `MEGARAM2` (in Slot 1/2) +| Hard Disk interface (Nextor) | -- | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` +| Floppy Disk interface with 2 drives | All | `DISK`, `NODISK` +| Standard RAM Mapper, adjustable size | MSX2 or higher | `RAM128`..`RAM4096`, `RAMNORMAL` +| Kanji Characters with MSX-JE | Japanese MSX2 or higher | `KANJI`, `NOKANJI` +| V9990 Video | -- | `V9990` +| MSX-MUSIC sound with BASIC extension | MSX2 or higher | `MSXMUSIC`, `NOMSXMUSIC` +| OPL4 Wave sound | -- | `OPL4` +| Double PSG | -- | `DOUBLEPSG` +| SCC-I Sound Cartridge with 128K RAM | -- | `SCCI`, `SCCI2` (in Slot 1/2) +| SCC Sound Cartridge | -- | `SCC`, `SCC2` (in Slot 1/2) +| PAC SRAM Cartridge | -- | `PAC`, `PAC2` (in Slot 1/2) +| MegaRAM Cartridge | -- | `MEGARAM`, `MEGARAM2` (in Slot 1/2) ## Loading BASIC files and Typing commands after launch @@ -227,11 +232,10 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | Preset | Description | --- | --- -| `BOOSTED` | Boosted Machine with HardDisk and CPU/VDP 3x Turbo -| `ALTSLOTCONFIG` | Alternate Slot Configuration. RAM at Primary Slot 3 | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` | Hard Drive Extension | `DISK`, `DISKA`, `NODISK` | Floppy Drives Extension | `RAMMAPPER`, `RAM128` - `RAM4096`, `RAMNORMAL` | RAM Mapper Extension & sizes +| `V9990` | V9990 Video Extension | `KANJI`, `NOKANJI` | Kanji ROM Extension | `MSXMUSIC`, `NOMSXMUSIC`, `DOUBLEPSG`, `OPL4` | Sound Devices Extensions | `SCCI`, `SCCI2`, `SCC`, `SCC2` | SCC+/SCC Cartridge (in Slot 1/2) @@ -242,10 +246,12 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `PSGSTEREO`, `PSGSTEREO2` | PSG Stereo simulation (default/variation) | `SCCSTEREO`, `SCCSTEREO2` | SCC Stereo simulation (default/variation) | `OPLLSTEREO`, `OPLLSTEREO2` | OPLL Stereo simulation (default/variation) +| `ALTSLOTCONFIG` | Alternate Slot Configuration. RAM at Primary Slot 3 +| `BOOSTED` | Boosted Machine with HardDisk and CPU/VDP 3x Turbo ## Parameters Reference -| Parameter | Default | Description +| Parameter (+ new) | Default | Description | --- | :---: | --- | `ENVIRONMENT` | 0 | Emulator Environment. Isolate Savestates & Preferences. 1..99 | `CONFIG_URL` | -- | Configuration file to merge. Processed before URL parameters @@ -266,8 +272,6 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `AUTODETECT_URL` | -- | URL of file to load with media auto-detection | `SLOTXY_URL` | -- | URL of ROM file to load in Slot X-Y (X,Y are numbers). Omit Y for primary slot | `SLOTXY_FORMAT` | -- | ROM Format for Slot X-Y loaded above -| `VDP_TYPE` | -- | VDP Chip. -1: auto; 1: V9918; 2: V9938; 3: V9958 -| `RTC_ACTIVE` | -- | RTC Chip. -1: auto; 0: not present; 1: present | `NETPLAY_JOIN` | -- | Join NetPlay! Session automatically | `NETPLAY_NICK` | -- | NetPlay! Nickname, optional | `BASIC_RUN` | -- | Run the specified file name @@ -280,6 +284,9 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `BOOT_KEYS_ONCE` | -- | Same as above, but only on first boot (do not use both) | `BOOT_KEYS_FRAMES` | -1 | Number of frames for Boot Keys. -1: auto; > 0: frames | `FAST_BOOT` | 0 | Number of frames for Fast Boot. 0: off; 1: auto (same as Boot Keys frames); > 1: number of frames +| `VDP_TYPE` | -1 | VDP Chip. -1: auto; 1: V9918; 2: V9938; 3: V9958 +| **+** `VDP_PALETTE` | 2 | MSX1 Palette. 0: WebMSX Original; 1: V9918; 2: V9928; 3: V9938; 4: Toshiba; 5: Fujitsu FM-X +| `RTC_ACTIVE` | -1 | RTC Chip. -1: auto; 0: not present; 1: present | `RAMMAPPER_SIZE` | 512 | RAM Mapper size when active. 64, 128, 256, 512, 1024, 2048, 4096, in KB | `RAMNORMAL_SIZE` | 64 | Normal RAM size when active. 16..64, in KB | `VOL` | 1.0 | Master Volume factor @@ -299,22 +306,30 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `SCREEN_CONTROL_BAR` | 1 | Screen Bottom Bar controls. 0: on hover; 1: always | `SCREEN_FORCE_HOST_NATIVE_FPS` | -1 | Force host native video frequency. -1: auto-detect. Don't change! :-) | `SCREEN_VSYNC_MODE` | -2 | VSync mode. -2: user set (default auto); -1: disabled; 0: off; 1: auto (on when available) +| **+** `SCREEN_VIDEO_OUT` | -1 | Video output. -1: auto; 0: Internal VDP; 1: External V9990; 2: Superimposed; 3: Mixed; 4: Dual (main: Internal); 5: Dual (main: V9990) +| **+** `SCREEN_COLORS` | 0 | CRT color type. 0: Color; 1: B&W; 2: Green Phosphor; 3: Amber Phosphor | `AUDIO_MONITOR_BUFFER_BASE` | -3 | Audio buffer base size. -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay | `AUDIO_MONITOR_BUFFER_SIZE` | -1 | Audio buffer size. -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-) | `AUDIO_SIGNAL_BUFFER_RATIO` | 2 | Internal Audio Signal buffer based on Monitor buffer | `AUDIO_SIGNAL_ADD_FRAMES` | 3 | Additional frames in internal Audio Signal buffer based on Monitor buffer -| `Z80_CLOCK_MODE` | 0 | Z80 CPU Clock. 0: auto (soft-turbo possible); (0..8]: CPU clock multiplier; +| **+** `R800_CLOCK_MODE` | 0 | R800 CPU Clock. 0: auto; (0..2]: R800 CPU clock multiplier +| **+** `R800_TIMING` | 1 | Precise R800/S1990 timings. 0: off, 1: on; 2: VDP waits only. Turn off for faster and lighter emulation +| `Z80_CLOCK_MODE` | 0 | Z80 CPU Clock. 0: auto (soft-turbo possible); (0..8]: CPU clock multiplier | `VDP_CLOCK_MODE` | 0 | VDP Command Engine Clock. 0: auto (soft-turbo possible); (0..8]: Engine clock multiplier; 9: instantaneous | `Z80_SOFT_TURBO_MULTI` | 1.5 | Z80 CPU clock multiplier when in AUTO mode and activated by software. 1..8: multi -| `VDP_SOFT_TURBO_MULTI` | 4 | VDP Command Engine clock multiplier when in AUTO mode and activated by software. 1..9: multi +| `VDP_SOFT_TURBO_MULTI` | 1 | VDP Command Engine clock multiplier when in AUTO mode and activated by software. 1..9: multi +| **+** `CPU_SOFT_TURBO_AUTO_ON` | 0 | Automatically activate the CPU Soft Turbo when supported by machine. 0: off, 1: on +| **+** `CPU_FAKE_TR_TURBO` | -1 | Simulated tR CHGCPU Turbo activation. -1: auto; 0: off; 1: on. Auto ON for 2+, never for tR +| **+** `CPU_PANA_TURBO` | -1 | Simulated Panasonic Turbo activation. -1: auto; 0: off; 1: on. Auto ON for 2+, never for tR | `JOYSTICKS_MODE` | 0 | Joysticks (on Host) controls. -1: disabled; 0: auto; 1: auto (swapped) | `JOYKEYS_MODE` | -1 | JoyKeys controls. -1: disabled; 0: enabled at port 1; 1: enabled at port 2; 2: enabled at both ports; 3: enabled at both ports (swapped) | `MOUSE_MODE` | -1 | Mouse controls. -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 | `TOUCH_MODE` | 0 | Touch controls. -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 +| **+** `MOBILE_MODE` | 0 | Forced Mobile interface mode. -1: disabled; 0: auto; 1: enabled | `DEBUG_MODE` | 0 | Debug Modes. 0: off; 1..7: mode. Don't change! :-) | `SPRITES_DEBUG_MODE` | 0 | Sprites Debug Modes. 0: off; 1: unlimited; 2: no collisions; 3: both. May cause problems :-) | `KEYBOARD_JAPAN_LAYOUT` | 1 | Japanese keyboard layout. 0: ANSI, 1: JIS -| `ROM_MAX_HASH_SIZE_KB` | 3072 | Maximum ROM size for Hash calculation +| `ROM_MAX_HASH_SIZE_KB` | 5120 | Maximum ROM size for Hash calculation | `HARDDISK_MIN_SIZE_KB` | 720 | Minimum file size to be accepted as HardDisk image (besides all valid Floppy formats) | `MEGARAM_SIZE` | 2048 | MegaRAM size in KB | `DISK_ROM_START_PAGE` | 0 | Change starting page for ROMs > 16KB when format is DiskPatch. 0..1 diff --git a/doc/README.md b/doc/README.md index bd937573..31ae2ab8 100644 --- a/doc/README.md +++ b/doc/README.md @@ -13,33 +13,21 @@ Refer to [**/release**](https://github.com/ppeccin/WebMSX/tree/master/release) f MSX and the MSX logo are shown here as a tribute. All trademarks are property of their respective owners. -### New in Release 5.4 - -- CapsLock and Kana leds on screen -- Configurable Code key label and led for custom machines -- Option to sync time with host when loading States -- Option to flip Touch Controls horizontally - -#### New in Release 5.3 - -- Additional 5.37MHz (1.5x) CPU Turbo speed -- Light version with C-BIOS Machines -- CRT Scanlines simulation -- MegaRAM Extension (256KB - 2MB) -- Left-side Touch Control buttons -- Full Windowed mode (Shift + Alt + Enter) -- Screen Aspect (Pixel Aspect Ratio) changed to 1.14 -- Improved Settings with increase/decrease values -- Hotkeys + Shift modifier: decrease values -- New External Config File. Easier setup of custom Machines and Extensions -- New Environment concept. Isolated savestates, configs, preferences -- Mouse pointer auto-lock in Fullscreen modes -- Bugfixes: SD Snatcher Melancholia and overscan games now work +### New in Release 6.0 + +- 3 MSX turbo R machines (Japanese, European, American) +- V9990 video, Superimposed and Mixed modes, or Dual Screens +- Improved CPU Turbo emulation and control, Z80/R800 speed settings +- Improved Kanji support, with MSX-JE input editor and dictionary +- 6 MSX1 Palettes. Color, B&W, Green and Amber CRTs with scanlines +- New AZERTY key mapping. Simplified hotkeys ### Features -- 9 Generic machines (MSX1, MSX2, MSX2+). NTSC 60Hz or PAL 50Hz +- 12 Generic machines (MSX1, MSX2, MSX2+, MSX tR). NTSC 60Hz or PAL 50Hz +- V9918, V9938, V9958 and V9990 video, Superimposing, Mixed, Dual Screen modes - PSG, SCC, SCC-I, FM-PAC, PCM, MSX-MUSIC and OPL4-Wave sound +- Kanji support, with MSX-JE Japanese text input editor and dictionary - Cross platform HTML5/JS. Runs in any Browser, tested in Chrome/Firefox/Safari - Show MSX software running on any webpage, or with a link to the WebMSX page - Finally enjoy MSX games on your iPhone/iPad! Installs as a WebApp, runs offline @@ -59,8 +47,21 @@ All trademarks are property of their respective owners. - PSG/SCC/OPLL Stereo Sound simulation, configurable - Copy & Paste text, Screen Capture, Debug modes - CRT Scanlines, resizable Screen, Full Screen and Full Windowed modes +- 6 MSX1 Palettes. Color, B&W, Green and Amber phosphor simulation - Javascript API for loading media and machine control +## About the MSX turbo R machines + +We still have some limitations on the tR and R800 emulation in this release. +There is no PCM and MIDI support yet, and R800 CPU advanced timing may not be completely accurate. +Also, R800 emulation hits very hard on the emulator performance, so it may not run smoothly on all devices, specially smartphones. +There are options to tweak the R800 timing and clock speed from 0.5x to 2.0x. + +## About the V9990 Video chip + +The current V9990 implementation also has some limitations on the Command Termination and Horizontal INTs. +But none of the available/tested software seemed to rely on the incomplete functions. + ## About the light C-BIOS version The light version with only C-BIOS ROMs can be found at: [**https://webmsx.org/cbios**](https://webmsx.org/cbios) @@ -80,10 +81,10 @@ Another way of sharing your Session to users is sending them a link that will op In the NetPlay! dialog, once you are Hosting a Session, there will be a link button on the upper right, that will generate the link and copy it to your clipboard. **IMPORTANT:** NetPlay! performance is completely dependent on the network quality. The lower the network latency between users, the better. Higher bandwidths with higher latencies won't help much. -It uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-) +The Client may need some time to find and connect do the Server. It uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-) To make all this work seamlessly, WebMSX uses modern Web technologies including WebRTC, which are supported by all major browsers and platforms. -Unfortunately, those technologies are still not available on Apple iOS, so NetPlay! will not work on iOS devices. Sorry but there is not much we can do about it, until Apple feels it should allow its customers to access those technologies. +Unfortunately, those technologies may still not be available on Apple iOS, so NetPlay! may not work on those devices. ## About the Nextor Hard Disk Drive @@ -147,23 +148,26 @@ The ROM Format is auto-detected. To force a format, set the `CARTRIDGE1_FORMAT` You can also put the format specification in the ROM file name, between brackets. Example: `Game [KonamiSCC].rom` #### Valid Formats -`Normal`, `Mirrored`, `NotMirrored`, `ASCII8`, `ASCII16`, `Konami`, `KonamiSCC`, `KonamiSCCI`, `ASCII8SRAM2`, `ASCII8SRAM8`, `ASCII16SRAM2`, `ASCII16SRAM8`, `MegaRAM`, `GameMaster2`, `KoeiSRAM8`, `KoeiSRAM32`, `Wizardry`, `FMPAC`, `FMPAK`, `MSXDOS2`, `Majutsushi`, `Synthesizer`, `RType`, `CrossBlaim`, `Manbow2`, `HarryFox`, `AlQuran`, `AlQuranDecoded`, `Halnote`, `SuperSwangi`, `SuperLodeRunner`, `Dooly`, `Zemina80in1`, `Zemina90in1`, `Zemina126in1`, `MSXWrite` +`Normal`, `Mirrored`, `NotMirrored`, `ASCII8`, `ASCII16`, `Konami`, `KonamiSCC`, `KonamiSCCI`, `ASCII8SRAM2`, `ASCII8SRAM8`, `ASCII16SRAM2`, `ASCII16SRAM8`, `MegaRAM`, `GameMaster2`, `KoeiSRAM8`, `KoeiSRAM32`, `Wizardry`, `FMPAC`, `FMPAK`, `MSXDOS2`, `Majutsushi`, `Synthesizer`, `RType`, `CrossBlaim`, `Manbow2`, `HarryFox`, `AlQuran`, `AlQuranDecoded`, `Halnote`, `SuperSwangi`, `SuperLodeRunner`, `Dooly`, `Zemina80in1`, `Zemina90in1`, `Zemina126in1`, `MSXWrite`, `KonamiUltimateCollection` ## Choosing a Machine -There are 9 different generic machines. The default machine is the MSX2+, and the emulator will try to auto-detect your region. You can ask for a specific machine by setting the `MACHINE` parameter (or `M` for short) with the respective Machine ID: +There are 12 different generic machines. The default machine is the MSX2+, and the emulator will try to auto-detect your region. You can ask for a specific machine by setting the `MACHINE` parameter (or `M` for short) with the respective Machine ID: | Machine | Machine ID | Specific Machine | Machine ID | --- | :---: | --- | :---: -| MSX2+ Auto-detection | `MSX2P` | MSX2+ American (NTSC 60Hz) | `MSX2PA` -| | | MSX2+ European (PAL 50Hz) | `MSX2PE` -| | | MSX2+ Japanese (NTSC 60Hz) | `MSX2PJ` -| MSX2 Auto-detection | `MSX2` | MSX2 American (NTSC 60Hz) | `MSX2A` -| | | MSX2 European (PAL 50Hz) | `MSX2E` -| | | MSX2 Japanese (NTSC 60Hz) | `MSX2J` -| MSX1 Auto-detection | `MSX1` | MSX1 American (NTSC 60Hz) | `MSX1A` -| | | MSX1 European (PAL 50Hz) | `MSX1E` -| | | MSX1 Japanese (NTSC 60Hz) | `MSX1J` +| MSX tR Auto-detection | `MSXTR` | MSX tR American (NTSC 60Hz) | `MSXTRA` +| | | MSX tR European (PAL 50Hz) | `MSXTRE` +| | | MSX tR Japanese (NTSC 60Hz) | `MSXTRJ` +| MSX2+ Auto-detection | `MSX2P` | MSX2+ American (NTSC 60Hz) | `MSX2PA` +| | | MSX2+ European (PAL 50Hz) | `MSX2PE` +| | | MSX2+ Japanese (NTSC 60Hz) | `MSX2PJ` +| MSX2 Auto-detection | `MSX2` | MSX2 American (NTSC 60Hz) | `MSX2A` +| | | MSX2 European (PAL 50Hz) | `MSX2E` +| | | MSX2 Japanese (NTSC 60Hz) | `MSX2J` +| MSX1 Auto-detection | `MSX1` | MSX1 American (NTSC 60Hz) | `MSX1A` +| | | MSX1 European (PAL 50Hz) | `MSX1E` +| | | MSX1 Japanese (NTSC 60Hz) | `MSX1J` It's possible to define additional Custom Machines, by loading an external Configuration File (`CONFIG_URL` parameter). Contact the author for details! @@ -173,17 +177,18 @@ The emulator supports several Extensions, or optional components that can be tur | Extension | Default in Machine | Presets | --- | :---: | --- -| Hard Disk interface (Nextor) | -- | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` -| Floppy Disk interface with 2 drives | ALL | `DISK`, `NODISK` -| Standard RAM Mapper, adjustable size | MSX2, MSX2+ | `RAM128`..`RAM4096`, `RAMNORMAL` -| Support for Kanji Characters | Japanese MSX2, MSX2+ | `KANJI`, `NOKANJI` -| MSX-MUSIC sound with BASIC extension | MSX2, MSX2+ | `MSXMUSIC`, `NOMSXMUSIC` -| OPL4 Wave sound | -- | `OPL4` -| Double PSG | -- | `DOUBLEPSG` -| SCC-I Sound Cartridge with 128K RAM | -- | `SCCI`, `SCCI2` (in Slot 1/2) -| SCC Sound Cartridge | -- | `SCC`, `SCC2` (in Slot 1/2) -| PAC SRAM Cartridge | -- | `PAC`, `PAC2` (in Slot 1/2) -| MegaRAM Cartridge | -- | `MEGARAM`, `MEGARAM2` (in Slot 1/2) +| Hard Disk interface (Nextor) | -- | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` +| Floppy Disk interface with 2 drives | All | `DISK`, `NODISK` +| Standard RAM Mapper, adjustable size | MSX2 or higher | `RAM128`..`RAM4096`, `RAMNORMAL` +| Kanji Characters with MSX-JE | Japanese MSX2 or higher | `KANJI`, `NOKANJI` +| V9990 Video | -- | `V9990` +| MSX-MUSIC sound with BASIC extension | MSX2 or higher | `MSXMUSIC`, `NOMSXMUSIC` +| OPL4 Wave sound | -- | `OPL4` +| Double PSG | -- | `DOUBLEPSG` +| SCC-I Sound Cartridge with 128K RAM | -- | `SCCI`, `SCCI2` (in Slot 1/2) +| SCC Sound Cartridge | -- | `SCC`, `SCC2` (in Slot 1/2) +| PAC SRAM Cartridge | -- | `PAC`, `PAC2` (in Slot 1/2) +| MegaRAM Cartridge | -- | `MEGARAM`, `MEGARAM2` (in Slot 1/2) ## Loading BASIC files and Typing commands after launch @@ -227,11 +232,10 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | Preset | Description | --- | --- -| `BOOSTED` | Boosted Machine with HardDisk and CPU/VDP 3x Turbo -| `ALTSLOTCONFIG` | Alternate Slot Configuration. RAM at Primary Slot 3 | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` | Hard Drive Extension | `DISK`, `DISKA`, `NODISK` | Floppy Drives Extension | `RAMMAPPER`, `RAM128` - `RAM4096`, `RAMNORMAL` | RAM Mapper Extension & sizes +| `V9990` | V9990 Video Extension | `KANJI`, `NOKANJI` | Kanji ROM Extension | `MSXMUSIC`, `NOMSXMUSIC`, `DOUBLEPSG`, `OPL4` | Sound Devices Extensions | `SCCI`, `SCCI2`, `SCC`, `SCC2` | SCC+/SCC Cartridge (in Slot 1/2) @@ -242,10 +246,12 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `PSGSTEREO`, `PSGSTEREO2` | PSG Stereo simulation (default/variation) | `SCCSTEREO`, `SCCSTEREO2` | SCC Stereo simulation (default/variation) | `OPLLSTEREO`, `OPLLSTEREO2` | OPLL Stereo simulation (default/variation) +| `ALTSLOTCONFIG` | Alternate Slot Configuration. RAM at Primary Slot 3 +| `BOOSTED` | Boosted Machine with HardDisk and CPU/VDP 3x Turbo ## Parameters Reference -| Parameter | Default | Description +| Parameter (+ new) | Default | Description | --- | :---: | --- | `ENVIRONMENT` | 0 | Emulator Environment. Isolate Savestates & Preferences. 1..99 | `CONFIG_URL` | -- | Configuration file to merge. Processed before URL parameters @@ -266,8 +272,6 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `AUTODETECT_URL` | -- | URL of file to load with media auto-detection | `SLOTXY_URL` | -- | URL of ROM file to load in Slot X-Y (X,Y are numbers). Omit Y for primary slot | `SLOTXY_FORMAT` | -- | ROM Format for Slot X-Y loaded above -| `VDP_TYPE` | -- | VDP Chip. -1: auto; 1: V9918; 2: V9938; 3: V9958 -| `RTC_ACTIVE` | -- | RTC Chip. -1: auto; 0: not present; 1: present | `NETPLAY_JOIN` | -- | Join NetPlay! Session automatically | `NETPLAY_NICK` | -- | NetPlay! Nickname, optional | `BASIC_RUN` | -- | Run the specified file name @@ -280,6 +284,9 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `BOOT_KEYS_ONCE` | -- | Same as above, but only on first boot (do not use both) | `BOOT_KEYS_FRAMES` | -1 | Number of frames for Boot Keys. -1: auto; > 0: frames | `FAST_BOOT` | 0 | Number of frames for Fast Boot. 0: off; 1: auto (same as Boot Keys frames); > 1: number of frames +| `VDP_TYPE` | -1 | VDP Chip. -1: auto; 1: V9918; 2: V9938; 3: V9958 +| **+** `VDP_PALETTE` | 2 | MSX1 Palette. 0: WebMSX Original; 1: V9918; 2: V9928; 3: V9938; 4: Toshiba; 5: Fujitsu FM-X +| `RTC_ACTIVE` | -1 | RTC Chip. -1: auto; 0: not present; 1: present | `RAMMAPPER_SIZE` | 512 | RAM Mapper size when active. 64, 128, 256, 512, 1024, 2048, 4096, in KB | `RAMNORMAL_SIZE` | 64 | Normal RAM size when active. 16..64, in KB | `VOL` | 1.0 | Master Volume factor @@ -299,22 +306,30 @@ https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RU | `SCREEN_CONTROL_BAR` | 1 | Screen Bottom Bar controls. 0: on hover; 1: always | `SCREEN_FORCE_HOST_NATIVE_FPS` | -1 | Force host native video frequency. -1: auto-detect. Don't change! :-) | `SCREEN_VSYNC_MODE` | -2 | VSync mode. -2: user set (default auto); -1: disabled; 0: off; 1: auto (on when available) +| **+** `SCREEN_VIDEO_OUT` | -1 | Video output. -1: auto; 0: Internal VDP; 1: External V9990; 2: Superimposed; 3: Mixed; 4: Dual (main: Internal); 5: Dual (main: V9990) +| **+** `SCREEN_COLORS` | 0 | CRT color type. 0: Color; 1: B&W; 2: Green Phosphor; 3: Amber Phosphor | `AUDIO_MONITOR_BUFFER_BASE` | -3 | Audio buffer base size. -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay | `AUDIO_MONITOR_BUFFER_SIZE` | -1 | Audio buffer size. -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-) | `AUDIO_SIGNAL_BUFFER_RATIO` | 2 | Internal Audio Signal buffer based on Monitor buffer | `AUDIO_SIGNAL_ADD_FRAMES` | 3 | Additional frames in internal Audio Signal buffer based on Monitor buffer -| `Z80_CLOCK_MODE` | 0 | Z80 CPU Clock. 0: auto (soft-turbo possible); (0..8]: CPU clock multiplier; +| **+** `R800_CLOCK_MODE` | 0 | R800 CPU Clock. 0: auto; (0..2]: R800 CPU clock multiplier +| **+** `R800_TIMING` | 1 | Precise R800/S1990 timings. 0: off, 1: on; 2: VDP waits only. Turn off for faster and lighter emulation +| `Z80_CLOCK_MODE` | 0 | Z80 CPU Clock. 0: auto (soft-turbo possible); (0..8]: CPU clock multiplier | `VDP_CLOCK_MODE` | 0 | VDP Command Engine Clock. 0: auto (soft-turbo possible); (0..8]: Engine clock multiplier; 9: instantaneous | `Z80_SOFT_TURBO_MULTI` | 1.5 | Z80 CPU clock multiplier when in AUTO mode and activated by software. 1..8: multi -| `VDP_SOFT_TURBO_MULTI` | 4 | VDP Command Engine clock multiplier when in AUTO mode and activated by software. 1..9: multi +| `VDP_SOFT_TURBO_MULTI` | 1 | VDP Command Engine clock multiplier when in AUTO mode and activated by software. 1..9: multi +| **+** `CPU_SOFT_TURBO_AUTO_ON` | 0 | Automatically activate the CPU Soft Turbo when supported by machine. 0: off, 1: on +| **+** `CPU_FAKE_TR_TURBO` | -1 | Simulated tR CHGCPU Turbo activation. -1: auto; 0: off; 1: on. Auto ON for 2+, never for tR +| **+** `CPU_PANA_TURBO` | -1 | Simulated Panasonic Turbo activation. -1: auto; 0: off; 1: on. Auto ON for 2+, never for tR | `JOYSTICKS_MODE` | 0 | Joysticks (on Host) controls. -1: disabled; 0: auto; 1: auto (swapped) | `JOYKEYS_MODE` | -1 | JoyKeys controls. -1: disabled; 0: enabled at port 1; 1: enabled at port 2; 2: enabled at both ports; 3: enabled at both ports (swapped) | `MOUSE_MODE` | -1 | Mouse controls. -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 | `TOUCH_MODE` | 0 | Touch controls. -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 +| **+** `MOBILE_MODE` | 0 | Forced Mobile interface mode. -1: disabled; 0: auto; 1: enabled | `DEBUG_MODE` | 0 | Debug Modes. 0: off; 1..7: mode. Don't change! :-) | `SPRITES_DEBUG_MODE` | 0 | Sprites Debug Modes. 0: off; 1: unlimited; 2: no collisions; 3: both. May cause problems :-) | `KEYBOARD_JAPAN_LAYOUT` | 1 | Japanese keyboard layout. 0: ANSI, 1: JIS -| `ROM_MAX_HASH_SIZE_KB` | 3072 | Maximum ROM size for Hash calculation +| `ROM_MAX_HASH_SIZE_KB` | 5120 | Maximum ROM size for Hash calculation | `HARDDISK_MIN_SIZE_KB` | 720 | Minimum file size to be accepted as HardDisk image (besides all valid Floppy formats) | `MEGARAM_SIZE` | 2048 | MegaRAM size in KB | `DISK_ROM_START_PAGE` | 0 | Change starting page for ROMs > 16KB when format is DiskPatch. 0..1 diff --git a/doc/alpha/README.md b/doc/alpha/README.md deleted file mode 100644 index 29637c81..00000000 --- a/doc/alpha/README.md +++ /dev/null @@ -1,342 +0,0 @@ -# WebMSX - -**WebMSX**, or simply **WMSX**, is a new cross platform MSX emulator designed for the Web. - -WebMSX is great for displaying MSX software running inside webpages. You can launch the emulator and load ROMs, DSK and CAS images with a single link. -Join friends in multiplayer games or pair programming sessions with the new NetPlay! function. - -Please go to **https://webmsx.org** to enjoy it online! - -Refer to [**/doc**](https://github.com/ppeccin/WebMSX/tree/master/doc) for parameters reference and URL usage examples. -Refer to [**/release**](https://github.com/ppeccin/WebMSX/tree/master/release) for stable release files and deployment examples. - -MSX and the MSX logo are shown here as a tribute. -All trademarks are property of their respective owners. - -### New in Release 6.0 - -- 3 MSX turbo R machines (Japanese, European, American) -- V9990 video, Superimposed and Mixed modes, or Dual Screens -- Improved CPU Turbo emulation and control, Z80/R800 speed settings -- Improved Kanji support, with MSX-JE input editor and dictionary -- 6 MSX1 Palettes. Color, B&W, Green and Amber CRTs with scanlines -- Redesigned machine Leds. Simplified hotkeys. New AZERTY key map - -### Features - -- 12 Generic machines (MSX1, MSX2, MSX2+, MSX tR). NTSC 60Hz or PAL 50Hz -- V9918, V9938, V9958 and V9990 video, Superimposing, Mixed, Dual Screen modes -- PSG, SCC, SCC-I, FM-PAC, PCM, MSX-MUSIC and OPL4-Wave sound -- Kanji support, with MSX-JE Japanese text input editor and dictionary -- Cross platform HTML5/JS. Runs in any Browser, tested in Chrome/Firefox/Safari -- Show MSX software running on any webpage, or with a link to the WebMSX page -- Finally enjoy MSX games on your iPhone/iPad! Installs as a WebApp, runs offline -- Open files from local storage, iCloud, Google Drive, Dropbox, web links -- NetPlay! Connect several users on the same Virtual MSX machine over the internet -- CPU and VDP Turbo modes up to 8x, with manual or software activation -- Load Cartridge ROMs, HardDisk (Nextor), Disk and Tape images -- Powerful Drag & Drop system for loading media files -- Dynamically import files to any MSX disk drive, automatic image creation -- Savestates support. Export and share Savestate files and links -- Customizable Keyboard, Joysticks, Joykeys, and Mouse controllers -- Customizable Touch Controls/Virtual Keyboard for mobile devices (iOS, Android) -- Joykeys support. Emulates MSX Joysticks using Host Keyboard -- Virtual buttons. Maps Host Joystick buttons to MSX Keyboard keys -- Easily toggle extensions like SCC+, SCC, PAC, MegaRAM, Nextor, DoublePSG, etc. -- Adjustable speed, Pause and Frame-by-frame advance -- PSG/SCC/OPLL Stereo Sound simulation, configurable -- Copy & Paste text, Screen Capture, Debug modes -- CRT Scanlines, resizable Screen, Full Screen and Full Windowed modes -- 6 MSX1 Palettes. Color, B&W, Green and Amber phosphor simulation -- Javascript API for loading media and machine control - -## About the new MSX turbo R machines - -We still have some limitations on the tR and R800 emulation in this release. -There is no PCM and MIDI support yet, and R800 CPU advanced timing may not be completely accurate. -Also, R800 emulation hits very hard on the emulator performance, so it may not run smoothly on all devices, specially smartphones. -There are options to tweak the R800 timing and clock speed from 0.5x to 2.0x. - -## About the new V9990 Video chip - -The current V9990 implementation also has some limitations on the Command Termination and Horizontal INTs. -But none of the available/tested software seemed to rely on the incomplete functions. - -## About the light C-BIOS version - -The light version with only C-BIOS ROMs can be found at: [**https://webmsx.org/cbios**](https://webmsx.org/cbios) - -## About the NetPlay! feature - -WebMSX 5.0 brings NetPlay!, in which any number of users may connect and control the same virtual MSX machine. -To access the feature, open the NetPlay! control dialog available on the System Menu (Power button). - -One user must be the "Server" and start a NetPlay! Session. Just choose a name for the Session, or let the emulator generate it randomly, then hit "START". -Once the Session is started and active, other users may join the Session simply by entering the same Session name and hitting "JOIN". -All users connected have complete control over the machine, except that only the Server user may load/change media files (ROMs, Disks, etc). All features of the emulator work during NetPlay! -Any Client user may leave the Session at any time, but only the Server user may end the Session completely. - -Be careful not to make your Session name public! Anyone that knows your Session name will be able to join it while its active. Send the session name only to people you want to invite. -Another way of sharing your Session to users is sending them a link that will open the emulator and join the session automatically. -In the NetPlay! dialog, once you are Hosting a Session, there will be a link button on the upper right, that will generate the link and copy it to your clipboard. - -**IMPORTANT:** NetPlay! performance is completely dependent on the network quality. The lower the network latency between users, the better. Higher bandwidths with higher latencies won't help much. -The Client may need some time to find and connect do the Server. It uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-) - -To make all this work seamlessly, WebMSX uses modern Web technologies including WebRTC, which are supported by all major browsers and platforms. -Unfortunately, those technologies may still not be available on Apple iOS, so NetPlay! may not work on those devices. - -## About the Nextor Hard Disk Drive - -To make the Hard Disk Drive available, you must first activate the Hard Drive Extension, through the Extensions Menu on the user interface, or by using the respective Presets. -The Hard Disk device may be placed "before" the Floppy Drives, so it will appear on the system as Drive A, or "after" the Floppy Drives, so it will appear as Drive C. The position depends on which Slot the Extension is activated on. -If using Presets, there are two available: `HARDDISK` will place the device as Drive A, and `HARDDISKC` will place it as Drive C. -On the Hard Drive menu (HD icon), there are options to automatically create Empty and Boot disks of several sizes. You can also load DSK images, Files or ZIPs normally. - -## WebMSX Configuration and Launch Options - -Several parameters are available for customizing the emulator. They can be changed either directly in Javascript if you are hosting the emulator in your own page, by loading a Configuration File, or via URL Query Parameters if you are creating links or bookmarks to open the emulator, or just using it in your browser. - -All parameters are in the form of properties in the global object `WMSX`. Just set these object properties in Javascript, or use URL Query parameter/value pairs. For example: - -``` -WMSX.ROM = "files/Game.rom"; is the same as https://webmsx.org?ROM=files/Game.rom -``` - -To load an external Configuration File, set the `CONFIG_URL` parameter. The config file must be a valir JSON object. This object's properties will be **merged** with the standard configuration properties. For example: - -``` -WMSX.CONFIG_URL = "files/CustomMachines.json"; or https://webmsx.org?CONFIG_URL=files/CustomMachines.json -``` - -All emulator Savestates, Settings and Preferences can be stored in multiple isolated spaces, using the **Environments** feature. Just set the `ENVIRONMENT` parameter (or `E` for short) to any number in the 1..99 range. For example: - -``` -WMSX.ENVIRONMENT = 2; or https://webmsx.org?E=2 -``` - -Another important concept is the use of configuration **Presets**. Some configurations are a bit complicated and may require setting various parameters in conjunction. For those cases, its easier to use a Preset that will automatically set all the relevant parameters for a specific task. You may specify any number of Presets to be used by setting the `PRESETS` parameter (or `P` for short) with a comma separated list of the Preset names to apply. For example: - -``` -WMSX.PRESETS = "RAM128, NODISK"; or https://webmsx.org?P=RAM128,NODISK -``` - -**IMPORTANT:** Any parameter setting via Javascript must be done AFTER importing the `webmsx.js` file. - -## Media Loading - -The emulator can be set to automatically load files like ROMs, DSK and CAS images. Additionally, files can be loaded and automatically injected into any of the Disks Drives, without having to first create an image. Image files may be compressed in ZIP or GZIP formats. If several Disk images are found in a ZIP file, all of them (up to 10) will be loaded in the Drive Stack. Available parameters: - -| Parameter | Function | Shortcut for URL form -| --- | --- | --- -| `CARTRIDGE1_URL` | URL of ROM image file to load in Slot 1 | `ROM`, `CART1` -| `CARTRIDGE2_URL` | URL of ROM image file to load in Slot 2 | `CART2` -| `CARTRIDGE1_FORMAT` | Force ROM Format for Cartridge in Slot 1 | `ROM_FORMAT`, `CART1_FORMAT` -| `CARTRIDGE2_FORMAT` | Force ROM Format for Cartridge in Slot 2 | `CART2_FORMAT` -| `DISKA_URL` | URL of Disk image file to load in Drive A: | `DISK`, `DISKA` -| `DISKB_URL` | URL of Disk image file to load in Drive B: | `DISKB` -| `HARDDISK_URL` | URL of Disk image file to load in the Hard Drive | `HARDDISK` -| `DISKA_FILES_URL` | URL of file or ZIP (for several files) to load in Drive A: | `DISK_FILES`, `DISKA_FILES` -| `DISKB_FILES_URL` | URL of file or ZIP (for several files) to load in Drive B: | `DISKB_FILES` -| `HARDDISK_FILES_URL` | URL of file or ZIP (for several files) to load in Hard Drive | `HARDDISK_FILES` -| `TAPE_URL` | URL of Tape image file to load | `TAPE` -| `STATE_URL` | URL of SaveState file to load | `STATE`, `SAVESTATE` -| `AUTODETECT_URL` | URL of file to load with media auto-detection | `AUTODETECT`, `AUTO`, `ANY` - -#### ROM Format (or Mapper Type) -The ROM Format is auto-detected. To force a format, set the `CARTRIDGE1_FORMAT` and `CARTRIDGE2_FORMAT` parameters, or access the User Interface. -You can also put the format specification in the ROM file name, between brackets. Example: `Game [KonamiSCC].rom` - -#### Valid Formats -`Normal`, `Mirrored`, `NotMirrored`, `ASCII8`, `ASCII16`, `Konami`, `KonamiSCC`, `KonamiSCCI`, `ASCII8SRAM2`, `ASCII8SRAM8`, `ASCII16SRAM2`, `ASCII16SRAM8`, `MegaRAM`, `GameMaster2`, `KoeiSRAM8`, `KoeiSRAM32`, `Wizardry`, `FMPAC`, `FMPAK`, `MSXDOS2`, `Majutsushi`, `Synthesizer`, `RType`, `CrossBlaim`, `Manbow2`, `HarryFox`, `AlQuran`, `AlQuranDecoded`, `Halnote`, `SuperSwangi`, `SuperLodeRunner`, `Dooly`, `Zemina80in1`, `Zemina90in1`, `Zemina126in1`, `MSXWrite`, `KonamiUltimateCollection` - -## Choosing a Machine - -There are 12 different generic machines. The default machine is the MSX2+, and the emulator will try to auto-detect your region. You can ask for a specific machine by setting the `MACHINE` parameter (or `M` for short) with the respective Machine ID: - -| Machine | Machine ID | Specific Machine | Machine ID -| --- | :---: | --- | :---: -| MSX tR Auto-detection | `MSXTR` | MSX tR American (NTSC 60Hz) | `MSXTRA` -| | | MSX tR European (PAL 50Hz) | `MSXTRE` -| | | MSX tR Japanese (NTSC 60Hz) | `MSXTRJ` -| MSX2+ Auto-detection | `MSX2P` | MSX2+ American (NTSC 60Hz) | `MSX2PA` -| | | MSX2+ European (PAL 50Hz) | `MSX2PE` -| | | MSX2+ Japanese (NTSC 60Hz) | `MSX2PJ` -| MSX2 Auto-detection | `MSX2` | MSX2 American (NTSC 60Hz) | `MSX2A` -| | | MSX2 European (PAL 50Hz) | `MSX2E` -| | | MSX2 Japanese (NTSC 60Hz) | `MSX2J` -| MSX1 Auto-detection | `MSX1` | MSX1 American (NTSC 60Hz) | `MSX1A` -| | | MSX1 European (PAL 50Hz) | `MSX1E` -| | | MSX1 Japanese (NTSC 60Hz) | `MSX1J` - -It's possible to define additional Custom Machines, by loading an external Configuration File (`CONFIG_URL` parameter). Contact the author for details! - -## Enabling Extensions - -The emulator supports several Extensions, or optional components that can be turned on/off. Some are in the form of expansion cartridges that can be inserted in either Slot 1 or 2. We use Presets to make configuring Extensions easier: - -| Extension | Default in Machine | Presets -| --- | :---: | --- -| Hard Disk interface (Nextor) | -- | `HARDDISK`, `HARDDISKC`, `NOHARDDISK` -| Floppy Disk interface with 2 drives | All | `DISK`, `NODISK` -| Standard RAM Mapper, adjustable size | MSX2 or higher | `RAM128`..`RAM4096`, `RAMNORMAL` -| Kanji Characters with MSX-JE | Japanese MSX2 or higher | `KANJI`, `NOKANJI` -| V9990 Video | -- | `V9990` -| MSX-MUSIC sound with BASIC extension | MSX2 or higher | `MSXMUSIC`, `NOMSXMUSIC` -| OPL4 Wave sound | -- | `OPL4` -| Double PSG | -- | `DOUBLEPSG` -| SCC-I Sound Cartridge with 128K RAM | -- | `SCCI`, `SCCI2` (in Slot 1/2) -| SCC Sound Cartridge | -- | `SCC`, `SCC2` (in Slot 1/2) -| PAC SRAM Cartridge | -- | `PAC`, `PAC2` (in Slot 1/2) -| MegaRAM Cartridge | -- | `MEGARAM`, `MEGARAM2` (in Slot 1/2) - -## Loading BASIC files and Typing commands after launch - -The emulator can be set to automatically Run/Load BASIC programs after launch, or type any commands or text in the BASIC prompt. **NOTE** that these are not necessary for `AUTOEXEC.BAS` and `AUTOEXEC.BAT` files, or if you have loaded a Tape Image file (in which case the emulator will automatically detect and Run the first program in the Tape). Available parameters: - -| Parameter | Action -| --- | --- -| `BASIC_RUN` | Run the specified file -| `BASIC_LOAD` | Load the specified file -| `BASIC_BRUN` | Run the specified bynary file -| `BASIC_BLOAD` | Load the specified bynary file -| `BASIC_TYPE` | Type the specified text -| `BASIC_ENTER` | Type the specified text then hit ENTER - -## Controlling boot speed and automatically pressing keys at boot time -| Parameter | Action -| --- | --- -| `FAST_BOOT` | Boot at max. speed -| `BOOT_KEYS` | Keys to keep pressed at every boot, comma separated -| `BOOT_KEYS_ONCE` | Same as above, but only on first boot (do not use both) -| `BOOT_KEYS_FRAMES` | Optional number of frames for Boot Keys - -## Launch URL Examples - -WebMSX is great for displaying MSX software in the web. With a simple URL, you can launch the emulator and automatically load and run anything. You may combine several settings and media loading options in a single link. Here are some examples: - -- To load a game in ROM format: -``` -https://webmsx.org?ROM=https://gamesarchive.org/Goonies.rom -``` -- To load a game in a ZIPped Disk Image and insert a SCC+ Sound Cartridge: -``` -https://webmsx.org?DISK=https://gamesarchive.org/SDSnatcher.zip&PRESETS=SCCI -``` -- To launch an European MSX1 machine, loading a Disk image and then run a BASIC program: -``` -https://webmsx.org?MACHINE=MSX1E&DISK=https://basicmuseum.org/Demos.dsk&BASIC_RUN=Bubbles.bas -``` - -## Presets Reference - -| Preset | Description -| --- | --- -| `HARDDISK`, `HARDDISKC`, `NOHARDDISK` | Hard Drive Extension -| `DISK`, `DISKA`, `NODISK` | Floppy Drives Extension -| `RAMMAPPER`, `RAM128` - `RAM4096`, `RAMNORMAL` | RAM Mapper Extension & sizes -| `V9990` | V9990 Video Extension -| `KANJI`, `NOKANJI` | Kanji ROM Extension -| `MSXMUSIC`, `NOMSXMUSIC`, `DOUBLEPSG`, `OPL4` | Sound Devices Extensions -| `SCCI`, `SCCI2`, `SCC`, `SCC2` | SCC+/SCC Cartridge (in Slot 1/2) -| `PAC`, `PAC2` | PAC SRAM Cartridge (in Slot 1/2) -| `MEGARAM`, `MEGARAM2`, `MEGARAM256` - `MEGARAM2048` | MegaRam Cartridge (in Slot 1/2) & sizes -| `VSYNCON`, `VSYNCOFF`, `VSYNCDISABLED` | VSync options -| `ALLSTEREO`, `ALLSTEREO2` | Stereo simulation for all devices (default/variation) -| `PSGSTEREO`, `PSGSTEREO2` | PSG Stereo simulation (default/variation) -| `SCCSTEREO`, `SCCSTEREO2` | SCC Stereo simulation (default/variation) -| `OPLLSTEREO`, `OPLLSTEREO2` | OPLL Stereo simulation (default/variation) -| `ALTSLOTCONFIG` | Alternate Slot Configuration. RAM at Primary Slot 3 -| `BOOSTED` | Boosted Machine with HardDisk and CPU/VDP 3x Turbo - -## Parameters Reference - -| Parameter (+ new) | Default | Description -| --- | :---: | --- -| `ENVIRONMENT` | 0 | Emulator Environment. Isolate Savestates & Preferences. 1..99 -| `CONFIG_URL` | -- | Configuration file to merge. Processed before URL parameters -| `MACHINE` | -- | Machine Type. Leave blank for auto-detection -| `PRESETS` | -- | Configuration Presets names to apply, comma separated -| `CARTRIDGE1_URL` | -- | URL of ROM image file to load in Slot 1 -| `CARTRIDGE2_URL` | -- | URL of ROM image file to load in Slot 2 -| `CARTRIDGE1_FORMAT` | -- | ROM Format for Cartridge in Slot 1 -| `CARTRIDGE2_FORMAT` | -- | ROM Format for Cartridge in Slot 2 -| `DISKA_URL` | -- | URL of Disk image file to load in Drive A: -| `DISKB_URL` | -- | URL of Disk image file to load in Drive B: -| `HARDDISK_URL` | -- | URL of Disk image file to load in the Hard Drive -| `DISKA_FILES_URL` | -- | URL of file or ZIP (for several files) to load in Drive A: -| `DISKB_FILES_URL` | -- | URL of file or ZIP (for several files) to load in Drive B: -| `HARDDISK_FILES_URL` | -- | URL of file or ZIP (for several files) to load in Hard Drive -| `TAPE_URL` | -- | URL of Tape image file to load -| `STATE_URL` | -- | URL of SaveState file to load -| `AUTODETECT_URL` | -- | URL of file to load with media auto-detection -| `SLOTXY_URL` | -- | URL of ROM file to load in Slot X-Y (X,Y are numbers). Omit Y for primary slot -| `SLOTXY_FORMAT` | -- | ROM Format for Slot X-Y loaded above -| `NETPLAY_JOIN` | -- | Join NetPlay! Session automatically -| `NETPLAY_NICK` | -- | NetPlay! Nickname, optional -| `BASIC_RUN` | -- | Run the specified file name -| `BASIC_LOAD` | -- | Load the specified file name -| `BASIC_BRUN` | -- | Run the specified binary file name -| `BASIC_BLOAD` | -- | Load the specified binary file name -| `BASIC_TYPE` | -- | Type the specified text -| `BASIC_ENTER` | -- | Type the specified text then hit ENTER -| `BOOT_KEYS` | -- | Keys to keep pressed at every boot, comma separated -| `BOOT_KEYS_ONCE` | -- | Same as above, but only on first boot (do not use both) -| `BOOT_KEYS_FRAMES` | -1 | Number of frames for Boot Keys. -1: auto; > 0: frames -| `FAST_BOOT` | 0 | Number of frames for Fast Boot. 0: off; 1: auto (same as Boot Keys frames); > 1: number of frames -| `VDP_TYPE` | -1 | VDP Chip. -1: auto; 1: V9918; 2: V9938; 3: V9958 -| **+** `VDP_PALETTE` | 2 | MSX1 Palette. 0: WebMSX Original; 1: V9918; 2: V9928; 3: V9938; 4: Toshiba; 5: Fujitsu FM-X -| `RTC_ACTIVE` | -1 | RTC Chip. -1: auto; 0: not present; 1: present -| `RAMMAPPER_SIZE` | 512 | RAM Mapper size when active. 64, 128, 256, 512, 1024, 2048, 4096, in KB -| `RAMNORMAL_SIZE` | 64 | Normal RAM size when active. 16..64, in KB -| `VOL` | 1.0 | Master Volume factor -| `SPEED` | 100 | Default emulation speed (in %) -| `SCREEN_ELEMENT_ID` | "wmsx-screen" | HTML Element ID to place the Emulator Screen -| `ALLOW_URL_PARAMETERS` | true | Allows overriding any parameters via URL query parameters -| `AUTO_START` | true | Auto-Start the emulator as soon as ready -| `AUTO_POWER_ON_DELAY` | 1200 | Auto-Power-ON after specified msecs. -1: no Auto-Power-ON -| `MEDIA_CHANGE_DISABLED` | false | Block user from changing Media (Cartridges, Disks, etc) -| `SCREEN_RESIZE_DISABLED` | false | Block user from changing Sreen size -| `SCREEN_FULLSCREEN_MODE` | -1 | FullScreen mode. -2: disabled; -1: auto; 0: off; 1: on (Full Screen); 2: on (Full Windowed) -| `SCREEN_FILTER_MODE` | -3 | Screen CRT Filter level. -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level -| `SCREEN_CRT_SCANLINES` | -1 | Screen CRT Scanlines. -1: user set (default off); 0: off; 1..10: level -| `SCREEN_CRT_PHOSPHOR` | -1 | Screen CRT Phosphor Effect. -1: auto (off); 0: off; 1: on -| `SCREEN_DEFAULT_SCALE` | -1 | Screen size. -1: auto; 0.5..N in 0.1 steps -| `SCREEN_DEFAULT_ASPECT` | 1.14 | Screen Aspect Ratio (width) in 0.1 steps -| `SCREEN_CONTROL_BAR` | 1 | Screen Bottom Bar controls. 0: on hover; 1: always -| `SCREEN_FORCE_HOST_NATIVE_FPS` | -1 | Force host native video frequency. -1: auto-detect. Don't change! :-) -| `SCREEN_VSYNC_MODE` | -2 | VSync mode. -2: user set (default auto); -1: disabled; 0: off; 1: auto (on when available) -| **+** `SCREEN_VIDEO_OUT` | -1 | Video output. -1: auto; 0: Internal VDP; 1: External V9990; 2: Superimposed; 3: Mixed; 4: Dual (main: Internal); 5: Dual (main: V9990) -| **+** `SCREEN_COLORS` | 0 | CRT color type. 0: Color; 1: B&W; 2: Green Phosphor; 3: Amber Phosphor -| `AUDIO_MONITOR_BUFFER_BASE` | -3 | Audio buffer base size. -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay -| `AUDIO_MONITOR_BUFFER_SIZE` | -1 | Audio buffer size. -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-) -| `AUDIO_SIGNAL_BUFFER_RATIO` | 2 | Internal Audio Signal buffer based on Monitor buffer -| `AUDIO_SIGNAL_ADD_FRAMES` | 3 | Additional frames in internal Audio Signal buffer based on Monitor buffer -| **+** `R800_CLOCK_MODE` | 0 | R800 CPU Clock. 0: auto; (0..2]: R800 CPU clock multiplier -| **+** `R800_TIMING` | 1 | Precise R800/S1990 timings. 0: off, 1: on; 2: VDP waits only. Turn off for faster and lighter emulation -| `Z80_CLOCK_MODE` | 0 | Z80 CPU Clock. 0: auto (soft-turbo possible); (0..8]: CPU clock multiplier -| `VDP_CLOCK_MODE` | 0 | VDP Command Engine Clock. 0: auto (soft-turbo possible); (0..8]: Engine clock multiplier; 9: instantaneous -| `Z80_SOFT_TURBO_MULTI` | 1.5 | Z80 CPU clock multiplier when in AUTO mode and activated by software. 1..8: multi -| `VDP_SOFT_TURBO_MULTI` | 1 | VDP Command Engine clock multiplier when in AUTO mode and activated by software. 1..9: multi -| **+** `CPU_SOFT_TURBO_AUTO_ON` | 0 | Automatically activate the CPU Soft Turbo when supported by machine. 0: off, 1: on -| **+** `CPU_FAKE_TR_TURBO` | -1 | Simulated tR CHGCPU Turbo activation. -1: auto; 0: off; 1: on. Auto ON for 2+, never for tR -| **+** `CPU_PANA_TURBO` | -1 | Simulated Panasonic Turbo activation. -1: auto; 0: off; 1: on. Auto ON for 2+, never for tR -| `JOYSTICKS_MODE` | 0 | Joysticks (on Host) controls. -1: disabled; 0: auto; 1: auto (swapped) -| `JOYKEYS_MODE` | -1 | JoyKeys controls. -1: disabled; 0: enabled at port 1; 1: enabled at port 2; 2: enabled at both ports; 3: enabled at both ports (swapped) -| `MOUSE_MODE` | -1 | Mouse controls. -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 -| `TOUCH_MODE` | 0 | Touch controls. -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 -| **+** `MOBILE_MODE` | 0 | Forced Mobile interface mode. -1: disabled; 0: auto; 1: enabled -| `DEBUG_MODE` | 0 | Debug Modes. 0: off; 1..7: mode. Don't change! :-) -| `SPRITES_DEBUG_MODE` | 0 | Sprites Debug Modes. 0: off; 1: unlimited; 2: no collisions; 3: both. May cause problems :-) -| `KEYBOARD_JAPAN_LAYOUT` | 1 | Japanese keyboard layout. 0: ANSI, 1: JIS -| `ROM_MAX_HASH_SIZE_KB` | 5120 | Maximum ROM size for Hash calculation -| `HARDDISK_MIN_SIZE_KB` | 720 | Minimum file size to be accepted as HardDisk image (besides all valid Floppy formats) -| `MEGARAM_SIZE` | 2048 | MegaRAM size in KB -| `DISK_ROM_START_PAGE` | 0 | Change starting page for ROMs > 16KB when format is DiskPatch. 0..1 -| `PSG_VOL` | "f" | PSG Volume adjust: 0..f (hex digit). Set globally or for each channel (4 values) -| `PSG_PAN` | "8" | PSG PanPot adjust: 0; 1..8..f (hex digit). Set globally or for each channel (4 values) -| `SCC_VOL` | "f" | SCC Volume adjust. Same as above (5 values) -| `SCC_PAN` | "8" | SCC PanPot adjust. Same as above (5 values) -| `OPLL_VOL` | "f" | OPLL Volume adjust. Same as above (14 values) -| `OPLL_PAN` | "8" | OPLL PanPot adjust. Same as above (14 values) -| `PAGE_BACK_CSS` | -- | CSS to modify page background color. Applied to the body element diff --git a/gruntfile.js b/gruntfile.js index 330ec852..2d8c496a 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -1,6 +1,6 @@ module.exports = function (grunt) { - var releasePath = "alpha/6.0"; + var releasePath = "stable/6.0"; var baseScr = [ "src/main/room/screen/FullScreenSetup.js", diff --git a/package-lock.json b/package-lock.json index 789e29a7..a1da6024 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "WebMSX", - "version": "6.0.93", + "version": "6.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f8a97053..f1d91dbe 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "WebMSX", "title": "WebMSX - The online MSX emulator", - "version": "6.0.93", + "version": "6.0.0", "devDependencies": { "grunt": "", "grunt-contrib-clean": "", diff --git a/release/stable/5.3/cbios/embedded/wmsx.js b/release/stable/5.3/cbios/embedded/wmsx.js deleted file mode 100644 index 9aa49ac7..00000000 --- a/release/stable/5.3/cbios/embedded/wmsx.js +++ /dev/null @@ -1,440 +0,0 @@ -// WebMSX C-BIOS version 5.3.4 -// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file. - -// Main Emulator parameters for C-BIOS variation. No FloppyDrive, Kanji and Moonsound support. Experimental HardDrive support. -// May be overridden dynamically by external Config File or URL query parameters - -WMSX = { - - // Main Setup - ENVIRONMENT: 101, // 101: C-BIOS Built-in Emulator Environment - CONFIG_URL: "", // Configuration file to merge. Processed before URL parameters - MACHINE: "", // Machine Type. See Machine Configuration. Leave blank for auto-detection - PRESETS: "", // Configuration Presets to apply. See Presets Configuration - - // Full or relative URL of Media files to load - CARTRIDGE1_URL: "", - CARTRIDGE2_URL: "", - DISKA_URL: "", // Image files - DISKB_URL: "", - HARDDISK_URL: "", - DISKA_FILES_URL: "", // File to load into a Disk. For several files, use a ZIP file - DISKB_FILES_URL: "", - HARDDISK_FILES_URL: "", - TAPE_URL: "", - STATE_URL: "", - AUTODETECT_URL: "", - - // Forcing ROM formats - CARTRIDGE1_FORMAT: "", // Normal, ASCII8, ASCII16, Konami, KonamiSCC, KonamiSCCI, FMPAC, etc... - CARTRIDGE2_FORMAT: "", - - // BASIC loading/typing commands. Not needed for AUTOEXEC.BAS, AUTOEXEC.BAT or Tape Images - BASIC_RUN: "", - BASIC_LOAD: "", - BASIC_BRUN: "", - BASIC_BLOAD: "", - BASIC_TYPE: "", - BASIC_ENTER: "", - - // Boot Options - BOOT_KEYS: "", // Keys to keep pressed at every boot, comma separated - BOOT_KEYS_ONCE: "", // Same as above, but only on first boot (do not use both) - BOOT_KEYS_FRAMES: -1, // -1: auto; > 0: number of frames for Boot Keys - FAST_BOOT: 0, // 0: off; 1: auto (same as Boot Keys frames); > 1: number of frames for 10x speed at boot - - // NetPlay - NETPLAY_JOIN: "", // Join NetPlay! Session automatically - NETPLAY_NICK: "", // NetPlay! Nickname, optional - - // Internal Machine configuration - BIOS_SLOT: [0], // Slot to use when loading ROM of type - CARTRIDGE1_SLOT: [1], - CARTRIDGE2_SLOT: [2], - EXPANSION1_SLOT: [3, 3], - EXPANSION2_SLOT: [2, 3], - BIOSEXT_SLOT: [3, 1], - RAMMAPPER_SIZE: 512, // 64, 128, 256, 512, 1024, 2048, 4096: RAM Mapper size in KB when active - RAMNORMAL_SIZE: 64, // 16..64: Normal RAM size in KB when active - EXTENSIONS: { }, // Extensions active. See Extensions Configuration. Use Presets to activate/deactivate - VDP_TYPE: -1, // -1: auto; 1: V9918; 2: V9938; 3: V9958 - RTC_ACTIVE: -1, // -1: auto; 0: not present; 1: present - - // General options - VOL: 1.0, // Master Volume factor - SPEED: 100, // Default emulation speed (in %) - AUTO_START: true, - AUTO_POWER_ON_DELAY: 1200, // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON - MEDIA_CHANGE_DISABLED: false, - SCREEN_RESIZE_DISABLED: false, - SCREEN_ELEMENT_ID: "wmsx-screen", - SCREEN_FULLSCREEN_MODE: -1, // -2: disabled; -1: auto; 0: off; 1: on (Full Screen); 2: on (Full Windowed) - SCREEN_FILTER_MODE: -3, // -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level - SCREEN_CRT_SCANLINES: -1, // -1: user set (default off); 0: off; 1..10: level - SCREEN_CRT_PHOSPHOR: -1, // -1: auto; 0: off; 1: on - SCREEN_DEFAULT_SCALE: -1, // -1: auto; 0.5..N in 0.05 steps: scale - SCREEN_DEFAULT_ASPECT: 1.14, // in 0.01 steps - SCREEN_CONTROL_BAR: 1, // 0: on hover; 1: always - SCREEN_FORCE_HOST_NATIVE_FPS: -1, // -1: auto. Don't change! :-) - SCREEN_VSYNC_MODE: -2, // -2: user set (default auto); -1: disabled; 0: off; 1: auto (on when available) - AUDIO_MONITOR_BUFFER_BASE: -3, // -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay - AUDIO_MONITOR_BUFFER_SIZE: -1, // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-) - AUDIO_SIGNAL_BUFFER_RATIO: 2, // Internal Audio Signal buffer based on Monitor buffer - AUDIO_SIGNAL_ADD_FRAMES: 3, // Additional frames in internal Audio Signal buffer based on Monitor buffer - JOYSTICKS_MODE: 0, // -1: disabled; 0: auto; 1: auto (swapped) - JOYKEYS_MODE: -1, // -1: disabled; 0: enabled at port 1; 1: enabled at port 2; 2: enabled at both ports; 3: enabled at both ports (swapped) - MOUSE_MODE: -1, // -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 - TOUCH_MODE: 0, // -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 - CPU_TURBO_MODE: 0, // -1: off; 0: auto (software activation); (0..8]: CPU clock multiplier; 1: 2x multiplier (backward compatibility) - VDP_TURBO_MODE: 0, // -1: off; 0: auto (software activation); 2..8: VDP Command Engine clock multiplier; 9: instantaneous - CPU_SOFT_TURBO_MULTI: 2, // 1..8 CPU clock multiplier when in AUTO mode and activated by software - VDP_SOFT_TURBO_MULTI: 2, // 1..9 VDP Command Engine clock multiplier when in AUTO mode and activated by software - KEYBOARD_JAPAN_LAYOUT: 1, // 0: ANSI; 1: JIS - DEBUG_MODE: 0, // 0: off; 1..7: debug mode. Don't change! :-) - SPRITES_DEBUG_MODE: 0, // 0: off; 1: unlimited; 2: no collisions; 3: both. May cause problems :-) - ROM_MAX_HASH_SIZE_KB: 3072, // Maximum ROM size for Hash calculation - HARDDISK_MIN_SIZE_KB: 720, // Minimum file size to be accepted as HardDisk image (besides all valid Floppy formats) - MEGARAM_SIZE: 2048, // 256, 512, 1024, 2048: MegaRAM size in KB - DISK_ROM_START_PAGE: 0, // 0..1: Change starting page for ROMs > 16KB when format is DiskPatch - LIGHT_STATES: true, - - PSG_VOL: "f", // 0..f (hex digit): PSG Volume adjust. Set globally or for each channel (4 values) - PSG_PAN: "8", // 0; 1..8..f (hex digit): PSG PanPot adjust. Set globally or for each channel (4 values) - SCC_VOL: "f", // SCC Volume adjust. Same as above (5 values) - SCC_PAN: "8", // SCC PanPot adjust. Same as above (5 values) - OPLL_VOL: "f", // OPLL Volume adjust. Same as above (14 values) - OPLL_PAN: "8", // OPLL PanPot adjust. Same as above (14 values) - - IMAGES_PATH: window.WMSX_IMAGES_PATH || "images/", - FILE_SEPARATOR_REGEX: /[\\/?:]/, - PAGE_BACK_CSS: "", // CSS to modify page background color. Applied to the body element - - WEB_EXTENSIONS_SERVER: "webmsx.herokuapp.com", // Server address for NetPlay! - - STATE_VERSION: 530, - STATE_VERSIONS_ACCEPTED: { 530: true }, - - ALLOW_URL_PARAMETERS: true // Allows user to override any of these parameters via URL query parameters - -}; - -WMSX.MACHINES_CONFIG = { - MSX2PP: { DESCX: "MSX2++ Auto Detect", AUTO_TYPE: 4 }, - MSX2P: { DESCX: "MSX2+ Auto Detect", AUTO_TYPE: 3 }, - MSX2: { DESCX: "MSX2 Auto Detect", AUTO_TYPE: 2 }, - MSX1: { DESCX: "MSX Auto Detect", AUTO_TYPE: 1 }, - MSX2PPA: { DESC: "MSX2++ America (NTSC)", TYPE: 4, PRESETS: "_MSX2PPA", LANG: "en" }, - MSX2PPE: { DESC: "MSX2++ Europe (PAL)", TYPE: 4, PRESETS: "_MSX2PPE", LANG: "en" }, - MSX2PPJ: { DESC: "MSX2++ Japan (NTSC)", TYPE: 4, PRESETS: "_MSX2PPJ", LANG: "ja" }, - MSX2PA: { DESC: "MSX2+ America (NTSC)", TYPE: 3, PRESETS: "_MSX2PA", LANG: "en" }, - MSX2PE: { DESC: "MSX2+ Europe (PAL)", TYPE: 3, PRESETS: "_MSX2PE", LANG: "en" }, - MSX2PJ: { DESC: "MSX2+ Japan (NTSC)", TYPE: 3, PRESETS: "_MSX2PJ", LANG: "ja" }, - MSX2A: { DESC: "MSX2 America (NTSC)", TYPE: 2, PRESETS: "_MSX2A", LANG: "en" }, - MSX2E: { DESC: "MSX2 Europe (PAL)", TYPE: 2, PRESETS: "_MSX2E", LANG: "en" }, - MSX2J: { DESC: "MSX2 Japan (NTSC)", TYPE: 2, PRESETS: "_MSX2J", LANG: "ja" }, - MSX1A: { DESC: "MSX America (NTSC)", TYPE: 1, PRESETS: "_MSX1A", LANG: "en" }, - MSX1E: { DESC: "MSX Europe (PAL)", TYPE: 1, PRESETS: "_MSX1E", LANG: "en" }, - MSX1J: { DESC: "MSX Japan (NTSC)", TYPE: 1, PRESETS: "_MSX1J", LANG: "ja" }, - EMPTY2PP: { DESCX: "MSX2++ Empty (NTSC)", TYPE: 4, PRESETS: "_EMPTY" }, - EMPTY2P: { DESCX: "MSX2+ Empty (NTSC)", TYPE: 3, PRESETS: "_EMPTY" }, - EMPTY2: { DESCX: "MSX2 Empty (NTSC)", TYPE: 2, PRESETS: "_EMPTY" }, - EMPTY1: { DESCX: "MSX Empty (NTSC)", TYPE: 1, PRESETS: "_EMPTY" } -}; - -WMSX.EXTENSIONS_CONFIG = { - HARDDISK: { URL: "@[Nextor16Patch].rom", SLOT: [2], CHANGE: { RAMMAPPER: 1, SCCI: 0, SCC: 0, PAC: 0, MEGARAM: 0 } }, - RAMMAPPER: { DESC: "RAM Mapper", URL: "@[RAMMapper].rom", SLOT: [3], MUTUAL: "RAMNORMAL" }, - RAMNORMAL: { URL: "@[RAMNormal].rom", SLOT: [3], MUTUAL: "RAMMAPPER" }, - MSXMUSIC: { DESC: "MSX-MUSIC", URL: "@cbios_music[MSXMUSIC].rom", SLOT: [3, 2] }, - DOUBLEPSG: { DESC: "Double PSG", URL: "@[ExtraPSG].rom", SLOT: [4, 0] }, - SCCI: { DESC: "Konami SCC+", URL: "@[SCCIExpansion].rom", SLOT: [1], SLOT2: [2], CHANGE: { HARDDISK: 0, SCC: 0, PAC: 0, MEGARAM: 0 } }, - SCC: { URL: "@[SCCExpansion].rom", SLOT: [1], SLOT2: [2], CHANGE: { HARDDISK: 0, SCCI: 0, PAC: 0, MEGARAM: 0 } }, - PAC: { DESC: "PAC SRAM", URL: "@[PACExpansion].rom", SLOT: [1], SLOT2: [2], CHANGE: { HARDDISK: 0, SCCI: 0, SCC: 0, MEGARAM: 0 } }, - MEGARAM: { DESC: "MegaRAM", URL: "@[MegaRAM].rom", SLOT: [1], SLOT2: [2], CHANGE: { HARDDISK: 0, SCCI: 0, SCC: 0, PAC: 0 } } -}; - -WMSX.PRESETS_CONFIG = { - - // Extensions Options Presets. Must be specified in this order - - // Hard Disk: Nextor Removable Device - HARDDISK: { "EXTENSIONS.HARDDISK": 1, _INCLUDE: "RAMMAPPER" }, - NOHARDDISK: { "EXTENSIONS.HARDDISK": 0 }, - - // RAM type - RAMMAPPER: { "EXTENSIONS.RAMMAPPER": 1, "EXTENSIONS.RAMNORMAL": 0 }, - RAMNORMAL: { "EXTENSIONS.RAMMAPPER": 0, "EXTENSIONS.RAMNORMAL": 1 }, - - // Sound Devices - MSXMUSIC: { "EXTENSIONS.MSXMUSIC": 1 }, - NOMSXMUSIC: { "EXTENSIONS.MSXMUSIC": 0 }, - DOUBLEPSG: { "EXTENSIONS.DOUBLEPSG": 1 }, - - // Other Cartridge extensions - - SCCI: { "EXTENSIONS.SCCI": 1 }, - SCCI2: { "EXTENSIONS.SCCI": 2 }, - - SCC: { "EXTENSIONS.SCC": 1 }, - SCC2: { "EXTENSIONS.SCC": 2 }, - - PAC: { "EXTENSIONS.PAC": 1 }, - PAC2: { "EXTENSIONS.PAC": 2 }, - - MEGARAM: { "EXTENSIONS.MEGARAM": 1 }, - MEGARAM2: { "EXTENSIONS.MEGARAM": 2 }, - - // Configuration Helper Presets - - RAM128: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 128 }, - RAM256: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 256 }, - RAM512: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 512 }, - RAM1024: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 1024 }, - RAM2048: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 2048 }, - RAM4096: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 4096 }, - NORAMMAPPER: { _INCLUDE: "RAMNORMAL"}, - - MEGARAM256: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 256 }, - MEGARAM512: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 512 }, - MEGARAM1024: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 1024 }, - MEGARAM2048: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 2048 }, - - VSYNCDISABLED: { SCREEN_VSYNC_MODE: -1 }, - VSYNCOFF: { SCREEN_VSYNC_MODE: 0 }, - VSYNCON: { SCREEN_VSYNC_MODE: 1 }, - - PSGSTEREO: { PSG_PAN: "4c8" }, - PSGSTEREO2: { PSG_PAN: "8c4" }, - SCCSTEREO: { SCC_PAN: "8c4c4" }, - SCCSTEREO2: { PSG_PAN: "4c4c8" }, - OPLLSTEREO: { OPLL_PAN: "4c4c4c4c488888" }, - ALLSTEREO: { _INCLUDE: "PSGSTEREO, SCCSTEREO, OPLLSTEREO" }, - ALLSTEREO2: { _INCLUDE: "PSGSTEREO2, SCCSTEREO2, OPLLSTEREO" }, - - // Alternate Slot Configuration: try to keep RAM alone on primary Slot 3 - - ALTSLOTCONFIG: { - EXPANSION1_SLOT: [2, 3], - EXPANSION2_SLOT: [3, 3], - "EXTENSIONS_CONFIG.MSXMUSIC.SLOT": [2, 2] - }, - - // MSX2++ Machine Presets. Do not use directly - - _MSX2PPA: { - _INCLUDE: "_MSX2PA, _MSX2PPBASE", - BOOT_DURATION_AUTO: 165 - }, - _MSX2PPE: { - _INCLUDE: "_MSX2PE, _MSX2PPBASE", - BOOT_DURATION_AUTO: 175 - }, - _MSX2PPJ: { - _INCLUDE: "_MSX2PJ, _MSX2PPBASE", - BOOT_DURATION_AUTO: 165 - }, - _MSX2PPBASE: { - CPU_TURBO_MODE: 4, - VDP_TURBO_MODE: 4 - }, - - // MSX2+ Machine Presets. Do not use directly - - _MSX2PA: { - _INCLUDE: "_MSX2PBASE", - SLOT0_URL: "@cbios_main_msx2+.rom | @cbios_logo_msx2+.rom", - SLOT31_URL: "@cbios_sub.rom", - BOOT_DURATION_AUTO: 380 - }, - _MSX2PE: { - _INCLUDE: "_MSX2PBASE", - SLOT0_URL: "@cbios_main_msx2+_eu.rom | @cbios_logo_msx2+.rom", - SLOT31_URL: "@cbios_sub.rom", - BOOT_DURATION_AUTO: 395 - }, - _MSX2PJ: { - _INCLUDE: "_MSX2PBASE", - SLOT0_URL: "@cbios_main_msx2+_jp.rom | @cbios_logo_msx2+.rom", - SLOT31_URL: "@cbios_sub.rom", - BOOT_DURATION_AUTO: 380 - }, - _MSX2PBASE: { - _INCLUDE: "_MSX2BASE" - }, - - // MSX2 Machine Presets. Do not use directly - - _MSX2A: { - _INCLUDE: "_MSX2BASE", - SLOT0_URL: "@cbios_main_msx2.rom | @cbios_logo_msx2.rom", - SLOT31_URL: "@cbios_sub.rom", - BOOT_DURATION_AUTO: 385 - }, - _MSX2E: { - _INCLUDE: "_MSX2BASE", - SLOT0_URL: "@cbios_main_msx2_eu.rom | @cbios_logo_msx2.rom", - SLOT31_URL: "@cbios_sub.rom", - BOOT_DURATION_AUTO: 400 - }, - _MSX2J: { - _INCLUDE: "_MSX2BASE", - SLOT0_URL: "@cbios_main_msx2_jp.rom | @cbios_logo_msx2.rom", - SLOT31_URL: "@cbios_sub.rom", - BOOT_DURATION_AUTO: 360 - }, - _MSX2BASE: { - _INCLUDE: "_BASE, RAMMAPPER, DISK, MSXMUSIC" - }, - - // MSX1 Machine Presets. Do not use directly - - _MSX1A: { - _INCLUDE: "_MSX1BASE", - SLOT0_URL: "@cbios_main_msx1.rom | @cbios_logo_msx1.rom", - BOOT_DURATION_AUTO: 375 - }, - _MSX1E: { - _INCLUDE: "_MSX1BASE", - SLOT0_URL: "@cbios_main_msx1_eu.rom | @cbios_logo_msx1.rom", - BOOT_DURATION_AUTO: 375 - }, - _MSX1J: { - _INCLUDE: "_MSX1BASE", - SLOT0_URL: "@cbios_main_msx1_jp.rom | @cbios_logo_msx1.rom", - BOOT_DURATION_AUTO: 230 - }, - _MSX1BASE: { - _INCLUDE: "_BASE, RAMNORMAL, DISK, NOHARDDISK, NOMSXMUSIC", - SLOT31_URL : "" // MSX1 has no BIOS Extension - }, - - // Base Machines Presets. Do not use directly - - _EMPTY: { - _INCLUDE: "_BASE", - EXTENSIONS: null, - SLOT0P_URL: "", - SLOT1P_URL: "", - SLOT2P_URL: "", - SLOT3P_URL: "", - SLOT4P_URL: "" // Special Device I/O only slot - }, - - _BASE: { - CPU_TURBO_MODE: 0, - VDP_TURBO_MODE: 0, - VDP_TYPE: -1, - RTC_ACTIVE: -1 - } - -}; - -wmsx = window.wmsx || {}; // Namespace - -function onUpdateReady(){alert("A new version is available!\nWebMSX will restart..."),window.applicationCache.swapCache(),window.location.reload()}WMSXFullScreenSetup={apply:function(){if(!this.cssApplied){var a=document.createElement("style");a.type="text/css",a.innerHTML=this.css,document.head.appendChild(a),this.cssApplied=!0}document.documentElement.classList.toggle("wmsx-full-screen",this.shouldStartInFullScreen())},shouldStartInFullScreen:function(){return window.WMSX?WMSX.SCREEN_FULLSCREEN_MODE>=1||-1===WMSX.SCREEN_FULLSCREEN_MODE&&this.isBrowserStandaloneMode():this.isBrowserStandaloneMode()},isBrowserStandaloneMode:function(){return navigator.standalone||window.matchMedia("(display-mode: standalone)").matches},css:"html.wmsx-full-screen, html.wmsx-full-screen body { background: black;}html.wmsx-full-screen .wmsx-full-screen-hidden { display: none;}html:not(.wmsx-full-screen) .wmsx-full-screen-only { display: none;}"},WMSXFullScreenSetup.apply(),wmsx.Util=new function(){"use strict";function a(a,b){return a.nameb.name?1:0}function b(a){return a.stopPropagation(),a.cancelable&&a.preventDefault(),!1}this.log=function(a){var b=[">> wmsx:"];Array.prototype.push.apply(b,arguments),console.log.apply(console,b)},this.warning=function(a){var b=[">> wmsx Warning:"];Array.prototype.push.apply(b,arguments),console.warn.apply(console,b)},this.error=function(a){var b=[">> wmsx Error:"];Array.prototype.push.apply(b,arguments),console.error.apply(console,b)},this.message=function(a){console.info(a),alert(a)},this.asNormalArray=function(a,b,c){return!c&&a instanceof Array?a:c?this.arrayCopy(a,b,new Array(c)):this.arrayCopy(a,0,new Array(a.length))},this.arrayFill=function(a,b,c,d){if(a.fill)return a.fill(b,c,d);void 0===c&&(c=0);for(var e=(void 0===d?a.length:d)-1;e>=c;e-=1)a[e]=b;return a},this.arrayCopy=function(a,b,c,d,e){d=d||0;for(var f=e?b+e:a.length;b=0;)a.splice(c,1);return a},this.arraysConcatAll=function(a){for(var b=0,c=0;c>8&255);return d},this.byteStringToInt16BitArray=function(a,b){if(null===a||void 0===a)return a;if("null"==a)return null;if("undefined"!=a){for(var c=a.length/2|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e>8&255)+String.fromCharCode(a[e]>>16&255)+String.fromCharCode(a[e]>>24&255);return d},this.byteStringToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if("null"==a)return null;if("undefined"!=a){for(var c=a.length/4|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e=0&&b.length%2?"0"+b:b},this.toHex4=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();if(a<0)return b;switch(b.length){case 4:return b;case 3:return"0"+b;case 2:return"00"+b;case 1:return"000"+b;default:return b}},this.escapeHtml=function(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/\?/g,"?").replace(/\-/g,"-").replace(/\|/g,"|")},this.arrayFind=function(a,b){if(a.find)return a.find(b);for(var c=0,d=a.length;c=0&&h=0;--c){var d=b[c].trim();if(d)return d}return""},this.leafFilenameNoExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(".");return c<=0?b:b.substr(0,c).trim()},this.leafFilenameOnlyExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(".");return c<=0?"":b.substr(c+1).trim()},this.dump=function(a,b,c,d){var e="",f=b||0;d=d||1;for(var g=0;g0||"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},this.isMobileDevice=function(){return this.isTouchDevice()&&/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)},this.isIOSDevice=function(){return/ipad|iphone|ipod/i.test(navigator.userAgent)},this.isBrowserStandaloneMode=function(){return navigator.standalone||window.matchMedia("(display-mode: standalone)").matches},this.onTapOrMouseDown=function(a,b){this.addEventsListener(a,this.isTouchDevice()?"touchstart mousedown":"mousedown",b)},this.onTapOrMouseDownWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?"touchstart mousedown":"mousedown",d)},this.onTapOrMouseUpWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?"touchstart mouseup":"mouseup",d)},this.onTapOrMouseDownWithBlockUIG=function(a,c){function d(a){if("touchend"===a.type&&!a.target.wmsxNeedsUIG)return b(a);var d="touchstart"===a.type&&a.target.wmsxNeedsUIG,e="touchend"===a.type;return c(a,d,e),b(a)}this.addEventsListener(a,this.isTouchDevice()?"touchstart touchend mousedown":"mousedown",d)},this.blockEvent=b,this.addEventsListener=function(a,b,c,d){b=b.split(" ");for(var e=0;e=0;c--)b+=this.hex_chr.charAt(a>>4*c&15);return b},str2blks_SHA1:function(a){for(var b=1+(a.length+8>>6),c=new Array(16*b),d=0;d<16*b;d++)c[d]=0;for(d=0;d>2]|=a.charCodeAt(d)<<24-d%4*8;return c[d>>2]|=128<<24-d%4*8,c[16*b-1]=8*a.length,c},add:function(a,b){var c=(65535&a)+(65535&b);return(a>>16)+(b>>16)+(c>>16)<<16|65535&c},rol:function(a,b){return a<>>32-b},ft:function(a,b,c,d){return a<20?b&c|~b&d:a<40?b^c^d:a<60?b&c|b&d|c&d:b^c^d},kt:function(a){return a<20?1518500249:a<40?1859775393:a<60?-1894007588:-899497514},calcSHA1FromByteArray:function(a){for(var b="",c=0;c>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0, -this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\0\0",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(void 0===a||!a.length)return 0;var e="string"!==c.getTypeOf(a);void 0===b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date(1980+(a>>25&127),(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\0",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a,b){return"/"!=a.slice(-1)&&(a+="/"),b=void 0!==b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent="",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=""),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),n=b.comment||"",o=d.transformTo("string",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t="",u="",v="";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+="up"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+="uc"+s(v.length,2)+v);var w="";return w+="\n\0",w+=p||q?"\0\b":"\0\0",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2),{fileRecord:f.LOCAL_FILE_HEADER+w+m+t,dirRecord:f.CENTRAL_FILE_HEADER+"\0"+w+s(o.length,2)+"\0\0\0\0"+(!0===j?"\0\0\0":"\0\0\0\0")+s(g,4)+m+t+o,compressedObject:c}},A={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(128>(e=a[b++]))i[c++]=e;else if((f=g[e])>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length;f>c;){var g=j(a,Math.min(c+65536,f));b.push(k(e.uint8array?a.subarray(c,g):a.slice(c,g))),c=g}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44;d>0;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(0!==c)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};l.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?4:0,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),1!==(c=g.deflate(e,d))&&0!==c)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&4===d)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&1!==c);return 4!==d||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,0===c)},l.prototype.onData=function(a){this.chunks.push(a)},l.prototype.onEnd=function(a){0===a&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=l,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)} -var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0==(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),(c=f.inflate(l,i.Z_NO_FLUSH))!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(128>(f=a[c++]))j[e++]=f;else if((g=h[f])>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do{e=e+b[d++]|0,f=f+e|0}while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(a,b,c,e){var f=d,g=e+c;a^=-1;for(var h=e;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var d=function(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}();b.exports=c},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ha?a.strstart-(a.w_size-ha):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ga,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do{if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do{}while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ga-(m-f),f=m-ga,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}}while((b=l[b&k])>i&&0!=--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ha)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do{d=a.head[--b],a.head[b]=d>=g?d-g:0}while(--c);c=g,b=c;do{d=a.prev[--b],a.prev[b]=d>=g?d-g:0}while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=fa)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return qa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return qa;if(a.strstart-a.block_start>=a.w_size-ha&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):(a.strstart>a.block_start&&(h(a,!1),a.strm.avail_out),qa)}function o(a,b){for(var c,d;;){if(a.lookahead=fa&&(a.ins_h=(a.ins_h<=fa)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-fa),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=fa){a.match_length--;do{a.strstart++,a.ins_h=(a.ins_h<=fa&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=fa-1)),a.prev_length>=fa&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-fa,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-fa),a.lookahead-=a.prev_length-1,a.prev_length-=2;do{++a.strstart<=e&&(a.ins_h=(a.ins_h<=fa&&a.strstart>0&&(e=a.strstart-1,(d=g[e])===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ga;do{}while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ga-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=fa?(c=D._tr_tally(a,1,a.match_length-fa),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return qa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=fa-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*da),this.dyn_dtree=new C.Buf16(2*(2*ba+1)),this.bl_tree=new C.Buf16(2*(2*ca+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ea+1),this.heap=new C.Buf16(2*aa+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*aa+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?ja:oa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===pa&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===ja)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ka):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,ua),h.status=oa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1 -;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ia),m+=31-m%31,h.status=oa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ka)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=la)}else h.status=la;if(h.status===la)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ma)}else h.status=ma;if(h.status===ma)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=na)}else h.status=na;if(h.status===na&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=oa)):h.status=oa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===pa&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==pa){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===sa||o===ta)&&(h.status=pa),o===qa||o===sa)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ra&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==ja&&b!==ka&&b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa?d(a,O):(a.state=null,b===oa?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=286,ba=30,ca=19,da=2*aa+1,ea=15,fa=3,ga=258,ha=ga+fa+1,ia=32,ja=42,ka=69,la=73,ma=91,na=103,oa=113,pa=666,qa=1,ra=2,sa=3,ta=4,ua=3,va=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new va(0,0,0,0,n),new va(4,4,8,4,o),new va(4,5,16,8,o),new va(4,6,32,32,o),new va(4,4,16,16,p),new va(8,16,32,32,p),new va(8,16,128,128,p),new va(8,32,128,256,p),new va(32,128,258,1024,p),new va(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";b.exports=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A;c=a.state,d=a.next_in,z=a.input,e=d+(a.avail_in-5),f=a.next_out,A=a.output,g=f-(b-a.avail_out),h=f+(a.avail_out-257),i=c.dmax,j=c.wsize,k=c.whave,l=c.wnext,m=c.window,n=c.hold,o=c.bits,p=c.lencode,q=c.distcode,r=(1<o&&(n+=z[d++]<>>24,n>>>=u,o-=u,0===(u=t>>>16&255))A[f++]=65535&t;else{if(!(16&u)){if(0==(64&u)){t=p[(65535&t)+(n&(1<o&&(n+=z[d++]<>>=u,o-=u),15>o&&(n+=z[d++]<>>24,n>>>=u,o-=u,!(16&(u=t>>>16&255))){if(0==(64&u)){t=q[(65535&t)+(n&(1<o&&(n+=z[d++]<o&&(n+=z[d++]<i){a.msg="invalid distance too far back",c.mode=30;break a}if(n>>>=u,o-=u,u=f-g,w>u){if((u=w-u)>k&&c.sane){a.msg="invalid distance too far back",c.mode=30;break a}if(x=0,y=m,0===l){if(x+=j-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}else if(u>l){if(x+=j+l-u,u-=l,v>u){v-=u;do{A[f++]=m[x++]}while(--u);if(x=0,v>l){u=l,v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}}else if(x+=l-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}for(;v>2;)A[f++]=y[x++],A[f++]=y[x++],A[f++]=y[x++],v-=3;v&&(A[f++]=y[x++],v>1&&(A[f++]=y[x++]))}else{x=f-w;do{A[f++]=A[x++],A[f++]=A[x++],A[f++]=A[x++],v-=3}while(v>2);v&&(A[f++]=A[x++],v>1&&(A[f++]=A[x++]))}break}}break}}while(e>d&&h>f);v=o>>3,d-=v,o-=v<<3,n&=(1<d?e-d+5:5-(d-e),a.avail_out=h>f?h-f+257:257-(f-h),c.hold=n,c.bits=o}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=1+(b>>4),48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,qa)}function k(a){if(ra){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),ra=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=la;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=la;break}if(m>>>=4,n-=4,wa=8+(15&m),0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=la;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=1+(31&m),m>>>=5,n-=5,c.ncode=4+(15&m),m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg="invalid literal/length code",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if((q=c.offset-q)>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do{f[h++]=pa[oa++]}while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=y;y++)K[y]=0;for(z=0;j>z;z++)K[b[i+z]]++;for(C=x,B=d;B>=1&&0===K[B];B--);if(C>B&&(C=B),0===B)return k[l++]=20971520,k[l++]=20971520,n.bits=1,0;for(A=1;B>A&&0===K[A];A++);for(A>C&&(C=A),F=1,y=1;d>=y;y++)if(F<<=1,0>(F-=K[y]))return-1;if(F>0&&(0===a||1!==B))return-1;for(L[1]=0,y=1;d>y;y++)L[y+1]=L[y]+K[y];for(z=0;j>z;z++)0!==b[i+z]&&(m[L[b[i+z]]++]=z);if(0===a?(I=M=m,t=19):1===a?(I=e,J-=257,M=f,N-=257,t=256):(I=g,M=h,t=-1),H=0,z=0,y=A,s=l,D=C,E=0,q=-1,G=1<852||2===a&&G>592)return 1;for(var O=0;;){O++,u=y-E,m[z]t?(v=M[N+m[z]],w=I[J+m[z]]):(v=96,w=0),o=1<>E)+p]=u<<24|v<<16|w|0}while(0!==p);for(o=1<>=1;if(0!==o?(H&=o-1,H+=o):H=0,z++,0==--K[y]){if(y===B)break;y=b[i+m[z]]}if(y>C&&(H&r)!==q){for(0===E&&(E=C),s+=A,D=y-E,F=1<D+E&&!(0>=(F-=K[D+E]));)D++,F<<=1;if(G+=1<852||2===a&&G>592)return 1;q=H&r,k[q]=C<<24|D<<16|s-l|0}}return 0!==H&&(k[s+H]=y-E<<24|64<<16|0),n.bits=C,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?da[a]:da[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>T-c?(a.bi_buf|=b<>T-a.bi_valid,a.bi_valid+=c-T):(a.bi_buf|=b<>>=1,c<<=1}while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;S>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;R>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)(e=a.heap[--c])>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(S+1),g=0;for(d=1;S>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(S+1);for(c=0,d=0;M-1>d;d++)for(fa[d]=c,a=0;a<1<d;d++)for(ga[d]=e,a=0;a<1<<$[d];a++)da[e++]=d;for(e>>=7;P>d;d++)for(ga[d]=e<<7,a=0;a<1<<$[d]-7;a++)da[256+e++]=d;for(b=0;S>=b;b++)f[b]=0;for(a=0;143>=a;)ba[2*a+1]=8,a++,f[8]++;for(;255>=a;)ba[2*a+1]=9,a++,f[9]++;for(;279>=a;)ba[2*a+1]=7,a++,f[7]++;for(;287>=a;)ba[2*a+1]=8,a++,f[8]++;for(l(ba,O+1,f),a=0;P>a;a++)ca[2*a+1]=5,ca[2*a]=i(a,5);ha=new ka(ba,Z,N+1,O,S),ia=new ka(ca,$,0,P,S),ja=new ka(new Array(0),_,0,Q,U)}function n(a){var b;for(b=0;O>b;b++)a.dyn_ltree[2*b]=0;for(b=0;P>b;b++)a.dyn_dtree[2*b]=0;for(b=0;Q>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*V]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do{c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1)}while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*W]++):10>=h?a.bl_tree[2*X]++:a.bl_tree[2*Y]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj)do{h(a,e,a.bl_tree)}while(0!=--j);else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,W,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,X,a.bl_tree),g(a,j-3,3)):(h(a,Y,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=Q-1;b>=3&&0===a.bl_tree[2*aa[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4), -e=0;d>e;e++)g(a,a.bl_tree[2*aa[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;N>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){ma||(m(),ma=!0),a.l_desc=new la(a.dyn_ltree,ha),a.d_desc=new la(a.dyn_dtree,ia),a.bl_desc=new la(a.bl_tree,ja),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,V,ba),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ba,ca)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ea[c]+N+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=29,N=256,O=N+1+M,P=30,Q=19,R=2*O+1,S=15,T=16,U=7,V=256,W=16,X=17,Y=18,Z=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],$=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],aa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ba=new Array(2*(O+2));d(ba);var ca=new Array(2*P);d(ca);var da=new Array(512);d(da);var ea=new Array(256);d(ea);var fa=new Array(M);d(fa);var ga=new Array(P);d(ga);var ha,ia,ja,ka=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},la=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},ma=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),wmsx.EmbeddedFiles={get:function(a){if(a.indexOf("|")<0)return this.getFile(a);for(var b=a.split(/\s*\|\s*/),c=new Array(b.length),d=0;d0||(a.success=!0,a.content=wmsx.Util.arraysConcatAll(a.filesContent),a.onSuccess&&a.onSuccess(a),j())}function i(a,b){var d="Could not load file: "+a.url+"\nError: "+b;a.success=!1,a.error=b,a.errorMessage=d,a.onError?(wmsx.Util.error(d),a.onError(a)):c||wmsx.Util.message(d),j()}function j(){if(!q){for(var d=0;d>>8}function fromE(){return 255&DE}function fromH(){return HL>>>8}function fromL(){return 255&HL}function fromIXh(){return IX>>>8}function fromIXl(){return 255&IX}function fromIYh(){return IY>>>8}function fromIYl(){return 255&IY}function toA(a){A=a}function toB(a){B=a}function toC(a){C=a}function toD(a){DE=255&DE|a<<8}function toE(a){DE=65280&DE|a}function toH(a){HL=255&HL|a<<8}function toL(a){HL=65280&HL|a}function toIXh(a){IX=255&IX|a<<8}function toIXl(a){IX=65280&IX|a}function toIYh(a){IY=255&IY|a<<8}function toIYl(a){IY=65280&IY|a}function fromAF(){return A<<8|F}function fromBC(){return B<<8|C}function fromDE(){return DE}function fromHL(){return HL}function fromSP(){return SP}function fromIX(){return IX}function fromIY(){return IY}function toAF(a){A=a>>>8,F=255&a}function toBC(a){B=a>>>8,C=255&a}function toDE(a){DE=a}function toHL(a){HL=a}function toSP(a){SP=a}function toIX(a){IX=a}function toIY(a){IY=a}function from_BC_8(){return bus.read(fromBC())}function from_DE_8(){return bus.read(DE)}function from_HL_8(){return bus.read(HL)}function from_SP_16(){var a=SP+1;return a>65535&&(a=0),bus.read(SP)|bus.read(a)<<8}function to_BC_8(a){bus.write(fromBC(),a)}function to_DE_8(a){bus.write(DE,a)}function to_HL_8(a){bus.write(HL,a)}function to_SP_16(a){bus.write(SP,255&a);var b=SP+1;b>65535&&(b=0),bus.write(b,a>>>8)}function preReadIXYd(){preReadIXYdOffset=bus.read(pcInc())}function from_IXd_8(){return bus.read(sum16Signed(IX,bus.read(pcInc())))}function from_IYd_8(){return bus.read(sum16Signed(IY,bus.read(pcInc())))} -function to_IXd_8(a){bus.write(sum16Signed(IX,bus.read(pcInc())),a)}function to_IYd_8(a){bus.write(sum16Signed(IY,bus.read(pcInc())),a)}function fromN(){return bus.read(pcInc())}function fromNN(){return bus.read(pcInc())|bus.read(pcInc())<<8}function from_NN_8(){return bus.read(bus.read(pcInc())|bus.read(pcInc())<<8)}function to_NN_8(a){var b=bus.read(pcInc())|bus.read(pcInc())<<8;bus.write(b,a)}function from_NN_16(){var a=bus.read(pcInc())|bus.read(pcInc())<<8,b=bus.read(a);return a+=1,a>65535&&(a=0),bus.read(a)<<8|b}function to_NN_16(a){var b=bus.read(pcInc())|bus.read(pcInc())<<8;bus.write(b,255&a),b+=1,b>65535&&(b=0),bus.write(b,a>>>8)}function sum16Signed(a,b){return a+(b>127?-256+b:b)&65535}function push16(a){bus.write(decSP(),a>>>8),bus.write(decSP(),255&a)}function pop16(){return bus.read(spInc())|bus.read(spInc())<<8}function NOP(){}function HALT(){--PC}function newLD(a,b){return function(){a(b())}}function LDAI(){A=I,F=1&F|168&A|(0===A)<9)&&(a-=6),(F&bC||A>153)&&(a-=96)):((F&bH||(15&A)>9)&&(a+=6),(F&bC||A>153)&&(a+=96)),a&=255,F=3&F|168&a|(0===a)<153,A=a}function CPL(){A=255&~A,F=197&F|18|40&A}function NEG(){var a=A;A=255&-A,F=bN|168&A|(0===A)<>>7),F=196&F|40&A|A&bC}function RLA(){var a=A;A=255&(A<<1|F&bC),F=196&F|40&A|a>>>7&bC}function RRCA(){A=255&(A>>>1|A<<7),F=196&F|40&A|A>>>7}function RRA(){var a=A;A=A>>>1|(F&bC)<<7,F=196&F|40&A|a&bC}function RLD(){var a=from_HL_8();to_HL_8(255&(a<<4|15&A)),A=240&A|a>>>4,F=F&bC|168&A|(0===A)<>>4)),A=240&A|15&a,F=F&bC|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newADC(a){return function(){var b=a(),c=A+b+(F&bC),d=A^b^c;A=255&c,F=168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newSUB(a){return function(){var b=a(),c=A-b,d=A^b^c;A=255&c,F=bN|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newSBC(a){return function(){var b=a(),c=A-b-(F&bC),d=A^b^c;A=255&c,F=bN|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newAND(a){return function(){A&=a(),F=bH|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newINC(a,b){return function(){var c=a()+1&255;b(c),F=F&bC|168&c|(0===c)<>>8&40|(d^e^f)>>>8&bH|f>>>16&bC}}function newADC16(a,b,c){return function(){var d=b(),e=c(),f=d+e+(F&bC);a(65535&f);var g=(d^e^f)>>>8;F=f>>>8&168|(0==(65535&f))<>>6^g>>>5)&bPV|f>>>16&bC}}function newSBC16(a,b,c){return function(){var d=b(),e=c(),f=d-e-(F&bC);a(65535&f);var g=(d^e^f)>>>8;F=bN|f>>>8&168|(0==(65535&f))<>>6^g>>>5)&bPV|f>>>16&bC}}function newINC16(a,b){return function(){a(b()+1&65535)}}function newDEC16(a,b){return function(){a(b()-1&65535)}}function newRLC(a,b,c){return function(){var d=b(),e=255&(d<<1|d>>>7);a(e),c&&c(e),F=168&e|(0===e)<>>7&bC}}function newRRC(a,b,c){return function(){var d=b(),e=255&(d>>>1|d<<7);a(e),c&&c(e),F=168&e|(0===e)<>>1|(F&bC)<<7);a(e),c&&c(e),F=168&e|(0===e)<>>7&bC}}function newSRA(a,b,c){return function(){var d=b(),e=d>>>1|128&d;a(e),c&&c(e),F=168&e|(0===e)<>>7&bC}}function newSRL(a,b,c){return function(){var d=b(),e=d>>>1;a(e),c&&c(e),F=168&e|(0===e)<0&&(extensionExtraIterations=a.extraIterations))}return function d(){if(null===extensionCurrentlyRunning){extensionCurrentlyRunning=a,extensionExtraIterations=0;c(bus.cpuExtensionBegin(b(a))),d()}else if(extensionExtraIterations>0)extensionExtraIterations--,PC-=2;else{var e=bus.cpuExtensionFinish(b(a));c(e),extensionCurrentlyRunning=null}}}function defineAllInstructions(){function a(a,c,d,e,f,g,h){var i={};return i.prefix=c?a<<8|c:a,i.opcode=d,i.remainCycles=e+1,i.totalCycles=i.remainCycles+(a?5:0)+(c?4:0),i.operation=f,i.mnemonic=g,i.undocumented=h,i.opcodeString=(i.prefix?wmsx.Util.toHex2(i.prefix):"")+(56779===i.prefix||64971===i.prefix?" ":"")+wmsx.Util.toHex2(i.opcode)+" "+g+(h?"*":""),i.toString=function(){return this.opcodeString},b(i),i}function b(a){if(self.instructionsAll.push(a),a.prefix)if(237===a.prefix)instructionsED[a.opcode]=a;else if(203===a.prefix)instructionsCB[a.opcode]=a;else if(56779===a.prefix)instructionsDDCB[a.opcode]=a;else if(64971===a.prefix)instructionsFDCB[a.opcode]=a;else if(221===a.prefix)instructionsDD[a.opcode]=a;else{if(253!==a.prefix)throw new Error("Invalid instruction prefix!");instructionsFD[a.opcode]=a}else instructions[a.opcode]=a}var c={A:{bits:7,to:toA,from:fromA,desc:"A"},B:{bits:0,to:toB,from:fromB,desc:"B"},C:{bits:1,to:toC,from:fromC,desc:"C"},D:{bits:2,to:toD,from:fromD,desc:"D"},E:{bits:3,to:toE,from:fromE,desc:"E"},H:{bits:4,to:toH,from:fromH,desc:"H"},L:{bits:5,to:toL,from:fromL,desc:"L"}},d={A:{bits:7,to:toA,from:fromA,desc:"A"},B:{bits:0,to:toB,from:fromB,desc:"B"},C:{bits:1,to:toC,from:fromC,desc:"C"},D:{bits:2,to:toD,from:fromD,desc:"D"},E:{bits:3,to:toE,from:fromE,desc:"E"},H:{bits:4,to:toH,from:fromH,desc:"H",nopref:!0},L:{bits:5,to:toL,from:fromL,desc:"L",nopref:!0},IXh:{bits:4,to:toIXh,from:fromIXh,desc:"IXh",pref:221},IXl:{bits:5,to:toIXl,from:fromIXl,desc:"IXl",pref:221},IYh:{bits:4,to:toIYh,from:fromIYh,desc:"IYh",pref:253},IYl:{bits:5,to:toIYl,from:fromIYl,desc:"IYl",pref:253}},e={_HL_:{to:to_HL_8,from:from_HL_8,desc:"(HL)"},_IXd_:{to:to_IXd_8,from:from_IXd_8,desc:"(IX+d)",pref:221},_IYd_:{to:to_IYd_8,from:from_IYd_8,desc:"(IY+d)",pref:253}},f=64;for(var g in d){var h=d[g];for(var i in d){var j=d[i];if(!(h.pref&&(j.nopref||j.pref&&j.pref!=h.pref)||j.pref&&(h.nopref||h.pref&&h.pref!=j.pref))){var k=f|h.bits<<3|j.bits,l=newLD(h.to,j.from),m=h.pref|j.pref;a(m,null,k,4,l,"LD "+h.desc+", "+j.desc,m)}}}f=6;for(g in d)h=d[g],k=f|h.bits<<3,l=newLD(h.to,fromN),m=h.pref,a(m,null,k,7,l,"LD "+h.desc+", n",m);f=70;for(g in c){h=c[g];for(i in e)j=e[i],k=f|h.bits<<3,l=newLD(h.to,j.from),m=j.pref,a(m,null,k,7+(m?8:0),l,"LD "+h.desc+", "+j.desc,!1)}f=112;for(g in e){h=e[g];for(i in c)j=c[i],k=f|j.bits,l=newLD(h.to,j.from),m=h.pref,a(m,null,k,7+(m?8:0),l,"LD "+h.desc+", "+j.desc,!1)}f=54;for(g in e)h=e[g],k=f,m=h.pref,l=m?newLD_PreRead_IXYd_(h.to.toPreReadAddr,fromN):newLD(h.to,fromN),a(m,null,k,10+(m?5:0),l,"LD "+h.desc+", n",!1);k=10,l=newLD(toA,from_BC_8),a(null,null,k,7,l,"LD A, (BC)",!1),k=26,l=newLD(toA,from_DE_8),a(null,null,k,7,l,"LD A, (DE)",!1),k=58,l=newLD(toA,from_NN_8),a(null,null,k,13,l,"LD A, (nn)",!1),k=2,l=newLD(to_BC_8,fromA),a(null,null,k,7,l,"LD (BC), A",!1),k=18,l=newLD(to_DE_8,fromA),a(null,null,k,7,l,"LD (DE), A",!1),k=50,l=newLD(to_NN_8,fromA),a(null,null,k,13,l,"LD (nn), A",!1),k=87,l=LDAI,a(null,237,k,5,l,"LD A, I",!1),k=95,l=LDAR,a(null,237,k,5,l,"LD A, R",!1),k=71,l=LDIA,a(null,237,k,5,l,"LD I, A",!1),k=79,l=LDRA,a(null,237,k,5,l,"LD R, A",!1);var n={BC:{bits:0,to:toBC,from:fromBC,desc:"BC"},DE:{bits:1,to:toDE,from:fromDE,desc:"DE"},HL:{bits:2,to:toHL,from:fromHL,desc:"HL"},SP:{bits:3,to:toSP,from:fromSP,desc:"SP"}},o={BC:{bits:0,to:toBC,from:fromBC,desc:"BC"},DE:{bits:1,to:toDE,from:fromDE,desc:"DE"},HL:{bits:2,to:toHL,from:fromHL,desc:"HL",nopref:!0},SP:{bits:3,to:toSP,from:fromSP,desc:"SP"},IX:{bits:2,to:toIX,from:fromIX,desc:"IX",pref:221},IY:{bits:2,to:toIY,from:fromIY,desc:"IY",pref:253}},p={BC:{bits:0,to:toBC,from:fromBC,desc:"BC"},DE:{bits:1,to:toDE,from:fromDE,desc:"DE"},HL:{bits:2,to:toHL,from:fromHL,desc:"HL"},AF:{bits:3,to:toAF,from:fromAF,desc:"AF"},IX:{bits:2,to:toIX,from:fromIX,desc:"IX",pref:221},IY:{bits:2,to:toIY,from:fromIY,desc:"IY",pref:253}},q={HL:{to:toHL,from:fromHL,desc:"HL",nopref:!0},IXd:{to:toIX,from:fromIX,desc:"IX",pref:221},IYd:{to:toIY,from:fromIY,desc:"IY",pref:253}};f=1;for(g in o)h=o[g],k=f|h.bits<<4,l=newLD(h.to,fromNN),m=h.pref,a(m,null,k,10,l,"LD "+h.desc+", nn",!1);k=42;for(g in q)h=q[g],l=newLD(h.to,from_NN_16),m=h.pref,a(m,null,k,16,l,"LD "+h.desc+", (nn)",!1);f=75;for(g in n)h=n[g],k=f|h.bits<<4,l=newLD(h.to,from_NN_16),a(null,237,k,16,l,"LD "+h.desc+", (nn)",!1);k=34;for(i in q)j=q[i],l=newLD(to_NN_16,j.from),m=j.pref,a(m,null,k,16,l,"LD (nn), "+j.desc,!1);f=67;for(i in n)j=n[i],k=f|j.bits<<4,l=newLD(to_NN_16,j.from),a(null,237,k,16,l,"LD (nn), "+j.desc,!1);k=249;for(i in q)j=q[i],l=newLD(toSP,j.from),m=j.pref,a(m,null,k,6,l,"LD SP, "+j.desc,!1);f=197;for(i in p)j=p[i],k=f|j.bits<<4,l=newPUSH(j.from),m=j.pref,a(m,null,k,11,l,"PUSH "+j.desc,!1);f=193;for(g in p)h=p[g],k=f|h.bits<<4,l=newPOP(h.to),m=h.pref,a(m,null,k,10,l,"POP "+h.desc,!1);k=235,l=EXDEHL,a(null,null,k,4,l,"EX DE, HL",!1),k=8,l=EXAFAF2,a(null,null,k,4,l,"EX AF, AF'",!1),k=217,l=EXX,a(null,null,k,4,l,"EXX",!1),k=227;for(var r in q){var s=q[r];l=newEXr_SP_16(s.to,s.from),m=s.pref,a(m,null,k,19,l,"EX (SP), "+s.desc,!1)}k=160,l=LDI,a(null,237,k,12,l,"LDI",!1),k=176,l=LDIR,a(null,237,k,12,l,"LDIR",!1),k=168,l=LDD,a(null,237,k,12,l,"LDD",!1),k=184,l=LDDR,a(null,237,k,12,l,"LDDR",!1),k=161,l=CPI,a(null,237,k,12,l,"CPI",!1),k=177,l=CPIR,a(null,237,k,12,l,"CPIR",!1),k=169,l=CPD,a(null,237,k,12,l,"CPD",!1),k=185,l=CPDR,a(null,237,k,12,l,"CPDR",!1);var t={ADD:{desc:"ADD A, ",instr:newADD,variations:{rp:{opcode:128},n:{opcode:198},_HLp_:{opcode:134,T:7}}},ADC:{desc:"ADC A, ",instr:newADC,variations:{rp:{opcode:136},n:{opcode:206},_HLp_:{opcode:142,T:7}}},SUB:{desc:"SUB ",instr:newSUB,variations:{rp:{opcode:144},n:{opcode:214},_HLp_:{opcode:150,T:7}}},SBC:{desc:"SBC A, ",instr:newSBC,variations:{rp:{opcode:152},n:{opcode:222},_HLp_:{opcode:158,T:7}}},AND:{desc:"AND ",instr:newAND,variations:{rp:{opcode:160},n:{opcode:230},_HLp_:{opcode:166,T:7}}},OR:{desc:"OR ",instr:newOR,variations:{rp:{opcode:176},n:{opcode:246},_HLp_:{opcode:182,T:7}}}, -XOR:{desc:"XOR ",instr:newXOR,variations:{rp:{opcode:168},n:{opcode:238},_HLp_:{opcode:174,T:7}}},CP:{desc:"CP ",instr:newCP,variations:{rp:{opcode:184},n:{opcode:254},_HLp_:{opcode:190,T:7}}},INC:{desc:"INC ",instr:newINC,selfModifyInstr:newINC_PreRead_IXYd_,variations:{rp:{opcode:4,rShift:3},_HLp_:{opcode:52,T:11}}},DEC:{desc:"DEC ",instr:newDEC,selfModifyInstr:newDEC_PreRead_IXYd_,variations:{rp:{opcode:5,rShift:3},_HLp_:{opcode:53,T:11}}}};for(var u in t){var v=t[u],w=v.variations.rp;f=w.opcode;for(r in d)s=d[r],k=f|s.bits<",!1),k=237,l=pSET_ED,a(null,null,k,4,l,"< SET ED >",!1),k=221,l=pSET_DD,a(null,null,k,4,l,"< SET DD >",!1),k=221,l=pSET_DD,a(221,null,k,4,l,"< SET DD again >",!1),k=253,l=pSET_FD,a(221,null,k,4,l,"< SWITCH to FD >",!1),k=203,l=pSET_DDCB,a(221,null,k,3,l,"< SET DDCB >",!1),k=253,l=pSET_FD,a(null,null,k,4,l,"< SET FD >",!1),k=253,l=pSET_FD,a(253,null,k,4,l,"< SET FD again >",!1),k=221,l=pSET_DD,a(253,null,k,4,l,"< SWITCH to DD >",!1),k=203,l=pSET_FDCB,a(253,null,k,3,l,"< SET FDCB >",!1),k=257,l=pADT_CYCLES,instructionADT_CYCLES=a(null,null,k,0,l,"< ADT CYCLES >",!1)}var self=this;this.powerOn=function(){toAF(65533),toBC(65535),DE=65535,HL=65535,AF2=65533,BC2=65535,DE2=65535,HL2=65535,toIX(65535),toIY(65535),SP=65535,setINT(255),this.reset()},this.powerOff=function(){}, -this.clockPulses=function(a){for(var b=a*turboClockMulti|0,c=b;c>0;--c)--T>1||(T>0?instruction.operation():(++R,ackINT?acknowledgeINT():fetchNextInstruction()));busCycles+=a},this.connectBus=function(a){bus=a},this.reset=function(){busCycles=0,T=-1,opcode=null,ackINT=!1,instruction=null,prefix=0,PC=0,I=0,R=0,IFF1=0,IM=0,extensionCurrentlyRunning=null,extensionExtraIterations=0},this.setINTChannel=function(a,b){setINT(b?INT|1<8?8:a},this.getCPUTurboMulti=function(){return turboClockMulti},this.getCPUTurboFreqDesc=function(){return(3.58*turboClockMulti).toFixed(2)+" MHz"};var turboClockMulti=1,extensionCurrentlyRunning=null,extensionExtraIterations=0,bus,INT=255,PC=0,SP=0,A=0,F=0,B=0,C=0,DE=0,HL=0,IX=0,IY=0,AF2=0,BC2=0,DE2=0,HL2=0,I=0,R=0,IFF1=0,IM=0,bS=128,nS=7,bZ=64,nZ=6,bF5=32,nF5=5,bH=16,nH=4,bF3=8,nF3=3,bPV=4,nPV=2,bN=2,nN=1,bC=1,nC=0,busCycles=0,T=-1,opcode,prefix,instruction,ackINT=!1,instructions=new Array(270),instructionsED=new Array(270),instructionsCB=new Array(270),instructionsDD=new Array(270),instructionsFD=new Array(270),instructionsDDCB=new Array(270),instructionsFDCB=new Array(270),instructionsByPrefix=[instructions,instructionsED,instructionsCB,instructionsDD,instructionsFD,instructionsDDCB,instructionsFDCB,instructions],instructionADT_CYCLES,instructionHALT;this.instructionsAll=[];var preReadIXYdOffset=0;from_IXd_8.fromPreReadAddr=function(){return bus.read(sum16Signed(IX,preReadIXYdOffset))},from_IYd_8.fromPreReadAddr=function(){return bus.read(sum16Signed(IY,preReadIXYdOffset))},to_IXd_8.toPreReadAddr=function(a){bus.write(sum16Signed(IX,preReadIXYdOffset),a)},to_IYd_8.toPreReadAddr=function(a){bus.write(sum16Signed(IY,preReadIXYdOffset),a)};var parities=[4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4];this.saveState=function(){return{PC:PC,SP:SP,A:A,F:F,B:B,C:C,DE:DE,HL:HL,IX:IX,IY:IY,AF2:AF2,BC2:BC2,DE2:DE2,HL2:HL2,I:I,R:R,IM:IM,IFF1:IFF1,INT:INT,nINT:1,c:busCycles,T:T,o:opcode,p:prefix,ai:ackINT,ii:this.instructionsAll.indexOf(instruction),ecr:extensionCurrentlyRunning,eei:extensionExtraIterations,tcm:turboClockMulti}},this.loadState=function(a){PC=a.PC,SP=a.SP,A=a.A,F=a.F,B=a.B,C=a.C,DE=a.DE,HL=a.HL,IX=a.IX,IY=a.IY,AF2=a.AF2,BC2=a.BC2,DE2=a.DE2,HL2=a.HL2,I=a.I,R=a.R,IM=a.IM,IFF1=a.IFF1,setINT(a.nINT?a.INT:a.INT?255:254),busCycles=a.c,T=a.T,opcode=a.o,prefix=a.p,ackINT=a.ai,instruction=this.instructionsAll[a.ii]||null,extensionCurrentlyRunning=a.ecr,extensionExtraIterations=a.eei,turboClockMulti=void 0!==a.tcm?a.tcm:a.tcs>0?2:1},this.toString=function(){return"CPU PC: "+wmsx.Util.toHex2(PC)+" op: "+(instruction?instruction.mnemonic:"NULL")+" cycle: "+busCycles+"\n\nA: "+wmsx.Util.toHex2(A)+" B: "+wmsx.Util.toHex2(B)+" C: "+wmsx.Util.toHex2(C)+" D: "+wmsx.Util.toHex2(DE>>>8)+" E: "+wmsx.Util.toHex2(255&DE)+" H: "+wmsx.Util.toHex2(HL>>>8)+" L: "+wmsx.Util.toHex2(255&HL)+"\nBC: "+wmsx.Util.toHex2(fromBC())+" DE: "+wmsx.Util.toHex2(DE)+" HL: "+wmsx.Util.toHex2(HL)+" IX: "+wmsx.Util.toHex2(IX)+" IY: "+wmsx.Util.toHex2(IY)+" SP: "+wmsx.Util.toHex2(SP)+"\n\nFlags: "+(F&bS?"S ":"- ")+(F&bZ?"Z ":"- ")+(F&bF5?"5 ":"- ")+(F&bH?"H ":"- ")+(F&bF3?"3 ":"- ")+(F&bPV?"P ":"- ")+(F&bN?"N ":"- ")+(F&bC?"C":"-")+" IFF: "+IFF1+" INT: "+wmsx.Util.toHex2(INT)+" prefix: "+prefix},this.eval=function(str){return eval(str)},init()},wmsx.Z80.BASE_CLOCK=3584160,wmsx.PPI=function(a,b){"use strict";function c(){i=15&f,g!==(128&f)>0&&(g=!g,a.setPulseSignal(g))}function d(){h!==(32&f)>0&&(h=!h,a.setPulseSignal(h))}this.connectBus=function(a){e=a,e.connectInputDevice(168,this.inputA8),e.connectOutputDevice(168,this.outputA8),e.connectInputDevice(169,this.inputA9),e.connectOutputDevice(169,wmsx.DeviceMissing.outputPortIgnored),e.connectInputDevice(170,this.inputAA),e.connectOutputDevice(170,this.outputAA),e.connectInputDevice(171,wmsx.DeviceMissing.inputPortIgnored),e.connectOutputDevice(171,this.outputAB)},this.powerOn=function(){},this.powerOff=function(){},this.inputA8=function(){return e.getPrimarySlotConfig()},this.outputA8=function(a){e.setPrimarySlotConfig(a)},this.inputA9=function(){return b.readKeyboardPort(i)},this.inputAA=function(){return f},this.outputAA=function(a){f!==a&&(f=a,c(),d())},this.outputAB=function(a){0==(1&a)?f&=~(1<<((14&a)>>>1)):f|=1<<((14&a)>>>1);var b=(14&a)>>>1;b<=3||7===b?c():5===b&&d()};var e,f=0,g=!1,h=!1,i=0;this.saveState=function(){return{c:f}},this.loadState=function(a){f=a.c||0,c(),d()}},wmsx.VDP=function(machine,cpu){"use strict";function init(){videoSignal=new wmsx.VideoSignal(self),cpuClockPulses=cpu.clockPulses,audioClockPulse32=machine.getAudioSocket().audioClockPulse32,initFrameResources(!1),initColorCaches(),initDebugPatternTables(),initSpritesConflictMap(),modeData=modes[0],pendingBackdropCacheUpdate=!0,self.setDefaults(),commandProcessor=new wmsx.VDPCommandProcessor,commandProcessor.connectVDP(self,vram,register,status),commandProcessor.setVDPModeData(modeData)}function registerWrite(a,b){if(!(a>46)){var c,d=register[a]^b;switch(register[a]=b,a){case 0:16&d&&updateIRQ(),14&d&&updateMode();break;case 1:32&d&&updateIRQ(),64&d&&(blankingChangePending=!0),24&d&&updateMode(),4&d&&updateBlinking(),3&d&&updateSpritesConfig();break;case 2:127&d&&updateLayoutTableAddress();break;case 10:if(0==(7&d))break;case 3:c=131071&(register[10]<<14|register[3]<<6),colorTableAddress=c&modeData.colorTBase,colorTableAddressMask=c|colorTableAddressMaskBase;break;case 4:if(0==(63&d))break;c=b<<11&131071,patternTableAddress=c&modeData.patTBase,patternTableAddressMask=c|patternTableAddressMaskBase;break;case 11:if(0==(3&d))break;case 5:c=131071&(register[11]<<15|register[5]<<7),spriteAttrTableAddress=c&modeData.sprAttrTBase;break;case 6:63&d&&updateSpritePatternTableAddress();break;case 7:d&(modeData.bdPaletted?15:255)&&updateBackdropColor();break;case 8:32&d&&updateTransparency(),2&d&&updateSpritesConfig();break;case 9:128&d&&updateSignalMetrics(!1),8&d&&updateRenderMetrics(!1),4&d&&updateLayoutTableAddressMask(),2&d&&updateVideoStandardSoft();break;case 13:updateBlinking();break;case 14:7&d&&(vramPointer=(7&b)<<14|16383&vramPointer);break;case 16:paletteFirstWrite=null;break;case 18:15&d&&(horizontalAdjust=(15&b^7)-7),240&d&&(verticalAdjust=(b>>>4^7)-7,updateSignalMetrics(!1));break;case 19:horizontalIntLine=b-register[23]&255;break;case 23:horizontalIntLine=register[19]-b&255;break;case 25:isV9958&&(24&d&&updateMode(),leftMask=0!=(2&b),leftScroll2Pages=0!=(1&b));break;case 26:isV9958&&(leftScrollChars=63&b,leftScrollCharsInPage=31&leftScrollChars);break;case 27:isV9958&&(rightScrollPixels=7&b);break;case 44:commandProcessor.cpuWrite(b);break;case 46:commandProcessor.startCommand(b)}}}function updateLayoutTableAddress(){var a=modeData.vramInter?(63®ister[2])<<11|1024:(127®ister[2])<<10;layoutTableAddress=a&modeData.layTBase,layoutTableAddressMaskSetValue=a|layoutTableAddressMaskBase,updateLayoutTableAddressMask()}function updateLayoutTableAddressMask(){layoutTableAddressMask=layoutTableAddressMaskSetValue&(blinkEvenPage||4®ister[9]&&0==(2&status[2])?modeData.blinkPageMask:-1)}function updateSpritePatternTableAddress(){spritePatternTableAddress=debugModeSpriteInfo?16===spritesSize?DEBUG_PAT_DIGI16_TABLE_ADDRESS:DEBUG_PAT_DIGI8_TABLE_ADDRESS:register[6]<<11&131071}function getStatus0(){ -var a=0;return verticalIntReached&&(a|=128,verticalIntReached=!1,updateIRQ()),spritesCollided&&(a|=32,spritesCollided=!1),spritesInvalid>=0?(a|=64|spritesInvalid,spritesInvalid=-1):a|=spritesMaxComputed,spritesMaxComputed=0,a}function checkVRAMPointerWrap(){0==(16383&vramPointer)&&(modeData.isV9938&&(register[14]=register[14]+1&7),vramPointer=register[14]<<14)}function paletteRegisterWrite(a,b,c){if(paletteRegister[a]!==b||c){paletteRegister[a]=b;var d=colors512[(1792&b)>>>2|(112&b)>>>1|7&b];colorPaletteReal[a]=d,debugModeSpriteHighlight&&(d&=DEBUG_DIM_ALPHA_MASK),colorPaletteSolid[a]=d,0===a?color0Solid&&(colorPalette[0]=d):colorPalette[a]=d,a===backdropColor?updateBackdropValue():modeData.tiled&&a<=3&&(pendingBackdropCacheUpdate=!0)}}function setDebugMode(a){debugMode=(a+8)%8;var b=debugModeSpriteHighlight;debugModeSpriteHighlight=debugMode>=1&&debugMode<=3,debugModeSpriteInfo=2===debugMode||3===debugMode,debugModeSpriteInfoNumbers=2===debugMode,debugModeSpritesHidden=debugMode>=4;var c=debugModePatternInfo;debugModePatternInfo=debugMode>=5,debugModePatternInfoBlocks=6===debugMode,debugModePatternInfoNames=7===debugMode,b===debugModeSpriteHighlight&&c===debugModePatternInfo||debugAdjustPalette(),initFrameResources(debugModeSpriteHighlight),updateLineActiveType(),updateSpritesConfig(),updateSpritePatternTableAddress(),videoSignal.setDebugMode(debugMode>0)}function setSpriteDebugMode(a){spriteDebugMode=a>=0?a%4:4+a,spriteDebugModeLimit=0===spriteDebugMode||2===spriteDebugMode,spriteDebugModeCollisions=spriteDebugMode<2}function debugAdjustPalette(){if(isV9918)initColorPalette();else for(var a=0;a<16;a++)paletteRegisterWrite(a,paletteRegister[a],!0)}function updateSynchronization(){pulldown=1===vSynchMode?videoStandard.pulldowns[machine.getVideoClockSocket().getVSynchNativeFrequency()]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER}function cycleEvents(){var a=framePulldown.linesPerCycle;pulldown.steps>1&&frame%pulldown.steps==0&&(a+=pulldown.firstStepCycleLinesAdjust);for(var b=a;b>0;b-=1)lineEvents(),(currentScanline+=1)>=finishingScanline&&finishFrame()}function lineEvents(){blinkPerLine&&blinkPageDuration>0&&clockPageBlinking()&&updateLayoutTableAddressMask(),currentScanline===startingActiveScanline?setActiveDisplay():currentScanline-frameStartingActiveScanline===signalActiveHeight&&setBorderDisplay(),cpuClockPulses(33),audioClockPulse32(),blankingChangePending&&updateLineActiveType(),1&status[1]&&0==(16®ister[0])&&(status[1]&=-2),currentScanline===startingActiveScanline-1?status[2]&=-65:currentScanline-frameStartingActiveScanline===signalActiveHeight&&triggerVerticalInterrupt(),cpuClockPulses(10),status[2]&=-33,cpuClockPulses(22),audioClockPulse32(),cpuClockPulses(33),audioClockPulse32(),cpuClockPulses(32),audioClockPulse32(),currentScanline>=startingVisibleTopBorderScanline&¤tScanline>1,c=vram.slice(0,b),d=0;d>1,b=0,c=a,d=vram.slice(a),e=0;e>>1;commandProcessor.setVDPModeData(modes[b]),isV9958&&0!=(8®ister[25])&&0==(16&b)&&(b=32|(24®ister[25])>>3),modeData=modes[b];var c;updateLayoutTableAddress(),c=131071&(register[10]<<14|register[3]<<6),colorTableAddress=c&modeData.colorTBase,colorTableAddressMask=c|colorTableAddressMaskBase,c=register[4]<<11&131071,patternTableAddress=c&modeData.patTBase,patternTableAddressMask=c|patternTableAddressMaskBase,c=131071&(register[11]<<15|register[5]<<7),spriteAttrTableAddress=c&modeData.sprAttrTBase,updateSpritePatternTableAddress(),modeData.bdPaletted!==a.bdPaletted&&updateBackdropColor(),modeData.tiled!==a.tiled&&(pendingBackdropCacheUpdate=!0),updateVRAMInterleaving(),updateLineActiveType(),updateRenderMetrics(!1)}function updateVideoStandardSoft(){var a=2®ister[9];machine.setVideoStandardSoft(a?wmsx.VideoStandard.PAL:wmsx.VideoStandard.NTSC)}function updateSignalMetrics(a){var b;isV9918?(signalActiveHeight=192,b=0):128®ister[9]?(signalActiveHeight=212,b=0):(signalActiveHeight=192,b=10),startingVisibleTopBorderScanline=8,startingActiveScanline=startingVisibleTopBorderScanline+8+b+verticalAdjust,startingInvisibleScanline=startingActiveScanline+signalActiveHeight+8+b-verticalAdjust,finishingScanline=frameVideoStandard.totalHeight,a&&(frameStartingActiveScanline=startingActiveScanline)}function updateRenderMetrics(a){var b,c,d,e,f=!1;isV9918?(b=wmsx.VDP.SIGNAL_WIDTH_V9918,d=2,c=wmsx.VDP.SIGNAL_HEIGHT_V9918,e=2):(512===modeData.width?(b=544,d=1):(b=272,d=2),8®ister[9]?(c=456,e=1):(c=228,e=2)),renderMetricsChangePending=!1,b===renderWidth&&c===renderHeight||(b!==renderWidth&&(currentScanlinerenderWidth?(currentScanline>=startingVisibleTopBorderScanline&&stretchFromCurrentToTopScanline(),renderWidth=b,f=!0):renderMetricsChangePending=!0),c!==renderHeight&&(a?(cleanFrameBuffer(),renderHeight=c,f=!0):renderMetricsChangePending=!0),f&&videoSignal.setPixelMetrics(d,e))}function setActiveDisplay(){renderLine=renderLineActive}function setBorderDisplay(){renderLine=renderLineBorders}function updateLineActiveType(){var a=renderLine===renderLineActive;renderLineActive=0==(64®ister[1])?renderLineBlanked:debugModePatternInfo?modeData.renderLinePatInfo:modeData.renderLine,a&&(renderLine=renderLineActive),blankingChangePending=!1}function updateSpritesConfig(){spritesEnabled=!debugModeSpritesHidden&&0==(2®ister[8]),spritesSize=2®ister[1]?16:8,spritesMag=1®ister[1]}function updateTransparency(){color0Solid=0!=(32®ister[8]),colorPalette[0]=color0Solid?colorPaletteSolid[0]:backdropValue}function updateBackdropColor(){backdropColor=register[7]&(modeData.bdPaletted?15:255),updateBackdropValue()}function updateBackdropValue(){var a=debugModePatternInfo?debugBackdropValue:modeData.bdPaletted?colorPaletteSolid[backdropColor]:colors256[backdropColor];backdropValue!==a&&(backdropValue=a,color0Solid||(colorPalette[0]=a),pendingBackdropCacheUpdate=!0)}function updateBackdropCache(){if(modeData.tiled&&!debugModePatternInfo){for(var a=colorPaletteSolid[backdropColor>>>2],b=colorPaletteSolid[3&backdropColor],c=0;c>>4==0?(blinkEvenPage=!1,blinkPageDuration=0):0==(15®ister[13])?(blinkEvenPage=!0,blinkPageDuration=0):(blinkEvenPage=!0,blinkPageDuration=1),updateLayoutTableAddressMask()}function clockPageBlinking(){ -return 0==--blinkPageDuration&&(blinkEvenPage=!blinkEvenPage,blinkPageDuration=10*(register[13]>>>(blinkEvenPage?4:0)&15),!0)}function renderLineBorders(){pendingBackdropCacheUpdate&&updateBackdropCache(),frameBackBuffer.set(backdropFullLineCache,bufferPosition),bufferPosition+=bufferLineAdvance}function renderLineBlanked(){renderLineBorders()}function getRealLine(){return currentScanline-frameStartingActiveScanline+register[23]&255}function renderLineModeT1(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=register[7],d=patternTableAddress+(7&b),e=colorPalette[c>>>4],f=colorPalette[15&c],g=layoutTableAddress+40*(b>>>3);paintBackdrop8(a),a+=8;for(var h=0;h<40;++h){var i=vram[g++];paintPattern6(a,vram[(i<<3)+d],e,f),a+=6}paintBackdrop8(a),a+=8,a-=rightScrollPixels+256,leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeT2(){paintBackdrop32(bufferPosition),paintBackdrop32(bufferPosition+512);var a,b,c,d,e,f=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),g=getRealLine(),h=patternTableAddress+(7&g),i=layoutTableAddress+80*(g>>>3);if(paintBackdrop16(f),f+=16,blinkEvenPage)for(var j=colorTableAddress+10*(g>>>3),k=7,l=0;l<80;++l){var m=vram[j&colorTableAddressMask]>>>k&1;a=vram[i++&layoutTableAddressMask],c=register[m?12:7],b=vram[(a<<3)+h],d=m?colorPaletteSolid[c>>>4]:colorPalette[c>>>4],e=m?colorPaletteSolid[15&c]:colorPalette[15&c],paintPattern6(f,b,d,e),--k<0&&(j++,k=7),f+=6}else for(c=register[7],d=colorPalette[c>>>4],e=colorPalette[15&c],l=0;l<80;++l)a=vram[i++&layoutTableAddressMask],b=vram[(a<<3)+h],paintPattern6(f,b,d,e),f+=6;paintBackdrop16(f),f+=16,f-=512+(rightScrollPixels<<1),leftMask&&paintBackdrop16(f),rightScrollPixels&&paintBackdrop16(f+512),bufferPosition+=bufferLineAdvance}function renderLineModeMC(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=patternTableAddress+((b>>>3&3)<<1)+(b>>>2&1),d=layoutTableAddress+(b>>>3<<5),e=d+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(e&=modeData.evenPageMask);for(var f=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,g=0;g<32;++g){g===f&&(e=leftScroll2Pages&&leftScrollChars>=32?d&modeData.evenPageMask:d);var h=vram[e++],i=(h<<3)+c,j=vram[i];paintPattern8(a,240,colorPalette[j>>>4],colorPalette[15&j]),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG1(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=patternTableAddress+(7&b),d=layoutTableAddress+(b>>>3<<5),e=d+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(e&=modeData.evenPageMask);for(var f=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,g=0;g<32;++g){g===f&&(e=leftScroll2Pages&&leftScrollChars>=32?d&modeData.evenPageMask:d);var h=vram[e++],i=vram[colorTableAddress+(h>>>3)];paintPattern8(a,vram[(h<<3)+c],colorPalette[i>>>4],colorPalette[15&i]),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG2(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=colorTableAddress+(7&b),d=patternTableAddress+(7&b),e=(192&b)<<2,f=layoutTableAddress+(b>>>3<<5),g=f+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(g&=modeData.evenPageMask);for(var h=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,i=0;i<32;++i){i===h&&(g=leftScroll2Pages&&leftScrollChars>=32?f&modeData.evenPageMask:f);var j=vram[g++]|e,k=vram[(j<<3)+c&colorTableAddressMask];paintPattern8(a,vram[(j<<3)+d&patternTableAddressMask],colorPalette[k>>>4],colorPalette[15&k]),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG3(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=colorTableAddress+(7&b),d=patternTableAddress+(7&b),e=(192&b)<<2,f=layoutTableAddress+(b>>>3<<5),g=f+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(g&=modeData.evenPageMask);for(var h=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,i=0;i<32;++i){i===h&&(g=leftScroll2Pages&&leftScrollChars>=32?f&modeData.evenPageMask:f);var j=vram[g++]|e,k=vram[(j<<3)+c&colorTableAddressMask];paintPattern8(a,vram[(j<<3)+d&patternTableAddressMask],colorPalette[k>>>4],colorPalette[15&k]),a+=8}a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG4(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=layoutTableAddress+(b<<7),d=c+(leftScrollCharsInPage<<2);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++&layoutTableAddressMask];frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g]}a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG5(){paintBackdrop32Tiled(bufferPosition),paintBackdrop32Tiled(bufferPosition+512);var a=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),b=getRealLine(),c=layoutTableAddress+(b<<7),d=c+(leftScrollCharsInPage<<2);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1;if(color0Solid)for(var f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++&layoutTableAddressMask];frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g]}else for(f=0;f<32;++f)f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c),g=vram[d++&layoutTableAddressMask], -frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven,g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven,g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven,g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven;a-=512+(rightScrollPixels<<1),spritesEnabled&&renderSpritesLineMode2Tiled(b,a),leftMask&&paintBackdrop16Tiled(a),rightScrollPixels&&paintBackdrop16Tiled(a+512),bufferPosition+=bufferLineAdvance}function renderLineModeG6(){paintBackdrop32(bufferPosition),paintBackdrop32(bufferPosition+512);var a=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),b=getRealLine(),c=layoutTableAddress+(b<<8),d=c+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++&layoutTableAddressMask];frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g]}a-=512+(rightScrollPixels<<1),spritesEnabled&&renderSpritesLineMode2Stretched(b,a),leftMask&&paintBackdrop16(a),rightScrollPixels&&paintBackdrop16(a+512),bufferPosition+=bufferLineAdvance}function renderLineModeG7(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=debugModeSpriteHighlight?DEBUG_DIM_ALPHA_MASK:4294967295,d=layoutTableAddress+(b<<8),e=d+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(e&=modeData.evenPageMask);for(var f=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,g=0;g<32;++g)g===f&&(e=leftScroll2Pages&&leftScrollChars>=32?d&modeData.evenPageMask:d),frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c;a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,spritePaletteG7),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeYJK(){paintBackdrop20(bufferPosition),paintBackdrop16(bufferPosition+256+4);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels+4,b=getRealLine(),c=layoutTableAddress+(b<<8),d=c+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e,f,g,h,i,j,k,l,m,n,o=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,p=4278190080&(debugModeSpriteHighlight?DEBUG_DIM_ALPHA_MASK:4278190080),q=0;q<32;++q)q===o&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c),e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=h>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=h>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l;a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeYAE(){paintBackdrop20(bufferPosition),paintBackdrop16(bufferPosition+256+4);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels+4,b=getRealLine(),c=layoutTableAddress+(b<<8),d=c+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e,f,g,h,i,j,k,l,m,n,o=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,p=4278190080&(debugModeSpriteHighlight?DEBUG_DIM_ALPHA_MASK:4278190080),q=0;q<32;++q)q===o&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c),e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),8&e?frameBackBuffer[a++]=colorPalette[e>>4]:(i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&f?frameBackBuffer[a++]=colorPalette[f>>4]:(i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&g?frameBackBuffer[a++]=colorPalette[g>>4]:(i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&h?frameBackBuffer[a++]=colorPalette[h>>4]:(i=h>>3,l=from5bitsTruncTo8bits(i+j), -m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),8&e?frameBackBuffer[a++]=colorPalette[e>>4]:(i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&f?frameBackBuffer[a++]=colorPalette[f>>4]:(i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&g?frameBackBuffer[a++]=colorPalette[g>>4]:(i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&h?frameBackBuffer[a++]=colorPalette[h>>4]:(i=h>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l);a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function from5bitsTruncTo8bits(a){return a<=0?0:a>=31?color5to8bits[31]:color5to8bits[a]}function renderLineModeT1PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=7&b,d=layoutTableAddress+40*(b>>>3);paintBackdrop8(a),a+=8;for(var e=0;e<40;++e){var f=vram[d++];if(debugModePatternInfoNames){var g=0===f||32===f?4293787648:4294967295,h=vram[DEBUG_PAT_DIGI6_TABLE_ADDRESS+(f<<3)+c];paintPattern6TInfo(a,h,g,4278190080)}else h=vram[patternTableAddress+(f<<3)+c],paintPattern6(a,h,4294967295,4278190080);a+=6}paintBackdrop8(a),a+=8,a-=rightScrollPixels+256,leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeT2PatInfo(){paintBackdrop32(bufferPosition),paintBackdrop32(bufferPosition+512);var a,b,c,d=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),e=getRealLine(),f=7&e,g=layoutTableAddress+80*(e>>>3);if(paintBackdrop16(d),d+=16,blinkEvenPage)for(var h=colorTableAddress+10*(e>>>3),i=7,j=0;j<80;++j){var k=vram[h&colorTableAddressMask]>>>i&1;a=vram[g++&layoutTableAddressMask],debugModePatternInfoNames?(c=0===a||32===a?4293787648:4294967295,k&&(c&=4288716960),b=vram[DEBUG_PAT_DIGI6_TABLE_ADDRESS+(a<<3)+f],paintPattern6TInfo(d,b,c,4278190080)):(b=vram[patternTableAddress+(a<<3)+f],paintPattern6(d,b,k?4288716960:4294967295,4278190080)),--i<0&&(h++,i=7),d+=6}else for(j=0;j<80;++j)a=vram[g++&layoutTableAddressMask],debugModePatternInfoNames?(c=0===a||32===a?4293787648:4294967295,b=vram[DEBUG_PAT_DIGI6_TABLE_ADDRESS+(a<<3)+f],paintPattern6TInfo(d,b,c,4278190080)):(b=vram[patternTableAddress+(a<<3)+f],paintPattern6(d,b,4294967295,4278190080)),d+=6;paintBackdrop16(d),d+=16,d-=512+(rightScrollPixels<<1),leftMask&&paintBackdrop16(d),rightScrollPixels&&paintBackdrop16(d+512),bufferPosition+=bufferLineAdvance}function paintPattern6TInfo(a,b,c,d){var e=2550136831&c;frameBackBuffer[a]=128&b?c:d,frameBackBuffer[a+1]=64&b?c:d,frameBackBuffer[a+2]=32&b?c:d,frameBackBuffer[a+3]=16&b?e:d,frameBackBuffer[a+4]=8&b?e:d,frameBackBuffer[a+5]=4&b?e:d}function renderLineModeMCPatInfo(){if(!debugModePatternInfoNames)return renderLineModeMC();paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=layoutTableAddress+(b>>>3<<5),d=c+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++];paintPattern8(a,vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(g<<3)+(7&b)],4294967295,4278190080),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG1PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a,b,c,d=bufferPosition+8+horizontalAdjust+rightScrollPixels,e=getRealLine(),f=7&e,g=layoutTableAddress+(e>>>3<<5),h=g+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(h&=modeData.evenPageMask);for(var i=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,j=0;j<32;++j){j===i&&(h=leftScroll2Pages&&leftScrollChars>=32?g&modeData.evenPageMask:g);var k=vram[h++];if(debugModePatternInfoNames)b=0===k||32===k?4293787648:4294967295,c=4278190080,a=vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(k<<3)+f];else if(debugModePatternInfoBlocks){var l=vram[colorTableAddress+(k>>>3)];b=colorPalette[l>>>4],c=colorPalette[15&l],a=vram[DEBUG_PAT_BLOCK_TABLE_ADDRESS+f]}else b=4294967295,c=4278190080,a=vram[patternTableAddress+(k<<3)+f];paintPattern8(d,a,b,c),d+=8}d-=rightScrollPixels+256,renderSpritesLineMode1(e,d),leftMask&&paintBackdrop8(d),rightScrollPixels&&paintBackdrop8(d+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG2PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a,b,c,d=bufferPosition+8+horizontalAdjust+rightScrollPixels,e=getRealLine(),f=7&e,g=(192&e)<<2,h=layoutTableAddress+(e>>>3<<5),i=h+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(i&=modeData.evenPageMask);for(var j=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,k=0;k<32;++k){k===j&&(i=leftScroll2Pages&&leftScrollChars>=32?h&modeData.evenPageMask:h);var l=vram[i++]|g;if(debugModePatternInfoNames)l&=255,b=0===l||32===l?4293787648:4294967295,c=4278190080,a=vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(l<<3)+f];else if(debugModePatternInfoBlocks){var m=vram[colorTableAddress+(l<<3)+f&colorTableAddressMask];b=colorPalette[m>>>4],c=colorPalette[15&m],a=vram[DEBUG_PAT_BLOCK_TABLE_ADDRESS+f]}else b=4294967295,c=4278190080,a=vram[patternTableAddress+(l<<3)+f&patternTableAddressMask];paintPattern8(d,a,b,c),d+=8}d-=rightScrollPixels+256,renderSpritesLineMode1(e,d),leftMask&&paintBackdrop8(d),rightScrollPixels&&paintBackdrop8(d+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG3PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a,b,c,d=bufferPosition+8+horizontalAdjust+rightScrollPixels,e=getRealLine(),f=7&e,g=(192&e)<<2,h=layoutTableAddress+(e>>>3<<5),i=h+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(i&=modeData.evenPageMask);for(var j=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,k=0;k<32;++k){k===j&&(i=leftScroll2Pages&&leftScrollChars>=32?h&modeData.evenPageMask:h);var l=vram[i++]|g;if(debugModePatternInfoNames)l&=255,b=0===l||32===l?4293787648:4294967295,c=4278190080,a=vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(l<<3)+f];else if(debugModePatternInfoBlocks){var m=vram[colorTableAddress+(l<<3)+f&colorTableAddressMask];b=colorPalette[m>>>4],c=colorPalette[15&m],a=vram[DEBUG_PAT_BLOCK_TABLE_ADDRESS+f]}else b=4294967295,c=4278190080,a=vram[patternTableAddress+(l<<3)+f&patternTableAddressMask];paintPattern8(d,a,b,c),d+=8}d-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(e,d,colorPaletteReal),leftMask&&paintBackdrop8(d),rightScrollPixels&&paintBackdrop8(d+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function paintPattern6(a,b,c,d){frameBackBuffer[a]=128&b?c:d,frameBackBuffer[a+1]=64&b?c:d,frameBackBuffer[a+2]=32&b?c:d,frameBackBuffer[a+3]=16&b?c:d,frameBackBuffer[a+4]=8&b?c:d,frameBackBuffer[a+5]=4&b?c:d}function paintPattern8(a,b,c,d){frameBackBuffer[a]=128&b?c:d,frameBackBuffer[a+1]=64&b?c:d, -frameBackBuffer[a+2]=32&b?c:d,frameBackBuffer[a+3]=16&b?c:d,frameBackBuffer[a+4]=8&b?c:d,frameBackBuffer[a+5]=4&b?c:d,frameBackBuffer[a+6]=2&b?c:d,frameBackBuffer[a+7]=1&b?c:d}function paintBackdrop8(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue}function paintBackdrop16(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue,frameBackBuffer[a+8]=backdropValue,frameBackBuffer[a+9]=backdropValue,frameBackBuffer[a+10]=backdropValue,frameBackBuffer[a+11]=backdropValue,frameBackBuffer[a+12]=backdropValue,frameBackBuffer[a+13]=backdropValue,frameBackBuffer[a+14]=backdropValue,frameBackBuffer[a+15]=backdropValue}function paintBackdrop20(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue,frameBackBuffer[a+8]=backdropValue,frameBackBuffer[a+9]=backdropValue,frameBackBuffer[a+10]=backdropValue,frameBackBuffer[a+11]=backdropValue,frameBackBuffer[a+12]=backdropValue,frameBackBuffer[a+13]=backdropValue,frameBackBuffer[a+14]=backdropValue,frameBackBuffer[a+15]=backdropValue,frameBackBuffer[a+16]=backdropValue,frameBackBuffer[a+17]=backdropValue,frameBackBuffer[a+18]=backdropValue,frameBackBuffer[a+19]=backdropValue}function paintBackdrop32(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue,frameBackBuffer[a+8]=backdropValue,frameBackBuffer[a+9]=backdropValue,frameBackBuffer[a+10]=backdropValue,frameBackBuffer[a+11]=backdropValue,frameBackBuffer[a+12]=backdropValue,frameBackBuffer[a+13]=backdropValue,frameBackBuffer[a+14]=backdropValue,frameBackBuffer[a+15]=backdropValue,frameBackBuffer[a+16]=backdropValue,frameBackBuffer[a+17]=backdropValue,frameBackBuffer[a+18]=backdropValue,frameBackBuffer[a+19]=backdropValue,frameBackBuffer[a+20]=backdropValue,frameBackBuffer[a+21]=backdropValue,frameBackBuffer[a+22]=backdropValue,frameBackBuffer[a+23]=backdropValue,frameBackBuffer[a+24]=backdropValue,frameBackBuffer[a+25]=backdropValue,frameBackBuffer[a+26]=backdropValue,frameBackBuffer[a+27]=backdropValue,frameBackBuffer[a+28]=backdropValue,frameBackBuffer[a+29]=backdropValue,frameBackBuffer[a+30]=backdropValue,frameBackBuffer[a+31]=backdropValue}function paintBackdrop16Tiled(a){var b=backdropTileOdd,c=backdropTileEven;frameBackBuffer[a]=b,frameBackBuffer[a+1]=c,frameBackBuffer[a+2]=b,frameBackBuffer[a+3]=c,frameBackBuffer[a+4]=b,frameBackBuffer[a+5]=c,frameBackBuffer[a+6]=b,frameBackBuffer[a+7]=c,frameBackBuffer[a+8]=b,frameBackBuffer[a+9]=c,frameBackBuffer[a+10]=b,frameBackBuffer[a+11]=c,frameBackBuffer[a+12]=b,frameBackBuffer[a+13]=c,frameBackBuffer[a+14]=b,frameBackBuffer[a+15]=c}function paintBackdrop32Tiled(a){var b=backdropTileOdd,c=backdropTileEven;frameBackBuffer[a]=b,frameBackBuffer[a+1]=c,frameBackBuffer[a+2]=b,frameBackBuffer[a+3]=c,frameBackBuffer[a+4]=b,frameBackBuffer[a+5]=c,frameBackBuffer[a+6]=b,frameBackBuffer[a+7]=c,frameBackBuffer[a+8]=b,frameBackBuffer[a+9]=c,frameBackBuffer[a+10]=b,frameBackBuffer[a+11]=c,frameBackBuffer[a+12]=b,frameBackBuffer[a+13]=c,frameBackBuffer[a+14]=b,frameBackBuffer[a+15]=c,frameBackBuffer[a+16]=b,frameBackBuffer[a+17]=c,frameBackBuffer[a+18]=b,frameBackBuffer[a+19]=c,frameBackBuffer[a+20]=b,frameBackBuffer[a+21]=c,frameBackBuffer[a+22]=b,frameBackBuffer[a+23]=c,frameBackBuffer[a+24]=b,frameBackBuffer[a+25]=c,frameBackBuffer[a+26]=b,frameBackBuffer[a+27]=c,frameBackBuffer[a+28]=b,frameBackBuffer[a+29]=c,frameBackBuffer[a+30]=b,frameBackBuffer[a+31]=c}function renderSpritesLineMode1(a,b){if(!debugModeSpritesHidden&&208!==vram[spriteAttrTableAddress]){var c,d,e,f,g,h,i,j,k,l,m=spritesSize<=m)){if(++o>4&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=n),spriteDebugModeLimit))return;j=vram[c+1],d=vram[c+3],128&d&&(j-=32)<=-m||(d&=15,16===spritesSize?(e=debugModeSpriteInfoNumbers?n<<2:252&vram[c+2],f=spritePatternTableAddress+(e<<3)+(i>>>spritesMag),g=vram[f]<<8|vram[f+16]):(e=debugModeSpriteInfoNumbers?n:vram[c+2],g=vram[spritePatternTableAddress+(e<<3)+(i>>>spritesMag)]),k=j<=256-m?0:j-(256-m),l=j>=0?m:m+j,j+=m-l,paintSpriteMode1(j,a,b+j,spritesGlobalPriority+n,g,d,k,l,spritesMag,spriteDebugModeCollisions&&o<5))}spritesInvalid<0&&n>spritesMaxComputed&&(spritesMaxComputed=n)}}function paintSpriteMode1(a,b,c,d,e,f,g,h,i,j){for(var k=h-1;k>=g;k-=1,a+=1,c+=1){0!==(e>>>(k>>>i)&1)&&(spritesLinePriorities[a]=p)){if(++s>8&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=q),spriteDebugModeLimit))return;if(k>>>=spritesMag,f=vram[e+k],o=64&f){if(r===SPRITE_MAX_PRIORITY||debugModeSpriteInfo)continue}else r=spritesGlobalPriority+q;(0!=(15&f)||color0Solid)&&(l=vram[d+1],128&f&&(l-=32)<=-p||(16===spritesSize?(g=debugModeSpriteInfoNumbers?q<<2:252&vram[d+2],h=spritePatternTableAddress+(g<<3)+k,i=vram[h]<<8|vram[h+16]):(g=debugModeSpriteInfoNumbers?q:vram[d+2],i=vram[spritePatternTableAddress+(g<<3)+k]),m=l<=256-p?0:l-(256-p),n=l>=0?p:p+l,l+=p-n,o?paintSpriteMode2CC(l,b+l,r,i,15&f,c,m,n,spritesMag):paintSpriteMode2(l,a,b+l,r,i,15&f,c,m,n,spritesMag,spriteDebugModeCollisions&&0==(32&f)&&s<9)))}spritesInvalid<0&&q>spritesMaxComputed&&(spritesMaxComputed=q)}}function paintSpriteMode2(a,b,c,d,e,f,g,h,i,j,k){for(var l=i-1;l>=h;l-=1,a+=1,c+=1){0!==(e>>>(l>>>j)&1)&&(spritesLinePriorities[a]=g;k-=1,a+=1,b+=1){if(0!==(d>>>(k>>>i)&1)){var l=spritesLinePriorities[a];l=o)){if(++r>8&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=p),spriteDebugModeLimit))return;if(j>>>=spritesMag,e=vram[d+j],n=64&e){if(q===SPRITE_MAX_PRIORITY||debugModeSpriteInfo)continue}else q=spritesGlobalPriority+p;(0!=(15&e)||color0Solid)&&(k=vram[c+1],128&e&&(k-=32)<=-o||(16===spritesSize?(f=debugModeSpriteInfoNumbers?p<<2:252&vram[c+2],g=spritePatternTableAddress+(f<<3)+j, -h=vram[g]<<8|vram[g+16]):(f=debugModeSpriteInfoNumbers?p:vram[c+2],h=vram[spritePatternTableAddress+(f<<3)+j]),l=k<=256-o?0:k-(256-o),m=k>=0?o:o+k,k+=o-m,n?paintSpriteMode2TiledCC(k,b+(k<<1),q,h,15&e,l,m,spritesMag):paintSpriteMode2Tiled(k,a,b+(k<<1),q,h,15&e,l,m,spritesMag,spriteDebugModeCollisions&&0==(32&e)&&r<9)))}spritesInvalid<0&&p>spritesMaxComputed&&(spritesMaxComputed=p)}}function paintSpriteMode2Tiled(a,b,c,d,e,f,g,h,i,j){for(var k=h-1;k>=g;k-=1,a+=1,c+=2){0!==(e>>>(k>>>i)&1)&&(spritesLinePriorities[a]>>2],frameBackBuffer[c+1]=colorPaletteReal[3&f]))}}function paintSpriteMode2TiledCC(a,b,c,d,e,f,g,h){for(var i,j=g-1;j>=f;j-=1,a+=1,b+=2){if(0!==(d>>>(j>>>h)&1)){var k=spritesLinePriorities[a];k>>2],frameBackBuffer[b+1]=colorPaletteReal[3&i])}}}function renderSpritesLineMode2Stretched(a,b){if(216!==vram[spriteAttrTableAddress+512]){var c,d,e,f,g,h,i,j,k,l,m,n,o=spritesSize<=o)){if(++r>8&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=p),spriteDebugModeLimit))return;if(j>>>=spritesMag,e=vram[d+j],n=64&e){if(q===SPRITE_MAX_PRIORITY||debugModeSpriteInfo)continue}else q=spritesGlobalPriority+p;(0!=(15&e)||color0Solid)&&(k=vram[c+1],128&e&&(k-=32)<=-o||(16===spritesSize?(f=debugModeSpriteInfoNumbers?p<<2:252&vram[c+2],g=spritePatternTableAddress+(f<<3)+j,h=vram[g]<<8|vram[g+16]):(f=debugModeSpriteInfoNumbers?p:vram[c+2],h=vram[spritePatternTableAddress+(f<<3)+j]),l=k<=256-o?0:k-(256-o),m=k>=0?o:o+k,k+=o-m,n?paintSpriteMode2StretchedCC(k,b+(k<<1),q,h,15&e,l,m,spritesMag):paintSpriteMode2Stretched(k,a,b+(k<<1),q,h,15&e,l,m,spritesMag,spriteDebugModeCollisions&&0==(32&e)&&r<9)))}spritesInvalid<0&&p>spritesMaxComputed&&(spritesMaxComputed=p)}}function paintSpriteMode2Stretched(a,b,c,d,e,f,g,h,i,j){for(var k=h-1;k>=g;k-=1,a+=1,c+=2){0!==(e>>>(k>>>i)&1)&&(spritesLinePriorities[a]=f;j-=1,a+=1,b+=2){if(0!==(d>>>(j>>>h)&1)){var k=spritesLinePriorities[a];k=0||(spritesCollisionX=a+12,spritesCollisionY=b+8,0==(192®ister[8])&&(status[3]=255&spritesCollisionX,status[4]=254|spritesCollisionX>>>8,status[5]=255&spritesCollisionY,status[6]=252|spritesCollisionY>>>8))}function stretchCurrentLine(){for(var a=bufferPosition+272-1,b=bufferPosition+544-2,c=272;c>0;--c,--a,b-=2)frameBackBuffer[b]=frameBackBuffer[b+1]=frameBackBuffer[a]}function stretchFromCurrentToTopScanline(){for(var a=bufferPosition,b=currentScanline;b>=startingVisibleTopBorderScanline;--b,a-=bufferLineAdvance)for(var c=a+272-1,d=a+544-2,e=272;e>0;--e,--c,d-=2)frameBackBuffer[d]=frameBackBuffer[d+1]=frameBackBuffer[c]}function cleanFrameBuffer(){wmsx.Util.arrayFill(frameBackBuffer,modeData.tiled?4278190080:backdropValue)}function refresh(){videoSignal.newFrame(frameCanvas,refreshWidth,refreshHeight),refreshWidth=refreshHeight=0}function beginFrame(){framePulldown!==pulldown&&(frameVideoStandard=videoStandard,framePulldown=pulldown,updateSignalMetrics(!1)),currentScanline=0,frameStartingActiveScanline=startingActiveScanline,renderMetricsChangePending&&updateRenderMetrics(!0),!blinkPerLine&&blinkPageDuration>0&&clockPageBlinking(),status[2]^=2,8®ister[9]?(bufferPosition=2&status[2]?LINE_WIDTH:0,bufferLineAdvance=2*LINE_WIDTH):(bufferPosition=0,bufferLineAdvance=LINE_WIDTH),updateLayoutTableAddressMask()}function finishFrame(){refreshWidth=renderWidth,refreshHeight=renderHeight,frameContext.putImageData(frameImageData,0,0,0,0,refreshWidth,refreshHeight),frame+=1,beginFrame()}function refreshDisplayMetrics(){videoSignal.setDisplayMetrics(wmsx.VDP.SIGNAL_MAX_WIDTH_V9938,isV9918?2*wmsx.VDP.SIGNAL_HEIGHT_V9918:wmsx.VDP.SIGNAL_MAX_HEIGHT_V9938)}function initRegisters(){wmsx.Util.arrayFill(register,0),wmsx.Util.arrayFill(status,0),register[9]=videoStandard===wmsx.VideoStandard.PAL?2:0,status[1]=isV9958?4:0,status[2]=12,status[4]=254,status[6]=252,status[9]=254}function initFrameResources(a){(!frameCanvas||!frameContextUsingAlpha&&a)&&(frameContextUsingAlpha=!!a,frameCanvas=document.createElement("canvas"),frameCanvas.width=wmsx.VDP.SIGNAL_MAX_WIDTH_V9938,frameCanvas.height=wmsx.VDP.SIGNAL_MAX_HEIGHT_V9938,frameContext=frameCanvas.getContext("2d",{alpha:frameContextUsingAlpha,antialias:!1}),frameImageData||(frameImageData=frameContext.createImageData(frameCanvas.width,frameCanvas.height+1+1),frameBackBuffer=new Uint32Array(frameImageData.data.buffer,0,frameCanvas.width*(frameCanvas.height+1)),backdropFullLineCache=new Uint32Array(frameImageData.data.buffer,frameCanvas.width*(frameCanvas.height+1)*4,frameCanvas.width)))}function initColorPalette(){for(var a=isV9918?colorPaletteInitialV9918:colorPaletteInitialV9938,b=0;b<16;b+=1){paletteRegister[b]=paletteRegisterInitialValuesV9938[b];var c=a[b];colorPaletteReal[b]=c,debugModeSpriteHighlight&&(c&=DEBUG_DIM_ALPHA_MASK),colorPalette[b]=c,colorPaletteSolid[b]=c}}function initColorCaches(){for(var a=0;a<=511;a++)1&a&&(colors256[a>>>1]=4278190080|color2to8bits[a>>>1&3]<<16|color3to8bits[a>>>6]<<8|color3to8bits[a>>>3&7]),colors512[a]=4278190080|color3to8bits[7&a]<<16|color3to8bits[a>>>6]<<8|color3to8bits[a>>>3&7]}function initDebugPatternTables(){for(var a=[["111","101","101","101","111"],["110","010","010","010","111"],["111","001","111","100","111"],["111","001","111","001","111"],["101","101","111","001","001"],["111","100","111","001","111"],["111","100","111","101","111"],["111","001","001","001","001"],["111","101","111","101","111"],["111","101","111","001","001"],["110","001","111","101","111"],["100","100","111","101","110"],["000","111","100","100","111"],["001","001","111","101","111"],["110","101","111","100","011"],["011","100","110","100","100"]],b=DEBUG_PAT_DIGI6_TABLE_ADDRESS,c=DEBUG_PAT_DIGI8_TABLE_ADDRESS,d=DEBUG_PAT_DIGI16_TABLE_ADDRESS,e=DEBUG_PAT_BLOCK_TABLE_ADDRESS,f=0;f<256;f++){for(var g=f/16|0,h=f%16,i=0;i<5;i++)vram[b++]=parseInt(a[g][i]+a[h][i]+"00",2),vram[c++]=parseInt(a[g][i]+"0"+a[h][i]+"0",2);for(vram[b++]=vram[c++]=parseInt("00000000",2),vram[b++]=vram[c++]=parseInt("01111100",2),vram[b++]=vram[c++]=parseInt("00000000",2),vram[d++]=parseInt("11111111",2),i=0;i<4;i++)vram[d++]=parseInt("10000000",2);for(i=0;i<5;i++)vram[d++]=parseInt("1000"+a[g][i]+"0",2);for(i=0;i<5;i++)vram[d++]=parseInt("10000000",2);for(i=0;i<2;i++)vram[d++]=parseInt("11111111",2);for(i=0;i<4;i++)vram[d++]=parseInt("00000001",2);for(i=0;i<5;i++)vram[d++]=parseInt("0"+a[h][i]+"0001",2);for(i=0;i<5;i++)vram[d++]=parseInt("00000001",2);vram[d++]=parseInt("11111111",2)}vram[e]=vram[e+7]=0,vram[e+1]=vram[e+2]=vram[e+3]=vram[e+4]=vram[e+5]=vram[e+6]=126}function initSpritesConflictMap(){wmsx.Util.arrayFill(spritesLinePriorities,SPRITE_MAX_PRIORITY),wmsx.Util.arrayFill(spritesLineColors,0),spritesGlobalPriority=SPRITE_MAX_PRIORITY}function logInfo(a){cpu.getBUSCycles();console.log(a+", currentScanLine: "+currentScanline+", activeRenderScanline: "+(currentScanline-frameStartingActiveScanline)+", activeHeigh: "+signalActiveHeight)}var self=this;this.setMachineType=function(a){var b=WMSX.VDP_TYPE>0?WMSX.VDP_TYPE:a;isV9918=b<=1,isV9938=2===b, -isV9958=b>=3,refreshDisplayMetrics()},this.connectBus=function(a){a.connectInputDevice(152,this.input98),a.connectOutputDevice(152,this.output98),a.connectInputDevice(153,this.input99),a.connectOutputDevice(153,this.output99),a.connectInputDevice(154,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(154,this.output9a),a.connectInputDevice(155,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(155,this.output9b)},this.powerOn=function(){this.reset()},this.powerOff=function(){videoSignal.signalOff()},this.setVideoStandard=function(a){videoStandard=a,updateSynchronization()},this.setVSynchMode=function(a){vSynchMode=a,updateSynchronization()},this.getVideoOutput=function(){return videoSignal},this.getDesiredVideoPulldown=function(){return pulldown},this.videoClockPulse=function(){cycleEvents(),refreshWidth&&refresh()},this.input98=function(){dataFirstWrite=null;var a=dataPreRead;return dataPreRead=vram[vramPointer++],checkVRAMPointerWrap(),a},this.output98=function(a){dataFirstWrite=null,vram[vramPointer++]=dataPreRead=a,checkVRAMPointerWrap()},this.input99=function(){dataFirstWrite=null;var a,b=register[15];switch(b){case 0:a=getStatus0();break;case 1:a=status[1],status[1]&=-129,16®ister[0]&&1&status[1]&&(status[1]&=-2,updateIRQ());break;case 2:commandProcessor.updateStatus(),a=status[2];break;case 3:case 4:case 6:a=status[b];break;case 5:a=status[5],spritesCollisionX=spritesCollisionY=-1,status[3]=status[4]=status[5]=status[6]=0;break;case 7:a=status[7],commandProcessor.cpuRead();break;case 8:case 9:a=status[b];break;default:a=255}return a},this.output99=function(a){null===dataFirstWrite?(dataFirstWrite=a,isV9918&&(vramPointer=-256&vramPointer|a)):(128&a?isV9918?(registerWrite(7&a,dataFirstWrite),vramPointer=114943&vramPointer|(63&a)<<8):0==(64&a)&®isterWrite(63&a,dataFirstWrite):(vramPointer=114688&vramPointer|(63&a)<<8|dataFirstWrite,0==(64&a)&&(dataPreRead=vram[vramPointer++],checkVRAMPointerWrap())),dataFirstWrite=null)},this.output9a=function(a){isV9918||(null===paletteFirstWrite?paletteFirstWrite=a:(paletteRegisterWrite(register[16],a<<8|paletteFirstWrite,!1),++register[16]>15&&(register[16]=0),paletteFirstWrite=null))},this.output9b=function(a){if(!isV9918){var b=63®ister[17];17!==b&®isterWrite(b,a),0==(128®ister[17])&&(register[17]=b+1&63)}},this.toggleDebugModes=function(a){return setDebugMode(debugMode+(a?-1:1)),videoSignal.showOSD("Debug Mode"+(debugMode>0?" "+debugMode:"")+": "+["OFF","Sprites Highlighted","Sprite Numbers","Sprite Names","Sprites Hidden","Pattern Bits","Pattern Color Blocks","Pattern Names"][debugMode],!0),debugMode},this.toggleSpriteDebugModes=function(a){setSpriteDebugMode(spriteDebugMode+(a?-1:1)),videoSignal.showOSD("Sprites Mode"+(spriteDebugMode>0?" "+spriteDebugMode:"")+": "+["Normal","Unlimited","NO Collisions","Unlimited, No Collisions"][spriteDebugMode],!0)},this.getSpriteDebugModeQuickDesc=function(){return["Normal","Unlimited","No Collis.","Both"][spriteDebugMode]},this.setVDPTurboMulti=function(a){commandProcessor.setVDPTurboMulti(a)},this.getVDPTurboMulti=function(){return commandProcessor.getVDPTurboMulti()},this.setDefaults=function(){setDebugMode(STARTING_DEBUG_MODE),setSpriteDebugMode(STARTING_SPRITES_DEBUG_MODE)},this.reset=function(){frame=cycles=lastBUSCyclesComputed=0,dataFirstWrite=null,dataPreRead=0,vramPointer=0,paletteFirstWrite=null,verticalAdjust=horizontalAdjust=0,leftMask=leftScroll2Pages=!1,leftScrollChars=leftScrollCharsInPage=rightScrollPixels=0,backdropColor=backdropValue=0,spritesCollided=!1,spritesCollisionX=spritesCollisionY=spritesInvalid=-1,spritesMaxComputed=0,verticalIntReached=!1,horizontalIntLine=0,vramInterleaving=!1,renderMetricsChangePending=!1,refreshWidth=refreshHeight=0,frameVideoStandard=videoStandard,framePulldown=pulldown,currentScanline=-1,initRegisters(),initColorPalette(),commandProcessor.reset(),updateSignalMetrics(!0),updateIRQ(),updateMode(),updateSpritesConfig(),updateBackdropColor(),updateTransparency(),updateSynchronization(),updateBlinking(),beginFrame()},this.updateCycles=function(){var a=cpu.getBUSCycles();if(a===lastBUSCyclesComputed)return cycles;var b=6*(a-lastBUSCyclesComputed);return lastBUSCyclesComputed=a,cycles+=b},this.getScreenText=function(){var a=modeData.textCols;if(!a)return null;for(var b=128®ister[9]?27:24,c=[],d=0;d>8&3,register[34]=255&a}function getDX(){return(1®ister[37])<<8|register[36]}function getDY(){return(3®ister[39])<<8|register[38]}function setDY(a){register[39]=a>>8&3,register[38]=255&a}function getNX(){return(1®ister[41])<<8|register[40]}function getNY(){return(3®ister[43])<<8|register[42]}function setNY(a){register[43]=a>>8&3,register[42]=255&a}function getDIX(){return 4®ister[45]?-1:1}function getDIY(){return 8®ister[45]?-1:1}function getCLR(){return register[44]}function setCLR(a){register[44]=a}function getMAJ(){return 1®ister[45]}function getEQ(){return 0==(2®ister[45])}function getLOP(){return LOGICAL_OPERATIONS[15®ister[46]]}function HMMC(){var a=getDX();DY=getDY(),NX=getNX(),NY=getNY(),DIX=getDIX(),DIY=getDIY(),a>>=modePPBShift,NX>>=modePPBShift,a>=layoutLineBytes?(a&=layoutLineBytes-1,NX=1):(NX=NX||layoutLineBytes,NX=1===DIX?min(NX,layoutLineBytes-a):min(NX,a+1)),NY=NY||1024,ENY=1===DIY?NY:min(NY,DY+1), -destPos=DY*layoutLineBytes+a,writeStart(HMMCNextWrite)}function HMMCNextWrite(a){vram[destPos&VRAM_LIMIT]=a,CX+=1,CX>=NX?(destPos-=DIX*(NX-1),CX=0,CY+=1,CY>=ENY?finish():destPos+=DIY*layoutLineBytes):destPos+=DIX,setDY(DY+DIY*CY),setNY(NY-CY)}function YMMM(){var a=getSY(),b=getDX(),c=getDY(),d=getNY(),e=getDIX(),f=getDIY();(b>>=modePPBShift)>=layoutLineBytes&&(b&=layoutLineBytes-1);var g=1===e?layoutLineBytes-b:b+1;d=d||1024;for(var h=1===f?d:min(d,min(a,c)+1),i=a*layoutLineBytes+b,j=c*layoutLineBytes+b,k=-e*g+layoutLineBytes*f,l=h;l>0;l-=1){for(var m=g;m>0;m-=1)vram[j&VRAM_LIMIT]=vram[i&VRAM_LIMIT],i+=e,j+=e;i+=k,j+=k}setSY(a+f*h),setDY(c+f*h),setNY(d-h),start(g*h,64,h,0)}function HMMM(){var a=getSX(),b=getSY(),c=getDX(),d=getDY(),e=getNX(),f=getNY(),g=getDIX(),h=getDIY();a>>=modePPBShift,c>>=modePPBShift,e>>=modePPBShift,a>=layoutLineBytes||c>=layoutLineBytes?(a&=layoutLineBytes-1,c&=layoutLineBytes-1,e=1):(e=e||layoutLineBytes,e=1===g?min(e,layoutLineBytes-max(a,c)):min(e,min(a,c)+1)),f=f||1024;for(var i=1===h?f:min(f,min(b,d)+1),j=b*layoutLineBytes+a,k=d*layoutLineBytes+c,l=-g*e+layoutLineBytes*h,m=i;m>0;m-=1){for(var n=e;n>0;n-=1)vram[k&VRAM_LIMIT]=vram[j&VRAM_LIMIT],j+=g,k+=g;j+=l,k+=l}setSY(b+h*i),setDY(d+h*i),setNY(f-i),start(e*i,88,i,64)}function HMMV(){var a=getDX(),b=getDY(),c=getNX(),d=getNY(),e=getCLR(),f=getDIX(),g=getDIY();a>>=modePPBShift,c>>=modePPBShift,a>=layoutLineBytes?(a&=layoutLineBytes-1,c=1):(c=c||layoutLineBytes,c=1===f?min(c,layoutLineBytes-a):min(c,a+1)),d=d||1024;for(var h=1===g?d:min(d,b+1),i=b*layoutLineBytes+a,j=-f*c+layoutLineBytes*g,k=h;k>0;k-=1){for(var l=c;l>0;l-=1)vram[i&VRAM_LIMIT]=e,i+=f;i+=j}setDY(b+g*h),setNY(d-h),start(c*h,48,h,56)}function LMMC(){DX=getDX(),DY=getDY(),NX=getNX(),NY=getNY(),DIX=getDIX(),DIY=getDIY(),LOP=getLOP(),DX>=modeWidth?(DX&=modeWidth-1,NX=1):(NX=NX||modeWidth,NX=1===DIX?min(NX,modeWidth-DX):min(NX,DX+1)),NY=NY||1024,ENY=1===DIY?NY:min(NY,DY+1),writeStart(LMMCNextWrite)}function LMMCNextWrite(a){logicalPSET(DX,DY,a,LOP),CX+=1,CX>=NX?(DX-=DIX*(NX-1),CX=0,CY+=1,DY+=DIY,CY>=ENY&&finish()):DX+=DIX,setDY(DY),setNY(NY-CY)}function LMCM(){SX=getSX(),SY=getSY(),NX=getNX(),NY=getNY(),DIX=getDIX(),DIY=getDIY(),SX>=modeWidth?(SX&=modeWidth-1,NX=1):(NX=NX||modeWidth,NX=1===DIX?min(NX,modeWidth-SX):min(NX,SX+1)),NY=NY||1024,ENY=1===DIY?NY:min(NY,SY+1),readStart(LMCMNextRead)}function LMCMNextRead(){status[7]=normalPGET(SX,SY),CX+=1,CX>=NX?(SX-=DIX*(NX-1),CX=0,CY+=1,SY+=DIY,CY>=ENY&&finish()):SX+=DIX,setSY(SY),setNY(NY-CY)}function LMMM(){var a=getSX(),b=getSY(),c=getDX(),d=getDY(),e=getNX(),f=getNY(),g=getDIX(),h=getDIY(),i=getLOP();a>=modeWidth||c>=modeWidth?(a&=modeWidth-1,c&=modeWidth-1,e=1):(e=e||modeWidth,e=1===g?min(e,modeWidth-max(a,c)):min(e,min(a,c)+1)),f=f||1024;for(var j=1===h?f:min(f,min(b,d)+1),k=j;k>0;k-=1){for(var l=e;l>0;l-=1)logicalPCOPY(c,d,a,b,i),a+=g,c+=g;a-=g*e,c-=g*e,b+=h,d+=h}setSY(b),setDY(d),setNY(f-j),start(e*j,120,j,64)}function LMMV(){var a=getDX(),b=getDY(),c=getNX(),d=getNY(),e=getCLR(),f=getDIX(),g=getDIY(),h=getLOP();a>=modeWidth?(a&=modeWidth-1,c=1):(c=c||modeWidth,c=1===f?min(c,modeWidth-a):min(c,a+1)),d=d||1024;for(var i=1===g?d:min(d,b+1),j=i;j>0;j-=1){for(var k=c;k>0;k-=1)logicalPSET(a,b,e,h),a+=f;a-=f*c,b+=g}setDY(b),setNY(d-i),start(c*i,96,i,64)}function LINE(){var a=getDX(),b=getDY(),c=getNX(),d=getNY(),e=getCLR(),f=getDIX(),g=getDIY(),h=getMAJ(),i=getLOP(),j=modeWidth-1;a&=j;var k=0,l=0;if(0===h)for(var m=0;m<=c&&(logicalPSET(a,b,e,i),a+=f,d>0&&(l+=d)<<1>=c&&(b+=g,l-=c,k+=1),!(a>j||a<0||b<0));m+=1);else for(m=0;m<=c&&(logicalPSET(a,b,e,i),b+=g,d>0&&(l+=d)<<1>=c&&(a+=f,l-=c,k+=1),!(a>j||a<0||b<0));m+=1);setDY(b),start(m,112,k,32)}function SRCH(){var a=getSX(),b=getSY(),c=getCLR(),d=getDIX(),e=getEQ();a>=modeWidth&&(a&=modeWidth-1);var f=1===d?modeWidth:-1,g=a,h=!1;if(e)do{if(normalPGET(g,b)===c){h=!0;break}g+=d}while(g!==f);else do{if(normalPGET(g,b)!==c){h=!0;break}g+=d}while(g!==f);status[2]=-17&status[2]|(h?16:0),status[8]=255&g,status[9]=g>>8&1,start(Math.abs(g-a)+1,86,1,50)}function PSET(){var a=getDX(),b=getDY(),c=getCLR(),d=getLOP();a>=modeWidth&&(a&=modeWidth-1),logicalPSET(a,b,c,d),start(0,0,1,40)}function POINT(){var a=getSX(),b=getSY();a>=modeWidth&&(a&=modeWidth-1);var c=normalPGET(a,b);setCLR(c),status[7]=c,start(0,0,1,40)}function STOP(){finish()}function normalPGET(a,b){var c,d;switch(modePPB){case 2:c=1&a?0:4,a>>>=1,d=15<>>=2,d=3<>c}function logicalPSET(a,b,c,d){var e,f;switch(modePPB){case 2:e=1&a?0:4,a>>>=1,c=(15&c)<>>=2,c=(3&c)<>>=1,a>>>=1,h=15;break;case 4:f=2*(3-(3&c)),g=2*(3-(3&a)),c>>>=2,a>>>=2,h=3;break;default:f=g=0,h=255}var i=d*layoutLineBytes+c,j=b*layoutLineBytes+a,k=(vram[i&VRAM_LIMIT]>>f&h)<b?a:b}function start(a,b,c,d,e){CE=1,writeHandler=null,readHandler=null,estimateDuration(a,b,c,d,e)}function estimateDuration(a,b,c,d,e){if(e)finishingCycle=-1;else if(0===turboClockMulti)finishingCycle=0;else{var f=(a*b*COMMAND_PER_PIXEL_DURATION_FACTOR+c*d)/turboClockMulti|0;finishingCycle=vdp.updateCycles()+f}}function writeStart(a){start(0,0,0,0,!0),CX=0,CY=0,writeHandler=a,TR=1,writeReady&&(writeHandler(getCLR()),writeReady=!1)}function readStart(a){start(0,0,0,0,!0),CX=0,CY=0,readHandler=a,TR=1,readHandler()}function finish(){CE=0,writeHandler=null,writeReady=!1,readHandler=null,register[46]&=-241}this.connectVDP=function(a,b,c,d){vdp=a,vram=b,register=c,status=d},this.reset=function(){STOP()},this.startCommand=function(a){switch(240&a){case 240:HMMC();break;case 224:YMMM();break;case 208:HMMM();break;case 192:HMMV();break;case 176:LMMC();break;case 160:LMCM();break;case 144:LMMM();break;case 128:LMMV();break;case 112:LINE();break;case 96:SRCH();break;case 80:PSET();break;case 64:POINT();break;case 0:STOP()}},this.cpuWrite=function(a){writeHandler?writeHandler(a):(writeReady=!0,TR=0)},this.cpuRead=function(){readHandler?readHandler():TR=0},this.updateStatus=function(){CE&&finishingCycle>=0&&(0===finishingCycle||vdp.updateCycles()>=finishingCycle)&&finish(),status[2]=-130&status[2]|TR<<7|CE},this.setVDPModeData=function(a){modeData=a,modeWidth=modeData.width,modePPB=modeData.ppb||1,modePPBShift=modePPB>>1,modePPBMask=-1<8?0:a},this.getVDPTurboMulti=function(){return turboClockMulti};var VRAM_LIMIT=wmsx.VDP.VRAM_LIMIT,COMMAND_HANDLERS={HMMCNextWrite:HMMCNextWrite,LMMCNextWrite:LMMCNextWrite,LMCMNextRead:LMCMNextRead},COMMAND_PER_PIXEL_DURATION_FACTOR=1.1,LOGICAL_OPERATIONS=[lopIMP,lopAND,lopOR,lopXOR,lopNOT,lopIMP,lopIMP,lopIMP,lopTIMP,lopTAND,lopTOR,lopTXOR,lopTNOT,lopIMP,lopIMP,lopIMP],turboClockMulti=1,vdp,vram,register,status,CE=!1,TR=!1,SX,SY,DX,DY,NX,NY,ENY,DIX,DIY,CX,CY,LOP,destPos,writeReady=!1,writeHandler=null,readHandler=null,finishingCycle=0,modeData,modePPB,modePPBShift,modePPBMask,modeWidth,layoutLineBytes;this.saveState=function(){return{ce:CE,tr:TR,wr:writeReady,wh:writeHandler&&writeHandler.name,rh:readHandler&&readHandler.name,fc:finishingCycle,SX:SX,SY:SY,DX:DX,DY:DY,NX:NX, -NY:NY,ENY:ENY,DIX:DIX,DIY:DIY,CX:CX,CY:CY,LOP:LOP&&LOGICAL_OPERATIONS.indexOf(LOP),dp:destPos,tcm:turboClockMulti}},this.loadState=function(a){CE=a.ce,TR=a.tr,writeReady=a.wr,writeHandler=COMMAND_HANDLERS[a.wh],readHandler=COMMAND_HANDLERS[a.rh],finishingCycle=a.fc,SX=a.SX,SY=a.SY,DX=a.DX,DY=a.DY,NX=a.NX,NY=a.NY,ENY=a.ENY,DIX=a.DIX,DIY=a.DIY,CX=a.CX,CY=a.CY,LOP=a.LOP>=0?LOGICAL_OPERATIONS[a.LOP]:void 0,destPos=a.dp,turboClockMulti=void 0!==a.tcm?a.tcm:1},this.eval=function(str){return eval(str)}},wmsx.VideoSignal=function(a){"use strict";this.connectMonitor=function(a){b=a},this.newFrame=function(a,c,d){b.newFrame(a,c,d)},this.signalOff=function(){b&&b.signalOff()},this.showOSD=function(a,c,d){b&&b.showOSD(a,c,d)},this.setDisplayMetrics=function(a,c){b&&b.setDisplayMetrics(a,c)},this.setPixelMetrics=function(a,c){b&&b.setPixelMetrics(a,c)},this.setDebugMode=function(a){b&&b.setDebugMode(a)},this.getScreenText=function(){return a.getScreenText()};var b},wmsx.VideoStandard={NTSC:{name:"NTSC",desc:"NTSC 60Hz",totalWidth:342,totalHeight:262,topBorderHeight:16,targetFPS:60,pulldowns:{60:{standard:"NTSC",frequency:60,divider:1,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},120:{standard:"NTSC",frequency:120,divider:2,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},"120s":{standard:"NTSC",frequency:120,divider:1,linesPerCycle:131,firstStepCycleLinesAdjust:0,cadence:[0,1],steps:2},50:{standard:"NTSC",frequency:50,divider:1,linesPerCycle:314,firstStepCycleLinesAdjust:2,cadence:[1,1,1,1,2],steps:5},100:{standard:"NTSC",frequency:100,divider:2,linesPerCycle:314,firstStepCycleLinesAdjust:2,cadence:[1,1,1,1,2],steps:5},"100s":{standard:"NTSC",frequency:100,divider:1,linesPerCycle:157,firstStepCycleLinesAdjust:2,cadence:[0,1,0,1,1,0,1,0,1,1],steps:10},TIMER:{standard:"NTSC",frequency:62.5,divider:1,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}},PAL:{name:"PAL",desc:"PAL 50Hz",totalWidth:342,totalHeight:313,topBorderHeight:43,targetFPS:50,pulldowns:{50:{standard:"PAL",frequency:50,divider:1,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},100:{standard:"PAL",frequency:100,divider:2,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},"100s":{standard:"PAL",frequency:100,divider:1,linesPerCycle:156,firstStepCycleLinesAdjust:1,cadence:[0,1],steps:2},60:{standard:"PAL",frequency:60,divider:1,linesPerCycle:261,firstStepCycleLinesAdjust:-1,cadence:[0,1,1,1,1,1],steps:6},120:{standard:"PAL",frequency:120,divider:2,linesPerCycle:261,firstStepCycleLinesAdjust:-1,cadence:[0,1,1,1,1,1],steps:6},"120s":{standard:"PAL",frequency:120,divider:1,linesPerCycle:130,firstStepCycleLinesAdjust:5,cadence:[0,0,1,0,1,0,0,1,0,1,0,1],steps:12},TIMER:{standard:"PAL",frequency:50,divider:1,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}}},wmsx.AudioTables={setupVolPan:function(a,b,c,d,e){this.createVolPanVolumeTable();for(var f=0;ff?b[f]:"f")),h=Number("0x"+(1===c.length?c[0]:c.length>f?c[f]:"8"));d[f]=this.VOLPAN_VOLUME_TABLE[this.VOL_VALUES[g]+this.PAN_VALUES[0][h]],e[f]=this.VOLPAN_VOLUME_TABLE[this.VOL_VALUES[g]+this.PAN_VALUES[1][h]]}},createVolPanVolumeTable:function(){if(!this.VOLPAN_VOLUME_TABLE){for(var a=new Array(256),b=0;b<127;++b)a[b]=Math.pow(10,-.75*b/20);for(b=127;b<256;++b)a[b]=0;this.VOLPAN_VOLUME_TABLE=a}},VOL_VALUES:[128,28,26,24,22,20,18,16,14,12,10,8,6,4,2,0],PAN_VALUES:[[127,0,0,0,0,0,0,0,0,4,8,12,16,20,24,127],[127,127,24,20,16,12,8,4,0,0,0,0,0,0,0,0]],VOLPAN_VOLUME_TABLE:void 0},wmsx.PSG=function(controllersSocket,secondary){"use strict";this.connectBus=function(a){var b=secondary?16:160;a.connectInputDevice(b,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(b,this.outputA0),a.connectInputDevice(b+1,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(b+1,this.outputA1),a.connectInputDevice(b+2,this.inputA2),a.connectOutputDevice(b+2,wmsx.DeviceMissing.outputPortIgnored),powerIsOn&&audioChannel.connectAudio()},this.disconnectBus=function(a){var b=secondary?16:160;a.disconnectInputDevice(b,wmsx.DeviceMissing.inputPortIgnored),a.disconnectOutputDevice(b,this.outputA0),a.disconnectInputDevice(b+1,wmsx.DeviceMissing.inputPortIgnored),a.disconnectOutputDevice(b+1,this.outputA1),a.disconnectInputDevice(b+2,this.inputA2),a.disconnectOutputDevice(b+2,wmsx.DeviceMissing.outputPortIgnored),audioChannel.disconnectAudio()},this.setAudioSocket=function(a){audioChannel.setAudioSocket(a)},this.powerOn=function(){powerIsOn=!0,audioChannel.powerOn(),register[15]=15},this.powerOff=function(){powerIsOn=!1,audioChannel.powerOff()},this.reset=function(){audioChannel.reset()},this.getAudioChannel=function(){return audioChannel},this.outputA0=function(a){registerAddress=a>15?0:a},this.outputA1=function(a){switch(register[registerAddress]=a,registerAddress){case 0:case 1:audioChannel.setPeriodA((15®ister[1])<<8|register[0]);break;case 2:case 3:audioChannel.setPeriodB((15®ister[3])<<8|register[2]);break;case 4:case 5:audioChannel.setPeriodC((15®ister[5])<<8|register[4]);break;case 6:audioChannel.setPeriodN(31&a);break;case 7:audioChannel.setMixerControl(a);break;case 8:audioChannel.setAmplitudeA(a);break;case 9:audioChannel.setAmplitudeB(a);break;case 10:audioChannel.setAmplitudeC(a);break;case 11:case 12:audioChannel.setPeriodE(register[12]<<8|register[11]);break;case 13:audioChannel.setEnvelopeControl(a);break;case 15:controllersSocket&&(controllersSocket.writeControllerPin8Port(0,(16&a)>>4),controllersSocket.writeControllerPin8Port(1,(32&a)>>5))}},this.inputA2=function(){if(14!==registerAddress)return register[registerAddress];var a=register[15]>>6&1;return controllersSocket?controllersSocket.readControllerPort(a):63};var powerIsOn=!1,registerAddress=0,register=wmsx.Util.arrayFill(new Array(16),0),audioChannel=new wmsx.PSGAudio(secondary);this.saveState=function(){return{p:powerIsOn,ra:registerAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),ac:audioChannel.saveState()}},this.loadState=function(a){powerIsOn=void 0===a.p||a.p,registerAddress=a.ra,register=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r,register),audioChannel.loadState(a.ac)},this.eval=function(str){return eval(str)}},wmsx.AudioSignal=function(a,b,c,d,e,f){"use strict";function g(a){switch(a){case 32:return j;case 72:return k;case 81:return l;default:throw new Error("Unsupported AudioSignal Sample Rate CPU Clock multiple: "+a)}}function h(a){switch(a){case 72:return m;default:throw new Error("Unsupported AudioSignal Clock CPU Clock multiple: "+a)}}function i(){var a=H*WMSX.AUDIO_SIGNAL_BUFFER_RATIO+v*WMSX.AUDIO_SIGNAL_ADD_FRAMES&-8;F.length=a,a>C&&wmsx.Util.arrayFill(F,0,C,a),e&&(G.length=a,a>C&&wmsx.Util.arrayFill(G,0,C,a)),C=a,I.bufferSize=C,E=C-2,s.flush()}function j(){if(B>0){if(D<=0)return void(B=0);t(),--B,--D}}function k(){1&--w||8===w||(0===w&&(w=9),j())}function l(){--x,1&x&&j(),0===x&&(x=5)}function m(){1&--y||8===y||(0===y&&(y=9),b.audioClockPulse())}function n(){F[z]=b.nextSample()*c,++z>=C&&(z=0)}function o(){var a=b.nextSample();F[z]=a[0]*c,G[z]=a[1]*c,++z>=C&&(z=0)}function p(){F[z]=0,++z>=C&&(z=0)}function q(){F[z]=G[z]=0,++z>=C&&(z=0)}function r(a,b){if(b)for(var c=a;c>0;c-=1)u();else for(var d=a;d>0;d-=1)t();D-=a}var s=this;this.audioClockPulse=null,this.flush=function(){z=0,A=0,D=E},this.setFps=function(a){v=Math.floor(d/a),i()},this.audioFinishFrame=function(){if(B>0)for(;B>0;)j();B=v},this.retrieveSamples=function(a,b){var c=E-D,d=a-c;d>-4&&(d+4>D&&(d=D-4),r(d+4,b)),I.start=A;var e=c+d;return D+=e,A+=e,A>=C&&(A-=C),I},this.getSampleRate=function(){return d},this.toString=function(){return"AudioSignal "+a},this.setAudioMonitorBufferSize=function(a){H=a,i()};var t=n,u=p;this.name=a -;var v,w=9,x=5,y=9,z=0,A=0,B=0,C=0,D=0,E=0,F=wmsx.Util.arrayFill(new Array(C),0),G=e?wmsx.Util.arrayFill(new Array(C),0):F,H=0,I={stereo:e,buffer0:F,buffer1:G,bufferSize:C,start:0};!function(){c=1.1*c*WMSX.VOL,t=e?o:n,u=e?q:p;var a=Math.floor(wmsx.Machine.BASE_CPU_CLOCK/d),b=g(a);if(f){a=Math.floor(wmsx.Machine.BASE_CPU_CLOCK/f);var i=h(a);s.audioClockPulse=function(){i(),b()}}else s.audioClockPulse=b}()},wmsx.PSGAudio=function(a){"use strict";function b(a,b){a^b&&(L=!L),I=L?0:15,J=b?0:L?1:-1}function c(){o&&(l=R[I]),v&&(s=R[I]),C&&(z=R[I])}function d(){return 1&(P=P>>1|(1&(P>>2^1&P))<<16)}function e(){for(var a=0;a<16;a++)R[a]=(Math.pow(V,a/15)-1)/(V-1)*U}var f=this;this.setAudioSocket=function(a){h=a},this.powerOn=function(){this.reset(),this.connectAudio()},this.powerOff=function(){this.disconnectAudio()},this.reset=function(){this.setMixerControl(255),this.setAmplitudeA(0),this.setAmplitudeB(0),this.setAmplitudeC(0),O=!1},this.nextSample=function(){if(i>0&&(j+=2)>=i&&(j=j-i&1,k=k?0:1),p>0&&(q+=2)>=p&&(q=q-p&1,r=r?0:1),w>0&&(x+=2)>=w&&(x=x-w&1,y=y?0:1),(n||u||B)&&(E+=1)>=D&&(E=0,F=d()),0!==J&&(H+=1)>=G&&(H=0,I+=J,(I<0||I>15)&&(K?b(M,N):(L=!0,b(!0,!0))),c()),$){var a=0===l||m&&!k||n&&!F?0:l,e=0===s||t&&!r||u&&!F?0:s,f=0===z||A&&!y||B&&!F?0:z,g=O?U:0;return Q[0]=a*S[0]+e*S[1]+f*S[2]+g*S[3],Q[1]=a*T[0]+e*T[1]+f*T[2]+g*T[3],Q}return(0===l||m&&!k||n&&!F?0:l)+(0===s||t&&!r||u&&!F?0:s)+(0===z||A&&!y||B&&!F?0:z)+(O?U:0)},this.setPeriodA=function(a){i!==a&&(a<2?(i=0,k=1):i=a)},this.setPeriodB=function(a){p!==a&&(a<2?(p=0,r=1):p=a)},this.setPeriodC=function(a){w!==a&&(a<2?(w=0,y=1):w=a)},this.setPeriodN=function(a){D!==a&&(D=a<1?1:a)},this.setPeriodE=function(a){G!==a&&(G=a<1?1:a)},this.setAmplitudeA=function(a){16&a?(o=!0,l=R[I]):(o=!1,l=R[15&a])},this.setAmplitudeB=function(a){16&a?(v=!0,s=R[I]):(v=!1,s=R[15&a])},this.setAmplitudeC=function(a){16&a?(C=!0,z=R[I]):(C=!1,z=R[15&a])},this.setMixerControl=function(a){m=0==(1&a),n=0==(8&a),t=0==(2&a),u=0==(16&a),A=0==(4&a),B=0==(32&a)},this.setEnvelopeControl=function(a){K=(8&a)>0,L=(4&a)>0,M=(2&a)>0,N=(1&a)>0,b(!1,!1),c()},this.setPulseSignal=function(a){O=a},this.connectAudio=function(){h&&(g||(g=new wmsx.AudioSignal("PSG"+(a?"2":""),f,W,X,$)),h.connectAudioSignal(g))},this.disconnectAudio=function(){h&&g&&h.disconnectAudioSignal(g)};var g,h,i=0,j=0,k=0,l=0,m=!1,n=!1,o=!1,p=0,q=0,r=0,s=0,t=!1,u=!1,v=!1,w=0,x=0,y=0,z=0,A=!1,B=!1,C=!1,D=1,E=1,F=0,G=1,H=1,I=0,J=0,K=!1,L=!1,M=!1,N=!1,O=!1,P=131070,Q=[0,0],R=new Array(16),S=new Array(4),T=new Array(4),U=.25,V=30,W=.66,X=112005,Y=(a&&WMSX.PSG2_VOL||WMSX.PSG_VOL||"f").toUpperCase(),Z=(a&&WMSX.PSG2_PAN||WMSX.PSG_PAN||"0").toUpperCase(),$="F"!==Y||"8"!==Z;this.saveState=function(){return{pa:i,pac:j,ca:k,aa:l,ta:m,na:n,ea:o,pb:p,pbc:q,cb:r,ab:s,tb:t,nb:u,eb:v,pc:w,pcc:x,cc:y,ac:z,tc:A,nc:B,ec:C,pn:D,pnc:E,cn:F,pe:G,pec:H,ce:I,de:J,cne:K,ate:L,ale:M,he:N,ps:O,lf:P}},this.loadState=function(a){i=a.pa,j=a.pac,k=a.ca,l=a.aa,m=a.ta,n=a.na,o=a.ea,p=a.pb,q=a.pbc,r=a.cb,s=a.ab,t=a.tb,u=a.nb,v=a.eb,w=a.pc,x=a.pcc,y=a.cc,z=a.ac,A=a.tc,B=a.nc,C=a.ec,D=a.pn,E=a.pnc,F=a.cn,G=a.pe,H=a.pec,I=a.ce,J=a.de,K=a.cne,L=a.ate,M=a.ale,N=a.he,O=a.ps,P=a.lf},function(){e(),$&&wmsx.AudioTables.setupVolPan(4,Y,Z,S,T)}()},wmsx.PCM8BitAudio=function(){"use strict";this.setAudioSocket=function(a){c=a},this.connectAudio=function(){b||(b=new wmsx.AudioSignal("PCM 8 bit",this,e,f)),c&&c.connectAudioSignal(b)},this.disconnectAudio=function(){b&&c&&c.disconnectAudioSignal(b)},this.reset=function(){a=0},this.setSampleValue=function(b){a=b-128},this.nextSample=function(){return a*d};var a,b,c,d=.25/128,e=.66,f=112005;this.saveState=function(){return{s:a}},this.loadState=function(b){a=b.s}},wmsx.SCCIAudio=function(){"use strict";function a(a,b){if((a&=255)<128)return U[a>>>5][31&a]=b<128?b:-256+b,void(a>>>5==3&&(O[31&a]=b<128?b:-256+b));if(a<160){if((a&=239)<138)return void f(a-128>>>1,b,1&a);if(a<143)return void e(a-138,15&b);g(b)}}function b(a){return a&=255,a<128?255&U[a>>>5][31&a]:255}function c(a,b){if((a&=255)<160)return void(U[a>>>5][31&a]=b<128?b:-256+b);if(a<192){if((a&=239)<170)return void f(a-160>>>1,b,1&a);if(a<175)return void e(a-170,15&b);g(b)}}function d(a){return a&=255,a<160?255&U[a>>>5][31&a]:255}function e(a,b){switch(a){case 0:r=W[b];break;case 1:y=W[b];break;case 2:F=W[b];break;case 3:M=W[b];break;case 4:T=W[b]}}function f(a,b,c){switch(a){case 0:n=c?255&n|(15&b)<<8:65280&n|b;break;case 1:u=c?255&u|(15&b)<<8:65280&u|b;break;case 2:B=c?255&B|(15&b)<<8:65280&B|b;break;case 3:I=c?255&I|(15&b)<<8:65280&I|b;break;case 4:P=c?255&P|(15&b)<<8:65280&P|b}}function g(a){l=1&a?1:0,s=2&a?1:0,z=4&a?1:0,G=8&a?1:0,N=16&a?1:0}function h(){for(var a=0;a<16;a++)W[a]=(Math.pow($,a/15)-1)/($-1)*Z}this.setAudioSocket=function(a){k=a},this.connectAudio=function(){j||(j=new wmsx.AudioSignal("SCC",this,_,aa,da)),k&&k.connectAudioSignal(j)},this.disconnectAudio=function(){j&&k&&k.disconnectAudioSignal(j)},this.reset=function(){this.disconnectAudio(),g(0),r=y=F=M=T=0,n=u=B=I=P=0,o=v=C=J=Q=0,p=w=D=K=R=0,q=x=E=L=S=0;for(var a=0;a<5;a++)wmsx.Util.arrayFill(U[a],0);this.setSCCIMode(!1)},this.setSCCIMode=function(e){i!==e&&(i=!!e,i?(this.read=d,this.write=c):(this.read=b,this.write=a))},this.nextSample=function(){var a=0,b=0,c=0,d=0,e=0;if(n>0)for(l&&(a=q*r),o+=32;o>=n;)o-=n,++p>31&&(p=0),q=m[p];if(u>0)for(s&&(b=x*y),v+=32;v>=u;)v-=u,++w>31&&(w=0),x=t[w];if(B>0)for(z&&(c=E*F),C+=32;C>=B;)C-=B,++D>31&&(D=0),E=A[D];if(I>0)for(G&&(d=L*M),J+=32;J>=I;)J-=I,++K>31&&(K=0),L=H[K];if(P>0)for(N&&(e=S*T),Q+=32;Q>=P;)Q-=P,++R>31&&(R=0),S=O[R];return da?(V[0]=a*X[0]+b*X[1]+c*X[2]+d*X[3]+e*X[4],V[1]=a*Y[0]+b*Y[1]+c*Y[2]+d*Y[3]+e*Y[4],V):a+b+c+d+e};var i,j,k,l=0,m=wmsx.Util.arrayFill(new Array(32),0),n=0,o=0,p=0,q=0,r=0,s=0,t=wmsx.Util.arrayFill(new Array(32),0),u=0,v=0,w=0,x=0,y=0,z=0,A=wmsx.Util.arrayFill(new Array(32),0),B=0,C=0,D=0,E=0,F=0,G=0,H=wmsx.Util.arrayFill(new Array(32),0),I=0,J=0,K=0,L=0,M=0,N=!1,O=wmsx.Util.arrayFill(new Array(32),0),P=0,Q=0,R=0,S=0,T=0,U=[m,t,A,H,O],V=[0,0],W=new Array(16),X=new Array(5),Y=new Array(5),Z=.23/128,$=3,_=.65,aa=112005,ba=(WMSX.SCC_VOL||"f").toUpperCase(),ca=(WMSX.SCC_PAN||"8").toUpperCase(),da="F"!==ba||"8"!==ca;this.saveState=function(){return{m:i,c1:l,p1:n,pc1:o,sc1:p,cs1:q,a1:r,c2:s,p2:u,pc2:v,sc2:w,cs2:x,a2:y,c3:z,p3:B,pc3:C,sc3:D,cs3:E,a3:F,c4:G,p4:I,pc4:J,sc4:K,cs4:L,a4:M,c5:N,p5:P,pc5:Q,sc5:R,cs5:S,a5:T,s1:wmsx.Util.storeInt8BitArrayToStringBase64(m),s2:wmsx.Util.storeInt8BitArrayToStringBase64(t),s3:wmsx.Util.storeInt8BitArrayToStringBase64(A),s4:wmsx.Util.storeInt8BitArrayToStringBase64(H),s5:wmsx.Util.storeInt8BitArrayToStringBase64(O)}},this.loadState=function(a){this.reset(),l=a.c1,n=a.p1,o=a.pc1,p=a.sc1,q=a.cs1,r=a.a1,s=a.c2,u=a.p2,v=a.pc2,w=a.sc2,x=a.cs2,y=a.a2,z=a.c3,B=a.p3,C=a.pc3,D=a.sc3,E=a.cs3,F=a.a3,G=a.c4,I=a.p4,J=a.pc4,K=a.sc4,L=a.cs4,M=a.a4,N=a.c5,P=a.p5,Q=a.pc5,R=a.sc5,S=a.cs5,T=a.a5,m=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s1,m),t=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s2,t),A=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s3,A),H=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s4,H),O=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s5||a.s4,O),U[0]!==m&&(U[0]=m),U[1]!==t&&(U[1]=t),U[2]!==A&&(U[2]=A),U[3]!==H&&(U[3]=H),U[4]!==O&&(U[4]=O),this.setSCCIMode(!0===a.m)},function(a){h(),da&&wmsx.AudioTables.setupVolPan(5,ba,ca,X,Y),a.setSCCIMode(!1)}(this)},wmsx.YM2413Tables=function(){"use strict";this.getFullSineTable=function(){for(var a=new Array(1024),b=0;b<1024;++b)a[b]=(b>511?16384:0)|Math.round(256*-wmsx.Util.log2(Math.abs(Math.sin(2*(b+.5)*Math.PI/1024))));return a},this.getHalfSineTable=function(){for(var a=new Array(1024),b=0;b<1024;++b)a[b]=Math.round(256*-wmsx.Util.log2(Math.abs(Math.sin(2*(b<512?b+.5:.5)*Math.PI/1024))));return a},this.getExpTable=function(){for(var a=new Array(32768),b=0;b<32768;++b){ -var c=Math.round(1024*wmsx.Util.exp2((255&b^255)/256))<<1>>Math.min((16128&b)>>8,31);16384&b&&(c=-c),a[b]=c}return a},this.getInstrumentsROM=function(){return this.INSTRUMENT_ROM},this.getVIBValues=function(){return this.VIB_VALUES},this.getKSLValues=function(){return this.KSL_VALUES},this.getMultiFactorsDoubled=function(){return this.MULTI_FACTORS},this.getRateDecayDurations=function(){for(var a=new Array(76),b=0;b<64;++b){var c=this.RATE_DECAY_DURATIONS[b];a[b]=c>=0?Math.max(1,Math.round(c/1e3*49780/128)):0}for(b=64;b<76;++b)a[b]=a[63];return a},this.getRateAttackDurations=function(){for(var a=new Array(76),b=0;b<64;++b){var c=this.RATE_ATTACK_DURATIONS[b];a[b]=c>=0?Math.max(1,Math.round(c/1e3*49780/128*8)):0}for(b=64;b<76;++b)a[b]=a[63];return a},this.INSTRUMENT_ROM=[[0,0,0,0,0,0,0,0],[97,97,30,23,240,127,0,23],[19,65,22,14,253,244,35,35],[3,1,154,4,243,243,19,243],[17,97,14,7,250,100,112,23],[34,33,30,6,240,118,0,40],[33,34,22,5,240,113,0,24],[33,97,29,7,130,128,23,23],[35,33,45,22,144,144,0,7],[33,33,27,6,100,101,16,23],[33,33,11,26,133,160,112,7],[35,1,131,16,255,180,16,244],[151,193,32,7,255,244,34,34],[97,0,12,5,194,246,64,68],[1,1,86,3,148,194,3,18],[33,1,137,3,241,228,240,35],[1,1,20,0,253,248,111,141],[1,17,0,0,248,247,248,247],[5,17,0,0,248,250,248,85]],this.VIB_VALUES=[[0,0,0,0,0,0,0,0],[0,0,1,0,0,0,-1,0],[0,1,2,1,0,-1,-2,-1],[0,1,3,1,0,-1,-3,-1],[0,2,4,2,0,-2,-4,-2],[0,2,5,2,0,-2,-5,-2],[0,3,6,3,0,-3,-6,-3],[0,3,7,3,0,-3,-7,-3]],this.KSL_VALUES=[[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,1,1,2,2,3,3,4],[0,0,0,0,0,1,2,3,4,5,5,6,6,7,7,8],[0,0,0,2,4,5,6,7,8,9,9,10,10,11,11,12],[0,0,4,6,8,9,10,11,12,13,13,14,14,15,15,16],[0,4,8,10,12,13,14,15,16,17,17,18,18,19,19,20],[0,8,12,14,16,17,18,19,20,21,21,22,22,23,23,24],[0,12,16,18,20,21,22,23,24,25,25,26,26,27,27,28]],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8],[0,0,0,0,0,3,5,7,8,10,11,12,13,14,15,16],[0,0,0,5,8,11,13,15,16,18,19,20,21,22,23,24],[0,0,8,13,16,19,21,23,24,26,27,28,29,30,31,32],[0,8,16,21,24,27,29,31,32,34,35,36,37,38,39,40],[0,16,24,29,32,35,37,39,40,42,43,44,45,46,47,48],[0,24,32,37,40,43,45,47,48,50,51,52,53,54,55,56]],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,4,6,8,10,12,14,16],[0,0,0,0,0,6,10,14,16,20,22,24,26,28,30,32],[0,0,0,10,16,22,26,30,32,36,38,40,42,44,46,48],[0,0,16,26,32,38,42,46,48,52,54,56,58,60,62,64],[0,16,32,42,48,54,58,62,64,68,70,72,74,76,78,80],[0,32,48,58,64,70,74,78,80,84,86,88,90,92,94,96],[0,48,64,74,80,86,90,94,96,100,102,104,106,108,110,112]]],this.MULTI_FACTORS=[1,2,4,6,8,10,12,14,16,18,20,20,24,24,30,30],this.RATE_DECAY_DURATIONS=[-1,-1,-1,-1,20926.6,16807.2,14006,12028.7,10463.3,8403.58,7002.98,6014.32,5231.64,4201.79,3501.49,3007.16,2615.82,2100.89,1750.75,1503.58,1307.91,1050.45,875.37,751.79,653.95,525.22,437.69,375.9,326.98,262.61,218.84,187.95,163.49,131.31,109.42,93.97,81.74,65.65,54.71,46.99,40.87,32.83,27.36,23.49,20.44,16.41,13.68,11.75,10.22,8.21,6.84,5.87,5.11,4.1,3.42,2.94,2.55,2.05,1.71,1.47,1.27,1.27,1.27,1.27],this.RATE_ATTACK_DURATIONS=[-1,-1,-1,-1,1730.15,1400.6,1153.43,988.66,865.08,700.3,576.72,494.33,432.54,350.15,288.36,247.16,216.27,175.07,144.18,123.58,108.13,87.54,72.09,61.79,54.07,43.77,36.04,30.9,27.03,21.88,18.02,15.45,13.52,10.94,9.01,7.72,6.76,5.47,4.51,3.86,3.38,2.74,2.25,1.93,1.69,1.37,1.13,.97,.84,.7,.6,.54,.5,.42,.34,.3,.28,.22,.18,.14,0,0,0,0]},wmsx.YM2413Audio=function(pName){"use strict";function init(){name=pName||"YM2413";var a=new wmsx.YM2413Tables;sineTable=a.getFullSineTable(),halfSineTable=a.getHalfSineTable(),expTable=a.getExpTable(),instrumentsParameters=a.getInstrumentsROM(),multiFactors=a.getMultiFactorsDoubled(),vibValues=a.getVIBValues(),kslValues=a.getKSLValues(),rateAttackDurTable=a.getRateAttackDurations(),rateDecayDurTable=a.getRateDecayDurations(),VOLPAN&&wmsx.AudioTables.setupVolPan(14,VOL,PAN,volPanL,volPanR)}function connectAudio(){audioSocket&&(audioSignal||(audioSignal=new wmsx.AudioSignal(name,self,VOLUME,SAMPLE_RATE,VOLPAN)),audioSocket.connectAudioSignal(audioSignal),audioConnected=!0)}function disconnectAudio(){audioSocket&&audioSignal&&audioSocket.disconnectAudioSignal(audioSignal),audioConnected=!1}function registerWrite(a,b){var c=15&a;c>8&&(c-=9);var d=c<<1,e=d+1,f=register[a]^b;switch(register[a]=b,a){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:f&&(instrumentsParameters[0][a]=b,updateCustomInstrChannels());break;case 14:32&f&&setRhythmMode(0!=(32&b)),rhythmMode&&(48&f&&(setRhythmKeyOnOp(12,(16&b)>>4),setRhythmKeyOnOp(13,(16&b)>>4)),40&f&&setRhythmKeyOnOp(15,(8&b)>>3),36&f&&setRhythmKeyOnOp(16,(4&b)>>2),34&f&&setRhythmKeyOnOp(17,(2&b)>>1),33&f&&setRhythmKeyOnOp(14,1&b));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:f&&(fNum[d]=-256&fNum[d]|b,fNum[e]=fNum[d],updateFrequency(c));break;case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:32&f&&setSustain(c,(32&b)>>5),16&f&&!(rhythmMode&&c>5)&&setKeyOn(c,(16&b)>>4),1&f&&(fNum[d]=-257&fNum[d]|(1&b)<<8,fNum[e]=fNum[d]),14&f&&(block[d]=b>>1&7,block[e]=block[d]),15&f&&updateFrequency(c);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:case 63:rhythmMode&&c>5?(240&f&&c>6&&setVolumeOp(d,b>>>4),15&f&&setVolumeOp(e,15&b)):(240&f&&(audioConnected||connectAudio(),setInstr(c,b>>>4)),15&f&&setVolumeOp(e,15&b))}}function clockNoise(){noiseRegister>>=1,(noiseOutput=1&noiseRegister)&&(noiseRegister^=134230048)}function clockAM(){return!(511&clock)&&(0!==amLevel&&13!==amLevel||(amLevelInc=-amLevelInc),amLevel+=amLevelInc,!0)}function clockVIB(){return!(1023&clock)&&(vibPhase=clock>>10&7,!0)}function clockEnvelope(a){envLevel[a]===envStepNextAtLevel[a]?setEnvStepOp(a,envStepNext[a]):clock===envStepLevelIncClock[a]&&(envStepLevelIncClock[a]+=envStepLevelDur[a],envLevel[a]+=envStepLevelInc[a],updateEnvAttenuationOp(a))}function setSustain(a,b){sustain[a]=b}function setKeyOn(a,b){var c=a<<1,d=c+1;keyOn[c]=b,keyOn[d]=b,b?setEnvStep(a,DAMP):envStep[d]!==IDLE&&setEnvStepOp(d,RELEASE)}function setRhythmKeyOnOp(a,b){keyOn[a]=b,b?setEnvStepOp(a,DAMP):envStep[a]!==IDLE&&setEnvStepOp(a,RELEASE)}function setEnvStep(a,b){var c=a<<1,d=c+1;setEnvStepOp(c,b),setEnvStepOp(d,b)}function setEnvStepOp(a,b){switch(envStep[a]=b,b){case DAMP:envStepLevelDur[a]=rateDecayDurTable[48+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=ATTACK;break;case ATTACK:envStepLevelDur[a]=rateAttackDurTable[(ar[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=-8,envStepNextAtLevel[a]=0,envStepNext[a]=DECAY,phaseCounter[a]=0;break;case DECAY:envStepLevelDur[a]=rateDecayDurTable[(dr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=sl[a]<<3,envStepNext[a]=SUSTAIN;break;case SUSTAIN:envType[a]?(envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=SUSTAIN):(envStepLevelDur[a]=rateDecayDurTable[(rr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE);break;case RELEASE:var c=envType[a]?sustain[a>>1]?5:rr[a]:sustain[a>>1]?5:7;envStepLevelDur[a]=rateDecayDurTable[(c<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE;break;case IDLE:default: -envLevel[a]=128,envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=IDLE}}function setRhythmMode(a){rhythmMode=a,rhythmMode?(audioConnected||connectAudio(),setInstr(6,16),setInstr(7,17),setInstr(8,18)):(setEnvStep(6,IDLE),updateEnvAttenuation(6),setEnvStep(7,IDLE),updateEnvAttenuation(7),setEnvStep(8,IDLE),updateEnvAttenuation(8),setInstr(6,register[36]>>4),setInstr(7,register[37]>>4),setInstr(8,register[38]>>4))}function setInstr(a,b){instr[a]=b;var c=a<<1,d=c+1,e=instrumentsParameters[b];am[c]=e[0]>>7&1,am[d]=e[1]>>7&1,vib[c]=e[0]>>6&1,vib[d]=e[1]>>6&1,envType[c]=e[0]>>5&1,envType[d]=e[1]>>5&1,ksr[c]=e[0]>>4&1,ksr[d]=e[1]>>4&1,multi[c]=multiFactors[15&e[0]],multi[d]=multiFactors[15&e[1]],ksl[c]=e[2]>>6,ksl[d]=e[3]>>6,modTL[c]=63&e[2],halfWave[c]=e[3]>>3&1,halfWave[d]=e[3]>>4&1,fbShift[a]=7&e[3]?8-(7&e[3]):0,ar[c]=e[4]>>4,ar[d]=e[5]>>4,dr[c]=15&e[4],dr[d]=15&e[5],sl[c]=e[6]>>4,sl[d]=e[7]>>4,rr[c]=15&e[6],rr[d]=15&e[7],updateAMAttenuation(a),updateFrequency(a),updateModAttenuationOp(c)}function updateCustomInstrChannels(){for(var a=0;a<9;a++)0===instr[a]&&setInstr(a,0)}function setVolumeOp(a,b){volume[a]=b,updateVolumeAttenuationOp(a)}function updateFrequency(a){var b=a<<1,c=b+1,d=vib[b]?vibValues[fNum[b]>>6][vibPhase]:0;phaseInc[b]=((fNum[b]<<1)+d)*multi[b]<>2,d=vib[c]?vibValues[fNum[c]>>6][vibPhase]:0,phaseInc[c]=((fNum[c]<<1)+d)*multi[c]<>2,updateKSLAttenuation(a),updateKSROffset(a)}function updateFrequencyOp(a){var b=vib[a]?vibValues[fNum[a]>>6][vibPhase]:0;phaseInc[a]=((fNum[a]<<1)+b)*multi[a]<>2,updateKSLAttenuationOp(a),updateKSROffsetOp(a)}function updateKSROffset(a){var b=a<<1,c=b+1;ksrOffset[b]=(ksr[b]?block[b]<<1:block[b]>>1)|fNum[b]>>>9-ksr[b],ksrOffset[c]=(ksr[c]?block[c]<<1:block[c]>>1)|fNum[c]>>>9-ksr[c]}function updateKSROffsetOp(a){ksrOffset[a]=(ksr[a]?block[a]<<1:block[a]>>1)|fNum[a]>>>9-ksr[a]}function updateAMAttenuation(a){var b=a<<1,c=b+1;amAtt[b]=am[b]?amLevel<<4:0,amAtt[c]=am[c]?amLevel<<4:0,updateTotalAttenuation(a)}function updateAMAttenuationOp(a){amAtt[a]=am[a]?amLevel<<4:0,updateTotalAttenuationOp(a)}function updateKSLAttenuation(a){var b=a<<1,c=b+1;kslAtt[b]=kslValues[ksl[b]][block[b]][fNum[b]>>>5]<<4,kslAtt[c]=kslValues[ksl[c]][block[c]][fNum[c]>>>5]<<4,updateTotalAttenuation(a)}function updateKSLAttenuationOp(a){kslAtt[a]=kslValues[ksl[a]][block[a]][fNum[a]>>>5]<<4,updateTotalAttenuationOp(a)}function updateEnvAttenuation(a){var b=a<<1,c=b+1;envAtt[b]=(128===envLevel[b]?256:envLevel[b])<<4,envAtt[c]=(128===envLevel[c]?256:envLevel[c])<<4,updateTotalAttenuation(a)}function updateEnvAttenuationOp(a){envAtt[a]=(128===envLevel[a]?256:envLevel[a])<<4,updateTotalAttenuationOp(a)}function updateModAttenuationOp(a){volModAtt[a]=modTL[a]<<5,updateTotalAttenuationOp(a)}function updateVolumeAttenuationOp(a){volModAtt[a]=(15===volume[a]?30:volume[a])<<7,updateTotalAttenuationOp(a)}function updateTotalAttenuation(a){var b=a<<1,c=b+1;totalAtt[b]=amAtt[b]+kslAtt[b]+envAtt[b]+volModAtt[b],totalAtt[c]=amAtt[c]+kslAtt[c]+envAtt[c]+volModAtt[c]}function updateTotalAttenuationOp(a){totalAtt[a]=amAtt[a]+kslAtt[a]+envAtt[a]+volModAtt[a]}var self=this;this.connect=function(a){a.bus.connectInputDevice(124,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectInputDevice(125,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectOutputDevice(124,this.output7C),a.bus.connectOutputDevice(125,this.output7D),audioSocket=a.getAudioSocket(),audioConnected&&connectAudio()},this.disconnect=function(a){a.bus.disconnectInputDevice(124,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectInputDevice(125,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectOutputDevice(124,this.output7C),a.bus.disconnectOutputDevice(125,this.output7D),disconnectAudio(),audioSocket=null},this.powerOn=function(){this.reset()},this.powerOff=function(){disconnectAudio()},this.reset=function(){registerAddress=0,wmsx.Util.arrayFill(register,0),wmsx.Util.arrayFill(instrumentsParameters[0],0),clock=0,noiseRegister=65535,noiseOutput=0,amLevel=0,amLevelInc=-1,vibPhase=0,rhythmMode=!1,wmsx.Util.arrayFill(sustain,0),wmsx.Util.arrayFill(instr,0),wmsx.Util.arrayFill(keyOn,0),wmsx.Util.arrayFill(am,0),wmsx.Util.arrayFill(vib,0),wmsx.Util.arrayFill(envType,0),wmsx.Util.arrayFill(ksr,0),wmsx.Util.arrayFill(multi,0),wmsx.Util.arrayFill(ksl,0),wmsx.Util.arrayFill(halfWave,0),wmsx.Util.arrayFill(ar,0),wmsx.Util.arrayFill(dr,0),wmsx.Util.arrayFill(sl,0),wmsx.Util.arrayFill(rr,0),wmsx.Util.arrayFill(fNum,0),wmsx.Util.arrayFill(block,0),wmsx.Util.arrayFill(volume,0),wmsx.Util.arrayFill(modTL,0),wmsx.Util.arrayFill(fbShift,0),wmsx.Util.arrayFill(volModAtt,0),wmsx.Util.arrayFill(amAtt,0),wmsx.Util.arrayFill(envAtt,0),wmsx.Util.arrayFill(kslAtt,0),wmsx.Util.arrayFill(totalAtt,0),wmsx.Util.arrayFill(envStep,IDLE),wmsx.Util.arrayFill(envStepLevelDur,0),wmsx.Util.arrayFill(envStepLevelIncClock,0),wmsx.Util.arrayFill(envStepLevelInc,0),wmsx.Util.arrayFill(envStepNext,DAMP),wmsx.Util.arrayFill(envStepNextAtLevel,0),wmsx.Util.arrayFill(envLevel,0),wmsx.Util.arrayFill(ksrOffset,0),wmsx.Util.arrayFill(fbLastMod1,0),wmsx.Util.arrayFill(fbLastMod2,0),wmsx.Util.arrayFill(phaseInc,0),wmsx.Util.arrayFill(phaseCounter,0),disconnectAudio()},this.output7C=function(a){registerAddress=63&a},this.output7D=function(a){registerWrite(registerAddress,a)},this.nextSample=function(){var a,b,c,d,e,f,g=!1;++clock,(a=clockAM())&&(g=clockVIB());for(var h=0,i=0,j=0,k=0,l=rhythmMode?5:8,m=l;m>=0;--m)b=m<<1,c=b+1,envStep[c]!==IDLE&&(a&&(am[b]&&updateAMAttenuationOp(b),am[c]&&updateAMAttenuationOp(c),g&&(vib[b]&&updateFrequencyOp(b),vib[c]&&updateFrequencyOp(c))),envStep[b]!==IDLE&&clockEnvelope(b),clockEnvelope(c),d=(phaseCounter[b]+=phaseInc[b])>>9,e=(phaseCounter[c]+=phaseInc[c])>>9,fbShift[m]?(d+=fbLastMod1[m]+fbLastMod2[m]>>fbShift[m],f=expTable[(halfWave[b]?halfSineTable:sineTable)[1023&d]+totalAtt[b]],fbLastMod2[m]=fbLastMod1[m]>>1,fbLastMod1[m]=f>>1):f=expTable[(halfWave[b]?halfSineTable:sineTable)[1023&d]+totalAtt[b]],h=expTable[(halfWave[c]?halfSineTable:sineTable)[e+f&1023]+totalAtt[c]]>>4,VOLPAN?(i+=h*volPanL[m],j+=h*volPanR[m]):k+=h);if(rhythmMode&&(clockNoise(),c=13,envStep[c]!==IDLE&&(b=12,clockEnvelope(b),clockEnvelope(c),d=((phaseCounter[b]+=phaseInc[b])>>9)-1,e=(phaseCounter[c]+=phaseInc[c])>>9,f=expTable[sineTable[1023&d]+totalAtt[b]],h=expTable[sineTable[e+f&1023]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[9],j+=h*volPanR[9]):k+=h),c=15,envStep[c]!==IDLE&&(clockEnvelope(c),e=(phaseCounter[c]+=phaseInc[c])>>9,h=expTable[sineTable[256&e?noiseOutput?0:130:noiseOutput?0:893]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[10],j+=h*volPanR[10]):k+=h),c=16,envStep[c]!==IDLE&&(clockEnvelope(c),e=(phaseCounter[c]+=phaseInc[c])>>9,h=expTable[sineTable[1023&e]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[11],j+=h*volPanR[11]):k+=h),envStep[17]!==IDLE||envStep[14]!==IDLE)){var n=(phaseCounter[14]+=phaseInc[14])>>9,o=(phaseCounter[17]+=phaseInc[17])>>9,p=(0!=(4&o)&&0==(16&o))!=(0!=(2&n)!=(0!=(256&n))||0!=(4&n));c=17,envStep[c]!==IDLE&&(clockEnvelope(c),h=expTable[sineTable[p?200:823]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[12],j+=h*volPanR[12]):k+=h),c=14,envStep[c]!==IDLE&&(clockEnvelope(c),h=expTable[sineTable[p?noiseOutput?40:10:noiseOutput?983:1013]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[13],j+=h*volPanR[13]):k+=h)}return VOLPAN?(sampleResult[0]=i,sampleResult[1]=j,sampleResult):k} -;var name,audioConnected=!1,IDLE=255,DAMP=0,ATTACK=1,DECAY=2,SUSTAIN=3,RELEASE=4,clock,noiseRegister,noiseOutput,amLevel,amLevelInc,vibPhase,registerAddress,register=new Array(56),rhythmMode,sustain=new Array(9),instr=new Array(9),keyOn=new Array(18),am=new Array(18),vib=new Array(18),envType=new Array(18),ksr=new Array(18),multi=new Array(18),ksl=new Array(18),halfWave=new Array(18),ar=new Array(18),dr=new Array(18),sl=new Array(18),rr=new Array(18),fNum=new Array(18),block=new Array(18),volume=new Array(18),modTL=new Array(18),fbShift=new Array(9),volModAtt=new Array(18),amAtt=new Array(18),envAtt=new Array(18),kslAtt=new Array(18),totalAtt=new Array(18),envStep=new Array(18),envStepLevelDur=new Array(18),envStepLevelIncClock=new Array(18),envStepLevelInc=new Array(18),envStepNext=new Array(18),envStepNextAtLevel=new Array(18),envLevel=new Array(18),ksrOffset=new Array(18),fbLastMod1=new Array(9),fbLastMod2=new Array(9),phaseInc=new Array(18),phaseCounter=new Array(18),volPanL=new Array(14),volPanR=new Array(14),sineTable,halfSineTable,expTable,instrumentsParameters,multiFactors,vibValues,kslValues,rateAttackDurTable,rateDecayDurTable,audioSocket,audioSignal,sampleResult=[0,0],VOLUME=1.58/9/256*.68,SAMPLE_RATE=49780,VOL=(WMSX.OPLL_VOL||"f").toUpperCase(),PAN=(WMSX.OPLL_PAN||"8").toUpperCase(),VOLPAN="F"!==VOL||"8"!==PAN;this.saveState=function(){return{n:name,ac:audioConnected,ra:registerAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),c:clock,nr:noiseRegister,no:noiseOutput,al:amLevel,ai:amLevelInc,vp:vibPhase,amt:wmsx.Util.storeInt16BitArrayToStringBase64(amAtt),evt:wmsx.Util.storeInt16BitArrayToStringBase64(envAtt),kst:wmsx.Util.storeInt16BitArrayToStringBase64(kslAtt),tot:wmsx.Util.storeInt16BitArrayToStringBase64(totalAtt),evs:wmsx.Util.storeInt8BitArrayToStringBase64(envStep),evd:wmsx.Util.storeInt32BitArrayToStringBase64(envStepLevelDur),evc:envStepLevelIncClock,evi:wmsx.Util.storeInt8BitArrayToStringBase64(envStepLevelInc),evn:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNext),evl:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNextAtLevel),eve:wmsx.Util.storeInt8BitArrayToStringBase64(envLevel),kso:wmsx.Util.storeInt8BitArrayToStringBase64(ksrOffset),fb1:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod1),fb2:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod2)}},this.loadState=function(a){this.reset(),name=a.n,audioConnected=a.ac,registerAddress=a.ra;for(var b=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r),c=0;c255&&(timer1Counter=register[2],timer1Masked||(status|=192,updateIRQ())),timer2Active&&0==(15&clock)&&++timer2Counter>255&&(timer2Counter=register[3],timer2Masked||(status|=160,updateIRQ()))}function updateIRQ(){cpu.setINTChannel(1,0==(128&status))}function connectAudio(){}function registerWrite(a,b){if(4===a&&128&b)return register[4]&=-129,status=0,void updateIRQ();var c=register[a]^b;switch(register[a]=b,a){case 4:1&c&&(timer1Active=0!=(1&b))&&(timer1Counter=register[2]),2&c&&(timer2Active=0!=(2&b))&&(timer2Counter=register[3]),64&c&&(timer1Masked=0!=(64&b)),32&c&&(timer2Masked=0!=(32&b))}return}function clockNoise(){noiseRegister>>=1,(noiseOutput=1&noiseRegister)&&(noiseRegister^=134230048)}function clockAM(){return!(511&clock)&&(0!==amLevel&&13!==amLevel||(amLevelInc=-amLevelInc),amLevel+=amLevelInc,!0)}function clockVIB(){return!(1023&clock)&&(vibPhase=clock>>10&7,!0)}function clockEnvelope(a){envLevel[a]===envStepNextAtLevel[a]?setEnvStepOp(a,envStepNext[a]):clock===envStepLevelIncClock[a]&&(envStepLevelIncClock[a]+=envStepLevelDur[a],envLevel[a]+=envStepLevelInc[a],updateEnvAttenuationOp(a))}function setSustain(a,b){sustain[a]=b}function setKeyOn(a,b){var c=a<<1,d=c+1;keyOn[c]=b,keyOn[d]=b,b?setEnvStep(a,DAMP):envStep[d]!==IDLE&&setEnvStepOp(d,RELEASE)}function setRhythmKeyOnOp(a,b){keyOn[a]=b,b?setEnvStepOp(a,DAMP):envStep[a]!==IDLE&&setEnvStepOp(a,RELEASE)}function setEnvStep(a,b){var c=a<<1,d=c+1;setEnvStepOp(c,b),setEnvStepOp(d,b)}function setEnvStepOp(a,b){switch(envStep[a]=b,b){case DAMP:envStepLevelDur[a]=rateDecayDurTable[48+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=ATTACK;break;case ATTACK:envStepLevelDur[a]=rateAttackDurTable[(ar[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=-8,envStepNextAtLevel[a]=0,envStepNext[a]=DECAY,phaseCounter[a]=0;break;case DECAY:envStepLevelDur[a]=rateDecayDurTable[(dr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=sl[a]<<3,envStepNext[a]=SUSTAIN;break;case SUSTAIN:envType[a]?(envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=SUSTAIN):(envStepLevelDur[a]=rateDecayDurTable[(rr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE);break;case RELEASE:var c=envType[a]?sustain[a>>1]?5:rr[a]:sustain[a>>1]?5:7;envStepLevelDur[a]=rateDecayDurTable[(c<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE;break;case IDLE:default:envLevel[a]=128,envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=IDLE}}function setRhythmMode(a){rhythmMode=a,rhythmMode?(audioConnected||connectAudio(),setInstr(6,16),setInstr(7,17),setInstr(8,18)):(setEnvStep(6,IDLE),updateEnvAttenuation(6),setEnvStep(7,IDLE),updateEnvAttenuation(7),setEnvStep(8,IDLE),updateEnvAttenuation(8),setInstr(6,register[36]>>4),setInstr(7,register[37]>>4),setInstr(8,register[38]>>4))}function setInstr(a,b){instr[a]=b;var c=a<<1,d=c+1,e=instrumentsParameters[b];am[c]=e[0]>>7&1,am[d]=e[1]>>7&1,vib[c]=e[0]>>6&1,vib[d]=e[1]>>6&1,envType[c]=e[0]>>5&1,envType[d]=e[1]>>5&1,ksr[c]=e[0]>>4&1,ksr[d]=e[1]>>4&1,multi[c]=multiFactors[15&e[0]],multi[d]=multiFactors[15&e[1]],ksl[c]=e[2]>>6,ksl[d]=e[3]>>6,modTL[c]=63&e[2],halfWave[c]=e[3]>>3&1,halfWave[d]=e[3]>>4&1,fbShift[a]=7&e[3]?8-(7&e[3]):0,ar[c]=e[4]>>4,ar[d]=e[5]>>4,dr[c]=15&e[4],dr[d]=15&e[5],sl[c]=e[6]>>4,sl[d]=e[7]>>4,rr[c]=15&e[6],rr[d]=15&e[7],updateAMAttenuation(a),updateFrequency(a),updateModAttenuationOp(c)}function updateCustomInstrChannels(){for(var a=0;a<9;a++)0===instr[a]&&setInstr(a,0)}function setVolumeOp(a,b){volume[a]=b,updateVolumeAttenuationOp(a)}function updateFrequency(a){var b=a<<1,c=b+1,d=vib[b]?vibValues[fNum[b]>>6][vibPhase]:0;phaseInc[b]=((fNum[b]<<1)+d)*multi[b]<>2,d=vib[c]?vibValues[fNum[c]>>6][vibPhase]:0,phaseInc[c]=((fNum[c]<<1)+d)*multi[c]<>2,updateKSLAttenuation(a),updateKSROffset(a)}function updateFrequencyOp(a){var b=vib[a]?vibValues[fNum[a]>>6][vibPhase]:0;phaseInc[a]=((fNum[a]<<1)+b)*multi[a]<>2,updateKSLAttenuationOp(a),updateKSROffsetOp(a)}function updateKSROffset(a){var b=a<<1,c=b+1;ksrOffset[b]=(ksr[b]?block[b]<<1:block[b]>>1)|fNum[b]>>>9-ksr[b],ksrOffset[c]=(ksr[c]?block[c]<<1:block[c]>>1)|fNum[c]>>>9-ksr[c]}function updateKSROffsetOp(a){ksrOffset[a]=(ksr[a]?block[a]<<1:block[a]>>1)|fNum[a]>>>9-ksr[a]}function updateAMAttenuation(a){var b=a<<1,c=b+1;amAtt[b]=am[b]?amLevel<<4:0,amAtt[c]=am[c]?amLevel<<4:0,updateTotalAttenuation(a)}function updateAMAttenuationOp(a){amAtt[a]=am[a]?amLevel<<4:0,updateTotalAttenuationOp(a)}function updateKSLAttenuation(a){var b=a<<1,c=b+1;kslAtt[b]=kslValues[ksl[b]][block[b]][fNum[b]>>>5]<<4,kslAtt[c]=kslValues[ksl[c]][block[c]][fNum[c]>>>5]<<4,updateTotalAttenuation(a)}function updateKSLAttenuationOp(a){kslAtt[a]=kslValues[ksl[a]][block[a]][fNum[a]>>>5]<<4,updateTotalAttenuationOp(a)}function updateEnvAttenuation(a){var b=a<<1,c=b+1;envAtt[b]=(128===envLevel[b]?256:envLevel[b])<<4,envAtt[c]=(128===envLevel[c]?256:envLevel[c])<<4,updateTotalAttenuation(a)}function updateEnvAttenuationOp(a){envAtt[a]=(128===envLevel[a]?256:envLevel[a])<<4,updateTotalAttenuationOp(a)}function updateModAttenuationOp(a){volModAtt[a]=modTL[a]<<5,updateTotalAttenuationOp(a)}function updateVolumeAttenuationOp(a){volModAtt[a]=(15===volume[a]?30:volume[a])<<7,updateTotalAttenuationOp(a)}function updateTotalAttenuation(a){var b=a<<1,c=b+1;totalAtt[b]=amAtt[b]+kslAtt[b]+envAtt[b]+volModAtt[b],totalAtt[c]=amAtt[c]+kslAtt[c]+envAtt[c]+volModAtt[c]}function updateTotalAttenuationOp(a){totalAtt[a]=amAtt[a]+kslAtt[a]+envAtt[a]+volModAtt[a]}var self=this;this.connect=function(a){cpu=a.cpu,a.bus.connectInputDevice(196,this.inputC4),a.bus.connectOutputDevice(196,this.outputC4),a.bus.connectInputDevice(197,this.inputC5),a.bus.connectOutputDevice(197,this.outputC5),a.bus.connectInputDevice(198,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectOutputDevice(198,this.outputC6),a.bus.connectInputDevice(199,this.inputC5),a.bus.connectOutputDevice(199,this.outputC5)},this.disconnect=function(a){a.bus.disconnectInputDevice(196,this.inputC4),a.bus.disconnectOutputDevice(196,this.outputC4),a.bus.disconnectInputDevice(197,this.inputC5),a.bus.disconnectOutputDevice(197,this.outputC5),a.bus.disconnectInputDevice(198,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectOutputDevice(198,this.outputC6),a.bus.disconnectInputDevice(199,this.inputC5),a.bus.disconnectOutputDevice(199,this.outputC5)},this.reset=function(){status=0,registerAddress=0,wmsx.Util.arrayFill(register,0),clock=0,busyUntilBUSCycle=0,timer1Counter=timer2Counter=0,timer1Active=timer2Active=!1,timer1Masked=timer2Masked=0,wmsx.Util.arrayFill(instrumentsParameters[0],0),noiseRegister=65535,noiseOutput=0,amLevel=0,amLevelInc=-1,vibPhase=0,rhythmMode=!1,wmsx.Util.arrayFill(sustain,0),wmsx.Util.arrayFill(instr,0),wmsx.Util.arrayFill(keyOn,0),wmsx.Util.arrayFill(am,0),wmsx.Util.arrayFill(vib,0),wmsx.Util.arrayFill(envType,0),wmsx.Util.arrayFill(ksr,0),wmsx.Util.arrayFill(multi,0),wmsx.Util.arrayFill(ksl,0),wmsx.Util.arrayFill(halfWave,0),wmsx.Util.arrayFill(ar,0),wmsx.Util.arrayFill(dr,0),wmsx.Util.arrayFill(sl,0),wmsx.Util.arrayFill(rr,0),wmsx.Util.arrayFill(fNum,0),wmsx.Util.arrayFill(block,0),wmsx.Util.arrayFill(volume,0),wmsx.Util.arrayFill(modTL,0),wmsx.Util.arrayFill(fbShift,0),wmsx.Util.arrayFill(volModAtt,0),wmsx.Util.arrayFill(amAtt,0),wmsx.Util.arrayFill(envAtt,0),wmsx.Util.arrayFill(kslAtt,0),wmsx.Util.arrayFill(totalAtt,0),wmsx.Util.arrayFill(envStep,IDLE),wmsx.Util.arrayFill(envStepLevelDur,0), -wmsx.Util.arrayFill(envStepLevelIncClock,0),wmsx.Util.arrayFill(envStepLevelInc,0),wmsx.Util.arrayFill(envStepNext,DAMP),wmsx.Util.arrayFill(envStepNextAtLevel,0),wmsx.Util.arrayFill(envLevel,0),wmsx.Util.arrayFill(ksrOffset,0),wmsx.Util.arrayFill(fbLastMod1,0),wmsx.Util.arrayFill(fbLastMod2,0),wmsx.Util.arrayFill(phaseInc,0),wmsx.Util.arrayFill(phaseCounter,0)},this.inputC4=function(){return status},this.outputC4=function(a){registerAddress=a},this.inputC5=function(){return register[registerAddress]},this.outputC5=function(a){registerWrite(registerAddress,a)},this.outputC6=function(a){registerAddress=256|a},this.audioClockPulse=function(){0==(3&++clock)&&clockTimers()},this.setBusyCycles=function(a){},this.nextSample=function(){return 0};var cpu,busyUntilBUSCycle,audioConnected=!1,status=0,registerAddress=0,register=new Array(56),timer1Counter=0,timer2Counter=0,timer1Active=!1,timer2Active=!1,timer1Masked=!1,timer2Masked=!1,IDLE=255,DAMP=0,ATTACK=1,DECAY=2,SUSTAIN=3,RELEASE=4,clock,noiseRegister,noiseOutput,amLevel,amLevelInc,vibPhase,rhythmMode,sustain=new Array(9),instr=new Array(9),keyOn=new Array(18),am=new Array(18),vib=new Array(18),envType=new Array(18),ksr=new Array(18),multi=new Array(18),ksl=new Array(18),halfWave=new Array(18),ar=new Array(18),dr=new Array(18),sl=new Array(18),rr=new Array(18),fNum=new Array(18),block=new Array(18),volume=new Array(18),modTL=new Array(18),fbShift=new Array(9),volModAtt=new Array(18),amAtt=new Array(18),envAtt=new Array(18),kslAtt=new Array(18),totalAtt=new Array(18),envStep=new Array(18),envStepLevelDur=new Array(18),envStepLevelIncClock=new Array(18),envStepLevelInc=new Array(18),envStepNext=new Array(18),envStepNextAtLevel=new Array(18),envLevel=new Array(18),ksrOffset=new Array(18),fbLastMod1=new Array(9),fbLastMod2=new Array(9),phaseInc=new Array(18),phaseCounter=new Array(18),sineTable,halfSineTable,expTable,instrumentsParameters,multiFactors,vibValues,kslValues,rateAttackDurTable,rateDecayDurTable,VOLUME=1.55/9/256*.65;this.saveState=function(){return{ac:audioConnected,s:status,ra:registerAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),c:clock,nr:noiseRegister,no:noiseOutput,al:amLevel,ai:amLevelInc,vp:vibPhase,t1c:timer1Counter,t2c:timer2Counter,t1a:timer1Active,t2a:timer2Active,t1m:timer1Masked,t2m:timer2Masked,amt:wmsx.Util.storeInt16BitArrayToStringBase64(amAtt),evt:wmsx.Util.storeInt16BitArrayToStringBase64(envAtt),kst:wmsx.Util.storeInt16BitArrayToStringBase64(kslAtt),tot:wmsx.Util.storeInt16BitArrayToStringBase64(totalAtt),evs:wmsx.Util.storeInt8BitArrayToStringBase64(envStep),evd:wmsx.Util.storeInt32BitArrayToStringBase64(envStepLevelDur),evc:envStepLevelIncClock,evi:wmsx.Util.storeInt8BitArrayToStringBase64(envStepLevelInc),evn:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNext),evl:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNextAtLevel),eve:wmsx.Util.storeInt8BitArrayToStringBase64(envLevel),kso:wmsx.Util.storeInt8BitArrayToStringBase64(ksrOffset),fb1:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod1),fb2:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod2)}},this.loadState=function(a){this.reset(),audioConnected=a.ac,status=a.s,registerAddress=a.ra;for(var b=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r),c=0;c=4194304&&(memoryAddress=0);break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15: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:c=a-8,readWaveHeader(c,(1®ister[32+c])<<8|b);break;case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:c=a-32,254&d&&(fNum[c]=b>>1|(7®ister[56+c])<<7,updateFrequency(c));break;case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63: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:case 79:c=a-56,240&d&&(octave[c]=128&b?(b>>4)-16:b>>4),7&d&&(fNum[c]=(7&b)<<7|register[32+c]>>1),247&d&&updateFrequency(c),8&d&&(reverb[c]=(8&b)>>3);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:case 95:case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:c=a-80,254&d&&(volumeAtt[c]=254&b,updateSettingsAttenuation(c));break;case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111: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:c=a-104,192&d&&setKeyOnAndDamp(c,128&b,64&b),32&d&&setLFOReset(c,32&b),15&d&&(panpotAttL[c]=panpotValues[0][15&b],panpotAttR[c]=panpotValues[1][15&b],updateSettingsAttenuation(c));break;case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 140:case 141:case 142:case 143:case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:c=a-128,56&d&&(lfoStepDur[c]=lfoStepClocks[(56&b)>>3]),7&d&&(vibDepth[c]=7&b,updateVIBOffset(c,lfoStep[c]));break;case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:c=a-152,240&d&&(ar[c]=b>=240?63:(240&b)>>2),15&d&&(d1r[c]=15==(15&b)?63:(15&b)<<2);break;case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:c=a-176,240&d&&(dl[c]=(b>=240?31:b>>4)<<4),15&d&&(d2r[c]=15==(15&b)?63:(15&b)<<2);break;case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: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:case 223:c=a-200,240&d&&(rc[c]=b>>4, -updateRateCorrOffset(c)),15&d&&(rr[c]=15==(15&b)?63:(15&b)<<2);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:case 239:case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:c=a-224,7&d&&(amDepth[c]=7&b,updateAMAttenuation(c,lfoStep[c]));break;case 249:if(63&d)for(mixerAttL=7==(7&b)?512:(7&b)<<4,mixerAttR=56==(56&b)?512:(56&b)<<1,c=23;c>=0;--c)updateSettingsAttenuation(c)}}function registerRead(a){var b;switch(a){case 6:b=opl4.memoryRead(memoryAddress),++memoryAddress>=4194304&&(memoryAddress=0);break;default:b=register[a]}return b}function readWaveHeader(a,b){var c=register[2]>>2&7,d=b<384||0===c?12*b:(c<<19)+12*(b-384),e=opl4.memoryRead(d++);dataBits[a]=e>>6,startAddress[a]=(63&e)<<16|opl4.memoryRead(d++)<<8|opl4.memoryRead(d++),loopPosition[a]=opl4.memoryRead(d++)<<8|opl4.memoryRead(d++),endPosition[a]=65535&~(opl4.memoryRead(d++)<<8|opl4.memoryRead(d++)),registerWrite(128+a,opl4.memoryRead(d++)),registerWrite(152+a,opl4.memoryRead(d++)),registerWrite(176+a,opl4.memoryRead(d++)),registerWrite(200+a,opl4.memoryRead(d++)),registerWrite(224+a,opl4.memoryRead(d++)),envStep[a]!==IDLE&&startSample(a)}function clockLFO(a){return clock!==lfoStepChangeClock[a]?-1:(lfoStepChangeClock[a]+=lfoStepDur[a],lfoStep[a]=lfoStep[a]+1&127)}function updateVIBOffset(a,b){var c=vibStepOffsets[vibDepth[a]<<7|b];vibOffset[a]!==c&&(vibOffset[a]=c,updateFrequency(a))}function updateAMAttenuation(a,b){var c=amStepOffsets[amDepth[a]<<7|b];amAtt[a]!==c&&(amAtt[a]=c,updateDynamicLevel(a))}function clockEnvelope(a){if(clock===envStepLevelChangeClock[a]){var b=envStepLevelPattCounter[a]=envStepLevelPattCounter[a]+1&7;if(envStep[a]===ATTACK){var c=rateAttackPatterns[envStepRate[a]<<3|b];if(c>=0){if(envAtt[a]-=1+(envAtt[a]>>c),envAtt[a]<=0)return setEnvStep(a,DECAY1);updateDynamicLevel(a)}}else if((c=rateDecayPatterns[envStepRate[a]<<3|b])>=0){if(envAtt[a]+=c,envAtt[a]>=envStepNextAtLevel[a])return setEnvStep(a,envStepNext[a]);updateDynamicLevel(a)}envStepLevelChangeClock[a]+=envStepLevelDur[a]}}function setKeyOnAndDamp(a,b,c){c?envStep[a]!==IDLE&&envStep[a]!==DAMP&&setEnvStep(a,DAMP):b?(startSample(a),setEnvStep(a,ATTACK)):envStep[a]!==IDLE&&envStep[a]!==REVERB&&envStep[a]!==DAMP&&setEnvStep(a,RELEASE)}function setLFOReset(a,b){b?(lfoStep[a]=0,lfoStepChangeClock[a]=0,0!==vibOffset[a]&&(vibOffset[a]=0,updateFrequency(a)),0!==amAtt[a]&&(amAtt[a]=0,updateDynamicLevel(a))):lfoStepChangeClock[a]=clock+lfoStepDur[a]}function startSample(a){samplePos[a]=0,phaseCounter[a]=0,sampleValue[a]=readSample(a,0),sampleValue2[a]=readSample(a,advancedSamplePos(a,0,1))}function advanceSample(a,b){var c=advancedSamplePos(a,samplePos[a],b);samplePos[a]=c,sampleValue[a]=readSample(a,c),sampleValue2[a]=readSample(a,advancedSamplePos(a,c,1))}function advancedSamplePos(a,b,c){var d=b+c;return d>endPosition[a]?loopPosition[a]+(d-endPosition[a])-1:d}function readSample(a,b){var c,d,e=startAddress[a],f=dataBits[a];return 1===f?(c=e+3*(b>>1),d=1&b?opl4.memoryRead(c+2)<<4|15&opl4.memoryRead(c+1):opl4.memoryRead(c)<<4|opl4.memoryRead(c+1)>>4,d=d<<4|(2047&d)>>7):2===f?(c=e+(b<<1),d=opl4.memoryRead(c)<<8|opl4.memoryRead(c+1)):0===f?(c=e+b,d=opl4.memoryRead(c),d=d<<8|(127&d)<<1):d=0,32768&d?d-65536:d}function setEnvStep(a,b){var c,d;switch(b){case ATTACK:d=0===ar[a]?0:ar[a]+rcOffset[a];break;case DECAY1:if(envAtt[a]=0,0===(c=dl[a]))return setEnvStep(a,DECAY2);d=0===d1r[a]?0:d1r[a]+rcOffset[a],reverb[a]&&c>=REVERB_ENV_LEVEL?(envStepNextAtLevel[a]=REVERB_ENV_LEVEL,envStepNext[a]=REVERB):(envStepNextAtLevel[a]=c,envStepNext[a]=DECAY2);break;case DECAY2:d=0===d2r[a]?0:d2r[a]+rcOffset[a],reverb[a]&&envAtt[a]=52?1:1<<13-(d>>2),envStepLevelChangeClock[a]=clock+envStepLevelDur[a],envStepLevelPattCounter[a]=0,updateDynamicLevel(a)}function updateFrequency(a){phaseInc[a]=(1024+fNum[a]<<8)+256*vibOffset[a]>>8-octave[a]+1,updateRateCorrOffset(a)}function updateRateCorrOffset(a){if(15===rc[a])return rcOffset[a]=0;var b=(rc[a]+octave[a]<<1)+(fNum[a]>>9);rcOffset[a]=b>=0?b:0}function updateSettingsAttenuation(a){settingsAttL[a]=volumeAtt[a]+panpotAttL[a]+mixerAttL,settingsAttR[a]=volumeAtt[a]+panpotAttR[a]+mixerAttR,updateDynamicLevel(a)}function updateDynamicLevel(a){var b=amAtt[a]+envAtt[a];dynamicLevelL[a]=volumeTable[b+settingsAttL[a]],dynamicLevelR[a]=volumeTable[b+settingsAttR[a]]}var self=this;this.connect=function(a){a.bus.connectOutputDevice(126,this.output7E),a.bus.connectInputDevice(127,this.input7F),a.bus.connectOutputDevice(127,this.output7F)},this.disconnect=function(a){a.bus.disconnectOutputDevice(126,this.output7E),a.bus.disconnectInputDevice(127,this.input7F),a.bus.disconnectOutputDevice(127,this.output7F)},this.reset=function(){clock=0,memoryAddress=0,registerAddress=0,wmsx.Util.arrayFill(register,0),register[2]=34,register[248]=27,register[0]=register[1]=register[7]=register[250]=register[251]=register[252]=register[253]=register[254]=register[255]=255,wmsx.Util.arrayFill(dataBits,0),wmsx.Util.arrayFill(startAddress,0),wmsx.Util.arrayFill(loopPosition,0),wmsx.Util.arrayFill(endPosition,0),wmsx.Util.arrayFill(phaseInc,512),wmsx.Util.arrayFill(fNum,0),wmsx.Util.arrayFill(octave,0),wmsx.Util.arrayFill(reverb,0),wmsx.Util.arrayFill(ar,0),wmsx.Util.arrayFill(d1r,0),wmsx.Util.arrayFill(dl,0),wmsx.Util.arrayFill(d2r,0),wmsx.Util.arrayFill(rr,0),wmsx.Util.arrayFill(rc,0),wmsx.Util.arrayFill(rcOffset,0),wmsx.Util.arrayFill(lfoStepDur,0),wmsx.Util.arrayFill(vibDepth,0),wmsx.Util.arrayFill(amDepth,0),wmsx.Util.arrayFill(volumeAtt,0),wmsx.Util.arrayFill(panpotAttL,0),wmsx.Util.arrayFill(panpotAttR,0),mixerAttL=0,mixerAttR=0,wmsx.Util.arrayFill(samplePos,0),wmsx.Util.arrayFill(sampleValue,0),wmsx.Util.arrayFill(sampleValue2,0),wmsx.Util.arrayFill(phaseCounter,0),wmsx.Util.arrayFill(envStep,IDLE),wmsx.Util.arrayFill(envStepNext,IDLE),wmsx.Util.arrayFill(envStepNextAtLevel,0),wmsx.Util.arrayFill(envStepRate,0),wmsx.Util.arrayFill(envStepLevelDur,0),wmsx.Util.arrayFill(envStepLevelChangeClock,0),wmsx.Util.arrayFill(envStepLevelPattCounter,0),wmsx.Util.arrayFill(envAtt,512),wmsx.Util.arrayFill(lfoStep,0),wmsx.Util.arrayFill(lfoStepChangeClock,0),wmsx.Util.arrayFill(vibOffset,0),wmsx.Util.arrayFill(amAtt,0),wmsx.Util.arrayFill(settingsAttL,0),wmsx.Util.arrayFill(settingsAttR,0),wmsx.Util.arrayFill(dynamicLevelL,0),wmsx.Util.arrayFill(dynamicLevelR,0)},this.output7E=function(a){registerAddress=a},this.input7F=function(){return registerRead(registerAddress)},this.output7F=function(a){registerWrite(registerAddress,a)},this.nextSample=function(){var a,b,c,d,e,f=0,g=0,h=0;for(++clock,e=23;e>=0;--e)a=clockLFO(e),a>=0&&(vibDepth[e]&&updateVIBOffset(e,a),amDepth[e]&&updateAMAttenuation(e,a)),envStep[e]!==IDLE&&(clockEnvelope(e),b=phaseCounter[e],c=phaseCounter[e]=b+phaseInc[e]&2147483647,d=(c>>10)-(b>>10),d>0&&advanceSample(e,d),f=sampleValue[e]*(1024-(1023&c))+sampleValue2[e]*(1023&c)>>10,g+=f*dynamicLevelL[e],h+=f*dynamicLevelR[e]);return sampleResult[0]=g,sampleResult[1]=h,sampleResult} -;var memoryAddress,registerAddress,register=new Array(255),clock,dataBits=new Array(24),startAddress=new Array(24),loopPosition=new Array(24),endPosition=new Array(24),samplePos=new Array(24),sampleValue=new Array(24),sampleValue2=new Array(24),phaseInc=new Array(24),phaseCounter=new Array(24),fNum=new Array(24),octave=new Array(24),reverb=new Array(24),ar=new Array(24),d1r=new Array(24),dl=new Array(24),d2r=new Array(24),rc=new Array(24),rr=new Array(24),rcOffset=new Array(24),lfoStepDur=new Array(24),vibDepth=new Array(24),amDepth=new Array(24),volumeAtt=new Array(24),panpotAttL=new Array(24),panpotAttR=new Array(24),mixerAttL=0,mixerAttR=0,settingsAttL=new Array(24),settingsAttR=new Array(24),envStep=new Array(24),envStepNext=new Array(24),envStepNextAtLevel=new Array(24),envStepRate=new Array(24),envStepLevelDur=new Array(24),envStepLevelChangeClock=new Array(24),envStepLevelPattCounter=new Array(24),envAtt=new Array(24),lfoStep=new Array(24),lfoStepChangeClock=new Array(24),vibOffset=new Array(24),amAtt=new Array(24),dynamicLevelL=new Array(24),dynamicLevelR=new Array(24),IDLE=255,ATTACK=1,DECAY1=2,DECAY2=3,RELEASE=4,REVERB=5,DAMP=6,REVERB_ENV_LEVEL=96,REVERB_RATE=20,DAMP_RATE=60,regWriteMasks,rateAttackPatterns,rateDecayPatterns,lfoStepClocks,vibStepOffsets,amStepOffsets,panpotValues,volumeTable,sampleResult=[0,0];this.saveState=function(){return{c:clock,ra:registerAddress,ma:memoryAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),db:wmsx.Util.storeInt8BitArrayToStringBase64(dataBits),sa:wmsx.Util.storeInt32BitArrayToStringBase64(startAddress),lp:wmsx.Util.storeInt16BitArrayToStringBase64(loopPosition),ep:wmsx.Util.storeInt16BitArrayToStringBase64(endPosition),sp:wmsx.Util.storeInt16BitArrayToStringBase64(samplePos),sv:wmsx.Util.storeInt16BitArrayToStringBase64(sampleValue),pc:wmsx.Util.storeInt32BitArrayToStringBase64(phaseCounter),evs:wmsx.Util.storeInt8BitArrayToStringBase64(envStep),evr:wmsx.Util.storeInt8BitArrayToStringBase64(envStepRate),evd:wmsx.Util.storeInt32BitArrayToStringBase64(envStepLevelDur),evc:envStepLevelChangeClock,evn:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNext),evl:wmsx.Util.storeInt16BitArrayToStringBase64(envStepNextAtLevel),epc:wmsx.Util.storeInt8BitArrayToStringBase64(envStepLevelPattCounter),eva:wmsx.Util.storeInt16BitArrayToStringBase64(envAtt),lfs:wmsx.Util.storeInt8BitArrayToStringBase64(lfoStep),lfc:lfoStepChangeClock,vio:wmsx.Util.storeInt8BitArrayToStringBase64(vibOffset),ama:wmsx.Util.storeInt8BitArrayToStringBase64(amAtt),saL:wmsx.Util.storeInt16BitArrayToStringBase64(settingsAttL),saR:wmsx.Util.storeInt16BitArrayToStringBase64(settingsAttR),dlvL:dynamicLevelL,dlvR:dynamicLevelR}},this.loadState=function(a){this.reset(),registerAddress=a.ra;for(var b=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r),c=2;c<6;c++)registerWrite(c,b[c]);for(c=8;c<32;c++)register[c]=b[c];for(c=32;c<250;c++)registerWrite(c,b[c]);memoryAddress=a.ma,clock=a.c,dataBits=wmsx.Util.restoreStringBase64ToInt8BitArray(a.db,dataBits),startAddress=wmsx.Util.restoreStringBase64ToInt32BitArray(a.sa,startAddress),loopPosition=wmsx.Util.restoreStringBase64ToInt16BitArray(a.lp,loopPosition),endPosition=wmsx.Util.restoreStringBase64ToInt16BitArray(a.ep,endPosition),phaseCounter=wmsx.Util.restoreStringBase64ToInt32BitArray(a.pc,phaseCounter),samplePos=wmsx.Util.restoreStringBase64ToInt16BitArray(a.sp,samplePos),sampleValue=wmsx.Util.restoreStringBase64ToSignedInt16BitArray(a.sv,sampleValue),envStep=wmsx.Util.restoreStringBase64ToInt8BitArray(a.evs,envStep),envStepRate=wmsx.Util.restoreStringBase64ToInt8BitArray(a.evr,envStepRate),envStepLevelDur=wmsx.Util.restoreStringBase64ToInt32BitArray(a.evd,envStepLevelDur),envStepLevelChangeClock=a.evc,envStepNext=wmsx.Util.restoreStringBase64ToInt8BitArray(a.evn,envStepNext),envStepNextAtLevel=wmsx.Util.restoreStringBase64ToInt16BitArray(a.evl,envStepNextAtLevel),envStepLevelPattCounter=wmsx.Util.restoreStringBase64ToInt16BitArray(a.epc,envStepLevelPattCounter),envAtt=wmsx.Util.restoreStringBase64ToInt16BitArray(a.eva,envAtt),lfoStep=wmsx.Util.restoreStringBase64ToInt8BitArray(a.lfs,lfoStep),lfoStepChangeClock=a.lfc,vibOffset=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.vio,vibOffset),amAtt=wmsx.Util.restoreStringBase64ToInt8BitArray(a.ama,amAtt),settingsAttL=wmsx.Util.restoreStringBase64ToInt16BitArray(a.saL,settingsAttL),settingsAttR=wmsx.Util.restoreStringBase64ToInt16BitArray(a.saR,settingsAttR),dynamicLevelL=a.dlvL,dynamicLevelR=a.dlvR},init(),this.eval=function(str){return eval(str)}},wmsx.RTC=function(){"use strict";function a(a){i!==a&&(a?(c(),i=!0):(i=!1,b()))}function b(){h||(h=new Date(Math.floor(g))),k[0]=h.getUTCSeconds()%10,k[1]=h.getUTCSeconds()/10|0,k[2]=h.getUTCMinutes()%10,k[3]=h.getUTCMinutes()/10|0,l[10]?(k[4]=h.getUTCHours()%10,k[5]=h.getUTCHours()/10|0):(k[4]=h.getUTCHours()%12%10,k[5]=h.getUTCHours()%12/10|0,h.getUTCHours()>=12&&(k[5]|=2)),k[6]=h.getUTCDay()+1,k[7]=h.getUTCDate()%10,k[8]=h.getUTCDate()/10|0,k[9]=(h.getUTCMonth()+1)%10,k[10]=(h.getUTCMonth()+1)/10|0,k[11]=(h.getUTCFullYear()-1980)%10,k[12]=(h.getUTCFullYear()-1980)/10|0}function c(){h||(h=new Date),h.setUTCSeconds(k[0]+10*k[1]),h.setUTCMinutes(k[2]+10*k[3]),1&l[10]?h.setUTCHours(k[4]+10*k[5]):h.setUTCHours(k[4]+(2&k[5]?12:0)+(1&k[5]?10:0)),h.setUTCDate(k[7]+10*k[8]),h.setUTCMonth(k[9]+10*k[10]-1),h.setUTCFullYear(k[11]+10*k[12]+1980),g=h.getTime()}function d(a){if(a&=1,(1&l[10])!==a){var b;a?(b=k[4]+(2&k[5]?12:0)+(1&k[5]?10:0),k[5]=b/10|0,k[4]=b%10):(b=k[4]+10*k[5],k[5]=(b>=12?2:0)|(b%12>=10?1:0),k[4]=b%12%10)}}this.setMachineType=function(a){e=WMSX.RTC_ACTIVE>=0?!!WMSX.RTC_ACTIVE:a>=2,e&&wmsx.Util.arrayFill(m[0],0),wmsx.Util.arrayFill(m[1],0)},this.connectBus=function(a){a.connectInputDevice(180,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(180,this.outputB4),a.connectInputDevice(181,this.inputB5),a.connectOutputDevice(181,this.outputB5)},this.powerOn=function(){this.reset()},this.powerOff=function(){},this.reset=function(){f=0,a(!0)},this.videoClockPulse=function(){g+=j,h&&(h=void 0)},this.setFps=function(a){j=1e3/a},this.outputB4=function(a){e&&(n=15&a)},this.outputB5=function(b){if(e)if(b&=15,n<13)switch(f){case 0:k[n]=b&o[n];break;case 1:10===n&&d(b),l[n]=b&p[n];break;case 2:case 3:m[1&f][n]=b}else switch(n){case 13:f=3&b,a(0!=(8&b))}},this.inputB5=function(){if(!e)return 255;var a;if(n<13)switch(f){case 0:i&&b(),a=k[n];break;case 1:a=l[n];break;case 2:case 3:a=m[1&f][n]}else switch(n){case 13:a=(i?8:0)|f;break;case 14:case 15:a=15}return a};var e,f=0,g=Date.now()-60*(new Date).getTimezoneOffset()*1e3,h=void 0,i=!0,j=1e3/60,k=wmsx.Util.arrayFill(new Array(13),0),l=wmsx.Util.arrayFill(new Array(13),0),m=[new Array(13),new Array(13)],n=0,o=[15,7,15,7,15,3,7,15,3,15,1,15,15],p=[0,0,15,7,15,3,7,15,3,0,1,3,0];this.saveState=function(){return{a:e,m:f,i:g,c:i,rc:wmsx.Util.storeInt8BitArrayToStringBase64(k),rm:wmsx.Util.storeInt8BitArrayToStringBase64(l),r0:wmsx.Util.storeInt8BitArrayToStringBase64(m[0]),r1:wmsx.Util.storeInt8BitArrayToStringBase64(m[1]),ra:n}},this.loadState=function(a){e=void 0!==a.a?a.a:a.m2,f=a.m,i=a.c,g=a.i?a.i:a.co+a.t,h=void 0,k=wmsx.Util.restoreStringBase64ToInt8BitArray(a.rc,k),l=wmsx.Util.restoreStringBase64ToInt8BitArray(a.rm,l),m[0]=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r0,m[0]),m[1]=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r1,m[1]),n=a.ra}},wmsx.SystemFlags=function(){"use strict";this.setMachineType=function(b){a=b>=3},this.connectBus=function(a){a.connectInputDevice(243,this.inputF3),a.connectOutputDevice(243,this.outputF3),a.connectInputDevice(244,this.inputF4),a.connectOutputDevice(244,this.outputF4),a.connectInputDevice(245,wmsx.DeviceMissing.outputPortIgnored),a.connectOutputDevice(245,wmsx.DeviceMissing.outputPortIgnored),a.connectInputDevice(246,wmsx.DeviceMissing.inputPortIgnored), -a.connectOutputDevice(246,wmsx.DeviceMissing.outputPortIgnored),a.connectInputDevice(247,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(247,wmsx.DeviceMissing.outputPortIgnored),a.connectInputDevice(248,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(248,wmsx.DeviceMissing.outputPortIgnored)},this.powerOn=function(){this.reset()},this.powerOff=function(){},this.reset=function(){b=d,c=e},this.inputF3=function(){return a?c:255},this.outputF3=function(b){a&&(c=b)},this.inputF4=function(){return a?b:255},this.outputF4=function(c){a&&(b=c)};var a,b,c,d=255,e=0;this.saveState=function(){return{a:a,bf:b,vf:c}},this.loadState=function(d){a=void 0!==d.a?d.a:d.m2p,b=d.bf,c=d.vf}},wmsx.ImageCassetteDriver=function(){"use strict";function a(a){return l.motor(!0),l.readHeader()?h(a,o):i(a)}function b(a){var b=l.readByte();if(null===b)return i(a);var c=h(a,p);return c.A=b,c}function c(){l.motor(!1)}function d(a,b){return l.motor(!0),l.writeHeader(a)?h(b,a?m:n):i(b)}function e(a,b){return l.writeByte(a)?h(b,p):i(b)}function f(){l.finishWriting(),l.motor(!1)}function g(a){l.motor(255===a?null:a>0)}function h(a,b){return{F:254&a,extraIterations:b}}function i(a){return{F:a|=1}}var j=this;this.connect=function(a,b){b.getCassetteSocket().connectDriver(this),l=b.getCassetteSocket().getDeck(),k=a.getKeyboardExtension()},this.disconnect=function(a,b){b.getCassetteSocket().connectDriver(null)},this.powerOff=function(){l&&l.motor(!1)},this.typeCurrentAutoRunCommand=function(){var a=j.currentAutoRunCommand();a&&k.typeString(a)},this.currentAutoRunCommand=function(){var a=l.peekFileInfoAtCurrentPosition();if(!a)return null;switch(a.type){case"Binary":return'\r\r\rbload "cas:'+a.name+'", r\r';case"Basic":return'\r\r\rcload "'+a.name+'"\rrun\r';case"ASCII":return'\r\r\rrun "cas:'+a.name+'"\r'}return null},this.cpuExtensionBegin=function(h){switch(h.extNum){case 224:return a(h.F);case 225:return b(h.F);case 226:return c();case 227:return d(h.A,h.F);case 228:return e(h.A,h.F);case 229:return f();case 230:return g(h.A)}},this.cpuExtensionFinish=function(a){},this.patchBIOS=function(a){a[225]=237,a[226]=224,a[227]=201,a[228]=237,a[229]=225,a[230]=201,a[231]=237,a[232]=226,a[233]=201,a[234]=237,a[235]=227,a[236]=201,a[237]=237,a[238]=228,a[239]=201,a[240]=237,a[241]=229,a[242]=201,a[243]=237,a[244]=230,a[245]=201};var k,l,m=3e5,n=m/3,o=.4*n,p=10},wmsx.TurboDriver=function(){"use strict";function a(){var a=f.bytes;237!==a[400]&&(a[384]=195,a[385]=141,a[386]=1,a[387]=195,a[388]=144,a[389]=1,a[397]=237,a[398]=232,a[399]=201,a[400]=237,a[401]=233,a[402]=201)}function b(){var a=f.bytes;237===a[400]&&(a[384]=a[387]=a[397]=a[400]=201)}function c(a){i=131&a;var b=(3&i)>0;j!==b&&(j=b,0===h.getCPUTurboMode()?(e.turboModesUpdate(),h.showCPUTurboModeMessage()):h.showOSD("Could not set CPU Turbo by software: mode is FORCED "+h.getCPUTurboModeDesc(),!0,!0))}function d(){return{A:i}}var e=this;this.connect=function(a,b){f=a,g=b.getBIOSSocket(),h=b,this.turboModesUpdate()},this.reset=function(){i=0,j&&(j=!1,this.turboModesUpdate())},this.turboModesUpdate=function(){var c=h.machineType>=2,d=h.getCPUTurboMode(),e=h.getVDPTurboMode();d<0||!c?b():a(),h.cpu.setCPUTurboMulti(0===d&&c&&j?WMSX.CPU_SOFT_TURBO_MULTI:d<=0?1:d),h.vdp.setVDPTurboMulti(0===e&&c&&j?WMSX.VDP_SOFT_TURBO_MULTI:e>1?e:1),g.fireMachineTurboModesStateUpdate()},this.cpuExtensionBegin=function(a){if(!(h.machineType<=1))switch(a.extNum){case 232:return c(a.A);case 233:return d()}},this.cpuExtensionFinish=function(a){},this.saveState=function(){return{st:j,cv:i}},this.loadState=function(a){j=!!a&&a.st,i=a?a.cv:0};var f,g,h,i=0,j=!1},wmsx.BIOSKeyboardExtension=function(){"use strict";this.connect=function(b){a=b.bus},this.typeString=function(a){if(void 0!==a&&null!==a){var c=a.toString();c&&(c=c.replace(/\r\n/g,"\r").replace(/\n/g,"\r"),b=(b||"")+c)}},this.cancelTypeString=function(){b=null,c=0},this.keyboardExtensionClockPulse=function(){if(b){var h=a.read(e)|a.read(e+1)<<8;if(!(hg)){var i=a.read(d)|a.read(d+1)<<8;if(!(ig)){var j=h-i-1;if(j<0&&(j+=40),!(j<=0)){for(var k=b.substr(c,j),l=0;lg&&(i=f);a.write(d,255&i),a.write(d+1,i>>8),c+=k.length,c>=b.length&&this.cancelTypeString()}}}}},this.saveState=function(){return{s:b&&btoa(b),p:c}},this.loadState=function(a){b=a.s&&atob(a.s),c=a.p};var a,b,c=0,d=62456,e=62458,f=64496,g=64535},wmsx.ImageDiskDriver=function(){"use strict";function a(a,b){return{HL:65280&b|(64&a?1:2)}}function b(a,b,e,f,g,h){return 1&a?d(a,b,e,f,g,h):c(a,b,e,f,g,h)}function c(a,b,c,d,e,f){var g=o.motorOn(b);return o.readSectorsToSlot(b,e,c,k(f),f)?{F:-2&a,B:0,extraIterations:g+c*u}:{F:1|a,A:2,B:c,extraIterations:g}}function d(a,b,c,d,e,f){var g=o.motorOn(b);return o.isDiskInserted(b)&&o.writeSectorsFromSlot(b,e,c,k(f),f)?{F:-2&a,B:0,extraIterations:g+c*u}:{F:1|a,A:2,B:c,extraIterations:g}}function e(a,b,c,d,e){var g=o.diskHasChanged(b);if(!1===g)return{F:-2&a,B:1};var h=o.motorOn(b),i=o.readByte(b,r);return null===i?{F:1|a,A:2,B:0,extraIterations:h}:(f(b,i,d,e),{F:-2&a,B:!0===g?255:0,extraIterations:h})}function f(a,b,c,d){var e=0===b?c:b;if(!(e<248)){j(o.MEDIA_TYPE_DPB[e],d+1)}}function g(){return{HL:t}}function h(a,b,c){var d=c>>>8,e=b-1;if(e<0||e>1||d<0||d>1)return{F:1|a,A:12};var f=o.FORMAT_OPTIONS_MEDIA_TYPES[e];return o.insertNewDisk(d,f,!1,!0),o.motorOn(d),o.formatCurrentDisk(d,f),{F:-2&a,extraIterations:v}}function i(){o.allMotorsOffNow()}function j(a,b){for(var c=k(b),d=0;d=16384&&a<=32767){var c=p.read(62274);b=p.getSlot(3&c),0!=(128&c)&&b.isExpanded()&&(b=b.getSubSlot(c>>2&3))}else b=p.getSlotForAddress(a),b.isExpanded()&&(b=b.getSubSlotForAddress(a));return b}function l(a,b,c){delete q[b];var d=p.read(c+26),e=3&d,f=e<=1;return f&&(o.motorFlash(e),!o.isDiskInserted(e))?{F:1|a,A:26}:(p.write(c+0,f?1:0),p.write(c+1,130),p.write(c+12+0,0),p.write(c+12+1,0),p.write(c+12+2,0),p.write(c+12+3,0),p.write(c+28,9),p.write(c+29,0),p.write(c+30,2),q[b]=e,{F:-2&a})}function m(a,b,c,d,e,f){var g=q[b];return g>=0&&o.motorFlash(g),void 0!==g&&o.isDiskInserted(g)?o.readSectorsToSlot(g,(f<<16)+e,c,p,d)?{F:-2&a}:{F:1|a,A:6}:{F:1|a,A:26}}function n(a,b,c,d,e,f){var g=q[b];return g>=0&&o.motorFlash(g),void 0!==g&&o.isDiskInserted(g)?o.writeSectorsFromSlot(g,(f<<16)+e,c,p,d)?{F:-2&a}:{F:1|a,A:6}:{F:1|a,A:26}}this.connect=function(a,b){o=b.getDiskDriveSocket().getDrive(),p=b.bus,p.setCpuExtensionHandler(243,this),p.setCpuExtensionHandler(244,this),p.setCpuExtensionHandler(245,this)},this.disconnect=function(a,b){o.allMotorsOff(),p.setCpuExtensionHandler(243,void 0),p.setCpuExtensionHandler(244,void 0),p.setCpuExtensionHandler(245,void 0)},this.powerOff=function(){o.allMotorsOff()},this.cpuExtensionBegin=function(c){switch(c.extNum){case 232:return;case 233:return a(c.F,c.HL);case 234:return b(c.F,c.A,c.B,c.C,c.DE,c.HL);case 235:return e(c.F,c.A,c.B,c.C,c.HL);case 236:return f(c.A,c.B,c.C,c.HL);case 237:return g();case 238:return h(c.F,c.A,c.DE);case 239:return i();case 243:return m(c.F,c.C,c.B,c.HL,c.IX,c.IY);case 244:return n(c.F,c.C,c.B,c.HL,c.IX,c.IY);case 245:return l(c.F,c.C,c.HL)}},this.cpuExtensionFinish=function(a){o.allMotorsOff()},this.patchDiskBIOS=function(a,b){a[b+5999]=237,a[b+6e3]=232,a[b+6001]=0,a[b+6224]=237,a[b+6225]=233,a[b+6226]=0,a[b+16]=237,a[b+17]=234,a[b+18]=201,a[b+19]=237,a[b+20]=235,a[b+21]=201,a[b+22]=237,a[b+23]=236,a[b+24]=201,a[b+25]=237,a[b+26]=237,a[b+27]=201,a[b+28]=237,a[b+29]=238,a[b+30]=201,a[b+31]=237,a[b+32]=239,a[b+33]=201,wmsx.Util.arrayFill(a,255,b+16384);for(var c=0;c>8&255,d>>16&255,d>>24&255,1,0,0,0,0],f=0;f<12;++f)m.write(c+f,e[f]);return{A:0}}function i(a,b,c){delete n[b];var d=m.read(c+26),e=d>>4,f=15&d,g=0===e,h=0;if(g){if(l.motorFlash(2),!l.isDiskInserted(2))return{F:1|a,A:26};var i=l.readByte(2,510)<<8|l.readByte(2,511);if(null===i)return{F:1|a,A:26};var j=21930===i;if(f>0){if(!j)return{F:1|a,A:4};var k=446+16*(f-1),o=l.readByte(2,k+4);if(h=l.readDWord(2,k+8),null===o||null===h)return{F:1|a,A:26};if(!h||!o)return{F:1|a,A:4}}else if(j)return{F:1|a,A:4}}return m.write(c+0,g?1:0),m.write(c+1,145),m.write(c+12+0,255&h),m.write(c+12+1,h>>8&255),m.write(c+12+2,h>>16&255),m.write(c+12+3,h>>24&255),m.write(c+31,0),n[b]=h,{F:-2&a}}function j(a,b,c,d,e,f){var g=n[b];return g>=0&&l.motorFlash(2),void 0!==g&&l.isDiskInserted(2)?l.readSectorsToSlot(2,g+(f<<16)+e,c,m,d)?{F:-2&a}:{F:1|a,A:9}:{F:1|a,A:26}}function k(a,b,c,d,e,f){var g=n[b];return g>=0&&l.motorFlash(2),void 0!==g&&l.isDiskInserted(2)?l.writeSectorsFromSlot(2,g+(f<<16)+e,c,m,d)?{F:-2&a}:{F:1|a,A:9}:{F:1|a,A:26}}this.connect=function(a,b){l=b.getDiskDriveSocket().getDrive(),m=b.bus,m.setCpuExtensionHandler(240,this),m.setCpuExtensionHandler(241,this),m.setCpuExtensionHandler(242,this)},this.disconnect=function(a,b){b.bus.setCpuExtensionHandler(240,void 0),b.bus.setCpuExtensionHandler(241,void 0),b.bus.setCpuExtensionHandler(242,void 0)},this.powerOff=function(){},this.cpuExtensionBegin=function(d){switch(d.extNum){case 224:return a();case 225:return b(d.A,d.B,d.HL);case 232:return c(d.F,d.A,d.B,d.C,d.DE,d.HL);case 233:return f(d.A,d.B,d.HL);case 234:return g(d.A,d.B);case 235:return h(d.A,d.B,d.HL);case 240:return j(d.F,d.C,d.B,d.HL,d.IX,d.IY);case 241:return k(d.F,d.C,d.B,d.HL,d.IX,d.IY);case 242:return i(d.F,d.C,d.HL)}},this.cpuExtensionFinish=function(a){},this.patchNextorKernel=function(a){a[114958]=1;for(var b="WebMSX Nextor Device Driver ",c=0;c<32;++c)a[114960+c]=b.charCodeAt(c);for(a[114992]=201,a[114993]=201,a[114994]=201,a[114995]=237,a[114996]=224,a[114997]=201,a[114998]=237,a[114999]=225,a[115e3]=201,a[115001]=55,a[115002]=201,a[115003]=201,a[115004]=55,a[115005]=201,a[115006]=201,a[115007]=201,a[115008]=201,a[115009]=201,c=115010;c<115026;++c)a[c]=201;a[115040]=237,a[115041]=232,a[115042]=201,a[115043]=237,a[115044]=233,a[115045]=201,a[115046]=237,a[115047]=234,a[115048]=201,a[115049]=237,a[115050]=235,a[115051]=201},this.saveState=function(){return{so:n}},this.loadState=function(a){n=void 0!==(a&&a.so)?a.so:{}};var l,m,n={},o=252,p=181},wmsx.ROM=function(a,b,c,d){"use strict";this.source=wmsx.Util.leafFilename(a),this.content=b,this.info=c||wmsx.SlotCreator.produceInfo(this,d),this.saveState=function(){return{s:this.source,i:this.info}},this.reloadEmbeddedContent=function(){if(!this.content&&wmsx.EmbeddedFiles.isEmbeddedURL(this.source)){var a=wmsx.EmbeddedFiles.get(this.source);this.content=a&&a.content}}},wmsx.ROM.loadState=function(a){return new wmsx.ROM(a.s,null,a.i)},wmsx.ROMDatabase={uncompress:function(){wmsx.ROMDatabase=JSON.parse(wmsx.Util.uncompressStringBase64ToString(this.data))}, -data:"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" -},wmsx.SlotCreator=function(){"use strict";function a(a,b){var c,d=[];for(var e in wmsx.SlotFormats)c=wmsx.SlotFormats[e],c.prioritySelected=c.priorityForRom(a,b),c.prioritySelected&&(f(c,a.info),c.prioritySelected>=j||d.push(c));return d.sort(function(a,b){return a.prioritySelected-b.prioritySelected}),d}function b(a){var b={};return a.n&&(b.n=a.n),a.h&&(b.h=a.h),a.f&&(b.f=a.f),a.t&&(b.t=a.t),a.l&&(b.l=a.l),a.e&&(b.e=a.e),b}this.createFromROM=function(a,b){var d=c.getForROM(a);if(d){var e=wmsx.SlotFormats[d];if(e.priorityForRom(a))return wmsx.Util.log("USER Format selected: "+e.desc),e.createFromROM(a)}var f=this.getBestFormatOption(a,b);if(f){return wmsx.EmbeddedFiles.isEmbeddedURL(a.source)||wmsx.Util.log("AUTO Format selected: "+f.desc+", priority: "+f.prioritySelected),f.createFromROM(a)}},this.recreateFromSaveState=function(a,b){var c=wmsx.SlotFormats[a.f];if(!c)throw new Error("Unsupported ROM Format in Savestate: "+a.f);return b&&b.format!==c&&(b=null),c.recreateFromSaveState(a,b)},this.changeCartridgeFormat=function(a,b){return b.createFromROM(a.rom)},this.getBestFormatOption=function(b,c){var d=a(b,c);return 0===d.length?void 0:d[0]},this.getUserFormatOptionNames=function(a){for(var b=[],c=0,d=wmsx.SlotFormatsUserOptions.length;cm?void 0:wmsx.Util.sha1Generator.calcSHA1FromByteArray(a.content).toUpperCase();a.content.length>f&&(a.content.length=f);var h=wmsx.ROMDatabase[g],i=wmsx.EmbeddedFiles.isEmbeddedURL(a.source);return h?(h=b(h),i||wmsx.Util.log("ROM: "+h.n+(h.f?", format: "+h.f:"")+" ("+g+")")):(h=d(a.source),i||wmsx.Util.log("ROM: "+(f>0?"Unknown content":"No content")+", "+h.n+(h.f?", format: "+h.f:"")+(g?" ("+g+")":" (no hash computed)"))),e(h,a.source,g,c),h},this.setUserROMFormats=function(a){c=a};var c,d=function(a){var b={n:"Unknown"};return a?(b.n=wmsx.Util.leafFilenameNoExtension(a)||"Unknown",b):b},e=function(a,b,c,d){if(a.h=c,d){d=d.trim().toUpperCase();for(var e in wmsx.SlotFormats)if(e.toUpperCase()===d){a.f=wmsx.SlotFormats[e].name,a.t=!0;break}}if(!a.t){var f=b.toUpperCase();for(e in wmsx.SlotFormats)if(g(e.toUpperCase(),f)){a.f=wmsx.SlotFormats[e].name,a.t=!0;break}}},f=function(a,b){b.f&&a.name===b.f&&(a.prioritySelected-=b.t?l:k)},g=function(a,b){return b.match(h+a+i)},h="\\[",i="\\]",j=1e3,k=1e3,l=5e3,m=1024*(WMSX.ROM_MAX_HASH_SIZE_KB||3072);this.FORMAT_PRIORITY_BOOST=k},wmsx.SlotCreator=new wmsx.SlotCreator,wmsx.SlotFormats={Empty:{name:"Empty",desc:"Empty Slot",priority:1001,internal:!0,embeddedURL:"@[Empty].rom",priorityForRom:function(a){return a&&a.content&&0!==a.content.length?null:this.priority},createFromROM:function(a){return wmsx.SlotEmpty.singleton},recreateFromSaveState:function(a,b){return wmsx.SlotEmpty.singleton}},Expanded:{name:"Expanded",desc:"Expanded Slot",priority:1002,internal:!0,priorityForRom:function(a){return null},createFromROM:null,recreateFromSaveState:function(a,b){return wmsx.SlotExpanded.recreateFromSaveState(a,b)}},ExpandedS:{name:"ExpandedS",desc:"Special System Expanded Slot",priority:1003,internal:!0,priorityForRom:function(a){return null},createFromROM:null,recreateFromSaveState:function(a,b){return wmsx.SlotExpandedSpecial.recreateFromSaveState(a,b)}},ExpandedM:{name:"ExpandedM",desc:"Special System Expanded Slot for Modules (Device-only Slots)",priority:1004,internal:!0,priorityForRom:function(a){return null},createFromROM:null,recreateFromSaveState:function(a,b){return wmsx.SlotExpandedModules.recreateFromSaveState(a,b)}},BIOS:{name:"BIOS",desc:"Main BIOS",priority:201,internal:!0,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=65536&&243===a.content[0]&&(195===a.content[1]||24===a.content[1])?this.priority:null},createFromROM:function(a){return new wmsx.SlotBIOS(a)},recreateFromSaveState:function(a,b){return wmsx.SlotBIOS.recreateFromSaveState(a,b)}},MSX2BIOSExt:{name:"MSX2BIOSExt",desc:"MSX2/2+ BIOS Extension",priority:202,internal:!0,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=65536&&67===a.content[0]&&68===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.SlotMSX2BIOSExt(a)},recreateFromSaveState:function(a,b){return wmsx.SlotMSX2BIOSExt.recreateFromSaveState(a,b)}},RAMNormal:{name:"RAMNormal",desc:"Normal RAM (unmapped)",priority:1011,internal:!0,embeddedURL:"@[RAMNormal].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.SlotRAMNormal(a)},recreateFromSaveState:function(a,b){return wmsx.SlotRAMNormal.recreateFromSaveState(a,b)}},RAMMapper:{name:"RAMMapper",desc:"Standard RAM Mapper",priority:1012,internal:!0,embeddedURL:"@[RAMMapper].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.SlotRAMMapper(a)},recreateFromSaveState:function(a,b){return wmsx.SlotRAMMapper.recreateFromSaveState(a,b)}},DiskPatch:{name:"DiskPatch",desc:"Generic Patched Disk BIOS",priority:1301,internal:!0,embeddedURL:"@[DiskPatch].rom",priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=65536?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeDiskPatched(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeDiskPatched.recreateFromSaveState(a,b)}},Nextor16Patch:{name:"Nextor16Patch",desc:"Nextor ASCII-16 Patched Kernel",priority:1302,internal:!0,embeddedURL:"@[Nextor16Patch].rom",priorityForRom:function(a){return 131072===a.content.length&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeNextorPatched(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeNextorPatched.recreateFromSaveState(a,b)}},SCCExpansion:{name:"SCCExpansion",desc:"Konami SCC Sound Cartridge",priority:1501,internal:!0,embeddedURL:"@[SCCExpansion].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSCCExpansion(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSCCExpansion.recreateFromSaveState(a,b)}},SCCIExpansion:{name:"SCCIExpansion",desc:"Konami SCC+ Sound Mapper Cartridge",priority:1502,internal:!0,embeddedURL:"@[SCCIExpansion].rom",priorityForRom:function(a){return a.content.length<=131072?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSCCIExpansion(a,this,!1)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSCCIExpansion.recreateFromSaveState(a,b)}},MSXMUSIC:{name:"MSXMUSIC",desc:"MSX-MUSIC Sound Extension",priority:1503,internal:!0,embeddedURL:"@[MSXMUSIC].rom",priorityForRom:function(a){return 16384===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMSXMUSIC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMSXMUSIC.recreateFromSaveState(a,b)}},PACExpansion:{name:"PACExpansion",desc:"PAC SRAM Cartridge",priority:1505,internal:!0,embeddedURL:"@[PACExpansion].rom",priorityForRom:function(a,b){return 0===a.content.length?this.priority:!wmsx.CartridgePAC.isPACFileContentValid(a.content)||b&&b.format!==wmsx.SlotFormats.PACExpansion&&b.format!==wmsx.SlotFormats.FMPAC?null:this.priority-wmsx.SlotCreator.FORMAT_PRIORITY_BOOST},createFromROM:function(a){return new wmsx.CartridgePAC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgePAC.recreateFromSaveState(a,b)}},Kanji1:{name:"Kanji1",desc:"Kanji Font Driver",priority:1506,internal:!0,embeddedURL:"@[Kanji1].rom",priorityForRom:function(a){return 131072===a.content.length||262144===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeKanjiFont(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeKanjiFont.recreateFromSaveState(a,b)}},MoonSound:{ -name:"MoonSound",desc:"MoonSound OPL4 Sound Cartridge",priority:1507,internal:!0,embeddedURL:"@[MoonSound].rom",priorityForRom:function(a){return 2097152===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMoonSound(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMoonSound.recreateFromSaveState(a,b)}},ExtraPSG:{name:"ExtraPSG",desc:"Extra PSG Sound Chip",priority:1508,internal:!0,embeddedURL:"@[ExtraPSG].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeExtraPSG(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeExtraPSG.recreateFromSaveState(a,b)}},MegaRAM:{name:"MegaRAM",desc:"MegaRAM Mapper Cartridge",priority:1509,internal:!0,embeddedURL:"@[MegaRAM].rom",priorityForRom:function(a){return a.content.length<=2097152?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMegaRAM(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMegaRAM.recreateFromSaveState(a,b)}},Normal:{name:"Normal",desc:"Normal ROM, Mirroring Auto",priority:901,priorityForRom:function(a){return 8192!==a.content.length&&16384!==a.content.length||65!==a.content[0]||66!==a.content[1]?32768===a.content.length&&(65===a.content[0]&&66===a.content[1]||65===a.content[16384]&&66===a.content[16385])?this.priority:65536!==a.content.length&&49152!==a.content.length||!(65===a.content[16384]&&66===a.content[16385]||65===a.content[32768]&&66===a.content[32769])?null:this.priority:this.priority},createFromROM:function(a){return new wmsx.SlotNormal(a,this)},recreateFromSaveState:function(a,b){return wmsx.SlotNormal.recreateFromSaveState(a,b)}},Mirrored:{name:"Mirrored",desc:"Normal ROM, Mirrored",priority:902,priorityForRom:function(a){return wmsx.SlotFormats.Normal.priorityForRom(a)},createFromROM:function(a){return new wmsx.SlotNormal(a,this)},recreateFromSaveState:function(a,b){return wmsx.SlotNormal.recreateFromSaveState(a,b)}},NotMirrored:{name:"NotMirrored",desc:"Normal ROM, Not Mirrored",priority:903,priorityForRom:function(a){return wmsx.SlotFormats.Normal.priorityForRom(a)},createFromROM:function(a){return new wmsx.SlotNormal(a,this)},recreateFromSaveState:function(a,b){return wmsx.SlotNormal.recreateFromSaveState(a,b)}},ASCII8:{name:"ASCII8",desc:"ASCII 8K Mapper Cartridge",priority:911,priorityForRom:function(a){return a.content.length>=8192&&0==(8191&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8K(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8K.recreateFromSaveState(a,b)}},ASCII16:{name:"ASCII16",desc:"ASCII 16K Mapper Cartridge",priority:912,priorityForRom:function(a){return a.content.length>=16384&&0==(16383&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16K(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16K.recreateFromSaveState(a,b)}},Konami:{name:"Konami",desc:"Konami Mapper Cartridge",priority:913,priorityForRom:function(a){return a.content.length>=8192&&0==(8191&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeKonami(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeKonami.recreateFromSaveState(a,b)}},KonamiSCC:{name:"KonamiSCC",desc:"KonamiSCC Sound Mapper Cartridge",priority:914,priorityForRom:function(a){return a.content.length>=8192&&0==(8191&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeKonamiSCC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeKonamiSCC.recreateFromSaveState(a,b)}},KonamiSCCI:{name:"KonamiSCCI",desc:"Konami SCC+ Sound Mapper Cartridge (in SCC-I mode)",priority:1101,priorityForRom:function(a){return a.content.length>0&&a.content.length<=131072?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSCCIExpansion(a,this,!0)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSCCIExpansion.recreateFromSaveState(a,b)}},ASCII8SRAM2:{name:"ASCII8SRAM2",desc:"ASCII 8K SRAM 2K Mapper Cartridge",priority:1102,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},ASCII8SRAM8:{name:"ASCII8SRAM8",desc:"ASCII 8K SRAM 8K Mapper Cartridge",priority:1103,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},KoeiSRAM8:{name:"KoeiSRAM8",desc:"Koei SRAM 8K Mapper Cartridge",priority:1104,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},KoeiSRAM32:{name:"KoeiSRAM32",desc:"Koei SRAM 32K Mapper Cartridge",priority:1105,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},Wizardry:{name:"Wizardry",desc:"Wizardry SRAM Mapper Cartridge",priority:1106,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},ASCII16SRAM2:{name:"ASCII16SRAM2",desc:"ASCII 16K SRAM 2K Mapper Cartridge",priority:1107,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=2097152&&0==(16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16KSRAM.recreateFromSaveState(a,b)}},ASCII16SRAM8:{name:"ASCII16SRAM8",desc:"ASCII 16K SRAM 8K Mapper Cartridge",priority:1108,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=2097152&&0==(16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16KSRAM.recreateFromSaveState(a,b)}},RType:{name:"RType",desc:"R-Type Mapper Cartridge",priority:1111,priorityForRom:function(a){return 393216===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeRType(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeRType.recreateFromSaveState(a,b)}},CrossBlaim:{name:"CrossBlaim",desc:"CrossBlaim Mapper Cartridge",priority:1112,priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeCrossBlaim(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeCrossBlaim.recreateFromSaveState(a,b)}},Manbow2:{name:"Manbow2",desc:"Space Manbow 2 SCC Sound Mapper Cartridge",priority:1113,priorityForRom:function(a){return 524288===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeManbow2(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeManbow2.recreateFromSaveState(a,b)}},Majutsushi:{name:"Majutsushi", -desc:"Konami Hai no Majutsushi PCM Mapper Cartridge",priority:1114,priorityForRom:function(a){return a.content.length>0&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMajutsushi(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMajutsushi.recreateFromSaveState(a,b)}},Synthesizer:{name:"Synthesizer",desc:"Konami Synthesizer PCM Cartridge",priority:1115,priorityForRom:function(a){return a.content.length>0&&a.content.length<=32768&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSynthesizer(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSynthesizer.recreateFromSaveState(a,b)}},GameMaster2:{name:"GameMaster2",desc:"Konami Game Master 2 SRAM Mapper Cartridge",priority:1116,priorityForRom:function(a){return 131072===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeGameMaster2(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeGameMaster2.recreateFromSaveState(a,b)}},HarryFox:{name:"HarryFox",desc:"HarryFox Mapper Cartridge",priority:1117,priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeHarryFox(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeHarryFox.recreateFromSaveState(a,b)}},Halnote:{name:"Halnote",desc:"Halnote SRAM Mapper Cartridge",priority:1118,priorityForRom:function(a){return 1048576===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeHalnote(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeHalnote.recreateFromSaveState(a,b)}},AlQuran:{name:"AlQuran",desc:"The Holy Quran Mapper Cartridge (Encoded)",priority:1119,priorityForRom:function(a){return 1048576===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeAlQuran(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeAlQuran.recreateFromSaveState(a,b)}},AlQuranDecoded:{name:"AlQuranDecoded",desc:"The Holy Quran Mapper Cartridge (Decoded)",priority:1120,priorityForRom:function(a){return 1048576===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeAlQuran(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeAlQuran.recreateFromSaveState(a,b)}},SuperSwangi:{name:"SuperSwangi",desc:"Super Swangi Mapper Cartridge",priority:1121,priorityForRom:function(a){return a.content.length>=16384&&0==(16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSuperSwangi(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSuperSwangi.recreateFromSaveState(a,b)}},MSXWrite:{name:"MSXWrite",desc:"MSX Write Mapper Cartridge",priority:1122,priorityForRom:function(a){return 524288===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16K(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16K.recreateFromSaveState(a,b)}},Zemina80in1:{name:"Zemina80in1",desc:"Zemina 80 in 1 Mapper Cartridge",priority:1123,priorityForRom:function(a){return 0===(a.content.length>=8192&&8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeZemina80(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeZemina80.recreateFromSaveState(a,b)}},Zemina90in1:{name:"Zemina90in1",desc:"Zemina 90 in 1 Mapper Cartridge",priority:1124,priorityForRom:function(a){return 0===(a.content.length>=16384&&16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeZemina90(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeZemina90.recreateFromSaveState(a,b)}},Zemina126in1:{name:"Zemina126in1",desc:"Zemina 126 in 1 Mapper Cartridge",priority:1125,priorityForRom:function(a){return 0===(a.content.length>=16384&&16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeZemina126(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeZemina126.recreateFromSaveState(a,b)}},SuperLodeRunner:{name:"SuperLodeRunner",desc:"Super Lode Runner Mapper Cartridge",priority:1126,priorityForRom:function(a){return 0===(a.content.length>=16384&&16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSuperLodeRunner(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSuperLodeRunner.recreateFromSaveState(a,b)}},Dooly:{name:"Dooly",desc:"Agigongnyong Dooly Mapper Cartridge",priority:1127,priorityForRom:function(a){return 32768===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeDooly(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeDooly.recreateFromSaveState(a,b)}},FMPAC:{name:"FMPAC",desc:"FM-PAC SRAM Sound Mapper Cartridge",priority:1151,priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeFMPAC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeFMPAC.recreateFromSaveState(a,b)}},MSXDOS2:{name:"MSXDOS2",desc:"MSX-DOS 2 Mapper Cartridge",priority:1504,embeddedURL:"@[MSXDOS2]v22.rom",priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeDOS2(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeDOS2.recreateFromSaveState(a,b)}}},wmsx.SlotFormats.GenericKonami=wmsx.SlotFormats.Normal,wmsx.SlotFormats.Manbow2_2=wmsx.SlotFormats.Manbow2,wmsx.SlotFormats.HamarajaNight=wmsx.SlotFormats.Manbow2,wmsx.SlotFormats.Kanji12=wmsx.SlotFormats.Kanji1,wmsx.SlotFormats.FMPAK=wmsx.SlotFormats.FMPAC,wmsx.SlotFormatsUserOptions=["Normal","Mirrored","NotMirrored","ASCII8","ASCII16","Konami","KonamiSCC","KonamiSCCI","ASCII8SRAM2","ASCII8SRAM8","ASCII16SRAM2","ASCII16SRAM8","MegaRAM","GameMaster2","AlQuran","AlQuranDecoded","CrossBlaim","Dooly","Halnote","HarryFox","KoeiSRAM8","KoeiSRAM32","Majutsushi","Manbow2","MSXWrite","RType","SuperLodeRunner","SuperSwangi","Synthesizer","Wizardry","Zemina80in1","Zemina90in1","Zemina126in1","FMPAC","Kanji1","MSXDOS2","MSXMUSIC"],wmsx.Slot=function(){"use strict";this.connect=function(a){},this.refreshConnect=function(a){},this.disconnect=function(a){},this.getDataDesc=function(){},this.loadData=function(a,b){},this.getDataToSave=function(){},this.dataModified=function(){return!1},this.powerOn=function(){},this.powerOff=function(){},this.reset=function(){},this.read=function(a){return 255},this.write=function(a,b){},this.cpuExtensionBegin=function(a){},this.cpuExtensionFinish=function(a){},this.isExpanded=function(){return!1},this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes||[])},this.lightState=function(){return WMSX.LIGHT_STATES&&wmsx.EmbeddedFiles.isEmbeddedURL(this.rom.source)},this.format=void 0,this.rom=void 0,this.bytes=void 0,this.dumpBytes=function(a,b,c){wmsx.Util.dump(this.bytes,a,b,c)},this.dumpRead=function(a,b,c){var d="",e=a||0;c=c||1;for(var f=0;f>14&3){case 0:return f;case 1:return g;case 2:return h;case 3:return i}}function b(){e=[k,k,k,k],c.subSlots=e}var c=this;this.isExpanded=function(){return!0},this.connect=function(a){d=a;for(var b=0;b<4;++b)e[b].connect(d)},this.refreshConnect=function(){for(var a=0;a<4;++a)e[a].refreshConnect()},this.disconnect=function(a){ -for(var b=0;b<4;++b)e[b].disconnect(a);d=null},this.powerOn=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].powerOn()},this.powerOff=function(){for(var a=0;a<4;a++)e[a].powerOff()},this.reset=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].reset()},this.isAllEmpty=function(){return e[0]===k&&e[1]===k&&e[2]===k&&e[3]===k},this.insertSubSlot=function(a,b){a=a||wmsx.SlotEmpty.singleton,e[b]!==a&&(d&&e[b].disconnect(d),e[b]=a,d&&e[b].connect(d),this.setSecondarySlotConfig(j))},this.getSubSlot=function(a){return e[a]},this.getSubSlotForAddress=a,this.read=function(a){switch(a>>14&3){case 0:return f.read(a);case 1:return g.read(a);case 2:return h.read(a);case 3:return 65535===a?255&~j:i.read(a)}},this.write=function(a,b){switch(a>>14&3){case 0:return void f.write(a,b);case 1:return void g.write(a,b);case 2:return void h.write(a,b);case 3:return 65535===a?void this.setSecondarySlotConfig(b):void i.write(a,b)}},this.setSecondarySlotConfig=function(a){j=a,f=e[3&a],g=e[a>>2&3],h=e[a>>4&3],i=e[a>>6&3]},this.getSecondarySlotConfig=function(){return j},this.cpuExtensionBegin=function(b){return a(b.extPC).cpuExtensionBegin(b)},this.cpuExtensionFinish=function(b){return a(b.extPC).cpuExtensionFinish(b)};var d,e,f,g,h,i,j=0,k=wmsx.SlotEmpty.singleton;this.format=wmsx.SlotFormats.Expanded,this.saveState=function(){return{f:this.format.name,s:j,s0:e[0].saveState(),s1:e[1].saveState(),s2:e[2].saveState(),s3:e[3].saveState()}},this.loadState=function(a){this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,e[0]),0),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,e[1]),1),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,e[2]),2),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,e[3]),3),this.setSecondarySlotConfig(a.s)},function(){b()}()},wmsx.SlotExpanded.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotExpanded;return c.loadState(a),c},wmsx.SlotExpandedSpecial=function(){"use strict";function a(a){switch(a>>14&3){case 0:return f;case 1:return g;case 2:return h;case 3:return i}}function b(){e=[k,k,k,k],c.subSlots=e}var c=this;this.isExpanded=function(){return!0},this.connect=function(a){d=a;for(var b=0;b<4;++b)e[b].connect(d)},this.refreshConnect=function(){for(var a=0;a<4;++a)e[a].refreshConnect()},this.disconnect=function(a){for(var b=0;b<4;++b)e[b].disconnect(a);d=null},this.powerOn=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].powerOn()},this.powerOff=function(){for(var a=0;a<4;a++)e[a].powerOff()},this.reset=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].reset()},this.isAllEmpty=function(){return e[0]===k&&e[1]===k&&e[2]===k&&e[3]===k},this.insertSubSlot=function(a,b){a=a||wmsx.SlotEmpty.singleton,e[b]!==a&&(d&&e[b].disconnect(d),e[b]=a,d&&e[b].connect(d),this.setSecondarySlotConfig(j))},this.getSubSlot=function(a){return e[a]},this.getSubSlotForAddress=a,this.read=function(a){switch(a>>14&3){case 0:return f.read(a);case 1:return g.read(a);case 2:return h.read(a);case 3:return 65535===a?255&~j:i.read(a)}},this.write=function(a,b){switch(a>>14&3){case 0:return void f.write(a,b);case 1:return void g.write(a,b);case 2:return void h.write(a,b);case 3:return 65535===a?void this.setSecondarySlotConfig(b):void i.write(a,b)}},this.setSecondarySlotConfig=function(a){j=a,f=e[3&a],g=e[a>>2&3],h=e[a>>4&3],i=e[a>>6&3]},this.getSecondarySlotConfig=function(){return j},this.cpuExtensionBegin=function(b){return a(b.extPC).cpuExtensionBegin(b)},this.cpuExtensionFinish=function(b){return a(b.extPC).cpuExtensionFinish(b)};var d,e,f,g,h,i,j=0,k=wmsx.SlotEmpty.singleton;this.format=wmsx.SlotFormats.ExpandedS,this.saveState=function(){return{f:this.format.name,s:j,s0:e[0].saveState(),s1:e[1].saveState(),s2:e[2].saveState(),s3:e[3].saveState()}},this.loadState=function(a){this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,e[0]),0),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,e[1]),1),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,e[2]),2),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,e[3]),3),this.setSecondarySlotConfig(a.s)},function(){b()}()},wmsx.SlotExpandedSpecial.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotExpandedSpecial;return c.loadState(a),c},wmsx.SlotExpandedModules=function(){"use strict";function a(){d=[e,e,e,e],b.subSlots=d}var b=this;this.isExpanded=function(){return!0},this.connect=function(a){c=a;for(var b=0;b<4;++b)d[b].connect(c)},this.refreshConnect=function(){for(var a=0;a<4;++a)d[a].refreshConnect()},this.disconnect=function(a){for(var b=0;b<4;++b)d[b].disconnect(a);c=null},this.powerOn=function(){for(var a=0;a<4;a++)d[a].powerOn()},this.powerOff=function(){for(var a=0;a<4;a++)d[a].powerOff()},this.reset=function(){for(var a=0;a<4;a++)d[a].reset()},this.isAllEmpty=function(){return d[0]===e&&d[1]===e&&d[2]===e&&d[3]===e},this.insertSubSlot=function(a,b){a=a||wmsx.SlotEmpty.singleton,d[b]!==a&&(c&&d[b].disconnect(c),d[b]=a,c&&d[b].connect(c))},this.getSubSlot=function(a){return d[a]},this.getSubSlotForAddress=function(a){},this.read=function(a){},this.write=function(a,b){},this.setSecondarySlotConfig=function(a){},this.getSecondarySlotConfig=function(){},this.cpuExtensionBegin=function(a){},this.cpuExtensionFinish=function(a){};var c,d,e=wmsx.SlotEmpty.singleton;this.format=wmsx.SlotFormats.ExpandedM,this.saveState=function(){return{f:this.format.name,s0:d[0].saveState(),s1:d[1].saveState(),s2:d[2].saveState(),s3:d[3].saveState()}},this.loadState=function(a){this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,d[0]),0),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,d[1]),1),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,d[2]),2),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,d[3]),3)},function(){a()}()},wmsx.SlotExpandedModules.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotExpandedModules;return c.loadState(a),c},wmsx.SlotNormal=function(a,b){"use strict";function c(a){if(65!==d[a]||66!==d[a+1])return null;for(var b=null,c=65535,e=a+2;e<=a+8;e+=2){var f=d[e+1]<<8|d[e];0!==f&&(f>14,lowestBasicPage:null!==b?b>>14:null}}this.read=function(a){return a>=e&&a=0)k=l>>14;else{for(var m=null,n=null,o=0;o64&&(e=64),c=wmsx.Util.arrayFill(new Array(1024*e),0),d=65536-c.length,b.bytes=c}this.refreshConnect=function(){1024*WMSX.RAMNORMAL_SIZE!==c.length&&b(self)}, -this.powerOff=function(){wmsx.Util.arrayFill(c,0)},this.read=function(a){return a>=d?c[a-d]:255},this.write=function(a,b){a>=d&&(c[a-d]=b)};var c;this.bytes=null;var d=0;this.rom=null,this.format=wmsx.SlotFormats.RAMNormal,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c)}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=65536-c.length},a&&b(this)},wmsx.SlotRAMNormal.prototype=wmsx.Slot.base,wmsx.SlotRAMNormal.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotRAMNormal;return c.loadState(a),c},wmsx.SlotRAMMapper=function(rom){"use strict";function init(a){a.rom=rom;for(var b=0;VALID_SIZES[b]>14)-1,pageReadBackOR=255&~pageMask}this.connect=function(a){a.bus.connectInputDevice(252,this.inputAll),a.bus.connectInputDevice(253,this.inputAll),a.bus.connectInputDevice(254,this.inputAll),a.bus.connectInputDevice(255,this.inputAll),a.bus.connectOutputDevice(252,this.outputFC),a.bus.connectOutputDevice(253,this.outputFD),a.bus.connectOutputDevice(254,this.outputFE),a.bus.connectOutputDevice(255,this.outputFF)},this.refreshConnect=function(){1024*WMSX.RAMMAPPER_SIZE!==bytes.length&&init(self)},this.disconnect=function(a){a.bus.disconnectInputDevice(252,this.inputAll),a.bus.disconnectInputDevice(253,this.inputAll),a.bus.disconnectInputDevice(254,this.inputAll),a.bus.disconnectInputDevice(255,this.inputAll),a.bus.disconnectOutputDevice(252,this.outputFC),a.bus.disconnectOutputDevice(253,this.outputFD),a.bus.disconnectOutputDevice(254,this.outputFE),a.bus.disconnectOutputDevice(255,this.outputFF)},this.powerOff=function(){wmsx.Util.arrayFill(bytes,0)},this.reset=function(){page0Offset=page1Offset=page2Offset=page3Offset=0},this.outputFC=function(a){page0Offset=(a&pageMask)<<14},this.outputFD=function(a){page1Offset=((a&pageMask)<<14)-16384},this.outputFE=function(a){page2Offset=((a&pageMask)<<14)-32768},this.outputFF=function(a){page3Offset=((a&pageMask)<<14)-49152},this.inputAll=function(a){switch(255&a){case 252:return pageReadBackOR|page0Offset>>14;case 253:return pageReadBackOR|page1Offset+16384>>14;case 254:return pageReadBackOR|page2Offset+32768>>14;case 255:return pageReadBackOR|page3Offset+49152>>14}},this.read=function(a){switch(49152&a){case 0:return bytes[a+page0Offset];case 16384:return bytes[a+page1Offset];case 32768:return bytes[a+page2Offset];case 49152:return bytes[a+page3Offset]}},this.write=function(a,b){switch(49152&a){case 0:return void(bytes[a+page0Offset]=b);case 16384:return void(bytes[a+page1Offset]=b);case 32768:return void(bytes[a+page2Offset]=b);case 49152:return void(bytes[a+page3Offset]=b)}};var page0Offset=0,page1Offset=0,page2Offset=0,page3Offset=0,pageMask=0,pageReadBackOR=0,bytes;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.RAMMapper;var VALID_SIZES=[64,128,256,512,1024,2048,4096];this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),p0:page0Offset,p1:page1Offset,p2:page2Offset,p3:page3Offset}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,pageMask=(bytes.length>>14)-1,page0Offset=a.p0,page1Offset=a.p1,page2Offset=a.p2,page3Offset=a.p3,pageReadBackOR=255&~pageMask},rom&&init(this),this.eval=function(str){return eval(str)}},wmsx.SlotRAMMapper.prototype=wmsx.Slot.base,wmsx.SlotRAMMapper.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotRAMMapper;return c.loadState(a),c},wmsx.SlotBIOS=function(a){"use strict";this.connect=function(a){e.connect(a),d.connect(this,a),f.connect(this,a),a.setBIOS(this)},this.disconnect=function(a){d&&d.disconnect(this,a),a.setBIOS(null)},this.getKeyboardExtension=function(){return e},this.getTurboDriver=function(){return f},this.powerOff=function(){d&&d.powerOff()},this.reset=function(){f&&f.reset()},this.read=function(a){return a=24576&&a<26624||a===h)return void(e=(b%g<<14)-16384);(a>=28672&&a<30720||a===i)&&(f=(b%g<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?d[e+a]:a<49152?d[f+a]:255};var d;this.bytes=null;var e,f,g,h,i;this.rom=null,this.format=b,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(d),b1:e,b2:f,n:g}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),d=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.b1,f=a.b2,g=a.n,c(this.format)},a&&function(e){e.rom=a,d=wmsx.Util.asNormalArray(a.content),e.bytes=d,g=d.length/16384|0,c(b)}(this)},wmsx.CartridgeASCII16K.prototype=wmsx.Slot.base,wmsx.CartridgeASCII16K.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeASCII16K;return c.loadState(a),c},wmsx.CartridgeKonami=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=d=e=-16384},this.write=function(a,b){a>=24576&&a<32767?c=(b%f<<13)-24576:a>=32768&&a<40959?d=(b%f<<13)-32768:a>=40960&&a<49151&&(e=(b%f<<13)-40960)},this.read=function(a){switch(57344&a){case 16384:return b[a-16384];case 24576:return b[c+a];case 32768:return b[d+a];case 40960:return b[e+a];default:return 255}};var b;this.bytes=null;var c,d,e,f;this.rom=null,this.format=wmsx.SlotFormats.Konami,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c,b3:d,b4:e,n:f}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=a.b3,e=a.b4,f=a.n},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,f=b.length/8192|0}(this)},wmsx.CartridgeKonami.prototype=wmsx.Slot.base,wmsx.CartridgeKonami.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeKonami;return c.loadState(a),c},wmsx.CartridgeRType=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=-32768},this.write=function(a,b){a>=28672&&a<32768&&(c=(b%24<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[229376+a]:a<49152?b[c+a]:255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.RType,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeRType.prototype=wmsx.Slot.base,wmsx.CartridgeRType.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeRType;return c.loadState(a),c},wmsx.CartridgeCrossBlaim=function(a){this.powerOn=function(){this.reset()},this.reset=function(){c=-16384},this.write=function(a,b){16453===a&&(c=((3&b)<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[a-16384]:a<49152?b[c+a]:255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.CrossBlaim,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeCrossBlaim.prototype=wmsx.Slot.base,wmsx.CartridgeCrossBlaim.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeCrossBlaim;return c.loadState(a),c},wmsx.CartridgeDOS2=function(a){"use strict";this.connect=function(a){a.getDiskDriveSocket().dos2ROMConnected(this)},this.disconnect=function(a){a.getDiskDriveSocket().dos2ROMDisconnected(this)},this.powerOn=function(){this.reset()},this.reset=function(){c=-16384},this.write=function(a,b){32766===a&&(c=((3&b)<<14)-16384)},this.read=function(a){return a>=16384&&a<32768?b[c+a]:255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.MSXDOS2,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeDOS2.prototype=wmsx.Slot.base,wmsx.CartridgeDOS2.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeDOS2;return c.loadState(a),c},wmsx.CartridgeHarryFox=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=d=-16384},this.write=function(a,b){if(a>=24576&&a<28672)return void(c=(1&b?32768:0)-16384);a>=28672&&a<32768&&(d=(1&b?49152:16384)-32768)},this.read=function(a){return a<16384?255:a<32768?b[c+a]:a<49152?b[d+a]:255};var b;this.bytes=null;var c,d;this.rom=null,this.format=wmsx.SlotFormats.HarryFox,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeHarryFox.prototype=wmsx.Slot.base,wmsx.CartridgeHarryFox.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeHarryFox;return c.loadState(a),c},wmsx.CartridgeAlQuran=function(a,b){"use strict";function c(){for(var a=new Array(256),b=0;b<256;++b)a[b]=77^(b<<4&80|b>>3&5|b<<1&160|b<<2&8|b>>6&2);for(var c=0,e=d.length;c>1)%d<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[a-16384]:a<49152?b[c+a]:255};var b;this.bytes=null;var c,d;this.rom=null,this.format=wmsx.SlotFormats.SuperSwangi,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=b.length/16384|0},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,d=b.length/16384|0}(this)},wmsx.CartridgeSuperSwangi.prototype=wmsx.Slot.base,wmsx.CartridgeSuperSwangi.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSuperSwangi;return c.loadState(a),c},wmsx.CartridgeZemina80=function(a){"use strict" -;this.powerOn=function(){this.reset()},this.reset=function(){c=d=e=f=-16384},this.write=function(a,b){switch(a){case 16384:return void(c=(b%g<<13)-16384);case 16385:return void(d=(b%g<<13)-24576);case 16386:return void(e=(b%g<<13)-32768);case 16387:f=(b%g<<13)-40960}},this.read=function(a){switch(57344&a){case 16384:return b[c+a];case 24576:return b[d+a];case 32768:return b[e+a];case 40960:return b[f+a];default:return 255}};var b;this.bytes=null;var c,d,e,f,g;this.rom=null,this.format=wmsx.SlotFormats.Zemina80in1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d,b3:e,b4:f}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2,e=a.b3,f=a.b4,g=b.length/8192|0},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,g=b.length/8192|0}(this)},wmsx.CartridgeZemina80.prototype=wmsx.Slot.base,wmsx.CartridgeZemina80.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeZemina80;return c.loadState(a),c},wmsx.CartridgeZemina90=function(a){"use strict";this.connect=function(a){a.bus.connectOutputDevice(119,this.output77)},this.disconnect=function(a){a.bus.disconnectOutputDevice(119,this.output77)},this.powerOn=function(){this.reset()},this.reset=function(){this.output77(0)},this.read=function(a){return a<16384?255:a<32768?b[d+a]:a<49152?f?b[e+a^8192]:b[e+a]:255},this.output77=function(a,b){c=a;var g=63&a,h=a>>6;2===h?(d=((62&g)<<14)-16384,e=((1|g)<<14)-32768):(d=(g<<14)-16384,e=(g<<14)-32768),f=3===h};var b;this.bytes=null;var c,d,e,f;this.rom=null,this.format=wmsx.SlotFormats.Zemina90in1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),bc:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,this.output77(a.bc)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeZemina90.prototype=wmsx.Slot.base,wmsx.CartridgeZemina90.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeZemina90;return c.loadState(a),c},wmsx.CartridgeZemina126=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=d=-16384},this.write=function(a,b){if(16384===a)return void(c=(b%e<<14)-16384);16385===a&&(d=(b%e<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[c+a]:a<49152?b[d+a]:255};var b;this.bytes=null;var c,d,e;this.rom=null,this.format=wmsx.SlotFormats.Zemina126in1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2,e=b.length/16384|0},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,e=b.length/16384|0}(this)},wmsx.CartridgeZemina126.prototype=wmsx.Slot.base,wmsx.CartridgeZemina126.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeZemina126;return c.loadState(a),c},wmsx.CartridgeSuperLodeRunner=function(a){"use strict";function b(a,b){0===a&&(d=(b%e<<14)-32768)}this.connect=function(a){a.bus.setWriteMonitor(b)},this.disconnect=function(a){a.bus.setWriteMonitor(null)},this.powerOn=function(){this.reset()},this.reset=function(){d=32768},this.read=function(a){return a>=32768&&a<49152?c[d+a]:255};var c;this.bytes=null;var d,e;this.rom=null,this.format=wmsx.SlotFormats.SuperLodeRunner,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c),b1:d}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.b1,e=c.length/16384|0},a&&function(b){b.rom=a,c=wmsx.Util.asNormalArray(a.content),b.bytes=c,e=c.length/16384|0}(this)},wmsx.CartridgeSuperLodeRunner.prototype=wmsx.Slot.base,wmsx.CartridgeSuperLodeRunner.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSuperLodeRunner;return c.loadState(a),c},wmsx.CartridgeDooly=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=0},this.write=function(a,b){a>=16384&&a<49152&&(c=7&b)},this.read=function(a){if(a>=16384&&a<49152){var d=b[a-16384];switch(c){case 0:return d;case 1:return 248&d|d<<2&4|d>>1&3;case 4:return 248&d|d>>2&1|d<<1&6;case 2:case 5:case 6:switch(7&d){case 1:case 2:case 4:return 248&d;case 3:case 5:case 6:if(2==c)return 248&d|7^(d<<2&4|d>>1&3);if(5==c)return 7^d;if(6==c)return 248&d|7^(d>>2&1|d<<1&6);default:return d}default:return 7|d}}return 255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.Dooly,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),e:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.e},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeDooly.prototype=wmsx.Slot.base,wmsx.CartridgeDooly.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeDooly;return c.loadState(a),c},wmsx.CartridgeMegaRAM=function(a){"use strict";this.reinsertROMContent=function(){this.rom.content&&this.rom.content.length||(this.rom.content=this.bytes.slice(0,this.bytes.length))},this.connect=function(a){a.bus.connectInputDevice(142,this.input8E),a.bus.connectOutputDevice(142,this.output8E)},this.disconnect=function(a){a.bus.disconnectInputDevice(142,this.input8E),a.bus.disconnectOutputDevice(142,this.output8E)},this.powerOn=function(){this.reset()},this.reset=function(){h=!1},this.input8E=function(){return h=!0,255},this.output8E=function(a){h=!1},this.write=function(a,i){if(!(a<16384))return a<24576?void(h?b[d+a]=i:d=(i%c<<13)-16384):a<32768?void(h?b[e+a]=i:e=(i%c<<13)-24576):a<40960?void(h?b[f+a]=i:f=(i%c<<13)-32768):void(a<49152&&(h?b[g+a]=i:g=(i%c<<13)-40960))},this.read=function(a){switch(57344&a){case 16384:return b[d+a];case 24576:return b[e+a];case 32768:return b[f+a];case 40960:return b[g+a];default:return 255}};var b;this.bytes=null;var c,d=-16384,e=-16384,f=-16384,g=-16384,h=!1;this.rom=null,this.format=wmsx.SlotFormats.MegaRAM;var i=Math.min(WMSX.MEGARAM_SIZE/8,256),j=[32,64,128,256];this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:d,b2:e,b3:f,b4:g,n:c,m:h}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,d=a.b1,e=a.b2,f=a.b3,g=a.b4,c=a.n,h=a.m},a&&function(d){d.rom=a;var e=a.content;if(e&&e.length){c=Math.ceil(e.length/8192);for(var f=0;j[f]=c&&a=24576&&a<26624&&(c=((7&b)<<14)-16384)},this.read=function(a){return a>=16384&&a<32768?b[c+a]:255},this.cpuExtensionBegin=function(a){return d.cpuExtensionBegin(a)},this.cpuExtensionFinish=function(a){return d.cpuExtensionFinish(a)};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.Nextor16Patch;var d=new wmsx.ImageNextorDeviceDriver;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:this.lightState()?null:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,d:d.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b):(this.rom.reloadEmbeddedContent(),b&&b.length===this.rom.content.length||(b=new Array(this.rom.content.length)),wmsx.Util.arrayCopy(this.rom.content,0,b),d.patchNextorKernel(b)),this.bytes=b,c=a.b1,d.loadState(a.d)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,d.patchNextorKernel(b)}(this)},wmsx.CartridgeNextorPatched.prototype=wmsx.Slot.base,wmsx.CartridgeNextorPatched.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeNextorPatched;return c.loadState(a),c},wmsx.CartridgeKonamiSCC=function(rom){"use strict";function init(a){a.rom=rom,bytes=wmsx.Util.asNormalArray(rom.content),a.bytes=bytes,numBanks=bytes.length/8192|0}function connectSCC(){scc.connectAudio(),sccConnected=!0}this.connect=function(a){scc.setAudioSocket(a.getAudioSocket()),sccConnected&&connectSCC()},this.disconnect=function(a){scc.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){scc.disconnectAudio()},this.reset=function(){bank1Offset=bank2Offset=bank3Offset=bank4Offset=-16384,sccSelected=sccConnected=!1,scc.reset()},this.write=function(a,b){return a>=20480&&a<=22527?void(bank1Offset=(b%numBanks<<13)-16384):a>=28672&&a<=30719?void(bank2Offset=(b%numBanks<<13)-24576):a>=36864&&a<=38911?(bank3Offset=(b%numBanks<<13)-32768,void(63==(63&b)?(sccSelected=!0,sccConnected||connectSCC()):sccSelected=!1)):sccSelected&&a>=38912&&a<=40959?void scc.write(a,b):void(a>=45056&&a<=47103&&(bank4Offset=(b%numBanks<<13)-40960))},this.read=function(a){switch(57344&a){case 16384:return bytes[bank1Offset+a];case 24576:return bytes[bank2Offset+a];case 32768:return a>=38912&&sccSelected?scc.read(a):bytes[bank3Offset+a];case 40960:return bytes[bank4Offset+a];default:return 255}};var bytes;this.bytes=null;var bank1Offset,bank2Offset,bank3Offset,bank4Offset,numBanks,scc=new wmsx.SCCIAudio,sccSelected=!1,sccConnected=!1;this.rom=null,this.format=wmsx.SlotFormats.KonamiSCC,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),b1:bank1Offset,b2:bank2Offset,b3:bank3Offset,b4:bank4Offset,n:numBanks,scc:scc.saveState(),scs:sccSelected,scn:sccConnected}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,bank1Offset=a.b1,bank2Offset=a.b2,bank3Offset=a.b3,bank4Offset=a.b4,numBanks=a.n,scc.loadState(a.scc),sccSelected=a.scs,(sccConnected=a.scn)&&connectSCC()},rom&&init(this),this.eval=function(arg){return eval(arg)}},wmsx.CartridgeKonamiSCC.prototype=wmsx.Slot.base,wmsx.CartridgeKonamiSCC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeKonamiSCC;return c.loadState(a),c},wmsx.CartridgeSCCExpansion=function(a){"use strict";function b(){c.connectAudio(),e=!0}this.connect=function(a){c.setAudioSocket(a.getAudioSocket()),e&&b()},this.disconnect=function(a){c.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){c.disconnectAudio()},this.reset=function(){d=e=!1,c.reset()},this.write=function(a,f){if(a>=36864&&a<=38911)return void(63==(63&f)?(d=!0,e||b()):d=!1);d&&a>=38912&&a<=40959&&c.write(a,f)},this.read=function(a){return d&&a>=38912&&a<=40959?c.read(a):255};var c=new wmsx.SCCIAudio,d=!1,e=!1;this.rom=null,this.format=wmsx.SlotFormats.SCCExpansion,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),scc:c.saveState(),scs:d,scn:e}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),c.loadState(a.scc),d=a.scs,(e=a.scn)&&b()},a&&function(b){b.rom=a}(this)},wmsx.CartridgeSCCExpansion.prototype=wmsx.Slot.base,wmsx.CartridgeSCCExpansion.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSCCExpansion;return c.loadState(a),c},wmsx.CartridgeSCCIExpansion=function(rom,format,startInSCCI){"use strict";function init(a){a.rom=rom;var b=rom.content;bytes=wmsx.Util.arrayFill(new Array(131072),255),a.bytes=bytes,b.length>0&&(a.preLoadedContentSize=b.length,wmsx.Util.arrayCopy(b,0,bytes),b.length<=65536&&wmsx.Util.arrayCopy(b,0,bytes,65536)),startingMode=startInSCCI?32:0}function setMode(a){mode=a,scciMode=0!=(32&a),scc.setSCCIMode(scciMode);var b=0!=(16&a);bank4RamMode=b,bank3RamMode=b||scciMode&&0!=(4&a),bank2RamMode=b||0!=(2&a),bank1RamMode=b||0!=(1&a)}function connectSCC(){scc.connectAudio(),sccConnected=!0}this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes?this.bytes.slice(0,this.preLoadedContentSize):[])},this.connect=function(a){scc.setAudioSocket(a.getAudioSocket()),sccConnected&&connectSCC()},this.disconnect=function(a){scc.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){scc.disconnectAudio(),0===this.preLoadedContentSize&&wmsx.Util.arrayFill(bytes,255)},this.reset=function(){bank1Offset=bank2Offset=bank3Offset=bank4Offset=-16384,sccSelected=scciSelected=sccConnected=!1,scc.reset(),setMode(startingMode)},this.read=function(a){switch(57344&a){case 16384:return bytes[bank1Offset+a];case 24576:return bytes[bank2Offset+a];case 32768:return a>=38912&&sccSelected&&!scciMode?scc.read(a):bytes[bank3Offset+a];case 40960:return a>=47104&&scciSelected&&scciMode?scc.read(a):bytes[bank4Offset+a];default:return 255}},this.write=function(a,b){if(49150===a||49151===a)return void setMode(b);switch(57344&a){case 16384:return void(bank1RamMode?bytes[bank1Offset+a]=b:a>=20480&&a<=22527&&(bank1Offset=((15&b)<<13)-16384));case 24576:return void(bank2RamMode?bytes[bank2Offset+a]=b:a>=28672&&a<=30719&&(bank2Offset=((15&b)<<13)-24576));case 32768:return void(bank3RamMode?bytes[bank3Offset+a]=b:a>=36864&&a<=38911?(bank3Offset=((15&b)<<13)-32768,(sccSelected=63==(63&b))&&!sccConnected&&connectSCC()):a>=38912&&sccSelected&&!scciMode&&scc.write(a,b));case 40960:bank4RamMode?bytes[bank4Offset+a]=b:a>=45056&&a<=47103?(bank4Offset=((15&b)<<13)-40960,(scciSelected=128==(128&b))&&!sccConnected&&connectSCC()):a>=47104&&scciSelected&&scciMode&&scc.write(a,b)}};var bytes;this.bytes=null -;var startingMode=0,mode,scciMode,bank4RamMode,bank3RamMode,bank2RamMode,bank1RamMode,bank1Offset,bank2Offset,bank3Offset,bank4Offset,scc=new wmsx.SCCIAudio,sccSelected,scciSelected=!1,sccConnected=!1;this.rom=null,this.format=format,this.preLoadedContentSize=0,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),pcs:this.preLoadedContentSize,b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),sm:startingMode,m:mode,b1:bank1Offset,b2:bank2Offset,b3:bank3Offset,b4:bank4Offset,scc:scc.saveState(),scs:sccSelected,sis:scciSelected,scn:sccConnected}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),this.preLoadedContentSize=a.pcs||0,bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,bank1Offset=a.b1,bank2Offset=a.b2,bank3Offset=a.b3,bank4Offset=a.b4,startingMode=a.sm||0,setMode(void 0!==a.m?a.m:startingMode),scc.loadState(a.scc),sccSelected=a.scs,scciSelected=a.sis,(sccConnected=a.scn)&&connectSCC()},this.eval=function(str){return eval(str)},rom&&init(this)},wmsx.CartridgeSCCIExpansion.prototype=wmsx.Slot.base,wmsx.CartridgeSCCIExpansion.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSCCIExpansion;return c.loadState(a),c},wmsx.CartridgeManbow2=function(rom){"use strict";function init(a){a.rom=rom,bytes=wmsx.Util.asNormalArray(rom.content),a.bytes=bytes}function writeMem(a,b){a>=458752&&a<524288&&(bytes[a]=b,sramModif||(sramModif=!0,cartridgeSocket.fireCartridgesModifiedStateUpdate()))}function connectSCC(){scc.connectAudio(),sccConnected=!0}this.getDataDesc=function(){return"SRAM"},this.loadData=function(a,b){if(65536!==b.length)return null;for(var c=0;c<65536;++c)bytes[458752+c]=b[c];return sramContentName=a,b},this.getDataToSave=function(){sramModif=!1,cartridgeSocket.fireCartridgesModifiedStateUpdate();var a=new Uint8Array(bytes.slice(458752));return{fileName:sramContentName||"Manbow2.sram",content:a,desc:this.getDataDesc()}},this.dataModified=function(){return sramModif},this.connect=function(a){cartridgeSocket=a.getCartridgeSocket(),scc.setAudioSocket(a.getAudioSocket()),sccConnected&&connectSCC()},this.disconnect=function(a){scc.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){scc.disconnectAudio()},this.reset=function(){bank1Offset=bank2Offset=bank3Offset=bank4Offset=-16384,sccSelected=sccConnected=!1,scc.reset()},this.read=function(a){switch(57344&a){case 16384:return bytes[bank1Offset+a];case 24576:return bytes[bank2Offset+a];case 32768:return sccSelected&&a>=38912?scc.read(a):bytes[bank3Offset+a];case 40960:return bytes[bank4Offset+a];default:return 255}},this.write=function(a,b){switch(57344&a){case 16384:return writeMem(bank1Offset+a,b),void(a>=20480&&a<=22527&&(bank1Offset=((b&bankSelMask)<<13)-16384));case 24576:return writeMem(bank2Offset+a,b),void(a>=28672&&a<=30719&&(bank2Offset=((b&bankSelMask)<<13)-24576));case 32768:return sccSelected&&a>=38912&&scc.write(a,b),writeMem(bank3Offset+a,b),void(a>=36864&&a<=38911&&(bank3Offset=((b&bankSelMask)<<13)-32768,(sccSelected=63==(63&b))&&!sccConnected&&connectSCC()));case 40960:writeMem(bank4Offset+a,b),a>=45056&&a<=47103&&(bank4Offset=8192*(b&bankSelMask)-40960)}};var bytes;this.bytes=null;var bank1Offset,bank2Offset,bank3Offset,bank4Offset,bankSelMask=63,scc=new wmsx.SCCIAudio,sccSelected=!1,sccConnected=!1,sramContentName,sramModif=!1,cartridgeSocket;this.rom=null,this.format=wmsx.SlotFormats.Manbow2,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),b1:bank1Offset,b2:bank2Offset,b3:bank3Offset,b4:bank4Offset,scc:scc.saveState(),scs:sccSelected,scn:sccConnected,sn:sramContentName,d:sramModif}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,bank1Offset=a.b1,bank2Offset=a.b2,bank3Offset=a.b3,bank4Offset=a.b4,scc.loadState(a.scc),sccSelected=a.scs,sccConnected=a.scn,sramContentName=a.sn,sramModif=!!a.d,sccConnected&&connectSCC()},this.eval=function(str){return eval(str)},rom&&init(this)},wmsx.CartridgeManbow2.prototype=wmsx.Slot.base,wmsx.CartridgeManbow2.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeManbow2;return c.loadState(a),c},wmsx.CartridgeKanjiFont=function(a){"use strict";this.connect=function(a){a.bus.connectInputDevice(216,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectInputDevice(217,this.inputD9),a.bus.connectOutputDevice(216,this.outputD8),a.bus.connectOutputDevice(217,this.outputD9),a.bus.connectInputDevice(218,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectInputDevice(219,this.inputDB),a.bus.connectOutputDevice(218,this.outputDA),a.bus.connectOutputDevice(219,this.outputDB)},this.disconnect=function(a){a.bus.disconnectInputDevice(216,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectInputDevice(217,this.inputD9),a.bus.disconnectOutputDevice(216,this.outputD8),a.bus.disconnectOutputDevice(217,this.outputD9),a.bus.disconnectInputDevice(218,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectInputDevice(219,this.inputDB),a.bus.disconnectOutputDevice(218,this.outputDA),a.bus.disconnectOutputDevice(219,this.outputDB)},this.powerOn=function(){this.reset()},this.powerOff=function(){},this.reset=function(){b=c=0,d=e=0},this.read=function(a){return 255},this.write=function(a,b){},this.outputD8=function(a){b=4032&b|63&a,d=b<<5},this.outputD9=function(a){b=63&b|(63&a)<<6,d=b<<5},this.inputD9=function(){return f[131071&d++]},this.outputDA=function(a){c=4032&c|63&a,e=c<<5},this.outputDB=function(a){c=63&c|(63&a)<<6,e=c<<5},this.inputDB=function(){return g?f[131072+(131071&e++)]:255};var b,c,d,e,f,g=!1;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.Kanji1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:this.lightState()?null:wmsx.Util.compressInt8BitArrayToStringBase64(f),c1:b,r1:d,c2:c,r2:e,j2:g}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?f=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,f):(this.rom.reloadEmbeddedContent(),f&&f.length===this.rom.content.length||(f=new Array(this.rom.content.length)),wmsx.Util.arrayCopy(this.rom.content,0,f)),this.bytes=f,b=a.c1,d=a.r1,c=a.c2,e=a.r2,g=a.j2},a&&function(b){b.rom=a,f=wmsx.Util.asNormalArray(a.content),b.bytes=f,g=262144===f.length}(this)},wmsx.CartridgeKanjiFont.prototype=wmsx.Slot.base,wmsx.CartridgeKanjiFont.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeKanjiFont;return c.loadState(a),c},wmsx.CartridgePAC=function(a){"use strict";function b(a,b){e=a;for(var d=wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length,f=0,g=c.length-2;f=16384&&a<=24573&&(c[a-16384]=b,g||(g=!0,f.fireCartridgesModifiedStateUpdate()))},this.read=function(a){return d&&a>=16384&&a<=24575?c[a-16384]:255};var c,d;this.sram=null;var e,f,g=!1;this.rom=null,this.format=wmsx.SlotFormats.PACExpansion,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),sa:d,s:wmsx.Util.compressInt8BitArrayToStringBase64(c),sn:e,d:g}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),d=a.sa,c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,c),e=a.sn,g=!!a.d},a&&function(d){d.rom=a,c=wmsx.Util.arrayFill(new Array(8192),0),d.sram=c, -0!==a.content.length&&b(a.source,a.content)}(this)},wmsx.CartridgePAC.prototype=wmsx.Slot.base,wmsx.CartridgePAC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgePAC;return c.loadState(a),c},wmsx.CartridgePAC.isPACFileContentValid=function(a){return 8206===a.length&&wmsx.Util.int8BitArrayToByteString(a,0,wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length)==wmsx.CartridgePAC.DATA_FILE_IDENTIFIER},wmsx.CartridgePAC.buildPACFileContentToSave=function(a){var b=new Uint8Array(wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length+a.length-2);return b.set(wmsx.Util.byteStringToInt8BitArray(wmsx.CartridgePAC.DATA_FILE_IDENTIFIER)),b.set(a.slice(0,-2),wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length),b},wmsx.CartridgePAC.DATA_FILE_IDENTIFIER="PAC2 BACKUP DATA",wmsx.CartridgeMSXMUSIC=function(a){"use strict";this.connect=function(a){c.connect(a)},this.disconnect=function(a){c.disconnect(a)},this.powerOn=function(){c.powerOn(),this.reset()},this.powerOff=function(){c.powerOff()},this.reset=function(){c.reset()},this.read=function(a){return a>=16384&&a<32768?b[a-16384]:255};var b;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.MSXMUSIC;var c=new wmsx.YM2413Audio("MSX-MUSIC");this.opll=c,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:this.lightState()?null:wmsx.Util.compressInt8BitArrayToStringBase64(b),fm:c.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b):(this.rom.reloadEmbeddedContent(),b&&b.length===this.rom.content.length||(b=new Array(this.rom.content.length)),wmsx.Util.arrayCopy(this.rom.content,0,b)),this.bytes=b,c.loadState(a.fm)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeMSXMUSIC.prototype=wmsx.Slot.base,wmsx.CartridgeMSXMUSIC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeMSXMUSIC;return c.loadState(a),c},wmsx.CartridgeFMPAC=function(a){"use strict";function b(){k&&(1&i?m.connect(k):m.disconnect(k))}function c(a,b){g=a;for(var c=wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length,d=0,f=e.length-2;d=16384&&a<=24573&&(e[a-16384]=c,l||(l=!0,h.fireCartridgesModifiedStateUpdate()))},this.read=function(a){return 32758===a?i:32759===a?j+16384>>14:f?a>=16384&&a<=24575?e[a-16384]:255:a>=16384&&a<32768?d[j+a]:255};var d;this.bytes=null;var e,f;this.sram=null;var g,h,i,j,k,l=!1;this.rom=null,this.format=wmsx.SlotFormats.FMPAC;var m=new wmsx.YM2413Audio("FM-PAC");this.opll=m,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(d),b1:j,fe:i,sa:f,s:wmsx.Util.compressInt8BitArrayToStringBase64(e),sn:g,fm:m.saveState(),d:l}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),d=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,j=a.b1,i=a.fe,f=a.sa,e=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,e),g=a.sn,m.loadState(a.fm),l=!!a.d,b()},a&&function(b){b.rom=a,d=wmsx.Util.asNormalArray(a.content),b.bytes=d,e=wmsx.Util.arrayFill(new Array(8192),0),b.sram=e}(this)},wmsx.CartridgeFMPAC.prototype=wmsx.Slot.base,wmsx.CartridgeFMPAC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeFMPAC;return c.loadState(a),c},wmsx.CartridgeMoonSound=function(a){"use strict";this.connect=function(a){c.connect(a)},this.disconnect=function(a){c.disconnect(a)},this.powerOn=function(){c.powerOn(),this.reset()},this.powerOff=function(){c.powerOff()},this.reset=function(){c.reset()},this.opl4ReadMemory=function(a){return b[4194303&a]},this.opl4WriteMemory=function(a,c){(4194303&a)<2097152||(b[4194303&a]=c)};var b;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.MoonSound;var c=new wmsx.OPL4Audio("MoonSound",this);this.opl4=c,this.saveState=function(){var a=this.lightState();return{f:this.format.name,r:this.rom.saveState(),b:a?null:wmsx.Util.compressInt8BitArrayToStringBase64(b),ra:a?wmsx.Util.compressInt8BitArrayToStringBase64(b,2097152,2097152):null,opl4:c.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b):(this.rom.reloadEmbeddedContent(),b||(b=new Array(4194304)),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.ra,b,!0,null,2097152),wmsx.Util.arrayCopy(this.rom.content,0,b)),this.bytes=b,c.loadState(a.opl4)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content,0,4194304),wmsx.Util.arrayFill(b,0,2097152),c.bytes=b}(this)},wmsx.CartridgeMoonSound.prototype=wmsx.Slot.base,wmsx.CartridgeMoonSound.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeMoonSound;return c.loadState(a),c},wmsx.CartridgeExtraPSG=function(a){"use strict";this.connect=function(a){b.setAudioSocket(a.getAudioSocket()),b.connectBus(a.bus)},this.disconnect=function(a){b.disconnectBus(a.bus)},this.powerOn=function(){b.powerOn()},this.powerOff=function(){b.powerOff()},this.reset=function(){b.reset()};var b=new wmsx.PSG(null,!0);this.rom=null,this.format=wmsx.SlotFormats.ExtraPSG,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),p:b.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b.loadState(a.p)},a&&function(b){b.rom=a}(this)},wmsx.CartridgeExtraPSG.prototype=wmsx.Slot.base,wmsx.CartridgeExtraPSG.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeExtraPSG;return c.loadState(a),c},wmsx.CartridgeGameMaster2=function(a){"use strict";this.connect=function(a){h=a.getCartridgeSocket()},this.getDataDesc=function(){return"SRAM"},this.loadData=function(a,b){if(8192!==b.length)return null;for(var c=0;c<8192;++c)f[c]=b[c];return g=a,b},this.getDataToSave=function(){i=!1,h.fireCartridgesModifiedStateUpdate();var a=new Uint8Array(f);return{fileName:g||"GameMaster2.sram",content:a,desc:this.getDataDesc()}},this.dataModified=function(){return i},this.powerOn=function(){this.reset()},this.reset=function(){c=1,d=2,e=3},this.write=function(a,b){if(!(a<24576||a>=49152))return a<28672?void(c=b):a>=32768&&a<36864?void(d=b):a>=40960&&a<45056?void(e=b):void(a>=45056&&16&e&&(f[((32&e)<<7)+a-45056]=b,i||(i=!0,h.fireCartridgesModifiedStateUpdate())))},this.read=function(a){switch(57344&a){case 16384:return b[a-16384];case 24576:return 16&c?f[((32&c)<<7)+(a-24576&4095)]:b[((15&c)<<13)+a-24576];case 32768:return 16&d?f[((32&d)<<7)+(a-32768&4095)]:b[((15&d)<<13)+a-32768];case 40960:return 16&e?f[((32&e)<<7)+(a-40960&4095)]:b[((15&e)<<13)+a-40960];default:return 255}};var b;this.bytes=null;var c,d,e,f;this.sram=null;var g,h,i=!1;this.rom=null,this.format=wmsx.SlotFormats.GameMaster2,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c,b3:d,b4:e,s:wmsx.Util.compressInt8BitArrayToStringBase64(f),sn:g,d:i}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=a.b3,e=a.b4,f=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,f),this.sram=f,g=a.sn,i=!!a.d},a&&function(c){c.rom=a, -b=wmsx.Util.asNormalArray(a.content),c.bytes=b,f=wmsx.Util.arrayFill(new Array(8192),0),c.sram=f}(this)},wmsx.CartridgeGameMaster2.prototype=wmsx.Slot.base,wmsx.CartridgeGameMaster2.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeGameMaster2;return c.loadState(a),c},wmsx.CartridgeASCII8KSRAM=function(a,b){"use strict";this.connect=function(a){n=a.getCartridgeSocket()},this.getDataDesc=function(){return"SRAM"},this.loadData=function(a,b){var c=l+1;if(b.length!==c)return null;for(var d=0;d=49152))return a<26624?void(d=b):a<28672?void(e=b):a<30720?void(f=b):a<32768?void(g=b):a<40960&&f&j?(k[((3&f)<<13)+a-32768&l]=b,void(o||(o=!0,n.fireCartridgesModifiedStateUpdate()))):void(g&j&&(k[((3&g)<<13)+a-40960&l]=b,o||(o=!0,n.fireCartridgesModifiedStateUpdate())))},this.read=function(a){switch(57344&a){case 16384:return d&j?k[((3&d)<<13)+a-16384&l]:c[((d&i)%h<<13)+a-16384];case 24576:return e&j?k[((3&e)<<13)+a-24576&l]:c[((e&i)%h<<13)+a-24576];case 32768:return f&j?k[((3&f)<<13)+a-32768&l]:c[((f&i)%h<<13)+a-32768];case 40960:return g&j?k[((3&g)<<13)+a-40960&l]:c[((g&i)%h<<13)+a-40960];default:return 255}};var c;this.bytes=null;var d,e,f,g,h,i,j,k;this.sram=null;var l,m,n,o=!1;this.rom=null,this.format=b,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c),b1:d,b2:e,b3:f,b4:g,n:h,rsm:i,s:wmsx.Util.compressInt8BitArrayToStringBase64(k),sn:m,ssm:j,d:o}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.b1,e=a.b2,f=a.b3,g=a.b4,h=a.n,i=a.rsm,k=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,k),this.sram=k,l=k.length-1,m=a.sn,j=a.ssm,o=!!a.d},a&&function(d){d.rom=a,c=wmsx.Util.asNormalArray(a.content),d.bytes=c,h=c.length/8192|0;var e=b===wmsx.SlotFormats.KoeiSRAM32?32768:b===wmsx.SlotFormats.ASCII16SRAM2?2048:8192;l=e-1,k=wmsx.Util.arrayFill(new Array(e),0),d.sram=k;var f=Math.max(32,1<=24576&&a<26624?void(d=b):a>=28672&&a<30720?void(e=b):void(a>=32768&&a<49152&&e&h&&(i[a-32768&j]=b,m||(m=!0,l.fireCartridgesModifiedStateUpdate())))},this.read=function(a){switch(49152&a){case 16384:return d&h?i[a-16384&j]:c[((d&g)%f<<14)+a-16384];case 32768:return e&h?i[a-32768&j]:c[((e&g)%f<<14)+a-32768];default:return 255}};var c;this.bytes=null;var d,e,f,g,h,i;this.sram=null;var j,k,l,m=!1;this.rom=null,this.format=b,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c),b1:d,b2:e,n:f,rsm:g,s:wmsx.Util.compressInt8BitArrayToStringBase64(i),sn:k,ssm:h,d:m}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.b1,e=a.b2,f=a.n,g=a.rsm,i=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,i),this.sram=i,j=i.length-1,k=a.sn,h=a.ssm,m=!!a.d},a&&function(d){d.rom=a,c=wmsx.Util.asNormalArray(a.content),d.bytes=c,f=c.length/16384|0;var e=b===wmsx.SlotFormats.ASCII16SRAM2?2048:8192;j=e-1,i=wmsx.Util.arrayFill(new Array(e),0),d.sram=i;var k=1<=28672&&i?b[(a<30720?g:h)+a]:b[d+a];case 32768:return b[e+a];case 40960:return b[f+a];default:return 255}};var b;this.bytes=null;var c,d,e,f,g,h,i,j;this.sram=null;var k,l,m,n=!1;this.rom=null,this.format=wmsx.SlotFormats.Halnote,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d,b3:e,b4:f,sb1:g,sb2:h,sbe:i,s:wmsx.Util.compressInt8BitArrayToStringBase64(j),se:k,sn:l,d:n}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2,e=a.b3,f=a.b4,g=a.sb1,h=a.sb2,i=a.sbe,j=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,j),this.sram=j,k=a.se,l=a.sn,n=!!a.d},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,j=wmsx.Util.arrayFill(new Array(16384),0),c.sram=j}(this)},wmsx.CartridgeHalnote.prototype=wmsx.Slot.base,wmsx.CartridgeHalnote.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeHalnote;return c.loadState(a),c},wmsx.CartridgeMajutsushi=function(a){"use strict";this.connect=function(a){g.setAudioSocket(a.getAudioSocket()),g.connectAudio()},this.disconnect=function(a){g.disconnectAudio()},this.powerOn=function(){this.reset(),g.connectAudio()},this.powerOff=function(){g.disconnectAudio(),this.reset()},this.reset=function(){c=d=e=-16384,g.reset()},this.write=function(a,b){a>=20480&&a<24575?g.setSampleValue(b):a>=24576&&a<32767?c=(b%f<<13)-24576:a>=32768&&a<40959?d=(b%f<<13)-32768:a>=40960&&a<49151&&(e=(b%f<<13)-40960)},this.read=function(a){switch(57344&a){case 16384:return b[a-16384];case 24576:return b[c+a];case 32768:return b[d+a];case 40960:return b[e+a];default:return 255}};var b;this.bytes=null;var c,d,e,f,g=new wmsx.PCM8BitAudio;this.rom=null,this.format=wmsx.SlotFormats.Majutsushi,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c,b3:d,b4:e,n:f,p:g.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=a.b3,e=a.b4,f=a.n,g.loadState(a.p)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,f=b.length/8192|0}(this)},wmsx.CartridgeMajutsushi.prototype=wmsx.Slot.base, -wmsx.CartridgeMajutsushi.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeMajutsushi;return c.loadState(a),c},wmsx.CartridgeSynthesizer=function(a){"use strict";this.connect=function(a){c.setAudioSocket(a.getAudioSocket()),c.connectAudio()},this.disconnect=function(a){c.disconnectAudio()},this.powerOn=function(){this.reset(),c.connectAudio()},this.powerOff=function(){c.disconnectAudio(),this.reset()},this.reset=function(){c.reset()},this.write=function(a,b){16384==(49168&a)&&c.setSampleValue(b)},this.read=function(a){return a>=16384&&a<49152?b[a-16384]:255};var b;this.bytes=null;var c=new wmsx.PCM8BitAudio;this.rom=null,this.format=wmsx.SlotFormats.Synthesizer,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),p:c.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c.loadState(a.p)},a&&function(c){c.rom=a,b=wmsx.Util.arrayFill(new Array(32768),255),c.bytes=b;for(var d=a.content.length,e=0;e<32768;++e)b[e]=a.content[e%d]}(this)},wmsx.CartridgeSynthesizer.prototype=wmsx.Slot.base,wmsx.CartridgeSynthesizer.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSynthesizer;return c.loadState(a),c},wmsx.MachineTypeSocket=function(a){"use strict";this.getMachine=function(){return a.machineName},this.getMachineLang=function(){return WMSX.MACHINES_CONFIG[a.machineName].LANG||"en"},this.changeMachine=function(b){if(a.machineName!==b){if(WMSX.MEDIA_CHANGE_DISABLED)return b.showOSD("Machine change is disabled!",!0,!0);var c=WMSX.MACHINES_CONFIG[b];if(c){var d=a.powerIsOn;a.powerOff();var e=a.systemPause(!0);WMSX.MACHINE=b,wmsx.Configurator.applyFinalConfig(),a.updateMachineType(),new wmsx.MultiDownloader(wmsx.Configurator.slotURLSpecs(),function(){a.getExtensionsSocket().refreshSlotsFromConfig(function(){a.getSavestateSocket().externalStateChange(),a.showOSD((c.DESC||c.DESCX)+" machine activated",!0),e||a.systemPause(!1),d&&a.powerOn()})},function(a){wmsx.Util.message(a.errorMessage)}).start()}}},this.addMachineTypeStateListener=function(a,c){b.indexOf(a)<0&&(b.push(a),c||a.machineTypeStateUpdate())},this.fireMachineTypeStateUpdate=function(){for(var a=0;a>(a>>14<<1)&3){case 0:return slot0;case 1:return slot1;case 2:return slot2;case 3:return slot3}}function create(){slot0=slot1=slot2=slot3=slotModules=slotEmpty,slots=[slot0,slot1,slot2,slot3,slotModules],devicesInputPorts=wmsx.Util.arrayFill(new Array(256),deviceInputMissing),devicesOutputPorts=wmsx.Util.arrayFill(new Array(256),deviceOutputMissing),self.slots=slots,self.devicesInputPorts=devicesInputPorts,self.devicesOutputPorts=devicesOutputPorts}var self=this;this.powerOn=function(){this.setPrimarySlotConfig(0);for(var a=0;a<5;a++)slots[a].powerOn()},this.powerOff=function(){for(var a=0;a<5;a++)slots[a].powerOff()},this.reset=function(){this.setPrimarySlotConfig(0);for(var a=0;a<5;a++)slots[a].reset()},this.refreshConnect=function(){for(var a=0;a<5;++a)slots[a].refreshConnect()},this.insertSlot=function(a,b){if(a=a||slotEmpty,slots[b]!==a)switch(slots[b].disconnect(machine),slots[b]=a,slots[b].connect(machine),b){case 0:return void(slot0=a);case 1:return void(slot1=a);case 2:return void(slot2=a);case 3:return void(slot3=a);case 4:return void(slotModules=a)}},this.getSlot=function(a){return slots[a]},this.getSlotForAddress=getSlotForAddress,this.read=function(a){switch(primarySlotConfig>>(a>>14<<1)&3){case 0:return slot0.read(a);case 1:return slot1.read(a);case 2:return slot2.read(a);case 3:return slot3.read(a)}},this.write=function(a,b){switch(primarySlotConfig>>(a>>14<<1)&3){case 0:return void slot0.write(a,b);case 1:return void slot1.write(a,b);case 2:return void slot2.write(a,b);case 3:return void slot3.write(a,b)}},this.writeWithBusMonitor=function(a,b){switch(writeMonitor&&writeMonitor(a,b),primarySlotConfig>>(a>>14<<1)&3){case 0:return void slot0.write(a,b);case 1:return void slot1.write(a,b);case 2:return void slot2.write(a,b);case 3:return void slot3.write(a,b)}},this.input=function(a){return devicesInputPorts[255&a](a)},this.output=function(a,b){return devicesOutputPorts[255&a](b,a)},this.setPrimarySlotConfig=function(a){ -primarySlotConfig=a},this.getPrimarySlotConfig=function(){return primarySlotConfig},this.cpuExtensionBegin=function(a){if(a.extNum<240)return getSlotForAddress(a.extPC).cpuExtensionBegin(a);var b=cpuExtensionHandlers[a.extNum];return b?b.cpuExtensionBegin(a):void 0},this.cpuExtensionFinish=function(a){if(a.extNum<240)return getSlotForAddress(a.extPC).cpuExtensionFinish(a);var b=cpuExtensionHandlers[a.extNum];return b?b.cpuExtensionFinish(a):void 0},this.setCpuExtensionHandler=function(a,b){cpuExtensionHandlers[a]=b},this.connectInputDevice=function(a,b){devicesInputPorts[a]=b},this.connectOutputDevice=function(a,b){devicesOutputPorts[a]=b},this.disconnectInputDevice=function(a,b){b&&devicesInputPorts[a]!==b||(devicesInputPorts[a]=deviceInputMissing)},this.disconnectOutputDevice=function(a,b){b&&devicesOutputPorts[a]!==b||(devicesOutputPorts[a]=deviceOutputMissing)},this.setWriteMonitor=function(a){(writeMonitor=a)&&(this.write=this.writeWithBusMonitor)};var slots,slot0,slot1,slot2,slot3,slotModules,primarySlotConfig=0,slotEmpty=wmsx.SlotEmpty.singleton,deviceInputMissing=wmsx.DeviceMissing.inputPort,deviceOutputMissing=wmsx.DeviceMissing.outputPort,devicesInputPorts,devicesOutputPorts,writeMonitor,cpuExtensionHandlers={};this.saveState=function(){return{p:primarySlotConfig,s0:slot0.saveState(),s1:slot1.saveState(),s2:slot2.saveState(),s3:slot3.saveState(),sM:slotModules.saveState()}},this.loadState=function(a){this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,slot0),0),this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,slot1),1),this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,slot2),2),this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,slot3),3),this.insertSlot(a.sM?wmsx.SlotCreator.recreateFromSaveState(a.sM,slotModules):slotEmpty,4),this.setPrimarySlotConfig(a.p)},init(),this.eval=function(str){return eval(str)}},wmsx.Machine=function(){"use strict";function init(){socketsCreate(),mainComponentsCreate(),computeBasicAutoRunCommandParameters()}function getSlot(a){"number"==typeof a&&(a=[a]);var b=a[0],c=a[1],d=bus.getSlot(b);return c>=0?d=d.isExpanded()?d.getSubSlot(c):null:d.isExpanded()&&(d=d.getSubSlot(0)),d}function getSlotDesc(a){var b="number"==typeof a?a:a[0];return b>3?void 0:b.toString()+(bus.getSlot(b).isExpanded()?"-"+(a[1]||0):"")}function insertSlot(a,b){"number"==typeof b&&(b=[b]);var c=!a||a===EMPTY_SLOT;if(!c||-1===e||(getSlot(b)||EMPTY_SLOT)!==EMPTY_SLOT){var d=b[0],e=b[1],f=bus.getSlot(d);if(e>=0){if(!f.isExpanded()){var g=f;f=2===d?new wmsx.SlotExpandedSpecial:4===d?new wmsx.SlotExpandedModules:new wmsx.SlotExpanded,bus.insertSlot(f,d),g!==EMPTY_SLOT&&e>0&&f.insertSubSlot(g,0)}f.insertSubSlot(a,e),c&&f.isAllEmpty()&&bus.insertSlot(a,d)}else f.isExpanded()&&-1!==e?(f.insertSubSlot(a,0),c&&f.isAllEmpty()&&bus.insertSlot(a,d)):bus.insertSlot(a,d)}}function setVideoStandard(a,b,c){!1!==c&&self.showOSD((videoStandardIsAuto?"AUTO: ":"FORCED: ")+a.desc,!!c),(b||videoStandard!==a)&&(videoStandard=a,vdp.setVideoStandard(videoStandard),videoClockUpdateSpeed())}function setVideoStandardAuto(a){videoStandardIsAuto=!0;var b=wmsx.VideoStandard.NTSC;videoStandardSoft?b=videoStandardSoft:bios&&(bios.setVideoStandardUseOriginal(),b=bios.originalVideoStandard),setVideoStandard(b,!0,a)}function setVideoStandardForced(a){videoStandardIsAuto=!1,bios&&bios.setVideoStandardForced(a),setVideoStandard(a,!1,!0)}function setVSynchMode(a,b){(vSynchMode!==a||b)&&(vSynchMode=a<0?a:a%2,vdp.setVSynchMode(vSynchMode),videoClockUpdateSpeed())}function vSynchModeToggle(){if(vSynchMode<0||-1===videoClockSocket.getVSynchNativeFrequency())return self.showOSD("VSync is disabled / unsupported",!0,!0);setVSynchMode(vSynchMode+1),self.showOSD("VSync: "+(1===vSynchMode?"Auto ("+(videoClockSocket.isVSynchActive()?"ON":"OFF")+")":0===vSynchMode?"OFF":"DISABLED"),!0),WMSX.userPreferences.current.vSynch=vSynchMode,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save()}function saveState(a){var b={cfg:wmsx.Configurator.saveState(),mn:self.machineName,mt:self.machineType,b:bus.saveState(),rc:rtc.saveState(),sf:syf.saveState(),pp:ppi.saveState(),ps:psg.saveState(),vd:vdp.saveState(a),c:cpu.saveState(),va:videoStandardIsAuto,vs:videoStandard.name,ctm:cpuTurboMode,vtm:vdpTurboMode,s:speedControl,br:basicAutoRunDone,bc:basicAutoRunCommand||"",vss:videoStandardSoft&&videoStandardSoft.name,dd:diskDriveSocket.getDrive().saveState(),ct:cassetteSocket.getDeck().saveState(),cs:controllersSocket.saveState()};return a&&(b.vy=vSynchMode,b.pw=self.powerIsOn,b.up=userPaused,b.upf=userPauseMoreFrames),b}function loadState(a){wmsx.Configurator.loadState(a,a.cfg),void 0!==a.vy&&setVSynchMode(a.vy,!0),void 0!==a.pw&&self.powerIsOn!==a.pw&&(a.pw?self.powerOn(!0):self.powerOff()),void 0!==a.up&&self.userPause(a.up),void 0!==a.upf&&(userPauseMoreFrames=a.upf),self.machineName=a.mn,self.machineType=a.mt,videoStandardIsAuto=a.va,setVideoStandard(wmsx.VideoStandard[a.vs]),videoStandardSoft=a.vss&&wmsx.VideoStandard[a.vss],speedControl=a.s||1,1===speedControl&&(speedControl=defaultSpeed),basicAutoRunDone=!!a.br,void 0!==a.bc&&(basicAutoRunCommand=a.bc),videoClockUpdateSpeed(),cpu.loadState(a.c),vdp.loadState(a.vd),psg.loadState(a.ps),ppi.loadState(a.pp),rtc.loadState(a.rc),syf.loadState(a.sf),bus.loadState(a.b),diskDriveSocket.getDrive().loadState(a.dd),cassetteSocket.getDeck().loadState(a.ct),a.cs&&controllersSocket.loadState(a.cs),machineTypeSocket.fireMachineTypeStateUpdate(),cartridgeSocket.fireCartridgesStateUpdate(),machineControlsSocket.firePowerAndUserPauseStateUpdate(),audioSocket.flushAllSignals(),diskDriveSocket.fireInterfacesChangeUpdate(),cpuTurboMode=void 0!==a.ctm?a.ctm:cpu.getCPUTurboMulti()>1?cpu.getCPUTurboMulti():0,vdpTurboMode=void 0!==a.vtm?a.vtm:vdp.getVDPTurboMulti()>1?vdp.getVDPTurboMulti():0,biosSocket.turboDriverTurboModesUpdate(),saveStateSocket.externalStateChange()}function videoClockUpdateSpeed(){var a=vdp.getDesiredVideoPulldown();videoClockSocket.setVSynch(1===vSynchMode);var b=a.frequency*(alternateSpeed||speedControl)|0;videoClockSocket.setFrequency(b,a.divider),audioSocket.setFps(b/a.divider),rtc.setFps(a.frequency/a.divider)}function mainComponentsCreate(){self.cpu=cpu=new wmsx.Z80,self.vdp=vdp=new wmsx.VDP(self,cpu),self.psg=psg=new wmsx.PSG(controllersSocket,!1),self.ppi=ppi=new wmsx.PPI(psg.getAudioChannel(),controllersSocket),self.rtc=rtc=new wmsx.RTC,self.syf=syf=new wmsx.SystemFlags,self.bus=bus=new wmsx.BUS(self,cpu),cpu.connectBus(bus),ppi.connectBus(bus),vdp.connectBus(bus),psg.setAudioSocket(audioSocket),psg.connectBus(bus),rtc.connectBus(bus),syf.connectBus(bus)}function socketsCreate(){machineTypeSocket=new wmsx.MachineTypeSocket(self),videoClockSocket=new VideoClockSocket,slotSocket=new SlotSocket,biosSocket=new BIOSSocket,extensionsSocket=new wmsx.ExtensionsSocket(self),cartridgeSocket=new CartridgeSocket,expansionSocket=new ExpansionSocket,controllersSocket=new ControllersSocket,saveStateSocket=new SaveStateSocket,cassetteSocket=new CassetteSocket,audioSocket=new AudioSocket,diskDriveSocket=new DiskDriveSocket,machineControlsSocket=new MachineControlsSocket}function computeBasicAutoRunCommandParameters(){basicAutoRunCommand=(WMSX.BASIC_ENTER?WMSX.BASIC_ENTER+"\r":"")+(WMSX.BASIC_TYPE||""),WMSX.BASIC_RUN?basicAutoRunCommand='\r\r\rRUN "'+WMSX.BASIC_RUN+'"\r'+basicAutoRunCommand:WMSX.BASIC_LOAD?basicAutoRunCommand='\r\r\rLOAD "'+WMSX.BASIC_LOAD+'"\r'+basicAutoRunCommand:WMSX.BASIC_BRUN?basicAutoRunCommand='\r\r\rBLOAD "'+WMSX.BASIC_BRUN+'",r\r'+basicAutoRunCommand:WMSX.BASIC_BLOAD&&(basicAutoRunCommand='\r\r\rBLOAD "'+WMSX.BASIC_BLOAD+'"\r'+basicAutoRunCommand)}function typeBasicAutoRunCommand(){diskDriveSocket.hasAnyMediaInserted()||cartridgeSocket.hasAnyMediaInserted()||cassetteSocket.typeAutoRunCommand(),basicAutoRunDone||(basicAutoRunCommand&&biosSocket.keyboardExtensionTypeString(basicAutoRunCommand), -basicAutoRunDone=!0,basicAutoRunCommand=void 0)}function controlStateChanged(a,b,c,d){if(!isLoading){if(a===controls.FAST_SPEED&&!c)return void(b&&alternateSpeed!==SPEED_FAST?(alternateSpeed=SPEED_FAST,videoClockUpdateSpeed(),self.showOSD("FAST FORWARD",!0)):b||alternateSpeed!==SPEED_FAST||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)));if(a===controls.FAST_SPEED&&c)return void(b&&alternateSpeed!==SPEED_SLOW?(alternateSpeed=SPEED_SLOW,videoClockUpdateSpeed(),self.showOSD("SLOW MOTION",!0)):b||alternateSpeed!==SPEED_SLOW||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)));if(b)switch(a){case controls.POWER:c?self.powerIsOn&&self.reset():self.powerIsOn?self.powerOff():self.userPowerOn(!1);break;case controls.POWER_OFF:self.powerIsOn&&self.powerOff();break;case controls.PAUSE:return self.userPause(!userPaused,c),void self.getVideoOutput().showOSD(userPaused?"PAUSE"+(c?" with AUDIO ON":""):"RESUME",!0);case controls.FRAME:return void(userPaused&&(userPauseMoreFrames=1));case controls.INC_SPEED:case controls.DEC_SPEED:case controls.NORMAL_SPEED:case controls.MIN_SPEED:var e=SPEEDS.indexOf(speedControl);return a===controls.INC_SPEED&&e0?--e:a===controls.MIN_SPEED?e=0:a===controls.NORMAL_SPEED&&(e=SPEEDS.indexOf(1)),speedControl=SPEEDS[e],self.showOSD("Speed: "+(100*speedControl|0)+"%",!0),void videoClockUpdateSpeed();case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:saveStateSocket.saveState(255&a);break;case controls.SAVE_STATE_FILE:saveStateSocket.saveStateFile();break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:saveStateSocket.loadState(255&a);break;case controls.TYPE_STRING:biosSocket.keyboardExtensionTypeString(d);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(c?wmsx.VideoStandard.PAL:wmsx.VideoStandard.NTSC):videoStandard==wmsx.VideoStandard.NTSC?c?setVideoStandardAuto(!0):setVideoStandardForced(wmsx.VideoStandard.PAL):c?setVideoStandardForced(wmsx.VideoStandard.NTSC):setVideoStandardAuto(!0);break;case controls.VSYNCH:vSynchModeToggle();break;case controls.CPU_TURBO_MODE:self.toggleCPUTurboMode(c);break;case controls.VDP_TURBO_MODE:self.toggleVDPTurboMode(c);break;case controls.DEBUG:var f=vdp.toggleDebugModes(c);wmsx.DeviceMissing.setDebugMode(f);break;case controls.SPRITE_MODE:vdp.toggleSpriteDebugModes(c);break;case controls.DEFAULTS:self.setDefaults(),self.showOSD("Default Settings",!0)}}}function VideoClockSocket(){this.connectClock=function(b){a=b},this.getVSynchNativeFrequency=function(){return a.getVSynchNativeFrequency()},this.setVSynch=function(b){a.setVSynch(b)},this.setFrequency=function(b,c){a.setFrequency(b,c)},this.isVSynchActive=function(){return a.isVSynchActive()};var a}function BIOSSocket(){this.insertBIOS=function(a,b){slotSocket.insertSlot(a,WMSX.BIOS_SLOT,b)},this.insertBIOSEXT=function(a,b){slotSocket.insertSlot(a,WMSX.BIOSEXT_SLOT,b)},this.keyboardExtensionTypeString=function(a){bios&&bios.getKeyboardExtension().typeString(a)},this.keyboardExtensionCancelTypeString=function(){bios&&bios.getKeyboardExtension().cancelTypeString()},this.turboDriverTurboModesUpdate=function(){bios&&bios.getTurboDriver().turboModesUpdate()},this.setMachineTurboModesStateListener=function(b){a=b,a.machineTurboModesStateUpdate()},this.fireMachineTurboModesStateUpdate=function(){a&&a.machineTurboModesStateUpdate()};var a}function ExpansionSocket(){this.insertExpansion=function(a,b,c){var d=b?WMSX.EXPANSION2_SLOT:WMSX.EXPANSION1_SLOT;a!==slotSocket.slotInserted(d)&&(slotSocket.insertSlot(a,d,c),cartridgeSocket.fireCartridgesStateUpdate(),self.showOSD("Expansion "+(1===b?"2":"1")+" (slot "+getSlotDesc(d)+"): "+(a?a.rom.source:"EMPTY"),!0))},this.expansionInserted=function(a){return slotSocket.slotInserted(a?WMSX.EXPANSION2_SLOT:WMSX.EXPANSION1_SLOT)}}function CartridgeSocket(){this.insertCartridge=function(a,b,c,d){var e=1===b?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT;slotSocket.insertSlot(a,e,c,!0),this.fireCartridgesStateUpdate(),d||self.showOSD("Cartridge "+(1===b?"2":"1")+": "+(a?a.rom.source:"EMPTY"),!0)},this.removeCartridge=function(a,b){var c=1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT;return null===slotSocket.slotInserted(c)?(self.showOSD("No Cartridge in Slot "+(1===a?"2":"1"),!0,!0),!1):(slotSocket.insertSlot(null,c,b,!0),this.fireCartridgesStateUpdate(),self.showOSD("Cartridge "+(1===a?"2":"1")+" removed",!0),!0)},this.cartridgeInserted=function(a){return slotSocket.slotInserted(1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT)},this.dataOperationNotSupportedMessage=function(a,b,c){var d=1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT,e=slotSocket.slotInserted(d);return null===e?(c||self.showOSD("No Cartridge in Slot "+(1===a?"2":"1"),!0,!0),!0):!e.getDataDesc()&&(c||self.showOSD("Data "+(b?"Saving":"Loading")+" not supported for Cartridge "+(1===a?"2":"1"),!0,!0),!0)},this.loadCartridgeData=function(a,b,c){var d=1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT,e=slotSocket.slotInserted(d);if(e&&e.loadData(wmsx.Util.leafFilename(b),c))return self.showOSD(e.getDataDesc()+" loaded in Cartridge "+(1===a?"2":"1"),!0),c},this.getCartridgeData=function(a){if(!this.dataOperationNotSupportedMessage(a,!0,!1)){return slotSocket.slotInserted(1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT).getDataToSave()}},this.fireCartridgesStateUpdate=function(){for(var a=0;a=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(wmsx.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){wmsx.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse32=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pauseAudio()},this.unpauseAudio=function(){a&&a.unpauseAudio()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}function CassetteSocket(){this.connectDeck=function(b){a=b},this.connectDriver=function(a){b=a}, -this.getDeck=function(){return a},this.getDriver=function(){return b},this.autoPowerCycle=function(a){b&&b.currentAutoRunCommand()&&(self.powerIsOn||a||self.userPowerOn(!0))},this.typeAutoRunCommand=function(){b&&b.typeCurrentAutoRunCommand()};var a,b}function DiskDriveSocket(){this.connectDrive=function(a){b=a},this.getDrive=function(){return b},this.autoPowerCycle=function(a){self.powerIsOn||a||self.userPowerOn(!1)},this.diskInterfaceConnected=function(a){c.add(a),this.fireInterfacesChangeUpdate()},this.diskInterfaceDisconnected=function(a){c.delete(a),this.fireInterfacesChangeUpdate()},this.hardDiskInterfaceConnected=function(a){d.add(a),this.fireInterfacesChangeUpdate()},this.hardDiskInterfaceDisconnected=function(a){d.delete(a),this.fireInterfacesChangeUpdate()},this.dos2ROMConnected=function(a){e.add(a)},this.dos2ROMDisconnected=function(a){e.delete(a)},this.hasDiskInterface=function(){return c.size>0},this.hasHardDiskInterface=function(){return d.size>0},this.hasDOS2=function(){return e.size>0||d.size>0},this.setInterfacesChangeListener=function(b){a=b,this.fireInterfacesChangeUpdate()},this.fireInterfacesChangeUpdate=function(){a&&a.diskInterfacesStateUpdate(this.hasDiskInterface(),this.hasHardDiskInterface())},this.hasAnyMediaInserted=function(){return this.getDrive().hasAnyMediaInserted()};var a,b,c=new Set,d=new Set,e=new Set}function ControllersSocket(){this.connectControls=function(b){a=b},this.readKeyboardPort=function(b){return a.readKeyboardPort(b)},this.readControllerPort=function(b){return a.readControllerPort(b)},this.writeControllerPin8Port=function(b,c){a.writeControllerPin8Port(b,c)},this.releaseControllers=function(){a.releaseControllers()},this.resetControllers=function(){a.resetControllers()},this.getBUSCycles=function(){return cpu.getBUSCycles()},this.saveState=function(){return a.saveState()},this.loadState=function(b){a.loadState(b)};var a}function MachineControlsSocket(){this.controlStateChanged=function(a,b,c,d){controlStateChanged(a,b,c,d)},this.addPowerAndUserPauseStateListener=function(b){a.indexOf(b)>=0||(a.push(b),this.firePowerAndUserPauseStateUpdate())},this.firePowerAndUserPauseStateUpdate=function(){for(var b=0;b1};case controls.VDP_TURBO_MODE:return b=vdp.getVDPTurboMulti(),{label:self.getVDPTurboModeDesc(),active:1!==b};case controls.SPRITE_MODE:return c=vdp.getSpriteDebugModeQuickDesc(),{label:c,active:"Normal"!==c};case controls.VSYNCH:return{label:vSynchMode<0?"DISABL":vSynchMode?"Auto":"OFF",active:0===vSynchMode}}return{label:"Unknown",active:!1}};var a=[]}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.saveState=function(c){if(self.powerIsOn&&a){var d=self.systemPause(!0);self.showOSD("Saving State "+c,!0);var e=saveState();e.v=b,a.persistState(c,e,function(a){a?self.showOSD("State "+c+" saved",!0):self.showOSD("State "+c+" save FAILED!",!0,!0),d||self.systemPause(!1)})}},this.loadState=function(b){if(a){var d=self.systemPause(!0);self.showOSD("Loading State "+b,!0),a.retrieveState(b,function(a){a?c[a.v]?(self.powerIsOn?self.reset(!0):self.powerOn(!0),loadState(a),self.showOSD("State "+b+" loaded",!0)):self.showOSD("State "+b+" load failed. State version incompatible!",!0,!0):self.showOSD("State "+b+" not found!",!0,!0),d||self.systemPause(!1)})}},this.saveStateFile=function(){if(self.powerIsOn&&a){var c=self.systemPause(!0);self.showOSD("Saving State File",!0);var d=saveState();d.v=b,a.saveStateFile(d),c||self.systemPause(!1)}},this.loadStateFile=function(b){if(!a)return!1;self.showOSD("Loading State File",!0);var d=a.loadStateFile(b);return d?(wmsx.Util.log("State file loaded"),c[d.v]?(self.powerIsOn?self.reset(!0):self.powerOn(!0),loadState(d),self.showOSD("State File loaded",!0)):self.showOSD("State File load failed. State version incompatible!",!0,!0),!0):(self.showOSD(null,!0),!1)},this.externalStateChange=function(){a.externalStateChange()};var a,b=WMSX.STATE_VERSION,c=WMSX.STATE_VERSIONS_ACCEPTED}var self=this;this.socketsConnected=function(){self.updateMachineType(),self.setCPUTurboMode(cpuTurboMode),self.setVDPTurboMode(vdpTurboMode),self.setDefaults()},this.updateMachineType=function(){this.machineName=WMSX.MACHINE,this.machineType=WMSX.MACHINES_CONFIG[this.machineName].TYPE||3,vdp.setMachineType(this.machineType),rtc.setMachineType(this.machineType),syf.setMachineType(this.machineType),cpuTurboMode=1===WMSX.CPU_TURBO_MODE?2:WMSX.CPU_TURBO_MODE,vdpTurboMode=WMSX.VDP_TURBO_MODE,biosSocket.turboDriverTurboModesUpdate(),bus.refreshConnect(),machineTypeSocket.fireMachineTypeStateUpdate()},this.preStart=function(){extensionsSocket.refreshConfigFromSlots()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),syf&&syf.powerOn(),rtc&&rtc.powerOn(),ppi.powerOn(),psg.powerOn(),vdp.powerOn(),cpu.powerOn(),this.reset(a),this.powerIsOn=!0,a||machineControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){cpu.powerOff(),vdp.powerOff(),psg.powerOff(),ppi.powerOff(),rtc&&rtc.powerOff(),syf&&syf.powerOff(),bus.powerOff(),controllersSocket.resetControllers(),this.powerIsOn=!1,userPaused?this.userPause(!1):machineControlsSocket.firePowerAndUserPauseStateUpdate()},this.reset=function(a){videoStandardSoft=null,videoStandardIsAuto&&setVideoStandardAuto(),controllersSocket.resetControllers(),syf&&syf.reset(),rtc&&rtc.reset(),psg.reset(),vdp.reset(),cpu.reset(),bus.reset(),audioSocket.flushAllSignals(),fastBootFrames>0&&(a?fastBootCountdown>0&&(alternateSpeed=null,videoClockUpdateSpeed()):(fastBootCountdown=fastBootFrames,alternateSpeed=SPEED_FAST,videoClockUpdateSpeed()))},this.userPowerOn=function(a){if(!isLoading){if(!bios)return void this.getVideoOutput().showOSD("Insert BIOS!",!0,!0);this.powerOn(),a&&typeBasicAutoRunCommand()}},this.videoClockPulse=function(){fastBootCountdown>0&&--fastBootCountdown<=0&&(alternateSpeed=null,videoClockUpdateSpeed()),rtc.videoClockPulse(),bios&&bios.getKeyboardExtension().keyboardExtensionClockPulse(),self.powerIsOn&&(userPaused&&userPauseMoreFrames--<=0||(vdp.videoClockPulse(),audioSocket.audioFinishFrame()))},this.getMachineTypeSocket=function(){return machineTypeSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getSlotSocket=function(){return slotSocket},this.getBIOSSocket=function(){return biosSocket},this.getExtensionsSocket=function(){return extensionsSocket},this.getExpansionSocket=function(){return expansionSocket},this.getCartridgeSocket=function(){return cartridgeSocket},this.getMachineControlsSocket=function(){return machineControlsSocket},this.getControllersSocket=function(){return controllersSocket},this.getVideoOutput=function(){return vdp.getVideoOutput()},this.getAudioSocket=function(){return audioSocket},this.getSavestateSocket=function(){return saveStateSocket},this.getCassetteSocket=function(){return cassetteSocket},this.getDiskDriveSocket=function(){return diskDriveSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.setVideoStandardSoft=function(a){videoStandardSoft=a,videoStandardIsAuto&&videoStandard!==a?setVideoStandard(a,!1,!0):videoStandardIsAuto||videoStandard===a||self.showOSD("Cannot change Video Standard. Its FORCED: "+videoStandard.desc,!0,!0)},this.setBIOS=function(a){bios=a===EMPTY_SLOT?null:a,videoStandardSoft=null,setVideoStandardAuto()},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1, -userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),machineControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.vSynchSetSupported=function(a){var b=WMSX.userPreferences.current.vSynch;setVSynchMode(-1!==WMSX.SCREEN_VSYNC_MODE&&a?WMSX.SCREEN_VSYNC_MODE>=0?WMSX.SCREEN_VSYNC_MODE:null!==b&&b>=0?b:1:-1,!0)},this.toggleCPUTurboMode=function(a){a?this.setCPUTurboMode(cpuTurboMode<0?8:0===cpuTurboMode?-1:cpuTurboMode<=1.5?0:cpuTurboMode<=2?1.5:(0|cpuTurboMode)-1):this.setCPUTurboMode(0===cpuTurboMode?1.5:cpuTurboMode<1?0:cpuTurboMode<1.5?1.5:1+(0|cpuTurboMode)),this.showCPUTurboModeMessage()},this.setCPUTurboMode=function(a){cpuTurboMode=a<0||a>8?-1:1===a?2:a,biosSocket.turboDriverTurboModesUpdate()},this.getCPUTurboMode=function(){return cpuTurboMode},this.showCPUTurboModeMessage=function(){self.showOSD("CPU Turbo: "+this.getCPUTurboModeDesc(),!0)},this.getCPUTurboModeDesc=function(){var a=cpuTurboMode<0?"OFF ":0===cpuTurboMode?"Auto ":"",b=cpu.getCPUTurboMulti();return a+=(1!==b?b+"x ":"")+"("+cpu.getCPUTurboFreqDesc()+")"},this.toggleVDPTurboMode=function(a){a?this.setVDPTurboMode(vdpTurboMode<0?9:2===vdpTurboMode?0:vdpTurboMode-1):this.setVDPTurboMode(vdpTurboMode+1),self.showOSD("VDP Engine Turbo: "+this.getVDPTurboModeDesc(),!0)},this.setVDPTurboMode=function(a){vdpTurboMode=a<0||a>9?-1:1===a?2:a,biosSocket.turboDriverTurboModesUpdate()},this.getVDPTurboMode=function(){return vdpTurboMode},this.getVDPTurboModeDesc=function(){var a=vdpTurboMode<0?"OFF ":0===vdpTurboMode?"Auto ":9===vdpTurboMode?"Instant":"",b=vdp.getVDPTurboMulti();return a+=b>1&&b<9?b+"x ":""},this.setDefaults=function(){setVideoStandardAuto(!1),vdp.setDefaults(),speedControl=defaultSpeed,alternateSpeed=null,videoClockUpdateSpeed()},this.saveState=saveState,this.loadState=loadState,this.machineName=null,this.machineType=0,this.powerIsOn=!1;var speedControl=1,alternateSpeed=!1,defaultSpeed=WMSX.SPEED>0?WMSX.SPEED/100:1,isLoading=!1,basicAutoRunDone=!1,basicAutoRunCommand,cpu,bus,ppi,vdp,psg,rtc,syf,userPaused=!1,userPauseMoreFrames=0,systemPaused=!1,machineTypeSocket,videoClockSocket,slotSocket,biosSocket,extensionsSocket,expansionSocket,cartridgeSocket,saveStateSocket,cassetteSocket,diskDriveSocket,machineControlsSocket,controllersSocket,audioSocket,bios,videoStandard,videoStandardSoft,videoStandardIsAuto=!1,vSynchMode,fastBootFrames=WMSX.FAST_BOOT<=0?0:WMSX.FAST_BOOT>1?WMSX.FAST_BOOT:WMSX.BOOT_KEYS_FRAMES>0?WMSX.BOOT_KEYS_FRAMES:WMSX.BOOT_DURATION_AUTO,fastBootCountdown=0,cpuTurboMode=0,vdpTurboMode=0,EMPTY_SLOT=wmsx.SlotEmpty.singleton,SPEEDS=[.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.25,1.5,2,3,5,10],SPEED_FAST=10,SPEED_SLOW=.3,controls=wmsx.MachineControls;this.eval=function(str){return eval(str)},init()},wmsx.Machine.BASE_CPU_CLOCK=3584160,wmsx.KeyboardKeys={D0:{m:[0,0],key:"D0",c_en:"0",cs_en:")",cs_ja:" "},D1:{m:[0,1],key:"D1",c_en:"1",cs_en:"!"},D2:{m:[0,2],key:"D2",c_en:"2",cs_en:"@",cs_ja:'"'},D3:{m:[0,3],key:"D3",c_en:"3",cs_en:"#"},D4:{m:[0,4],key:"D4",c_en:"4",cs_en:"$"},D5:{m:[0,5],key:"D5",c_en:"5",cs_en:"%"},D6:{m:[0,6],key:"D6",c_en:"6",cs_en:"^",cs_ja:"&"},D7:{m:[0,7],key:"D7",c_en:"7",cs_en:"&",cs_ja:"'"},D8:{m:[1,0],key:"D8",c_en:"8",cs_en:"*",cs_ja:"("},D9:{m:[1,1],key:"D9",c_en:"9",cs_en:"(",cs_ja:")"},MINUS:{m:[1,2],key:"MINUS",c_en:"-",cs_en:"_",cs_ja:"="},EQUAL:{m:[1,3],key:"EQUAL",c_en:"=",cs_en:"+",c_ja:"^",cs_ja:"~"},BACKSLASH:{m:[1,4],key:"BACKSLASH",c_en:"\\",cs_en:"|",c_ja:"¥",cs_ja:"|"},OPEN_BRACKET:{m:[1,5],key:"OPEN_BRACKET",c_en:"[",cs_en:"{",c_ja:"@",cs_ja:"`"},CLOSE_BRACKET:{m:[1,6],key:"CLOSE_BRACKET",c_en:"]",cs_en:"}",c_ja:"[",cs_ja:"{"},SEMICOLON:{m:[1,7],key:"SEMICOLON",c_en:";",cs_en:":",cs_ja:"+"},QUOTE:{m:[2,0],key:"QUOTE",c_en:"'",cs_en:'"',c_ja:":",cs_ja:"*"},BACKQUOTE:{m:[2,1],key:"BACKQUOTE",c_en:"`",cs_en:"~",c_ja:"]",cs_ja:"}"},COMMA:{m:[2,2],key:"COMMA",c_en:",",cs_en:"<"},PERIOD:{m:[2,3],key:"PERIOD",c_en:".",cs_en:">"},SLASH:{m:[2,4],key:"SLASH",c_en:"/",cs_en:"?"},DEAD:{m:[2,5],key:"DEAD",c_en:"à",cs_en:"á",c_ja:" ",cs_ja:"_",cns_en:"à",cns_ja:"_"},A:{m:[2,6],key:"A",c_en:"A"},B:{m:[2,7],key:"B",c_en:"B"},C:{m:[3,0],key:"C",c_en:"C"},D:{m:[3,1],key:"D",c_en:"D"},E:{m:[3,2],key:"E",c_en:"E"},F:{m:[3,3],key:"F",c_en:"F"},G:{m:[3,4],key:"G",c_en:"G"},H:{m:[3,5],key:"H",c_en:"H"},I:{m:[3,6],key:"I",c_en:"I"},J:{m:[3,7],key:"J",c_en:"J"},K:{m:[4,0],key:"K",c_en:"K"},L:{m:[4,1],key:"L",c_en:"L"},M:{m:[4,2],key:"M",c_en:"M"},N:{m:[4,3],key:"N",c_en:"N"},O:{m:[4,4],key:"O",c_en:"O"},P:{m:[4,5],key:"P",c_en:"P"},Q:{m:[4,6],key:"Q",c_en:"Q"},R:{m:[4,7],key:"R",c_en:"R"},S:{m:[5,0],key:"S",c_en:"S"},T:{m:[5,1],key:"T",c_en:"T"},U:{m:[5,2],key:"U",c_en:"U"},V:{m:[5,3],key:"V",c_en:"V"},W:{m:[5,4],key:"W",c_en:"W"},X:{m:[5,5],key:"X",c_en:"X"},Y:{m:[5,6],key:"Y",c_en:"Y"},Z:{m:[5,7],key:"Z",c_en:"Z"},SHIFT:{m:[6,0],key:"SHIFT",c_en:"SHF"},CONTROL:{m:[6,1],key:"CONTROL",c_en:"CTR"},CAPSLOCK:{m:[6,3],key:"CAPSLOCK",c_en:"CAP"},GRAPH:{m:[6,2],key:"GRAPH",c_en:"GRA"},CODE:{m:[6,4],key:"CODE",c_en:"COD",c_ja:"KANA",cs_ja:"KANA"},F1:{m:[6,5],key:"F1",c_en:"F1",cs_en:"F6"},F2:{m:[6,6],key:"F2",c_en:"F2",cs_en:"F7"},F3:{m:[6,7],key:"F3",c_en:"F3",cs_en:"F8"},F4:{m:[7,0],key:"F4",c_en:"F4",cs_en:"F9"},F5:{m:[7,1],key:"F5",c_en:"F5",cs_en:"F10"},ESCAPE:{m:[7,2],key:"ESCAPE",c_en:"ESC"},TAB:{m:[7,3],key:"TAB",c_en:"TAB"},STOP:{m:[7,4],key:"STOP",c_en:"STP"},BACKSPACE:{m:[7,5],key:"BACKSPACE",c_en:"BS"},SELECT:{m:[7,6],key:"SELECT",c_en:"SEL"},ENTER:{m:[7,7],key:"ENTER",c_en:"RET"},SPACE:{m:[8,0],key:"SPACE",c_en:"SPC"},HOME:{m:[8,1],key:"HOME",c_en:"HOM"},INSERT:{m:[8,2],key:"INSERT",c_en:"INS"},DELETE:{m:[8,3],key:"DELETE",c_en:"DEL"},LEFT:{m:[8,4],key:"LEFT",c_en:"LFT"},UP:{m:[8,5],key:"UP",c_en:"UP"},DOWN:{m:[8,6],key:"DOWN",c_en:"DWN"},RIGHT:{m:[8,7],key:"RIGHT",c_en:"RGH"},NUM_MULTIPLY:{m:[9,0],key:"NUM_MULTIPLY",c_en:"*"},NUM_PLUS:{m:[9,1],key:"NUM_PLUS",c_en:"+"},NUM_DIVIDE:{m:[9,2],key:"NUM_DIVIDE",c_en:"/"},NUM_0:{m:[9,3],key:"NUM_0",c_en:"0"},NUM_1:{m:[9,4],key:"NUM_1",c_en:"1"},NUM_2:{m:[9,5],key:"NUM_2",c_en:"2"},NUM_3:{m:[9,6],key:"NUM_3",c_en:"3"},NUM_4:{m:[9,7],key:"NUM_4",c_en:"4"},NUM_5:{m:[10,0],key:"NUM_5",c_en:"5"},NUM_6:{m:[10,1],key:"NUM_6",c_en:"6"},NUM_7:{m:[10,2],key:"NUM_7",c_en:"7"},NUM_8:{m:[10,3],key:"NUM_8",c_en:"8"},NUM_9:{m:[10,4],key:"NUM_9",c_en:"9"},NUM_MINUS:{m:[10,5],key:"NUM_MINUS",c_en:"-"},NUM_COMMA:{m:[10,6],key:"NUM_COMMA",c_en:","},NUM_PERIOD:{m:[10,7],key:"NUM_PERIOD",c_en:"."},YES:{m:[11,1],key:"YES",c_en:"YES",c_ja:"HAI",cs_ja:"HAI"},NO:{m:[11,3],key:"NO",c_en:"NO",c_ja:"IIE",cs_ja:"IIE"}},wmsx.JoystickButtons={J_UP:{button:"J_UP",mask:1,n:"UP"},J_DOWN:{button:"J_DOWN",mask:2,n:"DOWN"},J_LEFT:{button:"J_LEFT",mask:4,n:"LEFT"},J_RIGHT:{button:"J_RIGHT",mask:8,n:"RIGHT"},J_A:{button:"J_A",mask:16,n:"A"},J_B:{button:"J_B",mask:32,n:"B"},J_AB:{button:"J_AB",mask:48,n:"AB"},J_X:{button:"J_X",n:"X"},J_Y:{button:"J_Y",n:"Y"},J_L:{button:"J_L",n:"L"},J_R:{button:"J_R",n:"R"},J_BACK:{button:"J_BACK",n:"BACK"},J_START:{button:"J_START",n:"START"}},wmsx.MachineControls={POWER:51,POWER_OFF:53,DEBUG:101,TRACE:102,PAUSE:103,FRAME:105,FAST_SPEED:111,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,SPRITE_MODE:121,VIDEO_STANDARD:123,VSYNCH:124,CPU_TURBO_MODE:125,VDP_TURBO_MODE:126,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521, -LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201,TYPE_STRING:301},wmsx.Images={embedded:!1,count:5,urls:{logo:WMSX.IMAGES_PATH+"logo.png",sprites:WMSX.IMAGES_PATH+"sprites.png",loading:WMSX.IMAGES_PATH+"loading.gif",mouseCursor:WMSX.IMAGES_PATH+"mouse-cursor.png",logoMiniBrightBack:WMSX.IMAGES_PATH+"logo-mini-bright-back.png"}},WMSX.userPreferences={},WMSX.userPreferences.currentVersion=50,WMSX.userPreferences.compatibleVersions=new Set([50]),WMSX.userPreferences.defaults=function(){"use strict";var a=wmsx.KeyboardKeys,b=wmsx.JoystickButtons,c=wmsx.DOMKeys,d=wmsx.GamepadButtons;return{hostKeyboard:{en:void 0,ja:void 0},customHostKeyboards:{en:{},ja:{}},customHostKeys:{nextCode:1001,keys:[]},joysticks:[{buttons:{J_UP:[d.GB_UP],J_DOWN:[d.GB_DOWN],J_LEFT:[d.GB_LEFT],J_RIGHT:[d.GB_RIGHT],J_A:[d.GB_1,d.GB_3],J_B:[d.GB_2,d.GB_3],J_X:[],J_Y:[],J_L:[d.GB_L1,d.GB_L2],J_R:[d.GB_R1,d.GB_R2],J_BACK:[d.GB_BACK],J_START:[d.GB_START]},virtualButtonsKeys:{J_X:[],J_Y:[],J_L:[{wc:c.VK_F12.wc|c.SHIFT,n:["Shift","F12"]}],J_R:[c.VK_F12],J_BACK:[c.VK_ESCAPE],J_START:[{wc:c.VK_P.wc|c.ALT,n:["Alt","P"]}]},settings:{device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,deadzone:.3}},{buttons:{J_UP:[d.GB_UP],J_DOWN:[d.GB_DOWN],J_LEFT:[d.GB_LEFT],J_RIGHT:[d.GB_RIGHT],J_A:[d.GB_1,d.GB_3],J_B:[d.GB_2,d.GB_3],J_X:[],J_Y:[],J_L:[d.GB_L1,d.GB_L2],J_R:[d.GB_R1,d.GB_R2],J_BACK:[d.GB_BACK],J_START:[d.GB_START]},virtualButtonsKeys:{J_X:[],J_Y:[],J_L:[{wc:c.VK_F12.wc|c.SHIFT,n:["Shift","F12"]}],J_R:[c.VK_F12],J_BACK:[c.VK_ESCAPE],J_START:[{wc:c.VK_P.wc|c.ALT,n:["Alt","P"]}]},settings:{device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,deadzone:.3}}],joykeys:[{buttons:{J_UP:[c.VK_UP],J_DOWN:[c.VK_DOWN],J_LEFT:[c.VK_LEFT],J_RIGHT:[c.VK_RIGHT],J_A:[c.VK_SPACE,c.VK_LSHIFT,c.VK_INSERT],J_B:[c.VK_M,c.VK_LCONTROL,c.VK_DELETE]}},{buttons:{J_UP:[c.VK_T],J_DOWN:[c.VK_G],J_LEFT:[c.VK_F],J_RIGHT:[c.VK_H],J_A:[c.VK_A],J_B:[c.VK_Z]}}],touch:{directional:"JOYSTICK",directionalBig:!1,buttons:{T_A:b.J_A,T_B:b.J_B,T_C:b.J_AB,T_D:a.ESCAPE,T_E:a.SPACE,T_F:a.F1,T_G:a.ENTER,T_X:null,T_Y:null}},vSynch:1,crtFilter:-1,crtScanlines:0,hapticFeedback:!0,audioBufferBase:-1,netPlaySessionName:"",netPlayNick:""}},WMSX.userPreferences.load=function(){var a;try{a=JSON.parse(localStorage["wmsxprefs"+this.getEnvSuffix()]||"{}"),a.version&&delete a.version}catch(a){}if(!a||!WMSX.userPreferences.compatibleVersions.has(a.prefsVersion)){a={}}var b=WMSX.userPreferences.defaults();for(var c in b)void 0===a[c]&&(a[c]=b[c]);a.prefsVersion=WMSX.userPreferences.currentVersion,WMSX.userPreferences.current=a,wmsx.DOMKeys.initPreferences()},WMSX.userPreferences.save=function(){if(WMSX.userPreferences.isDirty)try{WMSX.userPreferences.current.wmsxVersion=WMSX.VERSION,localStorage["wmsxprefs"+this.getEnvSuffix()]=JSON.stringify(WMSX.userPreferences.current),delete WMSX.userPreferences.isDirty,wmsx.Util.log("Preferences saved!")}catch(a){}},WMSX.userPreferences.getEnvSuffix=function(){return void 0===this.envSuffix&&(this.envSuffix=WMSX.ENVIRONMENT?"_"+WMSX.ENVIRONMENT:""),this.envSuffix},WMSX.userPreferences.setDirty=function(){WMSX.userPreferences.isDirty=!0},WMSX.userROMFormats={init:function(){wmsx.SlotCreator.setUserROMFormats(this),this.userFormats=JSON.parse(localStorage.wmsxuserformats||"{}")},getForROM:function(a){return this.userFormats[a.info.h]},setForROM:function(a,b,c){a.info.h&&(c?delete this.userFormats[a.info.h]:this.userFormats[a.info.h]=b,localStorage.wmsxuserformats=JSON.stringify(this.userFormats))}},wmsx.Clock=function(clockPulse){"use strict";this.connect=function(a){a.connectClock(this)},this.go=function(){running||(useRequestAnimationFrame=vSynch&&cyclesPerSecond===this.getVSynchNativeFrequency(),running=!0,useRequestAnimationFrame?animationFrame=requestAnimationFrame(pulse):interval=setInterval(pulse,cycleTimeMs))},this.pause=function(){running=!1,animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),interval&&(clearInterval(interval),interval=null)},this.setFrequency=function(a,b){running?(this.pause(),internalSetFrequency(a,b),this.go()):internalSetFrequency(a,b)},this.setVSynch=function(a){running?(this.pause(),vSynch=a,this.go()):vSynch=a},this.getVSynchNativeFrequency=function(){return vSynchAltNativeFrequency||vSynchNativeFrequency},this.setVSynchAltNativeFrequency=function(a){vSynchAltNativeFrequency=a},this.isVSynchActive=function(){return useRequestAnimationFrame};var internalSetFrequency=function(a,b){cyclesPerSecond=a,cycleTimeMs=1e3/a,divider=b>=1?b:1,dividerCounter>divider&&(dividerCounter=divider)},pulse=function(){animationFrame=null,divider>1?--dividerCounter<=0&&(dividerCounter=divider,clockPulse()):clockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.detectHostNativeFPSAndCallback=function(a){function b(){vSynchNativeFrequency=-1,wmsx.Util.error("Could not detect video native frequency. VSync DISABLED!"),a&&a(vSynchNativeFrequency)}if(-1===WMSX.SCREEN_VSYNC_MODE)return wmsx.Util.warning("Video native VSync disabled in configuration"),void(a&&a(vSynchNativeFrequency));if(-1!==WMSX.SCREEN_FORCE_HOST_NATIVE_FPS)return wmsx.Util.warning("Host video frequency forced in configuration: "+WMSX.SCREEN_FORCE_HOST_NATIVE_FPS),void(a&&a(vSynchNativeFrequency));if(!window.requestAnimationFrame)return b();var c=0,d=0,e=0,f=0,g=0,h=0,i=function(){if(e>=12||f>=18||g>=14||h>=18)return vSynchNativeFrequency=e>=12?60:f>=18?50:g>=14?120:100,wmsx.Util.log("Video native frequency detected: "+vSynchNativeFrequency+"Hz"),void(a&&a(vSynchNativeFrequency));if(!(++c<=70))return b();var j=wmsx.Util.performanceNow(),k=1e3/(j-d);d=j,k>=47&&k<=53&&f++,k>=56.4&&k<=63.6&&e++,k>=112.8&&k<=127.2&&g++,k>=94&&k<=106&&h++,requestAnimationFrame(i)};i()},this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,divider=1,dividerCounter=1,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0,vSynchNativeFrequency=-1===WMSX.SCREEN_VSYNC_MODE?-1:WMSX.SCREEN_FORCE_HOST_NATIVE_FPS,vSynchAltNativeFrequency=void 0};wmsx.FileLoader=function(a){"use strict";function b(a,b,c,d,e){return z.loadAsDiskFromFiles(c,a,p.createTreeFromZip(b),d,e)}function c(a,b,c,d){return z.loadAsDiskFromFiles(b,null,a,c,d)}function d(a,b,c,d,f,g,h){if((b===P.DISK||b===P.AUTO)&&z.loadDiskStackFromFiles(c,a,d,f,h))return!0;if(b!==P.DISK)for(var i=0;i0&&(1===b.length?p.readFromFile(b[0],C,G,H,I,d):p.readFromFiles(b,C,G,H,I,d)),!1}}function i(a){ -if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),!J&&a.dataTransfer){var b=(a.shiftKey?L:0)|(a.ctrlKey?M:0)|(a.altKey?N:0)|(a.buttons&K?O:0);j(a.target,b),a.dataTransfer.dropEffect=!D||D.disabled?"none":"link",F&&clearTimeout(F),F=setTimeout(k,250)}}function j(a,b){if(a&&w.mediaChangeDisabledWarning())a=void 0;else for(;a&&!a.wmsxDropInfo;)a=a.parentElement;if(a){var c=a.wmsxDropInfo;c.subFiles&&b&N?c=c.subFiles:c.subAdd&&b&M&&(c=c.subAdd)}if(D!==c||E!==b){if(D!==c){if(D){D.element.classList.remove("wmsx-selected");var d=D.mainEle;d&&d.classList.remove("wmsx-selected")}D=c,D&&(D.element.classList.add("wmsx-selected"),(d=D.mainEle)&&d.classList.add("wmsx-selected"))}E=b;var e;D&&(e=b&L&&D.mesSec?D.mesSec:D.mes,D.files&&b&M&&(e+=" (do not expand ZIP contents)"),b&O&&(e+=" - no Reset")),v.setFileLoaderDragMessage(e)}}function k(){j(void 0,0),F=void 0}function l(a){if(a.returnValue=!1,a.preventDefault(),a.target.focus(),J||!D||D.disabled||!a.dataTransfer)return k();var b=D,c=E;k();var d=c&O,e=b.files||c&N,f=b.add||c&M,g=void 0!==b.port?b.port:c&L?-1:void 0,h=b.openType;!e||h!==P.DISK&&h!==P.AUTO||(h=f?P.FILES_AS_DISK:P.AUTO_AS_DISK);var i=a.dataTransfer&&a.dataTransfer.files,j=q.systemPause(!0),l=function(a){j||q.systemPause(!1)};if(i&&i.length>0)1===i.length?p.readFromFile(i[0],h,g,d,f,l):p.readFromFiles(i,h,g,d,f,l);else{var m=a.dataTransfer.getData("text");m&&m.length>0?p.readFromURL(m,h,g,d,f,l):l()}}function m(a){if(!a||!a.trim())return a;var b=a.lastIndexOf(".");return(b>0?a.substring(0,b):a).trim()}function n(a){wmsx.Util.message("Could not load file(s):\n\n"+a+"\n")}function o(){A=document.createElement("input"),A.id="wmsx-file-loader-input",A.type="file",A.multiple=!0,A.accept=Q.AUTO,A.style.display="none",A.addEventListener("change",h),B.appendChild(A)}var p=this;this.connect=function(a){q=a,r=q.getSlotSocket(),s=q.getBIOSSocket(),q.getExtensionsSocket().connectFileLoader(this),t=q.getExpansionSocket(),u=q.getSavestateSocket()},this.connectPeripherals=function(a,b,c,d,e){v=a,w=b,x=c,y=d,z=e},this.registerForDnD=function(a){a.addEventListener("dragover",i,!1),a.addEventListener("drop",l,!1)},this.registerForFileInputElement=function(a){B=a},this.openFileChooserDialog=function(a,b,c,d){A||o(),A.multiple=R[P[a]||P.AUTO]&&!(a===P.DISK&&2===c),A.accept=Q[P[a]||P.AUTO],C=a,G=c,H=b,I=d,A.click()},this.openURLChooserDialog=function(a,b,c,d){var e;try{e=localStorage&&localStorage[T]}catch(a){}var f=q.systemPause(!0);if(e=prompt("Load file from URL:",e||""),e=e&&e.toString().trim()){try{localStorage[T]=e}catch(a){}this.readFromURL(e,a,c,b,d,function(){f||q.systemPause(!1)})}else f||q.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){wmsx.Util.log("Reading file: "+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};p.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){n("File reading error: "+a.target.error.name+U),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new wmsx.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};p.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){n("URL reading error: "+a.error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){new wmsx.MultiFileReader(a,function(a){p.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=U),n("File reading error: "+b),f&&f(!1)},b===P.AUTO_AS_DISK||b===P.FILES_AS_DISK||b===P.ZIP_AS_DISK?-1:void 0).start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,e,f,g,h,i){var j,k;if(e===P.AUTO_AS_DISK||e===P.FILES_AS_DISK||e===P.ZIP_AS_DISK){try{if(e===P.FILES_AS_DISK){if(c([a],f,g,h))return}else if(j=wmsx.Util.checkContentIsZIP(a.content)){if(b(m(a.name),j,f,g,h))return}else if(e===P.ZIP_AS_DISK)k="Not a ZIP file!";else if(c([a],f,g,h))return}catch(a){a.wmsx&&(k=a.message)}n("Error loading "+S[e]+(k?": "+k:""))}else{if(j=wmsx.Util.checkContentIsZIP(a.content))try{if(d(wmsx.Util.getZIPFilesSorted(j),e,f,g,h,i,!0))return;if(e===P.AUTO&&b(m(a.name),j,f,g,h))return}catch(a){wmsx.Util.error(a)}else if(d([a],e,f,g,h,i,!1))return;n("No valid "+S[e]+" found.")}},this.loadFromFiles=function(a,b,e,f,g){if(a=wmsx.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.nameb.name?1:0}),b===P.AUTO_AS_DISK||b===P.FILES_AS_DISK||b===P.ZIP_AS_DISK){var h;try{if(c(a,e,f,g))return}catch(a){a.wmsx&&(h=a.message)}n("Error loading "+S[b]+(h?": "+h:""))}else{if(d(a,b,e,f,g,null,!1))return;n("No valid "+S[b]+" found.")}},this.loadFromContentAsSlot=function(a,b,c,d,e,f){var h=wmsx.Util.checkContentIsZIP(b);if(h)try{for(var i=wmsx.Util.getZIPFilesSorted(h),j=0;j0&&(this.keysByLegacyCode[a.c]=a))},function(a,b,c,d){a.VK_1={wc:1,d:"Digit1",c:49,n:"1"},a.VK_2={wc:2,d:"Digit2",c:50,n:"2"},a.VK_3={wc:3,d:"Digit3",c:51,n:"3"},a.VK_4={wc:4,d:"Digit4",c:52,n:"4"},a.VK_5={wc:5,d:"Digit5",c:53,n:"5"},a.VK_6={wc:6,d:"Digit6",c:54,n:"6"},a.VK_7={wc:7,d:"Digit7",c:55,n:"7"},a.VK_8={wc:8,d:"Digit8",c:56,n:"8"},a.VK_9={wc:9,d:"Digit9",c:57,n:"9"},a.VK_0={wc:10,d:"Digit0",c:48,n:"0"},a.VK_F1={wc:21,d:"F1",c:112,n:"F1"},a.VK_F2={wc:22,d:"F2",c:113,n:"F2"},a.VK_F3={wc:23,d:"F3",c:114,n:"F3"},a.VK_F4={wc:24,d:"F4",c:115,n:"F4"},a.VK_F5={wc:25,d:"F5",c:116,n:"F5"},a.VK_F6={wc:26,d:"F6",c:117,n:"F6"},a.VK_F7={wc:27,d:"F7",c:118,n:"F7"},a.VK_F8={wc:28,d:"F8",c:119,n:"F8"},a.VK_F9={wc:29,d:"F9",c:120,n:"F9"},a.VK_F10={wc:30,d:"F10",c:121,n:"F10"},a.VK_F11={wc:31,d:"F11",c:122,n:"F11"},a.VK_F12={wc:32,d:"F12",c:123,n:"F12"},a.VK_Q={wc:101,d:"KeyQ",c:81,n:"Q"},a.VK_W={wc:102,d:"KeyW",c:87,n:"W"},a.VK_E={wc:103,d:"KeyE",c:69,n:"E"},a.VK_R={wc:104,d:"KeyR",c:82,n:"R"},a.VK_T={wc:105,d:"KeyT",c:84,n:"T"},a.VK_Y={wc:106,d:"KeyY",c:89,n:"Y"},a.VK_U={wc:107,d:"KeyU",c:85,n:"U"},a.VK_I={wc:108,d:"KeyI",c:73,n:"I"},a.VK_O={wc:109,d:"KeyO",c:79,n:"O"},a.VK_P={wc:110,d:"KeyP",c:80,n:"P"},a.VK_A={wc:111,d:"KeyA",c:65,n:"A"},a.VK_S={wc:112,d:"KeyS",c:83,n:"S"},a.VK_D={wc:113,d:"KeyD",c:68,n:"D"},a.VK_F={wc:114,d:"KeyF",c:70,n:"F"},a.VK_G={wc:115,d:"KeyG",c:71,n:"G"},a.VK_H={wc:116,d:"KeyH",c:72,n:"H"},a.VK_J={wc:117,d:"KeyJ",c:74,n:"J"},a.VK_K={wc:118,d:"KeyK",c:75,n:"K"},a.VK_L={wc:119,d:"KeyL",c:76,n:"L"},a.VK_Z={wc:120,d:"KeyZ",c:90,n:"Z"},a.VK_X={wc:121,d:"KeyX",c:88,n:"X"},a.VK_C={wc:122,d:"KeyC",c:67,n:"C"},a.VK_V={wc:123,d:"KeyV",c:86,n:"V"},a.VK_B={wc:124,d:"KeyB",c:66,n:"B"},a.VK_N={wc:125,d:"KeyN",c:78,n:"N"},a.VK_M={wc:126,d:"KeyM",c:77,n:"M"},a.VK_ESCAPE={wc:201,d:"Escape",c:27,n:"Esc",fn:!0},a.VK_BACKSPACE={wc:202,d:"Backspace",c:8,n:"BackSpc",fn:!0},a.VK_TAB={wc:203,d:"Tab",c:9,n:"Tab",fn:!0},a.VK_ENTER={wc:204,d:"Enter",c:13,n:"Enter",fn:!0},a.VK_SPACE={wc:205,d:"Space",c:32,n:"Space",fn:!0},a.VK_BACKQUOTE={wc:221,d:"Backquote",c:192,n:"`"},a.VK_MINUS={wc:222,d:"Minus",c:189,n:"-"},a.VK_EQUALS={wc:223,d:"Equal",c:187,n:"="},a.VK_INT_YEN={wc:224,d:"IntlYen",c:-1,n:"Int ¥"},a.VK_OPEN_BRACKET={wc:225,d:"BracketLeft",c:219,n:"["},a.VK_CLOSE_BRACKET={wc:226,d:"BracketRight",c:221,n:"]"},a.VK_SEMICOLON={wc:227,d:"Semicolon",c:186,n:";"},a.VK_QUOTE={wc:228,d:"Quote",c:222,n:"'"},a.VK_BACKSLASH={wc:229,d:"Backslash",c:220,n:"\\"},a.VK_INT_BACKSLASH={wc:230,d:"IntlBackslash",c:226,n:"Int \\"},a.VK_COMMA={wc:231,d:"Comma",c:188,n:","},a.VK_PERIOD={wc:232,d:"Period",c:190,n:"."},a.VK_SLASH={wc:233,d:"Slash",c:191,n:"/"},a.VK_INT_RO={wc:234,d:"IntlRo",c:193,n:"Int ろ"},a.VK_INSERT={wc:251,d:"Insert",c:45,n:"Ins",fn:!0},a.VK_DELETE={wc:252,d:"Delete",c:46,n:"Del",fn:!0},a.VK_HOME={wc:253,d:"Home",c:36,n:"Home",fn:!0},a.VK_END={wc:254,d:"End",c:35,n:"End",fn:!0},a.VK_PAGE_UP={wc:255,d:"PageUp",c:33,n:"PgUp",fn:!0},a.VK_PAGE_DOWN={wc:256,d:"PageDown",c:34,n:"PgDown",fn:!0},a.VK_UP={wc:271,d:"ArrowUp",c:38,n:"Up",fn:!0},a.VK_DOWN={wc:272,d:"ArrowDown",c:40,n:"Down",fn:!0},a.VK_LEFT={wc:273,d:"ArrowLeft",c:37,n:"Left",fn:!0},a.VK_RIGHT={wc:274,d:"ArrowRight",c:39,n:"Right",fn:!0},a.VK_PRINT_SCREEN={wc:281,d:"PrintScreen",c:44,n:"PrtScr",fn:!0},a.VK_SCROLL_LOCK={wc:282,d:"ScrollLock",c:145,n:"ScrLck",fn:!0},a.VK_PAUSE={wc:283,d:"Pause",c:19,n:"Pause",fn:!0},a.VK_BREAK={wc:284,d:"",c:3,n:"Break",fn:!0},a.VK_CONTEXT={wc:285,d:"ContextMenu",c:93,n:"Context",fn:!0},a.VK_LSHIFT={wc:301,d:"ShiftLeft",c:16|b,n:"L-Shift",fn:!0},a.VK_LCONTROL={wc:302,d:"ControlLeft",c:17|b,n:"L-Control",fn:!0},a.VK_LALT={wc:303,d:"AltLeft",c:18|b,n:"L-Alt",fn:!0},a.VK_LMETA={wc:304,d:"MetaLeft",c:91|b,n:"L-Meta",fn:!0},a.VK_RSHIFT={wc:305,d:"ShiftRight",c:16|c,n:"R-Shift",fn:!0},a.VK_RCONTROL={wc:306,d:"ControlRight",c:17|c,n:"R-Control",fn:!0},a.VK_RALT={wc:307,d:"AltRight",c:18|c,n:"R-Alt",fn:!0},a.VK_RMETA={wc:308,d:"MetaRight",c:91|c,n:"R-Meta",fn:!0},a.VK_CAPS_LOCK={wc:309,d:"CapsLock",c:20,n:"CapsLock",fn:!0},a.VK_NON_CONVERT={wc:310,d:"NonConvert",c:29,n:"NonConvert",fn:!0},a.VK_CONVERT={wc:311,d:"Convert",c:28,n:"Convert",fn:!0},a.VK_KANA={wc:312,d:"KanaMode",c:-1,n:"Kana",fn:!0},a.VK_NUMLOCK={wc:401,d:"NumLock",c:144,n:"NumLock"},a.VK_NUM_COMMA={wc:402,d:"NumpadComma",c:110|d,n:"Num ,"},a.VK_NUM_DIVIDE={wc:403,d:"NumpadDivide",c:111|d,n:"Num /"},a.VK_NUM_MULTIPLY={wc:404,d:"NumpadMultiply",c:106|d,n:"Num *"},a.VK_NUM_MINUS={wc:405,d:"NumpadSubtract",c:109|d,n:"Num -"},a.VK_NUM_PLUS={wc:406,d:"NumpadAdd",c:107|d,n:"Num +"},a.VK_NUM_ENTER={wc:407,d:"NumpadEnter",c:13|d,n:"Num Enter",fn:!0},a.VK_NUM_PERIOD={wc:408,d:"NumpadDecimal",c:194|d,n:"Num .",fn:!0},a.VK_NUM_1={wc:421,d:"Numpad1",c:97|d,n:"Num 1",fn:!0},a.VK_NUM_2={wc:422,d:"Numpad2",c:98|d,n:"Num 2",fn:!0},a.VK_NUM_3={wc:423,d:"Numpad3",c:99|d,n:"Num 3",fn:!0},a.VK_NUM_4={wc:424,d:"Numpad4",c:100|d,n:"Num 4",fn:!0},a.VK_NUM_5={wc:425,d:"Numpad5",c:101|d,n:"Num 5",fn:!0},a.VK_NUM_6={wc:426,d:"Numpad6",c:102|d,n:"Num 6",fn:!0},a.VK_NUM_7={wc:427,d:"Numpad7",c:103|d,n:"Num 7",fn:!0},a.VK_NUM_8={wc:428,d:"Numpad8",c:104|d,n:"Num 8",fn:!0},a.VK_NUM_9={wc:429,d:"Numpad9",c:105|d,n:"Num 9",fn:!0},a.VK_NUM_0={wc:430,d:"Numpad0",c:96|d,n:"Num 0",fn:!0},a.VK_VOID={wc:-1,d:"",c:-1,n:"Unbound",fn:!0},a.VK_BR_QUOTE={wc:221,d:"Backquote",c:192,n:"'",a:"BR"},a.VK_BR_ACUTE={wc:225,d:"BracketLeft",c:219,n:"´",a:"BR"},a.VK_BR_OPEN_BRACKET={wc:226,d:"BracketRight",c:221,n:"[",a:"BR"},a.VK_BR_CEDILLA={wc:227,d:"Semicolon",c:186,n:"Ç",a:"BR"},a.VK_BR_TILDE={wc:228,d:"Quote",c:222,n:"~",a:"BR"},a.VK_BR_CLOSE_BRACKET={wc:229,d:"Backslash",c:220,n:"]",a:"BR"},a.VK_BR_SEMICOLON={wc:233,d:"Slash",c:191,n:";",a:"BR"},a.VK_BR_BACKSLASH={wc:230,d:"IntlBackslash",c:226,n:"\\",a:"BR"},a.VK_BR_SLASH={wc:234,d:"IntlRo",c:193,n:"/",a:"BR"},a.VK_JP_CIRCUMFLEX={wc:223,d:"Equal",c:187,n:"^",a:"JP"},a.VK_JP_YEN={wc:224,d:"IntlYen",c:-1,n:"¥",a:"JP"},a.VK_JP_ARROBA={wc:225,d:"BracketLeft",c:219,n:"@",a:"JP"},a.VK_JP_OPEN_BRACKET={wc:226,d:"BracketRight",c:221,n:"[",a:"JP"},a.VK_JP_COLLON={wc:228,d:"Quote",c:222,n:":",a:"JP"},a.VK_JP_CLOSE_BRACKET={wc:229,d:"Backslash",c:220,n:"]",a:"JP"},a.VK_JP_RO={wc:234,d:"IntlRo",c:193,n:"\\ ろ",a:"JP"},a.VK_JP_NON_CONVERT={wc:310,d:"NonConvert",c:29,n:"NonConvert",fn:!0},a.VK_ES_ORDINAL={wc:221,d:"Backquote",c:192,n:"º",a:"ES"},a.VK_ES_QUOTE={wc:222,d:"Minus",c:189,n:"'",a:"ES"},a.VK_ES_INV_EXCLA={wc:223,d:"Equal",c:187,n:"¡",a:"ES"},a.VK_ES_GRAVE={wc:225,d:"BracketLeft",c:219,n:"`",a:"ES"},a.VK_ES_PLUS={wc:226,d:"BracketRight",c:221,n:"+",a:"ES"},a.VK_ES_ENNE={wc:227,d:"Semicolon",c:186,n:"Ñ",a:"ES"},a.VK_ES_ACUTE={wc:228,d:"Quote",c:222,n:"´",a:"ES"},a.VK_ES_CEDILLA={wc:229, -d:"Backslash",c:220,n:"Ç",a:"ES"},a.VK_ES_LESSER={wc:230,d:"IntlBackslash",c:226,n:"<",a:"ES"},a.VK_ES_MINUS={wc:233,d:"Slash",c:191,n:"-",a:"ES"},a.VK_NL_ARROBA={wc:221,d:"Backquote",c:192,n:"@",a:"NL"},a.VK_NL_SLASH={wc:222,d:"Minus",c:189,n:"/",a:"NL"},a.VK_NL_ORDINAL={wc:223,d:"Equal",c:187,n:"°",a:"NL"},a.VK_NL_UMLAUT={wc:225,d:"BracketLeft",c:219,n:"¨",a:"NL"},a.VK_NL_STAR={wc:226,d:"BracketRight",c:221,n:"*",a:"NL"},a.VK_NL_PLUS={wc:227,d:"Semicolon",c:186,n:"+",a:"NL"},a.VK_NL_ACUTE={wc:228,d:"Quote",c:222,n:"´",a:"NL"},a.VK_NL_LESSER={wc:229,d:"Backslash",c:220,n:"<",a:"NL"},a.VK_NL_CLOSE_BRACKET={wc:230,d:"IntlBackslash",c:226,n:"]",a:"NL"},a.VK_NL_MINUS={wc:233,d:"Slash",c:191,n:"-",a:"NL"},a.VK_IT_BACKSLASH={wc:221,d:"Backquote",c:192,n:"\\",a:"IT"},a.VK_IT_QUOTE={wc:222,d:"Minus",c:189,n:"'",a:"IT"},a.VK_IT_GRAVE_I={wc:223,d:"Equal",c:187,n:"ì",a:"IT"},a.VK_IT_GRAVE_E={wc:225,d:"BracketLeft",c:219,n:"è",a:"IT"},a.VK_IT_PLUS={wc:226,d:"BracketRight",c:221,n:"+",a:"IT"},a.VK_IT_GRAVE_O={wc:227,d:"Semicolon",c:186,n:"ò",a:"IT"},a.VK_IT_GRAVE_A={wc:228,d:"Quote",c:222,n:"à",a:"IT"},a.VK_IT_GRAVE_U={wc:229,d:"Backslash",c:220,n:"ù",a:"IT"},a.VK_IT_LESSER={wc:230,d:"IntlBackslash",c:226,n:"<",a:"IT"},a.VK_IT_MINUS={wc:233,d:"Slash",c:191,n:"-",a:"IT"};for(var e in a)a.addKeyToIdentification(a[e])}(wmsx.DOMKeys,wmsx.DOMKeys.LOCLEFT,wmsx.DOMKeys.LOCRIGHT,wmsx.DOMKeys.LOCNUM),wmsx.DOMKeys.isModifierKey=function(a){var b=a.keyCode;return 16===b||17===b||18===b||91===b},wmsx.DOMKeys.codeNewForKeyboardEvent=function(a){var b=this.keysByCode[a.code]||this.keysByLegacyCode[a.keyCode|a.location<0){var d=a.keyCode,e=a.key;if(c&&c.fn)e=c.n;else{var f=e&&e.toUpperCase();switch(f&&"UNIDENTIFIED"!==f&&"UNDEFINED"!==f&&"UNKNOWN"!==f?"DEAD"===f&&(e="Dead#"+d):e=a.code||"#"+d,1===e.length?e=e.toUpperCase():e.length>12&&(e=e.substr(0,12)),a.location){case 1:e="L-"+e;break;case 2:e="R-"+e;break;case 3:e="Num "+e}}return c||(wmsx.Util.warning("New Host Key discovered:",a),b=WMSX.userPreferences.current.customHostKeys.nextCode++,c={wc:b,d:a.code||"",c:a.code?0:a.keyCode&this.IGNORE_ALL_MODIFIERS_MASK|a.location<0?A:WMSX.BOOT_DURATION_AUTO}function g(){var a=(wmsx.Util.userLanguage()||"en-US").toUpperCase();"nl"===a.substr(0,2)&&(a="en-US");for(var b=0;b=0?j.setKeyboard(a,!1):g()}var j=this;this.connect=function(a,b){o=a,o.addMachineTypeStateListener(j,!0),p=b},this.connectPeripherals=function(a){q=a},this.resetControllers=function(){this.releaseControllers(),B&&f()},this.machineTypeStateUpdate=function(){var a=o.getMachineLang();a!==w&&(w=a,i())},this.powerOn=function(){if(WMSX.BOOT_KEYS||WMSX.BOOT_KEYS_ONCE){for(var a=(WMSX.BOOT_KEYS||WMSX.BOOT_KEYS_ONCE).split(","),b=[],c=0;c0&&--C,F&&I){if(--G===H||0===G){var a=G>0,b=r.SPACE.m;d(b[0],b[1],a)}G<=0&&(G=F)}},this.readKeyboardPort=function(a){return C>0?y[a]&z[a]:y[a]},this.toggleKeyboardLayout=function(a){var b;b=a?n?t.length-1:t.indexOf(m)-1||0:n?0:t.indexOf(m)+1||0,b<0||b>=t.length?g():this.setKeyboard(t[b],!1),q.showOSD("Host Keyboard: "+this.getCurrentKeyboardDesc(),!0)},this.getCurrentKeyboardDesc=function(){return(n?"AUTO: ":"")+m},this.setKeyboard=function(a,b){m=a,n=b,k(),q&&q.keyboardSettingsStateUpdate();var c=b?void 0:a;WMSX.userPreferences.current.hostKeyboard[w]!==c&&(WMSX.userPreferences.current.hostKeyboard[w]=c,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())},this.setTurboFireClocks=function(a){F=a,H=F/2|0,G=0},this.releaseControllers=function(){for(var a in x)x[a]&&this.processMSXKey(a,!1);I=!1},this.getKeyMapping=function(a){return D[a]},this.clearKey=function(a){0!==D[a].length&&(v[m]||h(),D[a].length=0,l(),WMSX.userPreferences.setDirty())},this.customizeKey=function(a,b){if(E[b.wc]!==a){v[m]||h();for(var c in D){var d=D[c];if(0!==d.length)for(var e;(e=wmsx.Util.arrayFindIndex(d,function(a){return a.wc===b.wc}))>=0;)d.splice(e,1)}d=D[a],d.length>=M&&d.splice(0,d.length-(M-1)),d.push(b),l(),WMSX.userPreferences.setDirty()}},this.processKey=function(a,b){var e=E[a];if(!e){if(c.processKey(a,b))return;e=E[a&L]}if(e){if(a===K&&x.CONTROL){var f=r.CONTROL.m;d(f[0],f[1],!1)}this.processMSXKey(e,b)}},this.processMSXKey=function(a,b){if(F&&"SPACE"===a){if(I===b)return;b&&(G=H),I=b}if(x[a]!==b){x[a]=b;var c=r[a].m;d(c[0],c[1],b)}};var k=function(){var a=v[m]||u[m];for(var b in r)D[b]=a[b]?a[b].constructor===Array?a[b]:[a[b]]:[];l()},l=function(){E={};for(var a in D)if(0!==D[a].length)for(var b=0;b>8,(240&d)>>4,1&d)}},this.netClientApplyMatrixChanges=function(a){for(var b=0,c=a.length;b>8,(240&a[b])>>4,1&a[b])},this.saveState=function(){return{k:wmsx.Util.storeInt8BitArrayToStringBase64(y),kb:wmsx.Util.storeInt8BitArrayToStringBase64(z),bf:A,ba:B,bc:C}},this.loadState=function(a){wmsx.Util.restoreStringBase64ToInt8BitArray(a.k,y),wmsx.Util.restoreStringBase64ToInt8BitArray(a.kb,z),A=a.bf,B=a.ba,C=a.bc} -;var m,n,o,p,q,r=wmsx.KeyboardKeys,s=wmsx.DOMKeys,t=[],u={},v={},w=WMSX.MACHINES_CONFIG[WMSX.MACHINE]&&WMSX.MACHINES_CONFIG[WMSX.MACHINE].LANG||"en",x={},y=wmsx.Util.arrayFill(new Array(12),255),z=wmsx.Util.arrayFill(new Array(12),255),A=WMSX.BOOT_KEYS_FRAMES,B=!1,C=0,D={},E={},F=0,G=0,H=0,I=!1,J=new Array(100);J.length=0;var K=s.VK_RALT.wc,L=s.IGNORE_ALL_MODIFIERS_MASK,M=4,N={CTRL:"CONTROL",ESC:"ESCAPE",CAPS:"CAPSLOCK",KANA:"CODE",RETURN:"ENTER",RET:"ENTER",0:"D0",1:"D1",2:"D2",3:"D3",4:"D4",5:"D5",6:"D6",7:"D7",8:"D8",9:"D9"};i()},wmsx.GamepadJoysticksControls=function(a,b,c){"use strict";function d(){-2===w?p=q=null:-1===w&&(v=-1,n.controllersClockPulse(!0)),x=0===w,h(),e()}function e(){var a=p?J+" 1":null,c=q?J+" 2":null;b.updateJoystickConnections(x?c:a,x?a:c)}function f(a,c){e(),b.showStatusMessage("Joystick "+(a?"1":"2")+(c?" connected":" disconnected"))}function g(a,b,c){if(c&&0!==c.length){var d=a.settings.device;if(d>=0)return c[d]&&c[d].buttons.length>0?new m(d,a):null;for(var e=0,f=c.length;e0&&!(e===b.device||p&&p.index===e||q&&q.index===e))return new m(e,a)}}function h(){B.reset(),C.reset()}function i(a,b,d){if(d===E)return j(a);var e=b.buttonsState,f=e.J_A;for(var g in t){var h=d.buttons[g];if(h&&h.length>0){for(var i=!1,k=0;!i&&k=0&&a.getButtonDigital(c))return F.joystickButtonDetected(wmsx.GamepadButtons[b],(E===s?1:0)^x)}}function k(){D[0]=r=WMSX.userPreferences.current.joysticks[0],D[1]=s=WMSX.userPreferences.current.joysticks[1]}function l(){this.reset=function(){this.analogDirection=-1,this.buttonsState={},this.portValue=63,this.pin8Value=0},this.reset()}function m(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>i&&(i=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return"object"==typeof b?b.pressed||b.value>.5:b>.5},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if(isNaN(a)||(a<0?-a:a)=1&&(i-=1),8*i|0};var c,d=b.settings.xAxis,e=b.settings.yAxis,f=b.settings.xAxisSig,g=b.settings.yAxisSig,h=b.settings.deadzone,i=Number.MIN_VALUE}var n=this;this.connectPeripherals=function(a){o=a},this.powerOn=function(){(u=!!navigator.getGamepads)&&(k(),w>=-1&&d())},this.powerOff=function(){u=!1},this.releaseControllers=function(){h()},this.resetControllers=function(){this.releaseControllers(),e()},this.readControllerPort=function(c){return a.netController?b.netGetMergedPortValues()[c]:this.readLocalControllerPort(c)},this.readLocalControllerPort=function(a){var b=1===a^x?C:B;return b.pin8Value?63:z>A?16|b.portValue:b.portValue},this.writeControllerPin8Port=function(a,b){(1===a^x?C:B).pin8Value=b},this.toggleMode=function(c){if(!u)return void b.showErrorMessage("Joysticks unavailable (not supported by browser)");var d=(2!==a.netPlayMode||G?H:I)[c?1:0][w+2];this.setMode(d),b.showStatusMessage("Joysticks "+this.getModeDesc())},this.setMode=function(a){w=a,d()},this.getMode=function(){return w},this.getModeDesc=function(){switch(w){case-1:return"AUTO";case 0:return"AUTO (swapped)";default:return u?"DISABLED":"NOT SUPPORTED"}},this.getSwappedState=function(){return x},this.netClientAdaptToServerControlsModes=function(a){G=a.sw,-2!==w&&(-1!==w||G?0===w&&G&&this.setMode(-1):this.setMode(0))},this.setTurboFireClocks=function(a){y=a,A=y/2|0,z=0},this.controllersClockPulse=function(a){if(u&&-2!==w&&(++v>=K&&(v=0),p||q||0===v)){var b=navigator.getGamepads();y&&--z<=0&&(z=y),p?p.update(b)?p.hasMoved()&&i(p,B,r):(p=null,B.reset(),a||f(!0,!1)):0===v&&(p=g(r,s,b))&&!a&&f(!0,!0),q?q.update(b)?q.hasMoved()&&i(q,C,s):(q=null,C.reset(),a||f(!1,!1)):0===v&&(q=g(s,r,b))&&!a&&f(!1,!0)}},this.getMappingForControl=function(a,b){var c=D[b^x];return t[a].mask?c.buttons[a]:0!==c.buttons[a].length||0!==c.virtualButtonsKeys[a].length?{from:c.buttons[a],to:c.virtualButtonsKeys[a]}:[]},this.getMappingPopupText=function(a,b){var c=!t[a].mask;return{heading:c?"Virtual Button mapping:":"Button mapped to host buttons:",footer:c?"Press new button / key.
(right-click to clear)":"Press new button.
(right-click to clear)"}},this.customizeControl=function(a,b,c){var d;if(c.wc){if(c.wc&&t[a].mask)return;if(d=D[b^x].virtualButtonsKeys[a],wmsx.Util.arrayFind(d,function(a){return a.wc===c.wc}))return}else if(d=D[b^x].buttons[a],wmsx.Util.arrayFind(d,function(a){return a.b===c.b}))return;d.length>=M&&d.splice(0,d.length-(M-1)),d.push(c),h(),WMSX.userPreferences.setDirty()},this.clearControl=function(a,b){D[b^x].buttons[a].length=0,t[a].mask||(D[b^x].virtualButtonsKeys[a].length=0),h(),WMSX.userPreferences.setDirty()},this.startButtonDetection=function(a,b){E=D[a^x],F=b},this.stopButtonDetection=function(){E=F=null};var o,p,q,r,s,t=wmsx.JoystickButtons,u=!1,v=1,w=WMSX.JOYSTICKS_MODE-1,x=!1,y=0,z=0,A=0,B=new l,C=new l,D=[],E=null,F=null,G=!1,H=[[-1,0,-2],[0,-2,-1]],I=[[0,-2,-1],[-1,0,-2]],J=wmsx.ControllersHub.JOYSTICK,K=60,L=[15,14,6,7,5,13,9,11,10],M=4},wmsx.DOMJoykeysControls=function(a,b,c){"use strict";function d(){p=1===o||3===o,h(),g(),e()}function e(){q={},o>=0&&f(l.buttons,0),o>=2&&f(m.buttons,1)}function f(a,b){for(var c in a)for(var d=0;d=0?C+" 1":null,c=o>=2?C+" 2":null;b.updateJoykeysConnections(p?c:a,p?a:c)}function h(){s.reset(),t.reset()}function i(){y[0]=l=WMSX.userPreferences.current.joykeys[0],y[1]=m=WMSX.userPreferences.current.joykeys[1]}function j(){this.reset=function(){this.portValue=63,this.pin8Value=0},this.reset()}this.connectPeripherals=function(a){k=a},this.powerOn=function(){i(),o>=0&&d()},this.powerOff=function(){},this.releaseControllers=function(){h()},this.resetControllers=function(){this.releaseControllers(),g()},this.readControllerPort=function(c){return a.netController?b.netGetMergedPortValues()[c]:this.readLocalControllerPort(c)},this.readLocalControllerPort=function(a){var b=u[a^p];return b.pin8Value?63:w>x?16|b.portValue:b.portValue},this.writeControllerPin8Port=function(a,b){u[a^p].pin8Value=b},this.controllersClockPulse=function(){o>=0&&v&&--w<=0&&(w=v)},this.toggleMode=function(c){var d=(2!==a.netPlayMode||z?A:B)[c?1:0][o+1];this.setMode(d),b.showStatusMessage("Joykeys "+this.getModeDesc())},this.setMode=function(a){a>=0&&o<0&&(r={}),o=a,d()},this.getMode=function(){return o},this.getModeDesc=function(){switch(o){case 0:return"SINGLE";case 1:return"SINGLE (port 2)";case 2:return"DUAL";case 3:return"DUAL (swapped)";default:return"DISABLED"}},this.getSwappedState=function(){return p},this.netClientAdaptToServerControlsModes=function(a){z=a.sw,-1!==o&&(z?1===o?this.setMode(0):3===o&&this.setMode(2):0===o?this.setMode(1):2===o&&this.setMode(3))},this.setTurboFireClocks=function(a){v=a,x=v/2|0,w=0},this.processKey=function(a,b){if(o<0)return c.processKey(a,b);var d=q[a];if(!d)return c.processKey(a,b);if(r[a]===b)return void(b||c.processKey(a,b));r[a]=b;for(var e=0;e(right-click to clear)"}}, -this.customizeControl=function(a,b,c){if(!q[c.wc]||!wmsx.Util.arrayFind(q[c.wc],function(c){return c.b===a&&c.p===b})){var d=y[b^p].buttons[a];d.length>=D&&d.splice(0,d.length-(D-1)),d.push(c),h(),e(),WMSX.userPreferences.setDirty()}},this.clearControl=function(a,b){y[b^p].buttons[a].length=0,h(),e(),WMSX.userPreferences.setDirty()};var k,l,m,n=wmsx.JoystickButtons,o=WMSX.JOYKEYS_MODE,p=!1,q={},r={},s=new j,t=new j,u=[s,t],v=0,w=0,x=0,y=[],z=!1,A=[[0,1,2,3,-1],[3,-1,0,1,2]],B=[[1,3,0,-1,2],[2,1,-1,3,0]],C=wmsx.ControllersHub.JOYKEYS,D=4},wmsx.DOMMouseControls=function(a,b){"use strict";function c(a){C=void 0!==a?a:B<0?-1:B,z?q(y):p(x),n()}function d(a){return a===C?y.portValue:b.portValueAllReleased}function e(){if(G=!1,C<0)return w.showOSD("Mouse Pointer Locking only when MOUSE is ENABLED!",!0,!0);var a=t.requestPointerLock||t.mozRequestPointerLock||t.webkitRequestPointerLock;a&&a.apply(t)}function f(){G=!1;var a=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock;a&&a.apply(document)}function g(){x.portValue=-49&x.portValue|(3&~x.buttons)<<4}function h(){switch(x.readCycle){case 0:x.portValue=-16&x.portValue|x.readDX>>4&15;break;case 1:x.portValue=-16&x.portValue|15&x.readDX;break;case 2:x.portValue=-16&x.portValue|x.readDY>>4&15;break;case 3:x.portValue=-16&x.portValue|15&x.readDY;break;default:x.portValue=-16&x.portValue}}function i(){var a=Math.round(-x.dX);a>127?a=127:a<-127&&(a=-127),x.dX+=a,x.readDX=a;var b=Math.round(-x.dY);b>127?b=127:b<-127&&(b=-127),x.dY+=b,x.readDY=b}function j(a){if(!(C<0)){a.preventDefault();var b=0,c=0;F?(b=a.movementX||a.mozMovementX||a.webkitMovementX||0,c=a.movementY||a.mozMovementY||a.webkitMovementY||0):u&&(b=a.clientX-u.clientX,c=a.clientY-u.clientY),u=a,y.dX+=b/D,y.dY+=c/E,A=y}}function k(a){if(4&a.buttons&&(a.preventDefault(),s.togglePointerLock()),C>=0){if(G&&a.buttons)return 1&a.buttons&&!F&&e(),void(G=!1);y.buttons=3&a.buttons,z||g(),A=y}}function l(){var a=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement;F=a===t,w.mousePointerLocked(F),w.showOSD(F?"Mouse Pointer Locked":"Mouse Pointer Released",F)}function m(a,b){C=a,s.writeControllerPin8Port(C,b),n(),o("Mouse AUTO-ENABLED")}function n(){F&&C<0&&f(),b.updateMouseConnections(0===C?I:null,1===C?I:null),w.mouseActiveCursorStateUpdate(C>=0)}function o(a){b.showStatusMessage(a)}function p(a){return a.readCycle=-1,a.dX=0,a.dY=0,a.buttons=0,a.portValue=b.portValueAllReleased,a.pin8Value=0,a.lastPin8FlipBUSCycle=0,a.readDX=0,a.readDY=0,A=x,a}function q(a){return a.dX=0,a.dY=0,a.buttons=void 0,A=void 0,a}function r(a){return a===C?x.portValue:b.portValueAllReleased}var s=this;this.connect=function(a){v=a},this.connectPeripherals=function(a){w=a},this.powerOn=function(){c()},this.powerOff=function(){},this.releaseControllers=function(){C>=0&&(z?q(y):p(x))},this.resetControllers=function(){this.releaseControllers(),-1===B&&(C=-1),n()},this.screenFullscreenStateUpdate=function(a){G=a&&!F},this.toggleMode=function(a){var b;a?(b=B-1)<-2&&(b=1):(b=B+1)>1&&(b=-2),this.setMode(b),o("Mouse "+this.getModeDesc())},this.setMode=function(a){B=a,c()},this.setModeEffective=function(a){B=a.m,c(a.p)},this.getMode=function(){return B},this.getModeEffective=function(){return{m:B,p:C}},this.getModeDesc=function(){switch(B){case-1:return"AUTO";case 0:return"ENABLED";case 1:return"ENABLED (port 2)";default:return"DISABLED"}},this.netClientAdaptToServerControlsModes=function(a){this.setModeEffective(a.m)},this.readControllerPort=function(b){return a.netController?r(b):d(b)},this.writeControllerPin8Port=function(a,b){if(a===C){if(x.pin8Value^b){x.pin8Value=b;var c=v.getBUSCycles()-x.lastPin8FlipBUSCycle;x.lastPin8FlipBUSCycle+=c,c>J&&(x.readCycle=-1),++x.readCycle,0===x.readCycle&&i(),h()}}},this.portPin8Announced=function(a,b){1===b&&!H&&C<0&&0===a&&-1===B&&m(a,b)},this.togglePointerLock=function(){F?f():e()},this.setMouseInputElement=function(a){t=a,"onpointerlockchange"in document?document.addEventListener("pointerlockchange",l,!1):"onmozpointerlockchange"in document&&document.addEventListener("mozpointerlockchange",l,!1),t.addEventListener("mousemove",j),t.addEventListener("mousedown",k),t.addEventListener("mouseup",k)},this.setScreenPixelScale=function(a,b){D=a,E=b},this.getMappingForControl=function(a,b){return[{wc:999999,n:["Alt","CapsLock"]}]},this.getMappingPopupText=function(a,b){return{heading:"Lock / Unlock pointer:",footer:"or click Middle Button"}},this.customizeControl=function(a,b,c){},this.clearControl=function(a,b){},this.netGetMouseStateToSend=function(){return A},this.netClearMouseInfoToSend=function(){z?q(y):A=void 0},this.netServerGetMouseState=function(){return x},this.netServerReceiveClientMouseState=function(a){x.dX+=a.dX,x.dY+=a.dY,void 0!==a.buttons&&(x.buttons=a.buttons,g()),A=x},this.netClientReceiveServerMouseState=function(a){x=a},this.netSetClientMode=function(a){z=a,y=a?q({}):x};var t,u,v,w,x=p({}),y=x,z=!1,A=void 0,B=WMSX.MOUSE_MODE-1,C=-1,D=1,E=1,F=!1,G=!1,H=wmsx.Util.isMobileDevice(),I=wmsx.ControllersHub.MOUSE,J=wmsx.Z80.BASE_CLOCK/1e3*1.5|0},wmsx.DOMTouchControls=function(a,b,c,d){"use strict";function e(){C.classList.toggle("wmsx-poweroff",!U),C.classList.toggle("wmsx-paused",V)}function f(){J=-2===I?-1:-1===I?G&&H?0:-1:I,v(),u()}function g(a){if(wmsx.Util.blockEvent(a),E)return E.touchControlDetected("T_DIR",a)}function h(a){if(wmsx.Util.blockEvent(a),E)return E.touchControlDetected("T_DIR",a);if(null===P){void 0===A&&m();var b=a.changedTouches[0];P=b.identifier,k(b.pageX,b.pageY)}}function i(a){wmsx.Util.blockEvent(a),null!==P&&(P=null,l(-1))}function j(a){if(wmsx.Util.blockEvent(a),null!==P)for(var b=a.changedTouches,c=0;cR&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),l(c)}function l(a){if(Q!==a){if(O.wmsxMappingIsKeys){var d=Y[Q+1];d[0]&&c.processMSXKey(d[0],!1),d[1]&&c.processMSXKey(d[1],!1);var e=Y[a+1];e[0]&&c.processMSXKey(e[0],!0),e[1]&&c.processMSXKey(e[1],!0)}else T.portValue=-16&T.portValue|X[a+1];a>=0&&b.hapticFeedback(),Q=a}}function m(){var a=O.getBoundingClientRect();R=.14*(a.right-a.left)|0,A=((a.left+a.right)/2|0)+window.pageXOffset,B=((a.top+a.bottom)/2|0)+window.pageYOffset}function n(a){if(wmsx.Util.blockEvent(a),E)return E.touchControlDetected(a.target.wmsxControl,a);p(a.target.wmsxMapping,!0)}function o(a){wmsx.Util.blockEvent(a),p(a.target.wmsxMapping,!1)}function p(a,d){a&&(d&&b.hapticFeedback(),a.button?d?(T.portValue&=~a.mask,K&&16&a.mask&&(L=M+1)):T.portValue|=a.mask:a.key&&c.processMSXKey(a.key,d))}function q(a){wmsx.Util.blockEvent(a),b.hapticFeedback(),d.processControlState(U?F.PAUSE:F.POWER,!0)}function r(a){wmsx.Util.blockEvent(a),b.hapticFeedback(),d.processControlState(V?F.FRAME:F.FAST_SPEED,!0)}function s(a){wmsx.Util.blockEvent(a),V||(b.hapticFeedback(),d.processControlState(V?F.FRAME:F.FAST_SPEED,!1))}function t(){y.updateMappingFor("T_DIR");for(var a in S)y.updateMappingFor(a)}function u(){b.updateTouchControlsConnections(0===J?W:null,1===J?W:null)}function v(){T.reset(),A=B=void 0,P=null,l(-1)}function w(){D=WMSX.userPreferences.current.touch,N=!!D.directionalBig}function x(){this.reset=function(){this.portValue=63,this.pin8Value=0},this.reset()}var y=this;this.connect=function(a){a.addPowerAndUserPauseStateListener(this)},this.connectPeripherals=function(a){z=a},this.powerOn=function(){w(),f()},this.powerOff=function(){},this.releaseControllers=function(){v()},this.resetControllers=function(){this.releaseControllers(),u()},this.readControllerPort=function(c){return a.netController?b.netGetMergedPortValues()[c]:this.readLocalControllerPort(c)},this.readLocalControllerPort=function(a){return a===J?T.pin8Value?63:L>M?16|T.portValue:T.portValue:63}, -this.writeControllerPin8Port=function(a,b){a===J&&(T.pin8Value=b)},this.controllersClockPulse=function(){J>=0&&K&&--L<=0&&(L=K)},this.toggleMode=function(a,c){if(!G)return void b.showErrorMessage("Touch Controls unavailable. Not a touch device!");var d;c?(d=a?J<0?1:0===J?-2:I-1:I-1)<-2&&(d=1):(d=a?0===J?1:-2===I?0:I+1:I+1)>1&&(d=-2),this.setMode(d),b.showStatusMessage("Touch Controls "+this.getModeDesc())},this.setMode=function(a){I=a,f()},this.getMode=function(){return I},this.getModeDesc=function(){switch(I){case-1:return"AUTO";case 0:return"ENABLED";case 1:return"ENABLED (port 2)";default:return G?"DISABLED":"NOT SUPPORTED"}},this.getSwappedState=function(){return 1===J},this.netClientAdaptToServerControlsModes=function(a){-1!==J&&(0!==J||a.sw?1===J&&a.sw&&this.setMode(0):this.setMode(1))},this.toggleDirBig=function(){N=!N,D.directionalBig=N,WMSX.userPreferences.setDirty(),this.controllersSettingsStateUpdate()},this.isDirBig=function(){return N},this.getPortActive=function(){return J},this.setTurboFireClocks=function(a){K=a,M=K/2|0,L=0},this.getMappingForControl=function(a,b){return null},this.screenReadjustedUpdate=function(){this.releaseControllers()},this.setupTouchControlsIfNeeded=function(a){function b(a,b){var c=wmsx.DOMTouchControls.createButton("wmsx-touch-"+b);c.wmsxControl=b,c.addEventListener("touchstart",n),c.addEventListener("touchmove",wmsx.Util.blockEvent),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),c.addEventListener("mousedown",n),c.addEventListener("mouseup",o),S[b]=c,a.appendChild(c)}if(!(O||J<0)){C=document.createElement("div"),C.id="wmsx-touch-speed";var c=document.createElement("div");c.id="wmsx-touch-pause",c.addEventListener("touchstart",q),c.addEventListener("mousedown",q),C.appendChild(c);var d=document.createElement("div");d.id="wmsx-touch-fast",d.addEventListener("touchstart",r),d.addEventListener("touchend",s),d.addEventListener("mousedown",r),d.addEventListener("mouseup",s),C.appendChild(d),a.appendChild(C);var f=document.createElement("div");f.id="wmsx-touch-left",b(f,wmsx.TouchControls.buttonsLeftSide[0]),O=wmsx.DOMTouchControls.createDirectional(),O.addEventListener("touchstart",h),O.addEventListener("touchmove",j),O.addEventListener("touchend",i),O.addEventListener("touchcancel",i),O.addEventListener("mousedown",g),f.appendChild(O),b(f,wmsx.TouchControls.buttonsLeftSide[1]),a.appendChild(f),f=document.createElement("div"),f.id="wmsx-touch-right";var k=wmsx.TouchControls.buttonsRightSide;for(var l in k)b(f,k[l]);a.appendChild(f),e(),t()}},this.startTouchDetection=function(a){E=a},this.stopTouchDetection=function(){E=null},this.customizeControl=function(a,b){"T_DIR"===a?D.directional=b:D.buttons[a]=b,this.updateMappingFor(a),WMSX.userPreferences.setDirty()},this.updateMappingFor=function(a){if("T_DIR"===a)O.wmsxMappingIsKeys="KEYBOARD"===D.directional,wmsx.DOMTouchControls.styleDirectionalMapping(O,D.directional);else{var b=S[a],c=D.buttons[a];b.wmsxMapping=c,wmsx.DOMTouchControls.styleButtonMapping(b,c)}},this.controllersSettingsStateUpdate=function(){var a=!!b.getSettingsState().touchActive;document.documentElement.classList.toggle("wmsx-touch-active",a),document.documentElement.classList.toggle("wmsx-dir-big",N),z.touchControlsActiveUpdate(a,N)},this.machinePowerAndUserPauseStateUpdate=function(a,b){U=a,V=b,C&&e()};var z,A,B,C,D,E,F=wmsx.MachineControls,G=wmsx.Util.isTouchDevice(),H=wmsx.Util.isMobileDevice(),I=WMSX.TOUCH_MODE>=1?WMSX.TOUCH_MODE-1:G?-1:-2,J=-1,K=0,L=0,M=0,N=!1,O=null,P=null,Q=-1,R=0,S={},T=new x,U=!1,V=!1,W=wmsx.ControllersHub.TOUCH,X=[15,14,6,7,5,13,9,11,10],Y=[[],["UP"],["RIGHT","UP"],["RIGHT"],["RIGHT","DOWN"],["DOWN"],["LEFT","DOWN"],["LEFT"],["LEFT","UP"]];this.saveState=function(){return{p:D}},this.loadState=function(a){if(v(),a.p){delete a.p.directionalBig;for(var b in a.p)D[b]=a.p[b];for(var c in D.buttons){var d=D.buttons[c];d&&d.sn&&!d.c_en&&(d.c_en=d.sn)}O&&t()}}},wmsx.DOMTouchControls.createDirectional=function(a){function b(a){var b=document.createElement("div");b.classList.add("wmsx-touch-dir-"+a),c.appendChild(b);var d=document.createElement("div");d.classList.add("wmsx-arrow-"+a),c.appendChild(d)}var c=document.createElement("div");return a&&(c.id=a),c.classList.add("wmsx-touch-dir"),b("left"),b("right"),b("up"),b("down"),c},wmsx.DOMTouchControls.createButton=function(a){var b=document.createElement("div");return a&&(b.id=a),b.classList.add("wmsx-touch-button"),b},wmsx.DOMTouchControls.styleDirectionalMapping=function(a,b){a.classList.toggle("wmsx-touch-dir-key","KEYBOARD"===b),a.classList.toggle("wmsx-touch-dir-joy","KEYBOARD"!==b)},wmsx.DOMTouchControls.styleButtonMapping=function(a,b){if(a.innerHTML=b?b.n||b.c_en:"",b)if(b.button){a.classList.add("wmsx-touch-button-joy"),a.classList.remove("wmsx-touch-button-key","wmsx-touch-button-none");for(var c=["A","B","AB"],d=0;d=0?u%11:11+u;var b=u?60/v[u]|0:0;p.setTurboFireClocks(b),r.setTurboFireClocks(b),s.setTurboFireClocks(b),t.setTurboFireClocks(b),B.controllersSettingsStateUpdate(), -B.showOSD("Turbo Fire"+(u?" speed: "+this.getTurboFireSpeedDesc():": OFF"),!0)},this.getTurboFireSpeedDesc=function(){return u?u+"x":"OFF"},this.getControlReport=function(a){switch(a){case wmsx.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:var b=t.isDirBig();return{label:b?"ON":"OFF",active:b};case wmsx.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:x?"ON":"OFF",active:!!x};case wmsx.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!u}}return{label:"Unknown",active:!1}},this.setupTouchControlsIfNeeded=function(a){t.setupTouchControlsIfNeeded(a)},this.setKeyInputElement=function(a){a.addEventListener("keydown",this.keyDown),a.addEventListener("keyup",this.keyUp)},this.screenReadjustedUpdate=function(){t.screenReadjustedUpdate()},this.screenFullscreenStateUpdate=function(a){q.screenFullscreenStateUpdate(a)},this.keyDown=function(a){return h(a,!0)},this.keyUp=function(a){return h(a,!1)},this.setMouseInputElement=function(a){q.setMouseInputElement(a)},this.setScreenPixelScale=function(a,b){q.setScreenPixelScale(a,b)},this.updateMouseConnections=function(a,b){k[0]=a,k[1]=b,d()},this.updateJoystickConnections=function(a,b){l[0]=a,l[1]=b,d()},this.updateJoykeysConnections=function(a,b){m[0]=a,m[1]=b,d()},this.updateTouchControlsConnections=function(a,b){n[0]=a,n[1]=b,d()},this.showStatusMessage=function(a){var b=k[0]||l[0]||m[0]||n[0]||" - -  ",c=k[1]||l[1]||m[1]||n[1]||" - -  ";B.showOSD((a?a+".  ":"")+"Port 1:  "+b+",  Port 2:  "+c,!0)},this.showErrorMessage=function(a){B.showOSD(a,!0,!0)},this.getSettingsState=function(){return o.mouseModeDesc=q.getModeDesc(),o.joysticksModeDesc=r.getModeDesc(),o.joykeysModeDesc=s.getModeDesc(),o.touchPortSet=t.getPortActive(),o.touchActive=j[0]===t||j[1]===t,o.ports[0]=k[0]||l[0]||m[0]||n[0]||wmsx.ControllersHub.NONE,o.ports[1]=k[1]||l[1]||m[1]||n[1]||wmsx.ControllersHub.NONE,o.turboFireSpeedDesc=this.getTurboFireSpeedDesc(),o},this.getMappingForControl=function(a,b){return j[b]&&j[b].getMappingForControl(a,b)},this.getMappingPopupText=function(a,b){return j[b]&&j[b].getMappingPopupText(a,b)},this.mappingPopupVisibility=function(a,b,c){c&&j[b]===r?r.startButtonDetection(b,a):r.stopButtonDetection()},this.customizeControl=function(a,b,c){j[b].customizeControl(a,b,c)},this.clearControl=function(a,b){return j[b].clearControl(a,b)},this.hapticFeedback=function(){x&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!x||"touchstart"!==a.type&&"touchend"!==a.type&&"touchmove"!==a.type||navigator.vibrate(8)};var h=function(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=i.codeNewForKeyboardEvent(a);return s.processKey(c,b),!1};this.netGetInfoToSend=function(){var a=q.netGetMouseStateToSend();return a||A?{m:a,p:A}:void 0},this.netClearInfoToSend=function(){A=void 0,q.netClearMouseInfoToSend()},this.netServerGetFullInfo=function(){return{m:q.netServerGetMouseState(),p:C}},this.netGetMergedPortValues=function(){return C},this.netClientReceiveServerInfo=function(a){a.m&&q.netClientReceiveServerMouseState(a.m);var b=a.p;b&&(C[0]=b[0],C[1]=b[1])},this.netServerReceiveClientInfo=function(a,b){b.m&&q.netServerReceiveClientMouseState(b.m);var c=b.p;c&&(F=!0,a.controllersPortValues=c[0]!==z||c[1]!==z?c:void 0)},this.netServerClearClientsMergedInfo=function(){E[0]=z,E[1]=z,F=!1},this.netServerGetControlsModes=function(){return{m:q.getModeEffective(),sw:s.getSwappedState()||r.getSwappedState()||t.getSwappedState()}},this.netClientGetControlsModes=function(){return{k:s.getMode(),j:r.getMode(),m:q.getModeEffective(),t:t.getMode()}},this.netClientRestoreControlsModes=function(a){s.setMode(a.k),r.setMode(a.j),q.setModeEffective(a.m),t.setMode(a.t)},this.netClientAdaptToServerControlsModes=function(a){s.netClientAdaptToServerControlsModes(a),r.netClientAdaptToServerControlsModes(a),q.netClientAdaptToServerControlsModes(a),t.netClientAdaptToServerControlsModes(a)},this.saveState=function(){return{jk:y,t:t.saveState(),h:x}},this.loadState=function(a){void 0!==a.jk&&(y=a.jk,z=63|y,this.portValueAllReleased=z),a.t&&t.loadState(a.t),void 0!==a.h&&(x=a.h&&w)};var i=wmsx.DOMKeys,j=[null,null],k=[null,null],l=[null,null],m=[null,null],n=[null,null],o={ports:[null,null]},p=new wmsx.DOMKeyboard(this,a,b),q=new wmsx.DOMMouseControls(a,this),r=new wmsx.GamepadJoysticksControls(a,this,p),s=new wmsx.DOMJoykeysControls(a,this,p),t=new wmsx.DOMTouchControls(a,this,p,b),u=0,v=[0,2,2.4,3,4,5,6,7.5,10,12,15],w=!!navigator.vibrate,x=w&&!!WMSX.userPreferences.current.hapticFeedback,y=0!==WMSX.KEYBOARD_JAPAN_LAYOUT?64:0,z=63|y;this.portValueAllReleased=z;var A,B,C=[z,z],D=[z,z],E=[z,z],F=!1;wmsx.ControllersHub.hapticFeedback=this.hapticFeedback,wmsx.ControllersHub.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},wmsx.ControllersHub.MOUSE="MOUSE",wmsx.ControllersHub.JOYSTICK="JOYSTICK",wmsx.ControllersHub.JOYKEYS="JOYKEYS",wmsx.ControllersHub.TOUCH="TOUCH",wmsx.ControllersHub.JOY_ANY="JOY",wmsx.ControllersHub.NONE="NO DEVICE",wmsx.DOMMachineControls=function(a,b){"use strict";function c(b,c,e,f){if(2===a.netPlayMode&&(S.has(b)||T.has(b)))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);1===a.netPlayMode&&S.has(b)||n.push({c:b<<4|e<<1|c,d:f}),2!==a.netPlayMode&&d(b,c,e,f)}function d(a,b,c,d){g.controlStateChanged(a,b,c,d),R.has(a)&&h.quickOptionsControlsStateUpdate()}this.connect=function(a){g=a},this.connectPeripherals=function(a){h=a},this.powerOn=function(){e()},this.powerOff=function(){},this.processKey=function(a,d){var e=a&Q,f=k[e];return!f||m[a]?b.processKey(a,d):d===l[e]||(l[e]=d,c(f,d,e!==a),!0)},this.processControlState=c,this.getControlReport=function(a){return g.getControlReport(a)};var e=function(){window.onhelp=function(){return!1}},f=function(){var a=i;k[o]=j.POWER,k[o|a.ALT]=j.POWER,k[p]=j.FAST_SPEED,k[p|a.ALT]=j.FAST_SPEED,k[q|a.ALT]=j.INC_SPEED,k[r|a.ALT]=j.DEC_SPEED,k[s|a.ALT]=j.NORMAL_SPEED,k[t|a.ALT]=j.MIN_SPEED,m[q|a.ALT]=!0,m[r|a.ALT]=!0,m[s|a.ALT]=!0,m[t|a.ALT]=!0,k[u|a.ALT]=j.PAUSE,k[v|a.ALT]=j.FRAME,k[w|a.ALT]=j.FRAME,k[x|a.ALT]=j.DEBUG,k[y|a.ALT]=j.SPRITE_MODE,k[z|a.ALT]=j.VIDEO_STANDARD,k[A|a.ALT]=j.CPU_TURBO_MODE,k[B|a.ALT]=j.VDP_TURBO_MODE,k[C|a.CONTROL|a.ALT]=j.SAVE_STATE_0,k[D|a.CONTROL|a.ALT]=j.SAVE_STATE_0,k[E|a.CONTROL|a.ALT]=j.SAVE_STATE_1,k[F|a.CONTROL|a.ALT]=j.SAVE_STATE_2,k[G|a.CONTROL|a.ALT]=j.SAVE_STATE_3,k[H|a.CONTROL|a.ALT]=j.SAVE_STATE_4,k[I|a.CONTROL|a.ALT]=j.SAVE_STATE_5,k[J|a.CONTROL|a.ALT]=j.SAVE_STATE_6,k[K|a.CONTROL|a.ALT]=j.SAVE_STATE_7,k[L|a.CONTROL|a.ALT]=j.SAVE_STATE_8,k[M|a.CONTROL|a.ALT]=j.SAVE_STATE_9,k[N|a.CONTROL|a.ALT]=j.SAVE_STATE_10,k[O|a.CONTROL|a.ALT]=j.SAVE_STATE_11,k[P|a.CONTROL|a.ALT]=j.SAVE_STATE_12,k[C|a.ALT]=j.LOAD_STATE_0,k[D|a.ALT]=j.LOAD_STATE_0,k[E|a.ALT]=j.LOAD_STATE_1,k[F|a.ALT]=j.LOAD_STATE_2,k[G|a.ALT]=j.LOAD_STATE_3,k[H|a.ALT]=j.LOAD_STATE_4,k[I|a.ALT]=j.LOAD_STATE_5,k[J|a.ALT]=j.LOAD_STATE_6,k[K|a.ALT]=j.LOAD_STATE_7,k[L|a.ALT]=j.LOAD_STATE_8,k[M|a.ALT]=j.LOAD_STATE_9,k[N|a.ALT]=j.LOAD_STATE_10,k[O|a.ALT]=j.LOAD_STATE_11,k[P|a.ALT]=j.LOAD_STATE_12};this.netGetControlsToSend=function(){return n.length?n:void 0},this.netClearControlsToSend=function(){n.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b>4)||n.push(e),d(e.c>>4,1&e.c,2&e.c,e.d)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b>4,1&e.c,2&e.c,e.d)}};var g,h,i=wmsx.DOMKeys,j=wmsx.MachineControls,k={},l={},m={},n=new Array(100);n.length=0 -;var o=i.VK_F11.wc,p=i.VK_F12.wc,q=i.VK_UP.wc,r=i.VK_DOWN.wc,s=i.VK_RIGHT.wc,t=i.VK_LEFT.wc,u=i.VK_P.wc,v=i.VK_O.wc,w=i.VK_F.wc,x=i.VK_D.wc,y=i.VK_S.wc,z=i.VK_Q.wc,A=i.VK_T.wc,B=i.VK_Y.wc,C=i.VK_QUOTE.wc,D=i.VK_BACKQUOTE.wc,E=i.VK_1.wc,F=i.VK_2.wc,G=i.VK_3.wc,H=i.VK_4.wc,I=i.VK_5.wc,J=i.VK_6.wc,K=i.VK_7.wc,L=i.VK_8.wc,M=i.VK_9.wc,N=i.VK_0.wc,O=i.VK_MINUS.wc,P=i.VK_EQUALS.wc,Q=~i.SHIFT,R=new Set([j.VIDEO_STANDARD,j.CPU_TURBO_MODE,j.VDP_TURBO_MODE,j.SPRITE_MODE,j.VSYNCH]),S=new Set([j.SAVE_STATE_0,j.SAVE_STATE_1,j.SAVE_STATE_2,j.SAVE_STATE_3,j.SAVE_STATE_4,j.SAVE_STATE_5,j.SAVE_STATE_6,j.SAVE_STATE_7,j.SAVE_STATE_8,j.SAVE_STATE_9,j.SAVE_STATE_10,j.SAVE_STATE_11,j.SAVE_STATE_12,j.SAVE_STATE_FILE,j.LOAD_STATE_0,j.LOAD_STATE_1,j.LOAD_STATE_2,j.LOAD_STATE_3,j.LOAD_STATE_4,j.LOAD_STATE_5,j.LOAD_STATE_6,j.LOAD_STATE_7,j.LOAD_STATE_8,j.LOAD_STATE_9,j.LOAD_STATE_10,j.LOAD_STATE_11,j.LOAD_STATE_12,j.TRACE]),T=new Set([j.VSYNCH]);!function(){f()}()},wmsx.DOMVirtualKeyboard=function(a,b,c){"use strict";function d(a){a.addEventListener("touchstart",e),a.addEventListener("mousedown",e),a.addEventListener("touchend",f),a.addEventListener("mouseup",f)}function e(a){h(a);var c=a.target.wmsxKey;c&&(b.processMSXKey(c,!0),"SHIFT"===c&&g())}function f(a){h(a);var c=a.target.wmsxKey;c&&(b.processMSXKey(c,!1),"SHIFT"===c&&g())}function g(){var a=b.isShiftPressed();a!==k&&(k=a,j&&wmsx.VirtualKeyboard.updateKeysLabels(j,k,l))}function h(a){a.stopPropagation(),a.preventDefault()}var i=this;this.machineTypeStateUpdate=function(){var a=c.getMachineLang();a!==l&&(l=a,j&&wmsx.VirtualKeyboard.updateKeysLabels(j,k,l))};var j,k=!1,l="en";!function(){c.addMachineTypeStateListener(i),j=wmsx.VirtualKeyboard.create(a,d,k,l)}()},wmsx.ScreenGUI=wmsx.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:597,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:597,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},wmsx.ScreenGUI.html=function(){return'

Drive A

Drive B

Hard Drive

Cartridge 1

Cartridge 2

Cassette
Swipe up/down on the Screen
to hide the browser bars!
'},wmsx.ScreenGUI.css=function(){ -return"html.wmsx-full-screen-scroll-hack body { position: absolute; width: 100%; height: "+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #wmsx-screen-fs, #wmsx-screen-fs div, #wmsx-screen-fs canvas { outline: none; } #"+WMSX.SCREEN_ELEMENT_ID+" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.wmsx-full-screen #"+WMSX.SCREEN_ELEMENT_ID+" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646; /* one behind fsElement */ } html.wmsx-started #"+WMSX.SCREEN_ELEMENT_ID+" { visibility: visible; } #wmsx-screen-scroll-message { position: absolute; left: 0; right: 0; bottom: -50%; width: 0; height: 0; padding: 0; margin: 0 auto; font-size: 16px; line-height: 28px; color: hsl(0, 0%, 4%); white-space: nowrap; background: hsl(0, 0%, 92%); border-radius: 15px; box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; opacity: 0; z-index: -1; } html.wmsx-full-screen-scroll-hack #wmsx-screen-fs.wmsx-scroll-message #wmsx-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 10; transition: none; } #wmsx-screen-fs { position: relative; background: black; text-align: center; overflow: hidden; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.wmsx-full-screen #wmsx-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.wmsx-full-screen-scroll-hack #wmsx-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.wmsx-full-screen #wmsx-screen-fs-center { /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #wmsx-screen-canvas-outer { display: inline-block; position: relative; vertical-align: top; line-height: 1px; z-index: 3; } #wmsx-screen-canvas { display: block; } #wmsx-bar { position: relative; left: 0; right: 0; height: "+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible; /* for the Menu to show through */ box-sizing: content-box; z-index: 5; } #wmsx-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.wmsx-bar-auto-hide #wmsx-bar, html.wmsx-full-screen #wmsx-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.wmsx-bar-auto-hide #wmsx-bar.wmsx-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.wmsx-full-screen #wmsx-bar.wmsx-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #wmsx-bar.wmsx-narrow .wmsx-narrow-hidden { display: none; } .wmsx-bar-button { display: inline-block; width: 24px; height: 29px; margin: 0 1px; background-image: url("'+wmsx.Images.urls.sprites+'"); background-repeat: no-repeat; background-size: 568px 206px; cursor: pointer; } .wmsx-bar-button.wmsx-media-button { background-size: 284px 103px; } .wmsx-bar-button.wmsx-hidden { display: none; } /* Firefox-specific rules */ @-moz-document url-prefix() { .wmsx-bar-button { image-rendering: optimizequality; } } /* .wmsx-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #wmsx-bar-power { margin-left: 6px; } #wmsx-bar-media-icons { margin-left: 10px; } #wmsx-bar-settings, #wmsx-bar-full-screen, #wmsx-bar-scale-plus, #wmsx-bar-scale-minus { float: right; margin: 0; } #wmsx-bar-settings { margin-right: 5px; } #wmsx-bar-full-screen.wmsx-mobile { margin: 0 6px; } #wmsx-bar-scale-plus { width: 21px; } #wmsx-bar-scale-minus { width: 18px; } #wmsx-bar-text { float: right; width: 32px; } #wmsx-bar-text.wmsx-mobile { margin: 0 0 0 6px; } #wmsx-bar-keyboard { position: absolute; left: 0; right: 0; width: 37px; margin: 0 auto; } #wmsx-bar.wmsx-narrow #wmsx-bar-keyboard { position: static; float: right; } #wmsx-bar-logo { position: absolute; left: 0; right: 0; width: 52px; margin: 0 auto; } #wmsx-bar-turbo { position: absolute; left: 118px; right: 0; width: 47px; margin: 0 auto; padding: 7px 0 0 26px; color: hsl(0, 98%, 61%); font-weight: bold; font-size: 14px; line-height: 14px; text-shadow: 2px 2px 0 black; vertical-align: top; box-sizing: border-box; } #wmsx-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+"px; font-size: "+this.BAR_MENU_ITEM_FONT_SIZE+"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .wmsx-bar-menu-item, #wmsx-bar-menu-title { position: relative; display: none; width: "+this.BAR_MENU_WIDTH+"px; height: "+this.BAR_MENU_ITEM_HEIGHT+"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: "+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #wmsx-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .wmsx-bar-menu-item.wmsx-hover:not(.wmsx-bar-menu-item-disabled):not(.wmsx-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .wmsx-bar-menu-item-disabled { color: rgb(110, 110, 110); } .wmsx-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .wmsx-bar-menu-item-toggle { text-align: left; padding-left: 33px; } .wmsx-bar-menu-item-toggle::before, .wmsx-bar-menu-item-toggle::after { content: ""; position: absolute; width: 6px; height: 9px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+"px; left: 12px; background: rgb(82, 82, 82); box-shadow: black 1px 1px 1px; } .wmsx-bar-menu-item-toggle::after { top: "+((this.BAR_MENU_ITEM_HEIGHT-21)/2+10|0)+"px; } .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked { color: white; } .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op1::before, .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op3::before { background: rgb(254, 32, 30); } .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op2::after, .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op3::after { background: rgb(254, 32, 30); } .wmsx-bar-menu-item-toggle.wmsx-no-op2::before { top: "+((this.BAR_MENU_ITEM_HEIGHT-21)/2+2|0)+'px; height: 16px; } .wmsx-bar-menu-item-toggle.wmsx-no-op2::after { display: none; } .wmsx-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; background: hsl(0, 0%, 16%); padding: 14px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 4; } .wmsx-select-dialog.wmsx-show { display: block; } .wmsx-select-dialog > .wmsx-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .wmsx-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .wmsx-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0; line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .wmsx-select-dialog > ul li.wmsx-visible { display: block; } .wmsx-select-dialog > ul li.wmsx-selected { color: white; background: hsl(358, 67%, 46%); } .wmsx-select-dialog > ul li.wmsx-droptarget { color: white; border-color: lightgray; } .wmsx-select-dialog > ul li.wmsx-toggle::after { content: ""; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .wmsx-select-dialog > ul li.wmsx-toggle-checked::after { background: rgb(254, 32, 30); } #wmsx-diskselect.wmsx-select-dialog li { padding-left: 23px; } #wmsx-diskselect.wmsx-select-dialog li.wmsx-toggle::after { background: hsl(0, 0%, 73%); } #wmsx-diskselect.wmsx-select-dialog li.wmsx-toggle-checked::after { background: rgb(230, 205, 31); } #wmsx-cartridge-format.wmsx-select-dialog > ul { width: 100%; height: 292px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #wmsx-cartridge-format.wmsx-select-dialog > ul li { width: 220px; margin: 7px 0 2px 0; } #wmsx-cartridge-format.wmsx-select-dialog > ul li:first-child { margin-top: 0; } #wmsx-cartridge-format ::-webkit-scrollbar { width: 12px; } #wmsx-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #wmsx-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #wmsx-cartridge-format ul.wmsx-quick-options-list { width: 220px; margin: 18px 0 0 30px; } #wmsx-cartridge-format ul.wmsx-quick-options-list li div { height: 24px; line-height: 24px; } #wmsx-cartridge-format .wmsx-control { width: 52px; line-height: 24px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #wmsx-cartridge-format.wmsx-select-dialog > ul { width: 304px; } } #wmsx-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #wmsx-logo.wmsx-show { display: block; } #wmsx-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #wmsx-screen-fs:not(.wmsx-logo-message-active) #wmsx-logo-center { max-width: 100%; max-height: 100%; } #wmsx-logo-image { position: absolute; top: 50%; left: 50%; width: 334px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } html.wmsx-full-screen #wmsx-logo-image { max-width: 67%; } #wmsx-screen-fs.wmsx-logo-message-active #wmsx-logo-image { top: 138px; max-width: initial; } #wmsx-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-unmute-message::before { content: ""; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url("'+wmsx.Images.urls.muteIcon+'"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #wmsx-unmute-message::after { content: "Audio is muted. Click to unmute"; } #wmsx-unmute-message.wmsx-show { display: inline-block; } #wmsx-logo-loading-icon, #wmsx-canvas-loading-icon { display: none; position: absolute; top: 62%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 12px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #wmsx-screen-fs.wmsx-logo-message-active #wmsx-logo-loading-icon { top: 190px; } #wmsx-logo-message { display: none; position: absolute; top: 224px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #wmsx-screen-fs.wmsx-logo-message-active #wmsx-logo-message { display: block; } #wmsx-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #wmsx-logo-message-ok.wmsx-higher { top: 74px; } #wmsx-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #wmsx-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 20px; height: 28px; padding: 0 10px; margin: 0; font-weight: bold; font-size: 15px; line-height: 28px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } #wmsx-copy-texarea { position: absolute; width: 50px; height: 0; bottom: 0; z-index: -10; opacity: 0; } #wmsx-paste-cover { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 340px; height: 136px; margin: auto; border-radius: 20px; background: rgba(0, 0, 0, 0.4); z-index: 1; } #wmsx-paste-cover.wmsx-show { display: block; } #wmsx-paste-box { position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 270px; height: 66px; margin: auto; background: rgba(255, 40, 40, 0.75); font-weight: bold; font-size: 26px; text-align: center; color: transparent; border: 2px dashed rgba(240, 240, 240, 0.70); box-sizing: initial; border-radius: 10px; text-shadow: 0 0 0 rgb(240, 240, 240); padding: 0; outline: none; } #wmsx-text-entry-dialog { display: none; position: absolute; top: 25px; left: 0; right: 0; width: 96%; max-width: 540px; height: 47%; max-height: 450px; margin: 0 auto; color: white; font-size: 19px; line-height: 23px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 4; } #wmsx-text-entry-dialog.wmsx-show { display: block; } #wmsx-text-entry-dialog-bar { position: absolute; height: 40px; width: 100%; line-height: 40px; background: inherit; overflow: hidden; } #wmsx-text-entry-dialog-bar::before { content: "Input Text"; } #wmsx-text-entry-dialog-ok, #wmsx-text-entry-dialog-cancel { display: inline-block; float: right; width: 70px; height: 22px; margin-right: 15px; border: 9px solid hsl(0, 0%, 16%); border-left: none; border-right: none; font-size: 14px; line-height: 22px; background: hsl(358, 67%, 46%); cursor: pointer; } #wmsx-text-entry-dialog-cancel { color: hsl(0, 0%, 90%); background: hsl(0, 0%, 30%); } #wmsx-text-entry-dialog-ok::before { content: "OK"; } #wmsx-text-entry-dialog-cancel::before { content: "CANCEL"; } #wmsx-text-entry-input { position: absolute; top: 15px; left: 15px; width: calc(100% - 30px); height: calc(100% - 30px); padding: 29px 6px 4px; font-size: 16px; border: none; border-radius: 0; background: hsl(0, 0%, 90%); box-sizing: border-box; resize: none; outline: none; -webkit-touch-callout: default; touch-callout: default; } .wmsx-arrow-up, .wmsx-arrow-down, .wmsx-arrow-left, .wmsx-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .wmsx-arrow-up { border-bottom-color: inherit; } .wmsx-arrow-down { border-top-color: inherit; } .wmsx-arrow-left { border-right-color: inherit; } .wmsx-arrow-right { border-left-color: inherit; } .wmsx-keyboard-key { position: absolute; height: 25px; padding: 5px 0 0; overflow: hidden; font-weight: normal; font-size: 10px; line-height: 10px; text-align: center; vertical-align: top; color: white; background: hsl(0, 0%, 66%); border: 3px solid hsl(0, 0%, 50%); border-top: 1px solid hsl(0, 0%, 54%); border-bottom: 5px solid hsl(0, 0%, 33%); border-radius: 3px 3px 0 0; box-shadow: 0 1px 0 1px rgb(0, 0, 0); box-sizing: border-box; cursor: pointer; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-keyboard-key.wmsx-keyboard-key-dark { background: hsl(0, 0%, 46%); border-color: hsl(0, 0%, 36%); border-top-color: hsl(0, 0%, 40%); border-bottom-color: hsl(0, 0%, 24%); } .wmsx-keyboard-key.wmsx-keyboard-key-unmapped { color: rgb(30, 30, 30); font-weight: bold; -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } .wmsx-keyboard-alpha, .wmsx-keyboard-num, .wmsx-keyboard-arrows { position: absolute; } .wmsx-keyboard-alpha > div, .wmsx-keyboard-num > div, .wmsx-keyboard-arrows > div { position: absolute; } .wmsx-keyboard-num { left: 416px; } .wmsx-keyboard-arrows { top: 104px; left: 417px; } .wmsx-keyboard-f1, .wmsx-keyboard-f2, .wmsx-keyboard-f3, .wmsx-keyboard-f4, .wmsx-keyboard-f5, .wmsx-keyboard-stop, .wmsx-keyboard-select, .wmsx-keyboard-home, .wmsx-keyboard-insert, .wmsx-keyboard-delete { height: 18px; padding-top: 2px; font-size: 9px; line-height: 9px; border-width: 1px 2px 4px; } .wmsx-keyboard-stop { margin-left: 10px; background: hsl(0, 70%, 54%); border-color: hsl(0, 70%, 36%); border-top-color: hsl(0, 70%, 40%); border-bottom-color: hsl(0, 70%, 28%); } .wmsx-keyboard-enter { border-radius: 2px 3px 0 0; border-top: none; box-shadow: none; overflow: visible; } .wmsx-keyboard-enter::after { content: ""; display: block; position: absolute; left: -10px; bottom: -7px; width: 20px; height: 2px; background: black; } .wmsx-keyboard-enter_x1 { border-radius: 2px 0 0 0; border-width: 1px; border-right: none; box-shadow: -1px 1px 0 0 black; } .wmsx-keyboard-enter_x2 { overflow: visible; padding: 0; border: none; border-radius: 0 3px 0 0; box-shadow: none; box-shadow: 1px 1px 0 0 black; } .wmsx-keyboard-enter_x2::after { content: ""; display: block; width: 30px; height: 50px; background: inherit; border: 3px solid hsl(0, 0%, 36%); border-top: 1px solid hsl(0, 0%, 40%); border-bottom: 5px solid hsl(0, 0%, 24%); border-radius: 0 3px 0 0; box-shadow: 1px 2px 0 0 black, 1px 0 0 0 black; box-sizing: border-box; } .wmsx-keyboard-capslock { margin-left: 16px; } .wmsx-keyboard-space { left: 103px; width: 217px; } .wmsx-keyboard-dead { left: 333px; width: 26px; } .wmsx-keyboard-shift2 { left: 360px; width: 41px; } .wmsx-keyboard-code { left: 321px; width: 46px; } .wmsx-keyboard-num .wmsx-keyboard-key { height: 23px; padding-top: 4px; } .wmsx-keyboard-arrows .wmsx-keyboard-key { font-size: 8px; line-height: 9px; background: rgb(70, 85, 180); border-width: 1px 2px 4px; border-radius: 2px 2px 0 0; border-color: hsl(232, 44%, 37%); border-top-color: hsl(232, 44%, 40%); border-bottom-color: hsl(232, 44%, 24%); } .wmsx-keyboard-left, .wmsx-keyboard-right { top: 6px; width: 26px; height: 33px; padding: 10px 0 0 6px; } .wmsx-keyboard-up, .wmsx-keyboard-down { left: 27px; width: 37px; height: 23px; padding: 5px 0 0 12px; } .wmsx-keyboard-down { top: 23px; padding-top: 7px; } .wmsx-keyboard-right { left: 65px; padding-left: 10px; } .wmsx-keyboard-up::after, .wmsx-keyboard-down::after, .wmsx-keyboard-left::after, .wmsx-keyboard-right::after { content: ""; display: block; border: 4px solid transparent; width: 6px; height: 6px; box-sizing: border-box; } .wmsx-keyboard-up::after { border-bottom: 5px solid white; border-top-width: 0; } .wmsx-keyboard-up.wmsx-keyboard-key-unmapped::after { border-bottom-color: black; } .wmsx-keyboard-down::after { border-top: 5px solid white; border-bottom-width: 0; } .wmsx-keyboard-down.wmsx-keyboard-key-unmapped::after { border-top-color: black; } .wmsx-keyboard-left::after { border-right: 5px solid white; border-left-width: 0; } .wmsx-keyboard-left.wmsx-keyboard-key-unmapped::after { border-right-color: black; } .wmsx-keyboard-right::after { border-left: 5px solid white; border-right-width: 0; } .wmsx-keyboard-right.wmsx-keyboard-key-unmapped::after { border-left-color: black; } .wmsx-keyboard-narrow .wmsx-keyboard-num { display: none; } .wmsx-keyboard-narrow .wmsx-keyboard-arrows { left: 336px; } .wmsx-keyboard-narrow .wmsx-keyboard-space { width: 155px; } .wmsx-keyboard-narrow .wmsx-keyboard-code { left: 259px; width: 39px; } .wmsx-keyboard-narrow .wmsx-keyboard-dead { left: 299px; top: 25px; } .wmsx-keyboard-narrow .wmsx-keyboard-shift2 { display: none; } .wmsx-keyboard-narrow .wmsx-keyboard-left, .wmsx-keyboard-narrow .wmsx-keyboard-right { top: 9px; width: 23px; height: 27px; padding: 7px 0 0 5px; border-bottom-width: 3px; } .wmsx-keyboard-narrow .wmsx-keyboard-up, .wmsx-keyboard-narrow .wmsx-keyboard-down { left: 24px; width: 26px; padding-left: 7px; border-bottom-width: 3px; } .wmsx-keyboard-narrow .wmsx-keyboard-right { left: 51px; padding-left: 8px; } #wmsx-virtual-keyboard { display: none; position: absolute; left: 50%; bottom: '+(this.BAR_HEIGHT+2)+'px; overflow: hidden; margin: 0 auto; padding: 5px 0 0 4px; width: 518px; height: 161px; background: hsl(0, 0%, 16%); box-sizing: border-box; transform: translateX(-50%); transform-origin: center bottom; transition: height 0.3s ease-in-out; text-align: left; z-index: 2; } html.wmsx-full-screen.wmsx-virtual-keyboard-active #wmsx-virtual-keyboard { display: block; } .wmsx-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .wmsx-quick-options-list li { margin-top: 9px; line-height: 1px; text-align: left; } .wmsx-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .wmsx-quick-options-list .wmsx-control { position: relative; float: right; width: 134px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .wmsx-quick-options-list .wmsx-control > button { position: absolute; top: 0; bottom: 0; width: 26px; height: 100%; background: rgb(70, 70, 70); border: none; outline: none; cursor: pointer; -webkit-appearance: none; } .wmsx-quick-options-list .wmsx-control > button::after { content: ""; position: absolute; top: 7px; border: 6px solid transparent; } .wmsx-quick-options-list .wmsx-control .wmsx-control-dec { left: 0; border-right: 1px solid black; } .wmsx-quick-options-list .wmsx-control .wmsx-control-dec::after { left: 2px; border-right-color: #c0c0c0; } .wmsx-quick-options-list .wmsx-control .wmsx-control-inc { right: 0; border-left: 1px solid black; } .wmsx-quick-options-list .wmsx-control .wmsx-control-inc::after { right: 2px; border-left-color: #c0c0c0; } .wmsx-quick-options-list .wmsx-control.wmsx-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .wmsx-quick-options-list .wmsx-control.wmsx-selected.wmsx-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #wmsx-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 270px; height: 351px; margin: auto; padding: 14px 15px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 3; } #wmsx-quick-options.wmsx-show { display: block; } #wmsx-quick-options::before { content: "Quick Options"; display: block; } #wmsx-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #wmsx-netplay.wmsx-show { display: block; } #wmsx-netplay::before { content: "Net Play!"; display: block; } #wmsx-netplay-status-box { position: relative; margin-top: 17px; } #wmsx-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #wmsx-netplay-status-box.wmsx-active #wmsx-netplay-status { padding: 0 16px 0 12px; } #wmsx-netplay-status-box.wmsx-active #wmsx-netplay-status::after { content: ""; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(254, 32, 30); } #wmsx-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #wmsx-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #wmsx-netplay-status-box.wmsx-active #wmsx-netplay-link { display: block; } .wmsx-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #wmsx-netplay-session-box { margin-top: 18px; } #wmsx-netplay-session-label, #wmsx-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #wmsx-netplay-session-label::before { content: "Session Name"; } #wmsx-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #wmsx-netplay-nick-label { margin-top: 10px; } #wmsx-netplay-nick-label::before { content: "User Nickname"; } .wmsx-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #wmsx-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #wmsx-netplay-session-box.wmsx-disabled div { color: rgb(130, 130, 130); } input#wmsx-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #wmsx-touch-config { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 294px; height: 269px; margin: auto; padding: 0 16px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: border-box; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 3; } #wmsx-screen-fs.wmsx-touch-config-active #wmsx-touch-config { display: block; } #wmsx-touch-config::after { content: "Tap Control to Setup"; position: absolute; display: block; top: 14px; left: 0; width: 100%; } #wmsx-touch-config::before { content: ""; display: block; margin-top: 46px; height: 68px; background: black; } #wmsx-touch-config-minus, #wmsx-touch-config-plus { position: absolute; top: 46px; width: 72px; height: 68px; cursor: pointer; } #wmsx-touch-config-minus { left: 19px; } #wmsx-touch-config-plus { right: 19px; } #wmsx-touch-config-minus::after, #wmsx-touch-config-plus::after { content: ""; position: absolute; top: 20px; border: 14px solid transparent; } #wmsx-touch-config-minus::after { left: 9px; border-right: 18px solid #c0c0c0; } #wmsx-touch-config-minus.wmsx-disabled::after { border-right-color: #404040; } #wmsx-touch-config-plus::after { right: 9px; border-left: 18px solid #c0c0c0; } #wmsx-touch-config-plus.wmsx-disabled::after { border-left-color: #404040; } #wmsx-touch-config-dir { display: none; position: absolute; top: 15px; left: 79px; transform: scale(.70); } #wmsx-touch-config-dir.wmsx-show { display: block; } #wmsx-touch-config-dir::before { display: none; } #wmsx-touch-config-button { display: none; position: absolute; top: 46px; right: 109px; text-shadow: none; } #wmsx-touch-config-button.wmsx-show { display: block; } #wmsx-touch-config .wmsx-quick-options-list { margin-top: 11px; } #wmsx-touch-config .wmsx-control { width: 110px; } #wmsx-touch-left, #wmsx-touch-right { display: none; position: absolute; z-index: 1; } #wmsx-touch-speed { display: none; } html.wmsx-full-screen.wmsx-touch-active #wmsx-touch-left, html.wmsx-full-screen.wmsx-touch-active #wmsx-touch-right, html.wmsx-full-screen.wmsx-touch-active #wmsx-touch-speed { display: block; } .wmsx-touch-dir { position: relative; width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; z-index: 2 } .wmsx-touch-dir::before { content: ""; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .wmsx-touch-dir-joy .wmsx-touch-dir-up, .wmsx-touch-dir-joy .wmsx-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .wmsx-touch-dir-joy .wmsx-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .wmsx-touch-dir-joy .wmsx-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .wmsx-touch-dir-joy .wmsx-touch-dir-left::before { content: ""; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .wmsx-touch-dir-joy .wmsx-touch-dir-left::after { content: ""; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow: inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .wmsx-touch-dir-key .wmsx-touch-dir-up, .wmsx-touch-dir-key .wmsx-touch-dir-left, .wmsx-touch-dir-key .wmsx-touch-dir-down, .wmsx-touch-dir-key .wmsx-touch-dir-right { position: absolute; background: rgb(70, 85, 180); border: 0 solid hsl(232, 44%, 37%); border-width: 1px 2px 4px; border-top-color: hsl(232, 44%, 40%); border-bottom-color: hsl(232, 44%, 24%); border-radius: 2px 2px 0 0; box-sizing: border-box; } .wmsx-touch-dir-key .wmsx-touch-dir-up, .wmsx-touch-dir-key .wmsx-touch-dir-down { left: 50px; width: 30px; } .wmsx-touch-dir-key .wmsx-touch-dir-up { top: 26px; height: 25px; border-bottom-width: 2px; } .wmsx-touch-dir-key .wmsx-touch-dir-down { bottom: 26px; height: 27px; } .wmsx-touch-dir-key .wmsx-touch-dir-left, .wmsx-touch-dir-key .wmsx-touch-dir-right { top: 47px; width: 25px; height: 36px; } .wmsx-touch-dir-key .wmsx-touch-dir-left { left: 24px; } .wmsx-touch-dir-key .wmsx-touch-dir-right { right: 24px; } .wmsx-touch-dir-key .wmsx-touch-dir-up::after { content: ""; position: absolute; top: 26px; left: -1px; width: 28px; height: 22px; background: hsl(0, 0%, 20%); } .wmsx-touch-dir .wmsx-arrow-up, .wmsx-touch-dir .wmsx-arrow-down, .wmsx-touch-dir .wmsx-arrow-left, .wmsx-touch-dir .wmsx-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .wmsx-touch-dir .wmsx-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .wmsx-touch-dir .wmsx-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .wmsx-touch-dir .wmsx-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .wmsx-touch-dir .wmsx-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .wmsx-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .wmsx-touch-button::before { content: ""; position: absolute; box-sizing: border-box; z-index: -1; } .wmsx-touch-button-joy::before, .wmsx-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #wmsx-screen-fs.wmsx-touch-config-active .wmsx-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .wmsx-touch-button-joy.wmsx-touch-button-joy-A::before { border: none; background: hsl(120, 76%, 31%); box-shadow: inset 0 2px hsl(120, 76%, 41%), 0 4px 0 1px hsl(120, 76%, 20%); } .wmsx-touch-button-joy.wmsx-touch-button-joy-B::before { border: none; background: hsl(0, 60%, 35%); box-shadow: inset 0 2px hsl(0, 60%, 48%), 0 4px 0 1px hsl(0, 60%, 23%); } .wmsx-touch-button-joy.wmsx-touch-button-joy-AB::before { border: none; background: hsl(240, 50%, 48%); box-shadow: inset 0 2px hsl(240, 50%, 60%), 0 4px 0 1px hsl(240, 50%, 31%); } .wmsx-touch-button-key { font-size: 16px; line-height: 69px; } .wmsx-touch-button-key::before { width: 48px; height: 46px; top: 13px; left: 12px; background: hsl(0, 0%, 44%); border: 4px solid hsl(0, 0%, 31%); border-top: 2px solid hsl(0, 0%, 54%); border-bottom: 6px solid hsl(0, 0%, 22%); border-radius: 3px 3px 1px 1px; } #wmsx-touch-T_A { z-index: 7 } #wmsx-touch-T_B { z-index: 6 } #wmsx-touch-T_C { z-index: 5 } #wmsx-touch-T_D { z-index: 4 } #wmsx-touch-T_E { z-index: 3 } #wmsx-touch-T_F { z-index: 2 } #wmsx-touch-T_G { z-index: 1 } #wmsx-touch-T_X { z-index: 1 } #wmsx-touch-T_Y { z-index: 1 } #wmsx-touch-pause, #wmsx-touch-fast { float: left; width: 46px; height: 48px; border-color: hsl(0, 0%, 70%); } #wmsx-touch-pause::after, #wmsx-touch-fast::before, #wmsx-touch-fast::after { content: ""; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #wmsx-touch-pause::after { margin-top: 16px; width: 14px; height: 16px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #wmsx-touch-fast::before, #wmsx-touch-fast::after { margin-top: 16px; width: 12px; height: 16px; border-width: 8px; border-left-width: 12px; border-left-color: inherit; border-right-width: 0; } #wmsx-touch-speed.wmsx-paused #wmsx-touch-pause::after, #wmsx-touch-speed.wmsx-poweroff #wmsx-touch-pause::after { margin-top: 14px; width: 17px; height: 20px; border-width: 10px; border-left-width: 17px; border-right-width: 0; } #wmsx-touch-speed.wmsx-paused #wmsx-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #wmsx-touch-speed.wmsx-poweroff #wmsx-touch-fast { display: none; } .wmsx-hd-first { float: left; } #wmsx-drop-area { position: absolute; display: none; bottom: 56px; width: 574px; height: 238px; margin: auto; padding: 0; font-size: 0; line-height: 0; color: hsl(0, 0%, 82%); background: black; text-align: left; transform-origin: left bottom; z-index: 99; } #wmsx-drop-area.wmsx-visible { display: block; } #wmsx-drop-area > div { position: relative; display: inline-block; width: 178px; height: 90px; margin: 10px 0 0 10px; padding: 0; font-size: 19px; line-height: 24px; text-shadow: 2px 2px black; text-align: center; background: hsl(0, 0%, 16%); vertical-align: bottom; box-sizing: border-box; } #wmsx-drop-area > div.wmsx-disabled { color: #616161; } #wmsx-drop-area > div:not(.wmsx-disabled).wmsx-selected { background: hsl(358, 67%, 38%); } #wmsx-drop-area-message { position: absolute; left: 0; right: 0; bottom: 2px; height: 34px; font-size: 16px; line-height: 34px; text-align: center; } #wmsx-drop-area i { display: inline-block; margin: 11px auto 7px; width: 41px; height: 36px; background: url("'+wmsx.Images.urls.sprites+'"); background-size: 568px 206px; vertical-align: bottom; } #wmsx-drop-drivea i { background-position: -334px -107px; } #wmsx-drop-drivea.wmsx-disabled i { background-position: -334px -156px; } #wmsx-drop-driveb i { background-position: -392px -107px; } #wmsx-drop-driveb.wmsx-disabled i { background-position: -392px -156px; } #wmsx-drop-driveh i { background-position: -508px -107px; } #wmsx-drop-driveh.wmsx-disabled i { background-position: -508px -156px; } #wmsx-drop-cart1 i { background-position: -159px -107px; } #wmsx-drop-cart2 i { background-position: -217px -107px; } #wmsx-drop-tape i { background-position: -275px -107px; } .wmsx-drop-add, .wmsx-drop-files { position: absolute; display: none; left: 0; top: 0; width: 50px; height: 34px; padding-top: 10px; font-size: 11px; line-height: 9px; text-shadow: 1px 1px 1px black; border: 3px solid transparent; box-sizing: border-box; white-space: nowrap; overflow: visible; } .wmsx-drop-files { left: unset; right: 0; } .wmsx-drop-add::after { content: "+ DISKS"; } .wmsx-drop-files::after { content: "+ FILES "; } #wmsx-drop-area > div:not(.wmsx-disabled).wmsx-selected .wmsx-drop-add, #wmsx-drop-area > div:not(.wmsx-disabled).wmsx-selected .wmsx-drop-files { display: block; } .wmsx-drop-add.wmsx-selected, .wmsx-drop-files.wmsx-selected { border-color: hsl(0, 0%, 82%); box-shadow: 0 0 0 1px rgba(0, 0, 0, .8); } @media only screen and (orientation: landscape) { /* Landscape */ #wmsx-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+"px); bottom: 50%; transform: translateY(50%); --touch-left-button-vert-margin: 10px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-left { left: calc(-6px - "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px); --touch-left-button-vert-margin: 20px; } #wmsx-touch-left .wmsx-touch-button { margin-left: 11px; } #wmsx-touch-T_X { margin-bottom: var(--touch-left-button-vert-margin); } #wmsx-touch-T_Y { margin-top: var(--touch-left-button-vert-margin); } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-left .wmsx-touch-dir { transform: scale(1.2); transform-origin: left center; } #wmsx-touch-right { right: calc(5px - "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px); bottom: 50%; transform: translateY(50%); } #wmsx-touch-speed { position: absolute; left: -106px; top: 8px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-speed { left: -130px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.wmsx-full-screen.wmsx-touch-active #wmsx-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH+"px; right: "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px; } } @media only screen and (orientation: landscape) and (max-height: 511px) { /* Medium/Large Landscape */ #wmsx-touch-left { --touch-left-button-vert-margin: 10px !important; } #wmsx-touch-T_F, #wmsx-touch-T_G { display: none; } #wmsx-touch-speed { top: 2px; } } @media only screen and (orientation: landscape) and (max-height: 410px) { /* Medium Landscape */ #wmsx-touch-left { --touch-left-button-vert-margin: -2px !important; } } @media only screen and (orientation: landscape) and (max-height: 359px) { /* Short Landscape */ #wmsx-touch-left { --touch-left-button-vert-margin: 6px !important; } #wmsx-touch-T_E { display: none; } #wmsx-touch-T_X { visibility: hidden; } #wmsx-touch-speed { top: 8px; } } @media only screen and (orientation: portrait) { /* Portrait */ #wmsx-touch-left { left: 2px; bottom: 182px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-left .wmsx-touch-dir { transform: scale(1.2); transform-origin: left center; } #wmsx-touch-right { right: 5px; bottom: 36px; width: 112px; height: 224px; } #wmsx-touch-speed { position: absolute; left: 19px; bottom: "+(this.BAR_HEIGHT+10)+"px; } .wmsx-touch-button { position: absolute; } #wmsx-touch-T_A { bottom: 75%; right: 50%; } #wmsx-touch-T_B { bottom: 100%; right: 0%; } #wmsx-touch-T_C { bottom: 50%; right: 100%; } #wmsx-touch-T_D { bottom: 25%; right: 50%; } #wmsx-touch-T_E { bottom: 50%; right: 0%; } #wmsx-touch-T_F { bottom: 0%; right: 100%; } #wmsx-touch-T_G { bottom: 0%; right: 0%; } #wmsx-touch-T_X { display: none; } #wmsx-touch-T_Y { left: 4px; bottom: -88px; } html.wmsx-full-screen.wmsx-virtual-keyboard-active #wmsx-touch-left, html.wmsx-full-screen.wmsx-virtual-keyboard-active #wmsx-touch-right { display: none; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) { /* Medium Portrait. Like iPhone 5 */ #wmsx-touch-right { bottom: -18px; } #wmsx-touch-T_F, #wmsx-touch-T_G { display: none; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) { /* Short Portrait. Like iPhone 4 */ #wmsx-touch-left { bottom: 98px; } #wmsx-touch-right { bottom: -74px; } #wmsx-touch-T_E, #wmsx-touch-T_X { display: none; } #wmsx-touch-T_D { bottom: 50%; right: 0%; } }" -},wmsx.VirtualKeyboard={create:function(a,b,c,d,e){"use strict";var f=document.createElement("div");f.style.position="absolute",a.appendChild(f);var g=[];for(var h in this.sections){var i=document.createElement("div");i.classList.add("wmsx-keyboard-"+h),f.appendChild(i);for(var j=this.sections[h],k=0,l=0;l=0&&s.classList.add("wmsx-keyboard-key-dark"),s.wmsxKeyID=q,s.wmsxKey=this.idToMSMKey[q]||q,m.appendChild(s),g.push(s),b&&b(s)}}}return this.updateKeysLabels(g,c,d,e),g},updateKeysLabels:function(a,b,c,d){var e,f,g;d?(e="cns_"+c,f="c_"+c,g="c_en"):(e=(b?"cs_":"c_")+c,f=b?"cs_en":"c_en",g="c_en");for(var h=a.length-1;h>=0;--h){var i=a[h];if(!this.blankKeys.has(i.wmsxKeyID)){var j=wmsx.KeyboardKeys[i.wmsxKey][e]||wmsx.KeyboardKeys[i.wmsxKey][f]||wmsx.KeyboardKeys[i.wmsxKey][g];j=this.finalLabels[j]||j,i.wmsxLabel!==j&&(i.wmsxLabel=j,i.innerHTML=j)}}},sections:{alpha:[["F1","F2","F3","F4","F5","STOP","SELECT","HOME","INSERT","DELETE"],["ESCAPE","D1","D2","D3","D4","D5","D6","D7","D8","D9","D0","MINUS","EQUAL","BACKSLASH","BACKSPACE"],["TAB","Q","W","E","R","T","Y","U","I","O","P","OPEN_BRACKET","CLOSE_BRACKET","ENTER_X1","ENTER_X2"],["CONTROL","A","S","D","F","G","H","J","K","L","SEMICOLON","QUOTE","BACKQUOTE","ENTER"],["SHIFT","Z","X","C","V","B","N","M","COMMA","PERIOD","SLASH","DEAD","SHIFT2"],["CAPSLOCK","GRAPH","SPACE","CODE"]],num:[["NUM_7","NUM_8","NUM_9","NUM_DIVIDE"],["NUM_4","NUM_5","NUM_6","NUM_MULTIPLY"],["NUM_1","NUM_2","NUM_3","NUM_MINUS"],["NUM_0","NUM_PERIOD","NUM_COMMA","NUM_PLUS"]],arrows:[["LEFT","UP","RIGHT","DOWN"]]},sectionRowHeight:{alpha:25,num:23,arrows:50},sectionKeyWidth:{alpha:26,num:22},keyWidth:{F1:39,F2:39,F3:39,F4:39,F5:39,STOP:39,SELECT:39,HOME:39,INSERT:39,DELETE:39,ESCAPE:29,BACKSPACE:28,TAB:41,CONTROL:48,SHIFT:61,SHIFT2:61,ENTER:36,ENTER_X1:13,ENTER_X2:30,SPACE:189,CAPSLOCK:38,DEAD:38,GRAPH:46,CODE:46},keySpace:{STOP:50,ENTER_X1:13,CAPSLOCK:55},dark:["wmsx-keyboard-escape","wmsx-keyboard-tab","wmsx-keyboard-control","wmsx-keyboard-shift","wmsx-keyboard-capslock","wmsx-keyboard-graph","wmsx-keyboard-backspace","wmsx-keyboard-enter","wmsx-keyboard-enter_x1","wmsx-keyboard-enter_x2","wmsx-keyboard-shift2","wmsx-keyboard-code","wmsx-keyboard-num_divide","wmsx-keyboard-num_multiply","wmsx-keyboard-num_minus","wmsx-keyboard-num_plus"],idToMSMKey:{ENTER_X1:"ENTER",ENTER_X2:"ENTER",SHIFT2:"SHIFT"},finalLabels:{STP:"STOP",HOM:"HOME",CTR:"CTRL",SHF:"SHIFT",CAP:"CAPS",SPC:"SPACE",GRA:"GRAPH",COD:"CODE"},blankKeys:new Set(["ENTER_X1","ENTER_X2","UP","DOWN","LEFT","RIGHT"]),byCSSKeys:new Set(["SHIFT2","SPACE","CODE","DEAD","UP","DOWN","LEFT","RIGHT"])},wmsx.Monitor=function(a){"use strict";function b(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(b/wmsx.Monitor.ASPECT_STEP)*wmsx.Monitor.ASPECT_STEP}function c(a){var b=a<.5?.5:a;return Math.round(b/wmsx.Monitor.SCALE_STEP)*wmsx.Monitor.SCALE_STEP}this.connect=function(a){d=a,d.connectMonitor(this)},this.newFrame=function(b,c,d){a.refresh(b,c,d)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDisplayMetrics=function(b,c){a.displayMetrics(b,c)},this.setPixelMetrics=function(b,c){a.displayPixelMetrics(b,c)},this.setDefaults=function(){a.crtPhosphorSetDefault(),a.crtScanlinesSetDefault(),a.crtFilterSetDefault(),a.aspectAndScaleSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtFilterToggle=function(b){a.crtFilterToggle(b)},this.crtScanlinesToggle=function(b){a.crtScanlinesToggle(b)},this.crtPhosphorToggle=function(b){a.crtPhosphorToggle(b)},this.fullscreenToggle=function(b){a.displayToggleFullscreen(b)},this.displayAspectDecrease=function(){this.displayScale(b(e-wmsx.Monitor.ASPECT_STEP),f),this.showOSD("Display Aspect: "+e.toFixed(2)+"x",!0)},this.displayAspectIncrease=function(){this.displayScale(b(e+wmsx.Monitor.ASPECT_STEP),f),this.showOSD("Display Aspect: "+e.toFixed(2)+"x",!0)},this.displayScaleDecrease=function(){this.displayScale(e,c(f-wmsx.Monitor.SCALE_STEP)),this.showOSD("Display Size: "+f.toFixed(2)+"x",!0)},this.displayScaleIncrease=function(){this.displayScale(e,c(f+wmsx.Monitor.SCALE_STEP)),this.showOSD("Display Size: "+f.toFixed(2)+"x",!0)},this.getScreenText=function(){return d.getScreenText()},this.displayScale=function(b,c){e=b,f=c,a.displayScale(e,f)};var d,e,f},wmsx.Monitor.SCALE_STEP=.05,wmsx.Monitor.ASPECT_STEP=.01,wmsx.CanvasDisplay=function(room,mainElement){"use strict";function init(){wmsx.Util.insertCSS(wmsx.ScreenGUI.css()),delete wmsx.ScreenGUI.css,setupMain(),setupBar(),setupFileLoaderDropTargets(),setupFullscreen(),monitor=new wmsx.Monitor(self)}function displayDefaultScale(){if(WMSX.SCREEN_DEFAULT_SCALE>0)return WMSX.SCREEN_DEFAULT_SCALE;var a=Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);return crtScanlines?a>=660?1:a>=420?.75:.5:a>=660?1.1:a>=540?.9:a>=420?.7:a>=320?.55:.5}function hideOSD(){osd.style.transition="all 0.15s linear",osd.style.top="-29px",osd.style.opacity=0,osdShowing=!1}function setVirtualKeyboard(a){if(virtualKeyboardMode!==a){if(a){if(!isTouchDevice)return self.showOSD("Virtual Keyboard unavailable. Not a touch device!",!0,!0);virtualKeyboardElement||setupVirtualKeyboard(),virtualKeyboardElement.classList.toggle("wmsx-keyboard-narrow",2==a)}showCursorAndBar(!0),document.documentElement.classList.toggle("wmsx-virtual-keyboard-active",!!a),virtualKeyboardMode=a,self.requestReadjust(!0)}}function releaseControllersOnLostFocus(){controllersSocket.releaseControllers()}function hideCursorAndBar(){hideCursor(),hideBar(),cursorHideFrameCountdown=-1}function showCursorAndBar(a){showCursor(),!a&&mousePointerLocked||showBar(),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES}function showCursor(){cursorShowing||(fsElement.style.cursor=cursorType,cursorShowing=!0)}function hideCursor(){cursorShowing&&(fsElement.style.cursor="none",cursorShowing=!1)}function fullscreenByAPIChanged(){var a=isFullscreen,b=isFullScreenByAPI();b||fullScreenAPIExitUserRequested||!isBrowserStandalone?setFullscreenState(b):self.requestReadjust(),a&&!b&&!fullScreenAPIExitUserRequested&&isMobileDevice&&(isBrowserStandalone?setEnterFullscreenByAPIOnFirstTouch():(machine.systemPause(!0),showLogoMessage("
Emulation suspended","RESUME",!0,function(){self.setFullscreen(!0),machine.systemPause(!1)}))),fullScreenAPIExitUserRequested=!1}function isFullScreenByAPI(){return!!document[fullScreenAPIQueryProp]}function enterFullScreenByAPI(){if(fullscreenAPIEnterMethod)try{fullscreenAPIEnterMethod.call(fsElement)}catch(a){}}function exitFullScreenByAPI(){if(fullScreenAPIExitMethod)try{fullScreenAPIExitUserRequested=!0,fullScreenAPIExitMethod.call(document)}catch(a){}}function updateScale(){var a=Math.round(targetWidth*scaleY*aspectX),b=Math.round(targetHeight*scaleY);canvas.style.width=a+"px",canvas.style.height=b+"px",updateBarWidth(a),signalIsOn||updateLogoScale(),settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position()}function updateBarWidth(a){var b=buttonsBarDesiredWidth>0?buttonsBarDesiredWidth:a;buttonsBar.style.width=-1===buttonsBarDesiredWidth?"100%":b+"px",buttonsBar.classList.toggle("wmsx-narrow",b=2;void 0!==canvasContext.imageSmoothingEnabled?canvasContext.imageSmoothingEnabled=a:(canvasContext.webkitImageSmoothingEnabled=a,canvasContext.mozImageSmoothingEnabled=a,canvasContext.msImageSmoothingEnabled=a)}}function suppressContextMenu(a){a.addEventListener("contextmenu",wmsx.Util.blockEvent)}function preventDrag(a){a.ondragstart=wmsx.Util.blockEvent}function setupMain(){switch(mainElement.innerHTML=wmsx.ScreenGUI.html(),mainElement.tabIndex=-1,delete wmsx.ScreenGUI.html,fsElement=document.getElementById("wmsx-screen-fs"),fsElementCenter=document.getElementById("wmsx-screen-fs-center"),canvasOuter=document.getElementById("wmsx-screen-canvas-outer"),canvas=document.getElementById("wmsx-screen-canvas"),canvasLoadingIcon=document.getElementById("wmsx-canvas-loading-icon"),osd=document.getElementById("wmsx-osd"),logo=document.getElementById("wmsx-logo"),logoCenter=document.getElementById("wmsx-logo-center"),logoImage=document.getElementById("wmsx-logo-image"),logoLoadingIcon=document.getElementById("wmsx-logo-loading-icon"),logoMessage=document.getElementById("wmsx-logo-message"),logoMessageText=document.getElementById("wmsx-logo-message-text"),logoMessageOK=document.getElementById("wmsx-logo-message-ok"),logoMessageOKText=document.getElementById("wmsx-logo-message-ok-text"),scrollMessage=document.getElementById("wmsx-screen-scroll-message"),unmuteMessage=document.getElementById("wmsx-unmute-message"),scanlinesImage=document.createElement("canvas"),scanlinesImage.width=1,scanlinesImage.height=wmsx.VDP.SIGNAL_MAX_HEIGHT_V9938,suppressContextMenu(mainElement),preventDrag(logoImage),preventDrag(logoLoadingIcon),preventDrag(canvasLoadingIcon),updateCanvasContentSize(),browserName){case"CHROME":case"EDGE":case"OPERA":canvasImageRenderingValue="pixelated";break;case"FIREFOX":canvasImageRenderingValue="-moz-crisp-edges";break;case"SAFARI":canvasImageRenderingValue="-webkit-optimize-contrast";break;default:canvasImageRenderingValue="pixelated"}setupMainEvents()}function updateScanlines(){var a=scanlinesImage.getContext("2d",{alpha:!0,antialias:!1});a.clearRect(0,0,1,scanlinesImage.height),a.fillStyle="black",a.globalAlpha=crtScanlines/10;for(var b=1,c=scanlinesImage.height;bTOUCH_EXT_SLOT2_TIME&&(b|=!0),barMenuItemActive&&barMenuItemFireActive(b,a.ctrlKey)}}function barMenuItemFireActive(a,b){var c=barMenuItemActive.wmsxMenuOption;barMenuItemSetActive(null),c&&!c.disabled&&(c.extension?extensionChangeDisabledWarning()||peripheralControls.processControlActivated(wmsx.PeripheralControls.EXTENSION_TOGGLE,b,a,c.extension):c.control&&(a=c.secSlot,closeAllOverlays(),peripheralControls.processControlActivated(c.control,b,a)))}function barMenuItemSetActive(a,b){a!==barMenuItemActive&&(barMenuItemActive&&barMenuItemActive.classList.remove("wmsx-hover"),a&&a.wmsxMenuOption?(barMenuItemActive=a,b&&controllersHub.hapticFeedback(),barMenuItemActive.classList.add("wmsx-hover")):barMenuItemActive=null,barMenuItemTouchActivation=b&&barMenuItemActive?wmsx.Util.performanceNow():void 0)}function barElementTapOrMouseDown(a,b,c){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES;var d=a.target;1===d.wmsxBarElementType?barButtonTapOrMousedown(d,a,b,c):2===d.wmsxBarElementType?barMenuItemTapOrMouseDown(d,a,c):hideBarMenu()}function barElementTouchMove(a){wmsx.Util.blockEvent(a);var b=a.changedTouches[0],c=b&&document.elementFromPoint(b.clientX,b.clientY);barButtonLongTouchTarget&&c!==barButtonLongTouchTarget&&barButtonLongTouchCancel(),2!==c.wmsxBarElementType&&c!==barButtonLongTouchTarget&&barMenuItemSetActive(null),1===c.wmsxBarElementType?barButtonHoverOver(c,a):2===c.wmsxBarElementType&&barMenuItemHoverOver(c,a)}function barElementTouchEndOrMouseUp(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,wmsx.Util.blockEvent(a),barButtonLongTouchCancel();var b=a.target;1===b.wmsxBarElementType?barButtonTouchEndOrMouseUp(a):2===b.wmsxBarElementType&&barMenuItemTouchEndOrMouseUp(a)}function createSettingsMenuOptions(){var a=[];return a.push({label:"Select Machine",clickModif:KEY_ALT_MASK,control:wmsx.PeripheralControls.SCREEN_OPEN_MACHINE_SELECT}),isMobileDevice?a.push({label:"Quick Options",clickModif:0,control:wmsx.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS}):(a.push({label:"Help & Settings",clickModif:0,control:wmsx.PeripheralControls.SCREEN_OPEN_SETTINGS}),a.push({label:"Quick Options",clickModif:KEY_CTRL_MASK,control:wmsx.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS})),isTouchDevice&&a.push({label:"Touch Setup",clickModif:KEY_CTRL_MASK|KEY_ALT_MASK,control:wmsx.PeripheralControls.SCREEN_OPEN_TOUCH_CONFIG,fullScreenOnly:!0}),isMobileDevice||a.push({label:"Defaults",clickModif:KEY_SHIFT_MASK,control:wmsx.PeripheralControls.SCREEN_DEFAULTS}),a}function defineSettingsMenuExtensions(){for(var a=settingsButton.wmsxMenu;a[0].extension;)a.shift();a[0].divider||a.unshift({label:"",divider:!0});for(var b=WMSX.EXTENSIONS_CONFIG,c=Object.keys(b).reverse(),d=0;dbuttonsBarInner.clientWidth?(barMenu.style.right=0,barMenu.style.left="auto",barMenu.style.transformOrigin="bottom right"):(d<0&&(d=0),barMenu.style.left=d+"px",barMenu.style.right="auto",barMenu.style.transformOrigin="bottom left"),showCursorAndBar(!0),barMenuActive=a,barMenu.style.display="inline-block",barMenu.wmsxTitle.focus()}}function refreshBarMenu(a){barMenu.wmsxTitle.innerHTML=a.wmsxTitle,barMenu.wmsxDefaultItem=null;for(var b,c=0,d=Math.min(a.length,BAR_MENU_MAX_ITEMS),e=wmsx.ScreenGUI.BAR_MENU_ITEM_HEIGHT+3,f=0;f=0&&!e[f].wmsxMenuOption);g>=0&&barMenuItemSetActive(e[f])}return wmsx.Util.blockEvent(a)}),buttonsBar.appendChild(barMenu)}function closePowerOnModals(){pasteDialog&&pasteDialog.hide(),textEntryDialog&&textEntryDialog.hide()}function closeAllOverlays(){hideBarMenu(),pasteDialog&&pasteDialog.hide(),textEntryDialog&&textEntryDialog.hide(),machineSelectDialog&&machineSelectDialog.hide(),diskSelectDialog&&diskSelectDialog.hide(),newHardDiskDialog&&newHardDiskDialog.hide(),saveStateDialog&&saveStateDialog.hide(),touchConfigDialog&&touchConfigDialog.hide(),quickOtionsDialog&&quickOtionsDialog.hide(),netPlayDialog&&netPlayDialog.hide(),cartFormatDialog&&cartFormatDialog.hide(),settingsDialog&&settingsDialog.hide()}function showLogoMessage(a,b,c,d){logoMessageActive||(closeAllOverlays(),d&&(afterMessageAction=d),logoMessageText.innerHTML=a,logoMessageOK.classList.toggle("wmsx-higher",!!c),logoMessageOKText.innerHTML=b||"OK",fsElement.classList.add("wmsx-logo-message-active"),logoMessageActive=!0,signalIsOn=!1,updateLogo())}function closeLogoMessage(a,b,c){if(c||controllersHub.hapticFeedbackOnTouch(a),!b&&(fsElement.classList.remove("wmsx-logo-message-active"),logoMessageActive=!1,afterMessageAction)){var d=afterMessageAction;afterMessageAction=null,d()}}function updateLogoScale(){if(logoMessageActive){var a=canvasOuter.clientWidth,b=Math.min(a/wmsx.ScreenGUI.LOGO_SCREEN_WIDTH,1);logoCenter.style.transform="translate(-50%, -50%) scale("+b.toFixed(4)+")"}else logoCenter.style.transform="translate(-50%, -50%)"}function setScrollMessage(a){fsElement.classList.toggle("wmsx-scroll-message",a),scrollMessageActive=a,a&&setTimeout(function(){setScrollMessage(!1)},5e3)}function readjustAll(a){if(readjustScreeSizeChanged(a)){if(isFullscreen){var b=readjustScreenSize.w>readjustScreenSize.h,c=virtualKeyboardMode&&updateKeyboardWidth(readjustScreenSize.w);buttonsBarDesiredWidth=b?virtualKeyboardMode?c.w:0:-1;var d=readjustScreenSize.h;b&&!virtualKeyboardMode||(d-=wmsx.ScreenGUI.BAR_HEIGHT+2),virtualKeyboardMode&&(d-=c.h+2),monitor.displayScale(aspectX,displayOptimalScaleY(readjustScreenSize.w,d))}else buttonsBarDesiredWidth=-1,monitor.displayScale(aspectX,scaleYBeforeUserFullscreen||displayDefaultScale());self.focus(),controllersHub.screenReadjustedUpdate()}readjustInterval&&wmsx.Util.performanceNow()-readjustRequestTime>=1e3&&(clearInterval(readjustInterval),readjustInterval=null)}function readjustScreeSizeChanged(a){var b=mainElement.parentElement.clientWidth,c=fsElementCenter.clientWidth,d=fsElementCenter.clientHeight;return!(!a&&readjustScreenSize.pw===b&&readjustScreenSize.w===c&&readjustScreenSize.h===d)&&(readjustScreenSize.pw=b,readjustScreenSize.w=c,readjustScreenSize.h=d,!0)}function displayOptimalScaleY(a,b){var c=b/targetHeight;return targetWidth*aspectX*c>a&&(c=a/(targetWidth*aspectX)),c}function setViewport(){if(isMobileDevice){if(void 0===viewPortOriginalContent&&(viewPortOriginalTag=document.querySelector("meta[name=viewport]"),viewPortOriginalContent=viewPortOriginalTag&&viewPortOriginalTag.content||null),viewportTag||(viewportTag=document.createElement("meta"),viewportTag.name="viewport",viewportTag.content="width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes",document.head.appendChild(viewportTag)),viewPortOriginalTag)try{document.head.removeChild(viewPortOriginalTag)}catch(a){}viewPortOriginalTag=null}}function restoreViewport(){if(isMobileDevice){if(!viewPortOriginalTag&&viewPortOriginalContent&&(viewPortOriginalTag=document.createElement("meta"),viewPortOriginalTag.name="viewport",viewPortOriginalTag.content=viewPortOriginalContent,document.head.appendChild(viewPortOriginalTag)),viewportTag)try{document.head.removeChild(viewportTag)}catch(a){}viewportTag=null}}function setPageVisibilityHandling(){function a(){logoMessageActive||(document.hidden?b=!machine.systemPause(!0):b&&machine.systemPause(!1))}var b;document.addEventListener("visibilitychange",a)}function extensionChangeDisabledWarning(){return!!WMSX.MEDIA_CHANGE_DISABLED&&(machine.showOSD("Extension change is disabled!",!0,!0),!0)}function setupFileLoaderDropTargets(){fileLoaderDropArea=document.getElementById("wmsx-drop-area"),fileLoaderDropAreaMessage=document.getElementById("wmsx-drop-area-message");var a,b,c,d;a=fsElement,c={element:a,openType:OPEN_TYPE.DISK,port:void 0,add:!0,mainEle:a,mes:"Add Disk(s) to Drive (auto-detect)",mesSec:"Add Disk(s) to Drive B Stack"},d={element:a,openType:OPEN_TYPE.DISK,port:void 0,files:!0,mainEle:a,mes:"Add Files to Drive (auto-detect)",mesSec:"Add Files to Disk in Drive B"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.AUTO,port:void 0,subAdd:c,subFiles:d,mes:"Auto detect media",mesSec:"Auto detect media (to Drive B / Cartridge 2)"},diskAButton.wmsxDropTarget=a=document.getElementById("wmsx-drop-drivea"),b=document.getElementById("wmsx-drop-drivea-add"),b.wmsxDropInfo=c={element:b,openType:OPEN_TYPE.DISK,port:0,add:!0,mainEle:a,mes:"Add Disk(s) to Drive A Stack"},b=document.getElementById("wmsx-drop-drivea-files"),b.wmsxDropInfo=d={element:b,openType:OPEN_TYPE.DISK,port:0,files:!0,mainEle:a,mes:"Add Files to Disk in Drive A"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.DISK,port:0,subAdd:c,subFiles:d,mes:"Load Disk(s) in Drive A"},diskBButton.wmsxDropTarget=a=document.getElementById("wmsx-drop-driveb"), -b=document.getElementById("wmsx-drop-driveb-add"),b.wmsxDropInfo=c={element:b,openType:OPEN_TYPE.DISK,port:1,add:!0,mainEle:a,mes:"Add Disk(s) to Drive B Stack"},b=document.getElementById("wmsx-drop-driveb-files"),b.wmsxDropInfo=d={element:b,openType:OPEN_TYPE.DISK,port:1,files:!0,mainEle:a,mes:"Add Files to Disk in Drive B"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.DISK,port:1,subAdd:c,subFiles:d,mes:"Load Disk(s) in Drive B"},diskHButton.wmsxDropTarget=a=document.getElementById("wmsx-drop-driveh"),b=document.getElementById("wmsx-drop-driveh-files"),b.wmsxDropInfo=d={element:b,openType:OPEN_TYPE.DISK,port:2,files:!0,mainEle:a,mes:"Add Files to Hard Disk"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.DISK,port:2,subFiles:d,mes:"Load Hard Disk"},a=document.getElementById("wmsx-drop-cart1"),a.wmsxDropInfo={element:a,openType:OPEN_TYPE.ROM,port:0,mes:"Load Cartride 1"},a=document.getElementById("wmsx-drop-cart2"),a.wmsxDropInfo={element:a,openType:OPEN_TYPE.ROM,port:1,mes:"Load Cartride 2"},a=document.getElementById("wmsx-drop-tape"),a.wmsxDropInfo={element:a,openType:OPEN_TYPE.TAPE,port:0,mes:"Load Cassette Tape"}}var self=this;this.connect=function(a){machine=a,monitor.connect(machine.getVideoOutput()),controllersSocket=machine.getControllersSocket(),cartridgeSocket=machine.getCartridgeSocket(),extensionsSocket=machine.getExtensionsSocket(),machineTypeSocket=machine.getMachineTypeSocket()},this.connectPeripherals=function(a,b,c,d,e,f,g,h){cartridgeSlot=a,fileLoader=b,fileLoader.registerForDnD(fsElement),fileLoader.registerForFileInputElement(fsElement),fileDownloader=c,fileDownloader.registerForDownloadElement(fsElement),machineControls=d,peripheralControls=e,controllersHub=f,controllersHub.setKeyInputElement(fsElement),controllersHub.setMouseInputElement(canvas),diskDrive=g,stateMedia=h},this.powerOn=function(){monitor.setDefaults(),updateLogo(),document.documentElement.classList.add("wmsx-started"),setPageVisibilityHandling(),this.focus(),WMSXFullScreenSetup.shouldStartInFullScreen()&&(setFullscreenState(!0),1===FULLSCREEN_MODE&&setEnterFullscreenByAPIOnFirstTouch())},this.powerOff=function(){document.documentElement.classList.remove("wmsx-started")},this.start=function(a){function b(){self.setFullscreen(!0),a()}!isMobileDevice||isBrowserStandalone||isFullscreen?a():wmsx.Util.isOfficialHomepage()?showLogoMessage("For "+(fullscreenAPIEnterMethod?"the best":"a full-screen")+' experience, use
the "Add to Home Screen" function
then launch from the Installed App',"NICE!",!1,b):showLogoMessage("For the best experience,
WebMSX will go full-screen","GO!",!0,b)},this.refresh=function(a,b,c){cursorHideFrameCountdown>0&&--cursorHideFrameCountdown<=0&&hideCursorAndBar(),signalIsOn||(signalIsOn=!0,updateLogo()),canvasContext||createCanvasContext(),canvasContext.drawImage(a,0,0,b,c,0,0,canvas.width,canvas.height),crtScanlines&&pixelHeight>1&&!debugMode&&canvasContext.drawImage(scanlinesImage,0,0,1,2*c,0,0,canvas.width,canvas.height)},this.videoSignalOff=function(){signalIsOn=!1,showCursorAndBar(),updateLogo()},this.mousePointerLocked=function(a){mousePointerLocked=a,mousePointerLocked?hideCursorAndBar():showCursorAndBar()},this.openHelp=function(){return self.openSettings("GENERAL"),!1},this.openAbout=function(){return self.openSettings("ABOUT"),!1},this.openSettings=function(a){closeAllOverlays(),settingsDialog||(settingsDialog=new wmsx.SettingsDialog(fsElementCenter,controllersHub,peripheralControls,machineTypeSocket)),settingsDialog.show(a)},this.openSaveStateDialog=function(a){closeAllOverlays(),saveStateDialog||(saveStateDialog=new wmsx.SaveStateDialog(fsElementCenter,machineControls,peripheralControls,stateMedia)),saveStateDialog.show(a)},this.openDiskSelectDialog=function(a,b,c){closeAllOverlays(),diskSelectDialog||(diskSelectDialog=new wmsx.DiskSelectDialog(fsElementCenter,diskDrive,peripheralControls,fileLoader)),diskSelectDialog.show(a,b,c)},this.openNewHardDiskDialog=function(a,b){closeAllOverlays(),newHardDiskDialog||(newHardDiskDialog=new wmsx.NewHardDiskDialog(fsElementCenter,peripheralControls)),newHardDiskDialog.show(a,b)},this.openMachineSelectDialog=function(){closeAllOverlays(),machineSelectDialog||(machineSelectDialog=new wmsx.MachineSelectDialog(fsElementCenter,machineTypeSocket,peripheralControls)),machineSelectDialog.show()},this.openTouchConfigDialog=function(){closeAllOverlays(),virtualKeyboardMode&&setVirtualKeyboard(0),touchConfigDialog||(touchConfigDialog=new wmsx.TouchConfigDialog(fsElement,canvasOuter,controllersHub,peripheralControls)),touchConfigDialog.show()},this.openQuickOptionsDialog=function(){closeAllOverlays(),virtualKeyboardMode&&setVirtualKeyboard(0),quickOtionsDialog||(quickOtionsDialog=new wmsx.QuickOptionsDialog(fsElementCenter,machineControls,peripheralControls)),quickOtionsDialog.show()},this.openNetPlayDialog=function(){closeAllOverlays(),netPlayDialog||(netPlayDialog=new wmsx.NetPlayDialog(room,fsElementCenter)),netPlayDialog.show()},this.openCartridgeFormatDialog=function(a,b){closeAllOverlays(),cartFormatDialog||(cartFormatDialog=new wmsx.CartridgeFormatDialog(this,fsElementCenter,machine,cartridgeSlot)),cartFormatDialog.show(a,b)},this.openLoadFileDialog=function(){return peripheralControls.processControlActivated(wmsx.PeripheralControls.AUTO_LOAD_FILE),!1},this.executeTextCopy=function(){if(!signalIsOn)return this.showOSD("Screen Text Copy only available when Power is ON!",!0,!0);if(!document.queryCommandSupported||!document.queryCommandSupported("copy"))return this.showOSD("Copy to Clipboard not supported by the browser!",!0,!0);var a=monitor.getScreenText();if(!a)return this.showOSD("Screen Text Copy not available in this Screen!",!0,!0);copyTextArea||setupCopyTextArea(),copyTextArea.innerHTML=a,copyTextArea.select(),document.execCommand("copy")?this.showOSD("Screen text copied to Clipboard",!0):this.showOSD("Copy to Clipboard not supported by the browser!",!0,!0),this.focus()},this.toggleTextPasteDialog=function(){return signalIsOn?(pasteDialog||(pasteDialog=new wmsx.PasteDialog(canvasOuter,this,machineControls)),pasteDialog.toggle(),!1):this.showOSD("Text Paste only available when Power is ON!",!0,!0)},this.toggleTextEntryDialog=function(){return signalIsOn?(virtualKeyboardMode&&setVirtualKeyboard(0),textEntryDialog||(textEntryDialog=new wmsx.TextEntryDialog(fsElementCenter,this,machineControls)),textEntryDialog.toggle(),!1):this.showOSD("Text Entry only available when Power is ON!",!0,!0)},this.toggleMenuByKey=function(){barMenuActive?hideBarMenu():(closeAllOverlays(),showBarMenu(barMenuSystem,!0))},this.toggleVirtualKeyboard=function(){setVirtualKeyboard((virtualKeyboardMode+1)%3)},this.getScreenCapture=function(){if(signalIsOn)return canvas.toDataURL("image/png")},this.saveScreenCapture=function(){var a=this.getScreenCapture();a&&fileDownloader.startDownloadURL("WMSX Screen.png",a,"WebMSX Screen Capture")},this.displayMetrics=function(a,b){targetWidth===a&&targetHeight===b||(targetWidth=a,targetHeight=b,updateCanvasContentSize(),isFullscreen?this.requestReadjust(!0):updateScale())},this.displayPixelMetrics=function(a,b){pixelWidth===a&&pixelHeight===b||(pixelWidth=a,pixelHeight=b,controllersHub&&controllersHub.setScreenPixelScale(pixelWidth*scaleY*aspectX,pixelHeight*scaleY))},this.displayScale=function(a,b){aspectX=a,scaleY=b,updateScale(),controllersHub&&controllersHub.setScreenPixelScale(pixelWidth*scaleY*aspectX,pixelHeight*scaleY)},this.getMonitor=function(){return monitor},this.showOSD=function(a,b,c){if(osdTimeout&&clearTimeout(osdTimeout),!a)return osd.style.transition="all 0.15s linear",osd.style.top="-29px",osd.style.opacity=0,void(osdShowing=!1);!b&&osdShowing||(osd.innerHTML=a,osd.style.color=c?"rgb(255, 60, 40)":"rgb(0, 255, 0)"),osd.style.transition="none",osd.style.top="12px",osd.style.opacity=1,osdShowing=!0;var d=canvasOuter.clientWidth-30,e=osd.clientWidth,f=e3&&(b=-2),setCRTFilter(b);var c=null===crtFilterEffective?"browser default":crtFilterEffective<1?"OFF":"level "+crtFilterEffective;this.showOSD("CRT Filter: "+(-1===crtFilter?"AUTO ("+c+")":c),!0),WMSX.userPreferences.current.crtFilter!==crtFilter&&(WMSX.userPreferences.current.crtFilter=crtFilter,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())},this.crtFilterSetDefault=function(){var a=WMSX.userPreferences.current.crtFilter;setCRTFilter(-3!==WMSX.SCREEN_FILTER_MODE?WMSX.SCREEN_FILTER_MODE:null!==a&&a>-3?a:-1)},this.crtScanlinesToggle=function(a){var b;if(a?(b=crtScanlines-1)<0&&(b=10):(b=crtScanlines+1)>10&&(b=0),!crtScanlines&&b){for(var c=[.5,.75,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5],d=0;d=c[d];)++d;monitor.displayScale(aspectX,c[d-1])}setCRTScanlines(b),this.showOSD("CRT Scanlines: "+(0===crtScanlines?"OFF":10*crtScanlines+"%"),!0),WMSX.userPreferences.current.crtScanlines!==crtScanlines&&(WMSX.userPreferences.current.crtScanlines=crtScanlines,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())},this.crtScanlinesSetDefault=function(){var a=WMSX.userPreferences.current.crtScanlines;setCRTScanlines(-1!==WMSX.SCREEN_CRT_SCANLINES?WMSX.SCREEN_CRT_SCANLINES:null!==a&&a>-1?a:0)},this.crtPhosphorToggle=function(a){var b;a?(b=crtPhosphor-1)<-1&&(b=1):(b=crtPhosphor+1)>1&&(b=-1),setCRTPhosphor(b);var c=1===crtPhosphorEffective?"ON":"OFF";this.showOSD("CRT Phosphor: "+(-1===crtPhosphor?"AUTO ("+c+")":c),!0)},this.crtPhosphorSetDefault=function(){setCRTPhosphor(WMSX.SCREEN_CRT_PHOSPHOR)},this.getControlReport=function(a){switch(a){case wmsx.PeripheralControls.SCREEN_CRT_FILTER:return{label:-2===crtFilter?"Browser":-1===crtFilter?"Auto":0===crtFilter?"OFF":"Level "+crtFilter,active:crtFilter>=0};case wmsx.PeripheralControls.SCREEN_CRT_SCANLINES:return{label:0===crtScanlines?"OFF":10*crtScanlines+"%",active:crtScanlines>0}}return{label:"Unknown",active:!1}},this.displayToggleFullscreen=function(a){-2!==FULLSCREEN_MODE&&(isFullscreen||isMobileDevice||(scaleYBeforeUserFullscreen=scaleY),this.setFullscreen(!isFullscreen,a))},this.setFullscreen=function(a,b){a?!b&&fullscreenAPIEnterMethod?enterFullScreenByAPI():setFullscreenState(!0):isFullScreenByAPI()?exitFullScreenByAPI():setFullscreenState(!1)},this.focus=function(){canvas.focus()},this.machinePowerAndUserPauseStateUpdate=function(a,b){powerButton.style.backgroundPosition=powerButton.wmsxBX+"px "+barButtonBackYOffsets[a?2:1]+"px",2===room.netPlayMode?(powerButton.wmsxMenu[5].disabled=powerButton.wmsxMenu[6].disabled=powerButton.wmsxMenu[8].disabled=powerButton.wmsxMenu[9].disabled=!0,powerButton.wmsxMenu[1].disabled=!a):(powerButton.wmsxMenu[5].disabled=powerButton.wmsxMenu[6].disabled=powerButton.wmsxMenu[8].disabled=!1,powerButton.wmsxMenu[1].disabled=powerButton.wmsxMenu[9].disabled=!a)},this.diskDrivesMediaStateUpdate=function(a){var b=2===a?diskHButton:1===a?diskBButton:diskAButton,c=diskDrive.getDriveStack(a);if(b.title=diskDrive.getCurrentDiskDesc(a),a<2?(b.wmsxMenu[8].label="Remove "+(c.length>1?"Stack":"Disk"),2===room.netPlayMode?b.wmsxMenu[0].disabled=b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=b.wmsxMenu[4].disabled=b.wmsxMenu[5].disabled=b.wmsxMenu[6].disabled=b.wmsxMenu[7].disabled=b.wmsxMenu[8].disabled=!0:(b.wmsxMenu[0].disabled=b.wmsxMenu[4].disabled=b.wmsxMenu[5].disabled=!1,b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=c.length>=wmsx.FileDiskDrive.MAX_STACK,b.wmsxMenu[6].disabled=c.length<=1,b.wmsxMenu[7].disabled=b.wmsxMenu[8].disabled=0===c.length)):2===room.netPlayMode?b.wmsxMenu[0].disabled=b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=b.wmsxMenu[4].disabled=b.wmsxMenu[5].disabled=b.wmsxMenu[6].disabled=!0:(b.wmsxMenu[0].disabled=b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=b.wmsxMenu[4].disabled=!1,b.wmsxMenu[5].disabled=b.wmsxMenu[6].disabled=0===c.length),diskSelectDialog&&diskSelectDialog.diskDrivesMediaStateUpdate(a),c.length>1){var d=diskDrive.getCurrentDiskNum(a)+1;b.wmsxMenu.wmsxTitle=diskDrive.getDriveName(a)+"  ("+d+"/"+c.length+")"}else b.wmsxMenu.wmsxTitle=diskDrive.getDriveName(a)},this.diskDrivesMotorStateUpdate=function(a,b,c,d,e,f,g,h,i){diskAButton.style.backgroundPosition=diskAButton.wmsxBX+"px "+mediaButtonBackYOffsets[b?3:a?c?2:1:0]+"px",diskBButton.style.backgroundPosition=diskBButton.wmsxBX+"px "+mediaButtonBackYOffsets[e?3:d?f?2:1:0]+"px",diskHButton.style.backgroundPosition=diskHButton.wmsxBX+"px "+mediaButtonBackYOffsets[h?3:g?i?2:1:0]+"px"},this.diskInterfacesStateUpdate=function(a,b){peripheralControls.diskInterfacesStateUpdate(a,b),diskAButton.classList.toggle("wmsx-hidden",!a),diskAButton.wmsxDropTarget.classList.toggle("wmsx-disabled",!a),diskAButton.wmsxDropTarget.wmsxDropInfo.disabled=!a,diskAButton.wmsxMenu.wmsxHidden=!a,diskBButton.classList.toggle("wmsx-hidden",!a),diskBButton.wmsxDropTarget.classList.toggle("wmsx-disabled",!a),diskBButton.wmsxDropTarget.wmsxDropInfo.disabled=!a,diskBButton.wmsxMenu.wmsxHidden=!a,diskHButton.classList.toggle("wmsx-hidden",!b),diskHButton.wmsxDropTarget.classList.toggle("wmsx-disabled",!b),diskHButton.wmsxDropTarget.wmsxDropInfo.disabled=!b;var c=diskHButton.wmsxMenu;c.wmsxHidden=!b;var d=diskDrive.isHardDriveFirst();diskHButton.classList.toggle("wmsx-hd-first",!!d),diskHButton.wmsxDropTarget.classList.toggle("wmsx-hd-first",!!d);var e=d?1:4;barMenus[1]=1===e?c:null,barMenus[4]=4===e?c:null,c.wmsxMenuIndex=e},this.extensionsAndCartridgesStateUpdate=function(){var a=cartridgeSocket.cartridgeInserted(0),b=cartridgeSocket.cartridgeInserted(1);cartridge1Button.title="Cartridge 1"+(a?": "+(a.format.internal?a.format.desc:(a.rom.source||"")+" ["+a.format.name+"]"):""),cartridge2Button.title="Cartridge 2"+(b?": "+(b.format.internal?b.format.desc:(b.rom.source||"")+" ["+b.format.name+"]"):"");var c=a&&a.getDataDesc();cartridge1Button.wmsxMenu[2].label="Load "+(c||"Data")+" File",cartridge1Button.wmsxMenu[3].label="Save "+(c||"Data")+" File",2===room.netPlayMode?cartridge1Button.wmsxMenu[0].disabled=cartridge1Button.wmsxMenu[1].disabled=cartridge1Button.wmsxMenu[2].disabled=cartridge1Button.wmsxMenu[3].disabled=cartridge1Button.wmsxMenu[4].disabled=!0:(cartridge1Button.wmsxMenu[0].disabled=!1,cartridge1Button.wmsxMenu[2].disabled=cartridge1Button.wmsxMenu[3].disabled=!c,cartridge1Button.wmsxMenu[1].disabled=!a||a.format.internal,cartridge1Button.wmsxMenu[4].disabled=!a),c=b&&b.getDataDesc(),cartridge2Button.wmsxMenu[2].label="Load "+(c||"Data")+" File",cartridge2Button.wmsxMenu[3].label="Save "+(c||"Data")+" File",2===room.netPlayMode?cartridge2Button.wmsxMenu[0].disabled=cartridge2Button.wmsxMenu[1].disabled=cartridge2Button.wmsxMenu[2].disabled=cartridge2Button.wmsxMenu[3].disabled=cartridge2Button.wmsxMenu[4].disabled=!0:(cartridge2Button.wmsxMenu[0].disabled=!1,cartridge2Button.wmsxMenu[2].disabled=cartridge2Button.wmsxMenu[3].disabled=!c,cartridge2Button.wmsxMenu[1].disabled=!b||b.format.internal,cartridge2Button.wmsxMenu[4].disabled=!b),this.cartridgesModifiedStateUpdate(a,b),refreshSettingsMenuForExtensions()},this.cartridgesModifiedStateUpdate=function(a,b){cartridge1Button.style.backgroundPosition=cartridge1Button.wmsxBX+"px "+mediaButtonBackYOffsets[a?a.dataModified()?2:1:0]+"px",cartridge2Button.style.backgroundPosition=cartridge2Button.wmsxBX+"px "+mediaButtonBackYOffsets[b?b.dataModified()?2:1:0]+"px"},this.tapeStateUpdate=function(a,b,c){tapeButton.title="Cassette Tape"+(a?": "+a:""), -tapeButton.style.backgroundPosition=tapeButton.wmsxBX+"px "+mediaButtonBackYOffsets[b?3:a?c?2:1:0]+"px",2===room.netPlayMode?(tapeButton.wmsxMenu[0].disabled=tapeButton.wmsxMenu[1].disabled=tapeButton.wmsxMenu[2].disabled=tapeButton.wmsxMenu[4].disabled=tapeButton.wmsxMenu[5].disabled=!0,tapeButton.wmsxMenu[3].disabled=!a):(tapeButton.wmsxMenu[0].disabled=tapeButton.wmsxMenu[1].disabled=!1,tapeButton.wmsxMenu[2].disabled=tapeButton.wmsxMenu[3].disabled=tapeButton.wmsxMenu[4].disabled=tapeButton.wmsxMenu[5].disabled=!a)},this.machineTypeStateUpdate=function(){machineSelectDialog&&machineSelectDialog.machineTypeStateUpdate(),refreshSettingsMenuForMachineType()},this.keyboardSettingsStateUpdate=function(){settingsDialog&&settingsDialog.keyboardSettingsStateUpdate()},this.controllersSettingsStateUpdate=function(){settingsDialog&&settingsDialog.controllersSettingsStateUpdate(),touchConfigDialog&&touchConfigDialog.controllersSettingsStateUpdate()},this.mouseActiveCursorStateUpdate=function(a){cursorType=a?'url("'+wmsx.Images.urls.mouseCursor+'"), auto':"auto",fsElement.style.cursor=cursorShowing?cursorType:"none",showCursorAndBar()},this.touchControlsActiveUpdate=function(a,b){touchControlsActive===a&&touchControlsDirBig===b||(touchControlsActive=a,touchControlsDirBig=b,isFullscreen&&(touchControlsActive&&controllersHub.setupTouchControlsIfNeeded(fsElementCenter),this.requestReadjust(!0)))},this.roomNetPlayStatusChangeUpdate=function(a){netPlayDialog&&netPlayDialog.isVisible()||closeAllOverlays(),netPlayDialog&&netPlayDialog.roomNetPlayStatusChangeUpdate(a),netplayButton.classList.toggle("wmsx-hidden",room.netPlayMode<1)},this.quickOptionsControlsStateUpdate=function(){quickOtionsDialog&&quickOtionsDialog.quickOptionsControlsStateUpdate()},this.machineTurboModesStateUpdate=function(){quickOtionsDialog&&quickOtionsDialog.machineTurboModesStateUpdate();var a=machine.cpu.getCPUTurboMulti();turboButton.classList.toggle("wmsx-hidden",1===a),1!==a&&(turboButton.textContent=a+"x")},this.speakerUnlockStateUpdate=function(a){if(unmuteMessage.classList.toggle("wmsx-show",!a),!a){var b=canvasOuter.clientWidth-30,c=unmuteMessage.clientWidth,d=c
Help & Settings
GENERAL
MEDIA
KEYBOARD
PORTS
ABOUT
F11
Power
Shift
 + 
F11
Reset
Alt
 + 
T
CPU Turbo Mode
Alt
 + 
Y
VDP Turbo Mode
Alt
 + 
Q
NTSC/PAL
Alt
 + 
E
CRT Filters
Alt
 + 
R
CRT Scanlines
Alt
 + 
D
Debug Modes
Alt
 + 
S
Sprite Modes
+
Shift
Go back Modes
Alt
 + 
G
Capture Screen
Alt
 + 
0 - 9
Load State
Ctrl
 
Alt
 + 
0 - 9
Save State
Ctrl
 
Alt
 + 
F12
Save State File
F12
  /  
Shift
 + 
F12
Fast / Slow Speed
Shift
 
Alt
 + 
Arrows
Adjust Speed
Alt
 + 
P
Toggle Pause
Alt
 + 
O
 / 
F
Next Frame
Alt
 + 
Enter
Full Screen
Ctrl
 
Alt
 + 
Arrows
Screen Size / Width
Alt
 + 
Backspace
Defaults
Media Commands:
F6
Load Drive A / B
F7
Load Cartridge 1 / 2
F8
Load Hard Drive / Tape
Ctrl
 + 
F11
Open File (autodetect)
Modifiers for Media Commands:
+
Shift
Drive B / Slot 2 / Tape
+
Ctrl
Load Empty Media
+
Alt
Remove Media
+
Ctrl
 
Alt
Save Media File
Right-Drag / Ctrl-Click: No Auto-Reset
Drag & Drop Files or URLs:
+
Ctrl
  Load Image Files and Add Disks to Drive (A, B) Stack (up to 10 Disks)
+
Alt
  Add Files or ZIP Contents do Disk
+
Ctrl
Alt
Don't expand ZIP Contents
Ctrl
 
Alt
 + 
Home
Rewind Tape
Ctrl
 
Alt
 + 
Pg Up / Dn
Seek Tape
Alt
 + 
Pg Up / Dn
Select Disk (A, B)
Shift
 
Ctrl
 
Alt
 + 
F12
Auto-Run Cassette program at current Tape position
Alt
 + 
C
Copy Screen Text
Alt
 + 
H
Adjust Turbo Fire speed
Alt
 + 
V
Open Text Paste box
Alt
 + 
B
Open Text Input box
Alt
 + 
L
Toggle Host Keyboard Layout
MSX Language: English
  • AUTO
Alt
 + 
J
Alt
 + 
K
Alt
 + 
M
Alt
 + 
H
  • Toggle Joysticks mode
    AUTO
  • Toggle Joykeys mode
    DISABLED
  • Toggle Mouse mode
    AUTO
  • Adjust Turbo Fire speed
    OFF
PORT 1
NO DEVICE
A
B
X
Y
L
R
BACK
START
PORT 2
NO DEVICE
A
B
X
Y
L
R
BACK
START
WebMSX  -  version '+WMSX.VERSION+'
'+atob("Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==")+"
"+atob("PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd2VibXN4Lm9yZyI+aHR0cHM6Ly93ZWJtc3gub3JnPC9hPg==")+'
Control mapped to:
' -},wmsx.SettingsGUI.css=function(){ -return'#wmsx-modal * { outline: none; box-sizing: border-box; } #wmsx-modal { position: absolute; overflow: hidden; width: 600px; height: 0; opacity: 0; visibility: hidden; top: 22px; left: 29px; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: auto; z-index: 9; } #wmsx-modal.wmsx-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: 440px; visibility: visible; opacity: 1; } #wmsx-modal .wmsx-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #wmsx-modal .wmsx-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #wmsx-modal .wmsx-link:hover { outline: 1px solid; } .wmsx-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 43%); } .wmsx-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .wmsx-hotkey .wmsx-desc { display: inline-block; line-height: 21px; } .wmsx-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .wmsx-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .wmsx-footer { position: absolute; bottom: 13px; width: 543px; margin-top: 16px; text-align: center; } #wmsx-modal .wmsx-quick-options-list { margin: 1px 0 0; color: inherit; } #wmsx-modal .wmsx-quick-options-list > li { margin: 0; } #wmsx-modal .wmsx-quick-options-list > li > * { height: 25px; line-height: 25px; font-size: inherit; } #wmsx-modal .wmsx-control { width: 180px; font-weight: bold; background: rgb(243, 243, 243); border-radius: 3px; box-shadow: 1px 1px 1px rgba(0, 0, 0, .27) } #wmsx-modal .wmsx-control > button { background: white; border-color: hsl(0, 0%, 80%); } #wmsx-modal .wmsx-control > button::after { top: 6px; } #wmsx-modal .wmsx-control > button.wmsx-control-dec::after { left: 3px; border-right-color: hsl(0, 0%, 55%); } #wmsx-modal .wmsx-control > button.wmsx-control-inc::after { right: 3px; border-left-color: hsl(0, 0%, 55%); } #wmsx-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #wmsx-menu #wmsx-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #wmsx-menu #wmsx-back:hover { background: rgba(0, 0, 0, .12); } .wmsx-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .wmsx-back-arrow:before { content: ""; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .wmsx-back-arrow:after { content: ""; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #wmsx-menu .wmsx-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-menu .wmsx-items { position: relative; width: 80%; height: 39px; margin: 0 auto; font-weight: 600; } #wmsx-menu .wmsx-item { float: left; width: 20%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #wmsx-menu .wmsx-selected { color: hsl(358, 67%, 46%); } #wmsx-menu #wmsx-menu-selection { position: absolute; left: 0; bottom: 0; width: 20%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #wmsx-content { position: relative; left: 0; width: 3000px; height: 362px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #wmsx-general, #wmsx-inputs, #wmsx-media, #wmsx-ports, #wmsx-about { position: absolute; width: 600px; height: 100%; box-sizing: border-box; } #wmsx-general { padding-top: 13px; padding-left: 36px; } #wmsx-general .wmsx-left { float: left; width: 248px; } #wmsx-general .wmsx-left .wmsx-command { width: 105px; } #wmsx-general .wmsx-right { float: left; } #wmsx-general .wmsx-right .wmsx-command { width: 160px; } #wmsx-media { left: 600px; } #wmsx-media { padding-top: 8px; padding-left: 32px; } #wmsx-media .wmsx-top-left { float: left; width: 287px; } #wmsx-media .wmsx-top-right { float: left; height: 154px; } #wmsx-media .wmsx-middle-left { float: left; width: 287px; } #wmsx-media .wmsx-middle-right { float: left; margin-top: 54px; } #wmsx-media .wmsx-bottom-left { float: left; width: 298px; } #wmsx-media .wmsx-bottom-right { float: left; } #wmsx-media .wmsx-top-left .wmsx-command { width: 101px; } #wmsx-media .wmsx-top-right .wmsx-command { width: 96px; } #wmsx-media .wmsx-middle-right .wmsx-command { width: 84px; } #wmsx-media .wmsx-bottom-left .wmsx-command { width: 174px; } #wmsx-media .wmsx-bottom-right .wmsx-command { width: 131px; } #wmsx-media .wmsx-bottom .wmsx-command { width: 174px; } #wmsx-inputs { left: 1200px; padding: 12px 0 0 33px; } #wmsx-inputs .wmsx-left { float: left; width: 290px; } #wmsx-inputs .wmsx-command { width: 85px; } #wmsx-inputs .wmsx-bottom { margin-top: 18px; } #wmsx-inputs .wmsx-bottom .wmsx-hotkey { display: inline-block; width: 280px; margin-bottom: 2px; vertical-align: bottom; } #wmsx-inputs .wmsx-bottom .wmsx-right { display: inline-block; width: 251px; text-align: right; } #wmsx-inputs .wmsx-bottom .wmsx-heading { display: inline-block; width: 180px; margin-bottom: 2px; text-align: center; } #wmsx-inputs #wmsx-inputs-msx-lang { padding: 0 5px 5px 0; } #wmsx-inputs-keyboard-name { color: hsl(228, 90%, 40%); } #wmsx-keyboard { position: relative; top: 2px; width: 535px; height: 174px; padding: 12px 0 0 13px; margin-top: 5px; background: hsl(0, 0%, 25%); border-radius: 1px 1px 0 0; box-sizing: border-box; box-shadow: 0 1px 0 1px hsl(0, 0%, 20%), 0 3px 4px 1px hsl(0, 0%, 40%); } #wmsx-ports { left: 1800px; padding: 13px 0 0 27px; } #wmsx-ports .wmsx-left { float: left; width: 126px; padding-left: 32px; } #wmsx-ports .wmsx-command { width: 91px; } #wmsx-ports .wmsx-hotkey { height: 31px; } #wmsx-ports .wmsx-right { float: left; width: 375px; } #wmsx-ports .wmsx-right .wmsx-quick-options-list > li { margin: 0 0 6px; } #wmsx-ports .wmsx-bottom { width: 546px; text-align: center; clear: both; } #wmsx-ports .wmsx-bottom-left, #wmsx-ports .wmsx-bottom-right { display: inline-block; height: 162px; margin-top: 15px; vertical-align: top; text-align: center; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 32%); } #wmsx-ports .wmsx-device-title { margin-top: 11px; height: 12px; font-size: 12px; line-height: 12px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #wmsx-ports .wmsx-joystick-device .wmsx-joy, #wmsx-ports .wmsx-joykeys-device .wmsx-joy { display: block; } #wmsx-ports .wmsx-mouse-device .wmsx-mouse { display: block; } #wmsx-ports .wmsx-touch-device .wmsx-touch { display: block; } #wmsx-ports .wmsx-none-device .wmsx-none { display: block; } #wmsx-ports-joysticks-mode, #wmsx-ports .wmsx-joystick-device .wmsx-device-title { color: hsl(228, 90%, 40%) } #wmsx-ports-joykeys-mode, #wmsx-ports .wmsx-joykeys-device .wmsx-device-title { color: hsl(0, 90%, 43%); } #wmsx-ports-mouse-mode, #wmsx-ports .wmsx-mouse-device .wmsx-device-title { color: hsl(120, 100%, 30%); } #wmsx-ports-turbofire-speed { color: hsl(0, 0%, 30%); } #wmsx-ports .wmsx-touch-device, #wmsx-ports .wmsx-touch-device .wmsx-device-title { color: hsl(167, 100%, 31%); } #wmsx-ports .wmsx-joykeys-device .wmsx-virtual { opacity: 0.33; } #wmsx-ports .wmsx-joykeys-device .wmsx-joy-button.wmsx-virtual { background: hsl(0, 0%, 75%); box-shadow: 0 3px 0 0 hsl(0, 0%, 60%), 0 3px 0 1px hsl(0, 0%, 40%); } #wmsx-ports .wmsx-joykeys-device .wmsx-joy-hs.wmsx-virtual { display: none; } #wmsx-ports .wmsx-joy { display: none; position: relative; top: 14px; width: 252px; font-weight: bold; text-align: center; vertical-align: top; box-sizing: border-box; } #wmsx-ports-device1 .wmsx-joy { margin-right: 8px; } #wmsx-ports-device2 .wmsx-joy { margin-left: 8px; } .wmsx-joy-logo, .wmsx-mouse-logo { position: absolute; background: url("data:image/png;base64,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"); } .wmsx-joy .wmsx-joy-trig { position: absolute; top: -6px; width: 45px; height: 40px; background: hsl(0, 0%, 68%); border-radius: 5px; box-shadow: inset 1px 1px hsl(0, 0%, 90%), 0 2px 2px 2px hsl(0, 0%, 47%); } .wmsx-joy .wmsx-joy-L { left: 25px; border-top-left-radius: 16px; } .wmsx-joy .wmsx-joy-R { right: 25px; border-top-right-radius: 16px; } .wmsx-joy .wmsx-joy-middle { position: absolute; left: 2px; right: 2px; height: 85px; background: white; background: linear-gradient(hsl(0, 0%, 94%), white, white, hsl(0, 0%, 93%)); border-radius: 50px 50px 40px 40px; box-shadow: 0 5px 0 0 hsl(0, 0%, 78%), 0 1px 2px 1px hsl(0, 0%, 73%), 0 6px 4px 1px hsl(0, 0%, 40%); } .wmsx-joy-logo { top: 17px; left: 103px; width: 46px; height: 14px; } .wmsx-joy .wmsx-joy-outleft, .wmsx-joy .wmsx-joy-outright { position: absolute; width: 100px; height: 97px; background: white; border-radius: 100%; transform-origin: 50px 50px; transform: rotate(6deg); box-shadow: 0 5px 0 -1px hsl(0, 0%, 78%), 0 6px 0 -1px hsl(0, 0%, 78%), -1px 8px 2px -2px hsl(0, 0%, 48%), 0 9px 4px -2px hsl(0, 0%, 36%); } .wmsx-joy .wmsx-joy-outright { right: 0; transform: rotate(-6deg); box-shadow: 0 5px 0 -1px hsl(0, 0%, 78%), 0 6px 0 -1px hsl(0, 0%, 78%), 1px 8px 2px -2px hsl(0, 0%, 48%), 0 9px 4px -2px hsl(0, 0%, 36%); } .wmsx-joy .wmsx-joy-left, .wmsx-joy .wmsx-joy-right { position: absolute; top: 10px; width: 80px; height: 78px; background: hsl(0, 0%, 87%); border: 1px solid hsl(0, 0%, 76%); border-right: none; border-bottom: none; border-radius: 100%; box-sizing: border-box; } .wmsx-joy .wmsx-joy-left { left: 10px; } .wmsx-joy .wmsx-joy-left:before { content: ""; position: absolute; top: 9px; left: 10px; width: 58px; height: 58px; background: hsl(0, 0%, 77%); border-radius: 1000px; box-sizing: border-box; } .wmsx-joy .wmsx-joy-right { right: 10px; } .wmsx-joy .wmsx-joy-right:before { content: ""; position: absolute; top: 20px; right: 16px; width: 27px; height: 57px; background: hsl(0, 0%, 77%); border-radius: 1000px; box-sizing: border-box; transform: rotate(45deg); } .wmsx-joy .wmsx-joy-dir { position: absolute; color: hsl(0, 0%, 95%); background: hsl(0, 0%, 49%); border: 1px solid hsl(0, 0%, 64%); border-right-color: hsl(0, 0%, 42%); border-bottom-color: hsl(0, 0%, 35%); border-radius: 2px 2px 0 0; box-shadow: 0 3px 1px hsl(0, 0%, 40%), 0 3px 0 1px hsl(0, 0%, 15%); box-sizing: border-box; } .wmsx-joy .wmsx-joy-dirh { top: 28px; left: 16px; width: 46px; height: 14px; } .wmsx-joy .wmsx-joy-dirv { top: 12px; left: 32px; width: 14px; height: 45px; } .wmsx-joy .wmsx-joy-dir-center { position: absolute; top: 29px; left: 30px; width: 18px; height: 12px; background: hsl(0, 0%, 49%); } .wmsx-joy .wmsx-joy-dir-center:after { content: ""; position: absolute; top: 2px; left: 4px; height: 8px; width: 8px; border-radius: 1000px; box-shadow: inset 0 0 6px hsl(0, 0%, 36%), inset 1px 1px 2px -1px hsl(0, 0%, 36%), 1px 1px 0 hsl(0, 0%, 65%); } .wmsx-joy-button { position: relative; display: inline-block; top: -1px; min-width: 19px; height: 19px; margin: 0 1px; font-size: 12px; line-height: 14px; padding-top: 3px; color: hsl(0, 0%, 97%); background: hsl(0, 00%, 54%); border-radius: 100%; box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(0, 0%, 40%), 0 3px 0 1px hsl(0, 0%, 15%); box-sizing: border-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-joy-button.wmsx-square { top: -2px; min-width: 18px; height: 18px; font-size: 11px; border-radius: 1px 1px 0 0; padding: 2px 5px 0; box-shadow: inset 1px 1px hsl(0, 0%, 64%), inset -1px -1px hsl(0, 0%, 35%), 0 3px 0 0 hsl(0, 0%, 40%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-A { position: absolute; top: 46px; left: 29px; background: hsl(132, 90%, 41%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(127, 90%, 30%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-B { position: absolute; top: 26px; left: 49px; background: hsl(0, 94%, 63%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(0, 90%, 43%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-X { position: absolute; top: 26px; left: 9px; background: hsl(234, 80%, 66%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(234, 80%, 47%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-Y { position: absolute; top: 6px; left: 29px; background: hsl(58, 100%, 44%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.06), 0 3px 0 0 hsl(56, 100%, 33%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-center .wmsx-joy-button { position: absolute; top: 43px; width: 18px; height: 09px; color: hsl(0, 0%, 58%); border-radius: 1000px; background: hsl(0, 0%, 82%); box-shadow: inset 0 1px 1px hsl(0, 0%, 70%), 0 2px 0 0 hsl(0, 0%, 62%), 0 2px 0 1px hsl(0, 0%, 30%); } .wmsx-joy .wmsx-joy-center .wmsx-joy-BACK { left: 103px; border-top-right-radius: 1px; border-bottom-right-radius: 1px; } .wmsx-joy .wmsx-joy-center .wmsx-joy-START { right: 103px; border-top-left-radius: 1px; border-bottom-left-radius: 1px; } .wmsx-joy-hs { position: absolute; border: 1px solid transparent; border-radius: 1000px; box-sizing: border-box; cursor: pointer; } .wmsx-joy-hs.wmsx-joy-hs-unmapped { color: rgb(30, 30, 30); -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } .wmsx-joy-hs-UP, .wmsx-joy-hs-DOWN, .wmsx-joy-hs-LEFT, .wmsx-joy-hs-RIGHT { width: 26px; height: 25px; padding-top: 6px; font-size: 10px; line-height: 10px; color: hsl(0, 0%, 95%); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-joy-hs-UP { top: 18px; left: 37px; padding-top: 7px; } .wmsx-joy-hs-DOWN { top: 51px; left: 37px; padding-top: 4px; } .wmsx-joy-hs-LEFT { top: 34px; left: 21px; } .wmsx-joy-hs-RIGHT { top: 34px; left: 53px; } .wmsx-joy-hs-A, .wmsx-joy-hs-B, .wmsx-joy-hs-X, .wmsx-joy-hs-Y { width: 21px; height: 23px; font-size: 12px; line-height: 18px; color: hsl(0, 0%, 99%); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-joy-hs-A { top: 57px; right: 39px; } .wmsx-joy-hs-B { top: 37px; right: 19px; } .wmsx-joy-hs-X { top: 37px; right: 59px; } .wmsx-joy-hs-Y { top: 17px; right: 39px; } .wmsx-joy-hs-L, .wmsx-joy-hs-R { width: 54px; height: 25px; top: -20px; color: hsl(0, 0%, 52%); font-size: 12px; line-height: 12px; border-radius: 0; } .wmsx-joy-hs-L { left: 21px; } .wmsx-joy-hs-R { right: 22px; } .wmsx-joy-hs-BACK, .wmsx-joy-hs-START { width: 26px; height: 29px; top: 39px; padding-top: 18px; font-size: 7px; font-weight: normal; line-height: 11px; color: hsl(0, 0%, 54%); border-radius: 0; } .wmsx-joy-hs-BACK { left: 99px; } .wmsx-joy-hs-START { right: 99px; } #wmsx-ports .wmsx-mouse { display: none; position: relative; width: 230px; } #wmsx-ports .wmsx-mouse-body { position: relative; top: 6px; left: -8px; overflow: visible; white-space: nowrap; width: 59px; height: 75px; margin: 14px auto; background: linear-gradient(166deg, white, white, white, white, hsl(0, 0%, 97%), hsl(0, 0%, 90%)); border: 1px solid hsl(0, 0%, 81%); border-right-color: hsl(0, 0%, 76%); border-radius: 10px 8px 25px 32px; box-sizing: border-box; transform: skew(-47deg, 30deg); box-shadow: /* inset 0px 0px 1px 0 hsl(0, 0%, 45% */ 3px 2px 0 -1px hsl(0, 0%, 70%) ,4px 3px 0 -1px hsl(0, 0%, 60%) /* line */ ,6px 4px 0 -2px hsl(0, 0%, 82%) /* line */ ,5px 0 0 -4px hsl(0, 0%, 70%) ,6px 0 0 -4px hsl(0, 0%, 70%) ,7px 1px 0 -4px hsl(0, 0%, 70%) ,8px 2px 0 -4px hsl(0, 0%, 70%) ,9px 3px 0 -4px hsl(0, 0%, 70%) ,10px 4px 0 -4px hsl(0, 0%, 70%) ,11px 5px 0 -4px hsl(0, 0%, 70%) ,12px 6px 0 -4px hsl(0, 0%, 70%) ,13px 7px 0 -4px hsl(0, 0%, 70%) ,14px 8px 0 -4px hsl(0, 0%, 70%) ,17px 8px 0 -6px hsl(0, 0%, 70%) ,18px 11px 0 -6px hsl(0, 0%, 70%) ,2px 6px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,4px 7px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,8px 9px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,10px 09px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,12px 10px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,14px 10px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,19px 11px 4px -6px hsl(0, 0%, 3%) /* shadow */ ,13px 12px 4px -6px hsl(0, 0%, 3%) /* shadow */ ; } #wmsx-ports .wmsx-mouse-button1, #wmsx-ports .wmsx-mouse-button2 { position: absolute; height: 25px; background: transparent; border: 0 solid hsl(0, 0%, 70%); box-sizing: border-box; } #wmsx-ports .wmsx-mouse-button1 { width: 48%; border-right-width: 1px; } #wmsx-ports .wmsx-mouse-button2 { width: 101%; border-bottom-width: 1px; } .wmsx-mouse-logo { top: 29px; left: 14px; width: 24px; height: 7px; background-size: 100%; } #wmsx-ports .wmsx-none { display: none; width: 104px; height: 106px; margin: 12px 63px 0; border: 12px solid hsl(0, 0%, 72%); border-radius: 100%; box-sizing: border-box; } #wmsx-ports .wmsx-none:after { content: ""; display: block; position: relative; top: 50%; left: -6px; width: 92px; height: 12px; background: hsl(0, 0%, 72%); transform: translateY(-50%) rotate(-45deg); } #wmsx-ports .wmsx-touch { display: none; width: 68px; height: 107px; margin: 8px 81px 0; background: white; border: 1px solid hsl(0, 0%, 90%); border-radius: 8px; box-sizing: border-box; box-shadow: 0 0 0 1px hsl(0, 0%, 70%), 1px 1px 0 1px hsl(0, 0%, 40%), 2px 3px 4px hsl(0, 0%, 26%); } #wmsx-ports .wmsx-touch:before { content: ""; display: block; position: relative; width: 58px; height: 77px; margin: 13px auto 4px; background: hsl(0, 0%, 35%); } #wmsx-ports .wmsx-touch:after { content: ""; position: relative; display: block; width: 6px; height: 6px; left: 29px; border: 1px solid hsl(0, 0%, 60%); background: hsl(0, 0%, 95%); border-radius: 100%; } #wmsx-about { left: 2400px; font-size: 18px; } #wmsx-about #wmsx-logo-version { width: 380px; height: 212px; margin: 36px auto 24px; color: hsl(0, 0%, 98%); padding-top: 170px; box-sizing: border-box; text-align: center; background: black url("'+wmsx.Images.urls.logo+'") center 50px no-repeat; background-size: 334px 100px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-about .wmsx-info { line-height: 30px; text-align: center; } #wmsx-about a { color: rgb(0, 40, 200); text-decoration: none; } #wmsx-about a:hover { text-decoration: underline; } #wmsx-about #wmsx-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } #wmsx-control-mapping-popup { display: none; position: fixed; padding: 4px 9px; font: normal 13px sans-serif; line-height: 19px; text-align: center; vertical-align: top; border-radius: 6px; border: 8px white solid; background: rgb(220, 220, 220); box-shadow: 0 3px 3px 2px rgba(0, 0, 0, .55); box-sizing: border-box; z-index: 10; } #wmsx-control-mapping-popup.wmsx-locked { border-color: hsl(60, 100%, 68%); } #wmsx-control-mapping-popup .wmsx-command { width: auto; line-height: 21px; margin: 10px 0; font-weight: bold; } #wmsx-control-mapping-popup:after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; width: 0; margin: 0 auto; border-width: 10px; border-style: solid; border-color: transparent white white transparent; box-shadow: 4px 4px 2px 0 rgba(0, 0, 0, .55); box-sizing: border-box; transform: translateY(16px) rotate(45deg); } #wmsx-control-mapping-popup.wmsx-locked:after { border-color: transparent hsl(60, 100%, 68%) hsl(60, 100%, 68%) transparent; } .wmsx-clear { clear: both; } .wmsx-divider { clear: both; height: 27px; } .wmsx-full-divider { clear: both; height: 21px; } #wmsx-general .wmsx-full-divider { clear: both; height: 18px; }' -},wmsx.ControlMappingPopup=function(){"use strict";function a(){j=document.getElementById("wmsx-control-mapping-popup"),k=document.getElementById("wmsx-control-mapping-popup-heading"),l=document.getElementById("wmsx-control-mapping-popup-mapping"),m=document.getElementById("wmsx-control-mapping-popup-footer"),j.tabIndex=-1,j.addEventListener("mousedown",b),j.addEventListener("keydown",c),j.addEventListener("keyup",d)}function b(a){wmsx.Util.blockEvent(a),3===a.which&&r.clearControlEditing()}function c(a){if(s){var b=o.codeNewForKeyboardEvent(a);if(n||b!==o.VK_ESCAPE.wc)return o.isModifierKey(a)?t=o.codeNewForKeyboardEvent(a):f(a),a.stopPropagation(),a.preventDefault(),!1}}function d(a){if(s){var b=o.codeNewForKeyboardEvent(a);return t===b&&f(a),a.stopPropagation(),a.preventDefault(),!1}}function e(){if(!r)return void(j.style.display="none");j.style.display="block",window.setTimeout(function(){j.focus()},0);var a=r.getMappingForControl(s,i)||[];l.innerHTML=h(a);var b=j.getBoundingClientRect(),c=p-b.width/2|0,d=q-b.height-u|0;j.style.top=d+"px",j.style.left=c+"px"}function f(a){var b=o.nameForKeyboardEvent(a);if(b){var c={wc:o.codeNewForKeyboardEvent(a),n:b};r.customizeControl(s,i,c),t=null,e()}}function g(a){r.customizeControl(s,i,a),e()}function h(a){if(a.constructor===String)return a;if(a.constructor===Object)return h(a.from)+"  =>  "+h(a.to);if(!a||0===a.length)return"- none -";for(var b="",c=0;c0&&(b+=" , ");var f=e.n&&e.n.constructor===Array?e.n:[e.n];d="";for(var g=0,i=f.length;g1?"wmsx-joy-button wmsx-square":"wmsx-joy-button";g>0&&(d+=g===i-1?" + ":" "),d+='
'+f[g]+"
"}}b+=d}return b}this.show=function(a,b,c,d,f,g,h,l){p=d,q=f,r=a,s=b,i=c,t=null,k.innerHTML=g,m.innerHTML=h,n=!!l,j.classList.toggle("wmsx-locked",n),e()},this.hide=function(){p=q=0,r=s=i=null,e()},this.joystickButtonDetected=function(a,b){b===i&&g(a)};var i,j,k,l,m,n,o=wmsx.DOMKeys,p=0,q=0,r=null,s=null,t=null,u=14;!function(){a()}()},wmsx.ControlMappingPopup.get=function(){"use strict";return wmsx.ControlMappingPopup.instance||(wmsx.ControlMappingPopup.instance=new wmsx.ControlMappingPopup),wmsx.ControlMappingPopup.instance},wmsx.ControlMappingPopup.instance=null,wmsx.KeyboardConfigurator=function(a,b,c){"use strict";function d(){n=document.getElementById("wmsx-inputs-msx-lang"),m=document.getElementById("wmsx-inputs-keyboard-name"),m.wmsxText=m.querySelector(":scope > span"),m.querySelector(":scope > button").wmsxDec=!0,wmsx.Util.onTapOrMouseDownWithBlock(m,function(b){"BUTTON"===b.target.tagName&&a.toggleKeyboardLayout(b.target.wmsxDec)}),b.addEventListener("mousedown",e,!0),k=document.getElementById("wmsx-keyboard"),l=wmsx.VirtualKeyboard.create(k,function(a){a.wmsxKey&&p.push(a),a.addEventListener("mouseenter",f),a.addEventListener("mouseleave",g)},!1,t,!0)}function e(a){var b=a.target.wmsxKey;b?r===b?1===a.which?s=!s:3===a.which&&o.clearKey(r):(q=a.target,r=q.wmsxKey,s=1===a.which):(s=!1,g()),j.refresh(),h()}function f(a){s||(a.target.wmsxKey?(q=a.target,r=q.wmsxKey,h()):g())}function g(){s||(q=r=null,h())}function h(){if(!r)return u.hide(),void b.focus();var a=q.getBoundingClientRect(),c=a.left+a.width/2,d=a.top;u.show(j,r,0,c,d,v,w,s)}function i(){for(var a=0;a span"),l.querySelector(":scope > button").wmsxDec=!0,m=document.getElementById("wmsx-ports-joykeys-mode"),m.wmsxControl=wmsx.PeripheralControls.JOYKEYS_TOGGLE_MODE,m.wmsxText=m.querySelector(":scope > span"),m.querySelector(":scope > button").wmsxDec=!0,k=document.getElementById("wmsx-ports-mouse-mode"),k.wmsxControl=wmsx.PeripheralControls.MOUSE_TOGGLE_MODE,k.wmsxText=k.querySelector(":scope > span"),k.querySelector(":scope > button").wmsxDec=!0,n=document.getElementById("wmsx-ports-turbofire-speed"),n.wmsxControl=wmsx.PeripheralControls.TURBO_FIRE_TOGGLE,n.wmsxText=n.querySelector(":scope > span"),n.querySelector(":scope > button").wmsxDec=!0,wmsx.Util.onTapOrMouseDownWithBlock(l,a),wmsx.Util.onTapOrMouseDownWithBlock(m,a),wmsx.Util.onTapOrMouseDownWithBlock(k,a),wmsx.Util.onTapOrMouseDownWithBlock(n,a);for(var c=1;c<=2;++c){var d=c-1;o[d]=document.getElementById("wmsx-ports-device"+c),p[d]=document.getElementById("wmsx-ports-device"+c+"-title");for(var f in wmsx.JoystickButtons){var g=document.getElementById("wmsx-joy"+c+"-"+wmsx.JoystickButtons[f].n);g&&(g.wmsxButton=f,g.wmsxPort=d,e(g),q.push(g))}o[d].addEventListener("mousedown",h);var i=document.getElementById("wmsx-mouse"+c);i.wmsxButton="MOUSE",i.wmsxPort=d,e(i)}}function e(a){a.addEventListener("mouseenter",f),a.addEventListener("mouseleave",g)}function f(a){a.target.wmsxButton?(r=a.target,s=r.wmsxButton,t=r.wmsxPort,i()):g()}function g(){r=s=t=null,i()}function h(b){s&&3===b.which&&a.clearControl(s,t),j.refresh(),i()}function i(){if(!s)return u.hide(),a.mappingPopupVisibility(u,t,!1),void c.focus();var b=r.getBoundingClientRect(),d=b.left+b.width/2,e=b.top,f=a.getMappingPopupText(s,t);u.show(j,s,t,d,e,f.heading,f.footer),a.mappingPopupVisibility(u,t,!0)}var j=this;this.controllersSettingsStateUpdate=function(){this.refresh()},this.refresh=function(){var b=a.getSettingsState();l.wmsxText.textContent=b.joysticksModeDesc,m.wmsxText.textContent=b.joykeysModeDesc,k.wmsxText.textContent=b.mouseModeDesc,n.wmsxText.textContent=b.turboFireSpeedDesc;for(var c=0;c<2;++c){var d=b.ports[c],e=o[c].classList;e.remove.apply(e,v),d.startsWith(wmsx.ControllersHub.MOUSE)?e.add("wmsx-mouse-device"):d.startsWith(wmsx.ControllersHub.JOY_ANY)?e.add(d.startsWith(wmsx.ControllersHub.JOYSTICK)?"wmsx-joystick-device":"wmsx-joykeys-device"):d.startsWith(wmsx.ControllersHub.TOUCH)?e.add("wmsx-touch-device"):e.add("wmsx-none-device"),p[c].innerHTML=d}for(var f=0;f=440+wmsx.ScreenGUI.BAR_HEIGHT&&(c-=wmsx.ScreenGUI.BAR_HEIGHT+3),m.style.top=((c-440)/2|0)+"px",m.style.left=((b-600)/2|0)+"px",!0)},this.keyboardSettingsStateUpdate=function(){q&&n&&n.keyboardSettingsStateUpdate()},this.controllersSettingsStateUpdate=function(){q&&o&&o.controllersSettingsStateUpdate()};var m,n,o,p="GENERAL",q=!1,r=wmsx.DOMKeys,s=r.VK_ESCAPE.wc},wmsx.PasteDialog=function(a,b,c){"use strict";var d=this;this.toggle=function(){e&&"visible"===e.style.visibility?this.hide():this.show()},this.show=function(){if(!e)return g(),void d.show();setTimeout(function(){e.classList.add("wmsx-show"),f.focus(),i=!0},0)},this.hide=function(){i&&(e.classList.remove("wmsx-show"),i=!1,b.focus())};var e,f,g=function(){e=document.createElement("div"),e.id="wmsx-paste-cover",a.appendChild(e),f=document.createElement("input"),f.id="wmsx-paste-box",f.value="📋 PASTE NOW",f.readOnly="readonly",f.innerHTML="PASTE NOW!",e.appendChild(f),h()},h=function(){wmsx.Util.onTapOrMouseDownWithBlock(e,function(){f.focus()}),e.addEventListener("keydown",function(a){a.stopPropagation();var b=j.codeNewForKeyboardEvent(a);if(b===l||b===m||b===n)return a.preventDefault(),void d.hide();k.indexOf(b)<0&&a.preventDefault()}),f.addEventListener("paste",function(a){if(i&&a.clipboardData&&a.clipboardData.getData){var b=a.clipboardData.getData("text/plain");b&&(d.hide(),c.processControlState(wmsx.MachineControls.TYPE_STRING,!0,!1,b))}})},i=!1,j=wmsx.DOMKeys,k=[j.VK_V.wc|j.CONTROL,j.VK_INSERT.wc|j.SHIFT,j.VK_NUM_0.wc|j.SHIFT],l=j.VK_ESCAPE.wc,m=j.VK_V.wc|j.ALT,n=j.VK_INSERT.wc|j.ALT},wmsx.TextEntryDialog=function(a,b,c){"use strict";function d(){g=document.createElement("div"),g.id="wmsx-text-entry-dialog",g.tabIndex=-1,i=document.createElement("textarea"),i.id="wmsx-text-entry-input",i.spellcheck=!1,i.autocorrect=!1,i.autocapitalize=!1,g.appendChild(i),h=document.createElement("div"),h.id="wmsx-text-entry-dialog-bar",g.appendChild(h),j=document.createElement("div"),j.id="wmsx-text-entry-dialog-ok",h.appendChild(j),k=document.createElement("div"),k.id="wmsx-text-entry-dialog-cancel",h.appendChild(k),a.appendChild(g),e()}function e(){wmsx.Util.onTapOrMouseDownWithBlock(g,function(a){a.target===j||a.target===k?(wmsx.ControllersHub.hapticFeedbackOnTouch(a),f.hide(a.target===j)):g.focus()}),g.addEventListener("keydown",function(a){a.stopPropagation();var b=m.codeNewForKeyboardEvent(a);b===p&&(a.preventDefault(),f.hide(!0)),b!==n&&b!==o||(a.preventDefault(),f.hide(!1))}),i.addEventListener("contextmenu",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(i,"touchstart touchmove touchend mousedown mousemove mouseup",function(a){a.stopPropagation()})}var f=this;this.toggle=function(){l?this.hide(!1):this.show()},this.show=function(){if(!g)return d(),setTimeout(f.show,0);g.classList.add("wmsx-show"),l=!0,i.focus()},this.hide=function(a){l&&(g.classList.remove("wmsx-show"),l=!1,WMSX.room.screen.focus(),a&&c.processControlState(wmsx.MachineControls.TYPE_STRING,!0,!1,i.value))};var g,h,i,j,k,l=!1,m=wmsx.DOMKeys,n=m.VK_ESCAPE.wc,o=m.VK_B.wc|m.ALT,p=m.VK_ENTER.wc|m.CONTROL},wmsx.SaveStateDialog=function(a,b,c,d){"use strict";function e(){l.textContent="Select Slot to "+(m?"Save":"Load");for(var a=m?"Save to ":"Load from ",b=0;b=0&&(c&&wmsx.ControllersHub.hapticFeedbackOnTouch(a),n=a.target.wmsxSlot,f(),c||setTimeout(b,120))}),j.addEventListener("keydown",function(c){var d=t.codeNewForKeyboardEvent(c);return d===u?a():v.indexOf(d)>=0?b():w[d]&&(n+=w[d],n<0?n=0:n>10&&(n=10),f()),wmsx.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);m=b,p=!0,e(),j.classList.add("wmsx-show"),j.focus(),wmsx.Util.scaleToFitParentHeight(j,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(p&&(j.classList.remove("wmsx-show"),p=!1,WMSX.room.screen.focus(),a)){var d=s[n],e=m?d.save:d.load;d.peripheral?c.processControlActivated(e):b.processControlState(e,!0)}};var j,k,l,m=!1,n=0,o=[],p=!1,q=wmsx.MachineControls,r=wmsx.PeripheralControls,s=[{d:"Slot 1",load:q.LOAD_STATE_1,save:q.SAVE_STATE_1},{d:"Slot 2",load:q.LOAD_STATE_2,save:q.SAVE_STATE_2},{d:"Slot 3",load:q.LOAD_STATE_3,save:q.SAVE_STATE_3},{d:"Slot 4",load:q.LOAD_STATE_4,save:q.SAVE_STATE_4},{d:"Slot 5",load:q.LOAD_STATE_5,save:q.SAVE_STATE_5},{ -d:"Slot 6",load:q.LOAD_STATE_6,save:q.SAVE_STATE_6},{d:"Slot 7",load:q.LOAD_STATE_7,save:q.SAVE_STATE_7},{d:"Slot 8",load:q.LOAD_STATE_8,save:q.SAVE_STATE_8},{d:"Slot 9",load:q.LOAD_STATE_9,save:q.SAVE_STATE_9},{d:"Slot 10",load:q.LOAD_STATE_10,save:q.SAVE_STATE_10},{d:"File",load:r.MACHINE_LOAD_STATE_FILE,save:r.MACHINE_SAVE_STATE_FILE,peripheral:!0}],t=wmsx.DOMKeys,u=t.VK_ESCAPE.wc,v=[t.VK_ENTER.wc,t.VK_SPACE.wc],w={};w[t.VK_UP.wc]=-1,w[t.VK_DOWN.wc]=1},wmsx.CartridgeFormatDialog=function(a,b,c,d){"use strict";function e(){r=0,k.reinsertROMContent(),s=wmsx.SlotCreator.getUserFormatOptionNames(k.rom);var a=wmsx.SlotCreator.getBestFormatOption(k.rom);a||(a=wmsx.SlotFormats.Normal),s.unshift(a.name);for(var b=0;ba.offsetTop?m.scrollTop=a.offsetTop:m.scrollTop+m.offsetHeight=0&&c(a.target.wmsxIndex)}),wmsx.Util.addEventsListener(m,"click",function(a){if(wmsx.Util.blockEvent(a),a.target.wmsxIndex>=0){var d=a.target.wmsxIndex===r;c(a.target.wmsxIndex),setTimeout(b,d?0:120)}}),wmsx.Util.onTapOrMouseDownWithBlock(n,function(a){w&&(wmsx.ControllersHub.hapticFeedbackOnTouch(a),v=!v,g())}),l.addEventListener("keydown",function(c){var d=y.codeNewForKeyboardEvent(c);return d===z?a():A.indexOf(d)>=0?b():B[d]&&(r+=B[d],r<0?r=0:r>=s.length&&(r=s.length-1),f()),wmsx.Util.blockEvent(c)})}var j=this;this.show=function(a,c){if(!l)return h(),setTimeout(function(){j.show(a,c)},0);o=a,p=c,(k=d.cartridgeInserted(o))&&(q=k.format.name,v=!!x.getForROM(k.rom),w=!!k.rom.info.h,u=!0,l.classList.add("wmsx-show"),e(),l.focus(),wmsx.Util.scaleToFitParentHeight(l,b,wmsx.ScreenGUI.BAR_HEIGHT))},this.hide=function(b){if(u){if(l.classList.remove("wmsx-show"),u=!1,WMSX.room.screen.focus(),b){var e=s[r],f=e===s[0],g=wmsx.SlotCreator.changeCartridgeFormat(k,wmsx.SlotFormats[e]);v&&x.setForROM(k.rom,e,f),d.insertCartridge(g,o,p||!c.powerIsOn,!0),a.showOSD("ROM Format: "+e+(f?" (Auto)":""),!0)}k=void 0}};var k,l,m,n,o=0,p=!1,q="",r=0,s=[],t=[],u=!1,v=!1,w=!1,x=WMSX.userROMFormats,y=wmsx.DOMKeys,z=y.VK_ESCAPE.wc,A=[y.VK_ENTER.wc,y.VK_SPACE.wc],B={};B[y.VK_UP.wc]=-1,B[y.VK_DOWN.wc]=1},wmsx.DiskSelectDialog=function(a,b,c,d){"use strict";function e(){m.textContent="Select Disk in Drive "+(1===v?"B:":"A:")+" "+b.getCurrentDiskNumDesc(v);var a=61+33*Math.max(p.length,4);l.style.height=a+"px";for(var c=0;c=p.length||(q=b)}function h(){l=document.createElement("div"),l.id="wmsx-diskselect",l.classList.add("wmsx-select-dialog"),l.style.height="270px",l.tabIndex=-1,m=document.createTextNode("Select Disk"),l.appendChild(m),n=document.createElement("div"),n.id="wmsx-diskselect-footer",n.classList.add("wmsx-footer"),n.innerHTML="(drag items to change order)",l.appendChild(n),o=document.createElement("ul");for(var b=wmsx.FileDiskDrive.MAX_STACK+1,c=0;c=0)b();else{var h=f&C;h===A?c.processKey(f,!0):B[h]&&(g(B[h]),e())}return wmsx.Util.blockEvent(d)}),wmsx.Util.onTapOrMouseUpWithBlock(o,function(a){var c=a.target.wmsxDiskNum;return void 0!==c&&(wmsx.ControllersHub.hapticFeedbackOnTouch(a),q=c,e(),setTimeout(b,120)),!1}),o.addEventListener("mousemove",function(a){a.stopPropagation()})}function j(){o.addEventListener("dragstart",function(a){return a.stopPropagation(),void 0!==a.target.wmsxDiskNum&&(r=a.target,a.dataTransfer.setData("text/html",a.target.innerHTML),d.setDragAndDropDisabled(!0),!1)}),o.addEventListener("dragend",function(a){return a.stopPropagation(),s&&s.classList.remove("wmsx-droptarget"),r=s=void 0,d.setDragAndDropDisabled(!1),!1}),l.addEventListener("drop",function(a){if(a.preventDefault(),!r)return!1;if(a.stopPropagation(),!s)return!1;var b=r.wmsxDiskNum,d=s.wmsxDiskNum;return void 0!==b&&void 0!==d&&d!==b&&(c.processControlActivated(wmsx.PeripheralControls.DISK_MOVE,w,!1,{d:v,f:b,t:d}),!1)}),o.addEventListener("dragenter",function(a){return!(!r||void 0===a.target.wmsxDiskNum)&&(s&&s!==a.target&&s.classList.remove("wmsx-droptarget"),s=a.target!==r?a.target:void 0,s&&s.classList.add("wmsx-droptarget"),!1)})}var k=this;this.show=function(b,c,d){if(!l)return h(),setTimeout(function(){k.show(b,c,d)},0);v=b,w=d,u=!0,f(),g(c),e(),l.classList.add("wmsx-show"),l.focus(),wmsx.Util.scaleToFitParentHeight(l,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){d.setDragAndDropDisabled(!1),u&&(l.classList.remove("wmsx-show"),u=!1,WMSX.room.screen.focus(),a&&q>=0&&c.processControlActivated(wmsx.PeripheralControls.DISK_INSERT,w,!1,{d:v,n:q,a:w}))},this.diskDrivesMediaStateUpdate=function(a){u&&a===v&&(f(),e())};var l,m,n,o,p,q,r,s,t=[],u=!1,v=0,w=!0,x=wmsx.DOMKeys,y=x.VK_ESCAPE.wc,z=[x.VK_ENTER.wc,x.VK_SPACE.wc],A=x.VK_F6.wc,B={};B[x.VK_UP.wc]=-1,B[x.VK_PAGE_UP.wc]=-1,B[x.VK_DOWN.wc]=1,B[x.VK_PAGE_DOWN.wc]=1;var C=x.IGNORE_ALL_MODIFIERS_MASK},wmsx.NewHardDiskDialog=function(a,b){"use strict";function c(){for(var a=0;a=0&&(wmsx.ControllersHub.hapticFeedbackOnTouch(a),j=a.target.wmsxOption,c(),setTimeout(b,120))}),g.addEventListener("keydown",function(d){var e=q.codeNewForKeyboardEvent(d);return e===r?a():s.indexOf(e)>=0?b():t[e]&&(j+=t[e],j<0?j=0:j>=k.length&&(j=k.length-1),c()),wmsx.Util.blockEvent(d)})}var f=this;this.show=function(b,e){if(!g)return d(),setTimeout(function(){f.show(m,e)},0);l=!0,m=b,n=e,c(),g.classList.add("wmsx-show"),g.focus(),wmsx.Util.scaleToFitParentHeight(g,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(l&&(g.classList.remove("wmsx-show"),l=!1,WMSX.room.screen.focus(),a)){var c=o[j];b.processControlActivated(wmsx.PeripheralControls.HARDDISK_NEW,m,!1,{m:c,b:n})}};var g,h,i,j=0,k=[],l=!1,m=!1,n=!1,o=wmsx.DiskImages.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES,p=wmsx.DiskImages.MEDIA_TYPE_INFO,q=(wmsx.MachineControls,wmsx.PeripheralControls,wmsx.DOMKeys),r=q.VK_ESCAPE.wc,s=[q.VK_ENTER.wc,q.VK_SPACE.wc],t={};t[q.VK_UP.wc]=-1,t[q.VK_DOWN.wc]=1},wmsx.MachineSelectDialog=function(a,b,c){"use strict";function d(){for(var a=0;a=0)b();else if(q[e]){var f=Object.keys(WMSX.MACHINES_CONFIG),g=f.indexOf(i)+q[e],h=f[g];h&&WMSX.MACHINES_CONFIG[h].DESC&&(i=h,d())}return wmsx.Util.blockEvent(c)})}var h=this;this.show=function(){if(!j)return e(),setTimeout(h.show,0);l.length||f(),m=!0,i=b.getMachine(),j.classList.add("wmsx-show"),j.focus(),d();var c=a.clientHeight-wmsx.ScreenGUI.BAR_HEIGHT-20,g=j.clientHeight,k=g=t.length-1)}function f(){var a=c.getSettingsState(),b=a.touchPortSet,e=a.touchActive;A[0].wmsxText.innerText=0===b?"Port 1":1===b?"Port 2":"OFF",A[0].classList.toggle("wmsx-selected",b>=0),A[0].classList.toggle("wmsx-inactive",!e);for(var f=1;f=t.length)return u=t.length-1;c.hapticFeedbackOnTouch(b);var d=t[u];"T_DIR"!==s&&(d=d&&(wmsx.JoystickButtons[d]||wmsx.KeyboardKeys[d])),C.customizeControl(s,d),e()}}function i(){wmsx.Util.onTapOrMouseDownWithBlock(m,function(a){a.target.wmsxControlItem?(d.processControlActivated(a.target.wmsxControlItem.control,!0,a.target.wmsxDec),c.hapticFeedbackOnTouch(a),f()):m.focus()}),m.addEventListener("keydown",function(a){var b=D.codeNewForKeyboardEvent(a);return E.indexOf(b)>=0?l.hide():F[b]&&h(F[b],a),wmsx.Util.blockEvent(a)}),wmsx.Util.addEventsListener(p,"touchstart mousedown",function(a){j(a,-1)}),wmsx.Util.addEventsListener(q,"touchstart mousedown",function(a){j(a,1)}),wmsx.Util.addEventsListener(p,"touchend mouseup",k),wmsx.Util.addEventsListener(q,"touchend mouseup",k)}function j(a,b){k(a),h(b,a),v=setTimeout(function(){w=setInterval(function(){h(b,a)},35)},415)}function k(a){wmsx.Util.blockEvent(a),v&&(clearTimeout(v),v=null),w&&(clearInterval(w),w=null)}var l=this;this.show=function(){if(!m)return g(),setTimeout(l.show,0);z=!0,a.classList.add("wmsx-touch-config-active"),m.focus(),s=t=null,u=-1,C.startTouchDetection(l),e(),f(),wmsx.Util.scaleToFitParentHeight(m,b,0)},this.hide=function(){z&&(C.stopTouchDetection(l),WMSX.userPreferences.save(),a.classList.remove("wmsx-touch-config-active"),z=!1,WMSX.room.screen.focus())},this.touchControlDetected=function(a,b){c.hapticFeedbackOnTouch(b),s=a;var d="T_DIR"===s;t=d?x:y;var f=d?B.directional:B.buttons[s],g=d?f:f&&(f.button||f.key);u=wmsx.Util.arrayFindIndex(t,function(a){return a===g}),e()},this.controllersSettingsStateUpdate=function(){z&&f()};var m,n,o,p,q,r,s,t,u,v,w,x,y,z=!1,A=[],B=WMSX.userPreferences.current.touch,C=c.getTouchControls(),D=wmsx.DOMKeys,E=[D.VK_ESCAPE.wc,D.VK_ENTER.wc,D.VK_SPACE.wc],F={};F[D.VK_LEFT.wc]=-1,F[D.VK_RIGHT.wc]=1},wmsx.QuickOptionsDialog=function(a,b,c){"use strict";function d(){for(var a=0;a=0&&g.hide(),wmsx.Util.blockEvent(a)})}var g=this;this.show=function(){if(!h)return e(),setTimeout(g.show,0);d(),j=!0,h.classList.add("wmsx-show"),h.focus(),wmsx.Util.scaleToFitParentHeight(h,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(){j&&(WMSX.userPreferences.save(),h.classList.remove("wmsx-show"),j=!1,WMSX.room.screen.focus())},this.quickOptionsControlsStateUpdate=function(){j&&d()},this.machineTurboModesStateUpdate=function(){j&&d()};var h,i,j=!1,k=[],l=wmsx.DOMKeys,m=[l.VK_ESCAPE.wc]},wmsx.NetPlayDialog=function(a,b){"use strict";function c(){switch(a.netPlayMode){case 0:o.textContent="STANDALONE",m.textContent="START",n.textContent="JOIN",m.disabled=!1,n.disabled=!1,r.disabled=!1,s.disabled=!1,k.classList.remove("wmsx-active"),l.classList.remove("wmsx-disabled"),r.setAttribute("placeholder","Enter a name");break;case 1:var b=a.getNetServer();o.textContent="HOSTING Session: "+b.getSessionID(),m.textContent="STOP",n.textContent="JOIN",m.disabled=!1,n.disabled=!0,r.disabled=!0,s.disabled=!0,k.classList.add("wmsx-active"),l.classList.add("wmsx-disabled"),r.setAttribute("placeholder","Automatic"),p.href=e();break;case 2:var c=a.getNetClient();o.textContent="JOINED Session: "+c.getSessionID(),m.textContent="START",n.textContent="LEAVE",m.disabled=!0,n.disabled=!1,r.disabled=!0,s.disabled=!0,k.classList.add("wmsx-active"),l.classList.remove("wmsx-disabled"),l.classList.add("wmsx-disabled"),r.setAttribute("placeholder","Enter a name"),p.href=e();break;case-1:case-2:o.textContent="Establishing connection...",r.disabled=!0,s.disabled=!0,k.classList.remove("wmsx-active"),l.classList.add("wmsx-disabled"),-1===a.netPlayMode?(m.textContent="CANCEL",n.textContent="JOIN",m.disabled=!1,n.disabled=!0,r.setAttribute("placeholder","Automatic")):(m.textContent="START",n.textContent="CANCEL",m.disabled=!0,n.disabled=!1,r.setAttribute("placeholder","Enter a name"))}}function d(){r.value=u.netPlaySessionName,s.value=u.netPlayNick}function e(){return wmsx.Util.browserCurrentURL()+"?JOIN="+a.netController.getSessionID()}function f(b){var c=b.target;if(!c.disabled){wmsx.ControllersHub.hapticFeedbackOnTouch(b);var d=!1,e=a.netPlayMode;if(c!==m||0!==e&&1!==e&&-1!==e?c!==n||0!==e&&2!==e&&-2!==e||(0===e?(a.getNetClient().joinSession(r.value,s.value),d=!0):a.getNetClient().leaveSession(!1,-2===e?"NetPlay connection aborted":void 0)):0===e?(a.getNetServer().startSession(r.value),d=!0):a.getNetServer().stopSession(!1,-1===e?"NetPlay connection aborted":void 0),d){var f=r.value.trim(),g=s.value.trim();u.netPlaySessionName===f&&u.netPlayNick===g||(u.netPlaySessionName=f,u.netPlayNick=g,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())}}}function g(){j=document.createElement("div"),j.id="wmsx-netplay",j.tabIndex=-1,k=document.createElement("div"),k.id="wmsx-netplay-status-box",j.appendChild(k),q=document.createElement("input"),q.id="wmsx-netplay-link-text",k.appendChild(q),o=document.createElement("div"),o.id="wmsx-netplay-status",o.textContent="STANDALONE",k.appendChild(o),p=document.createElement("a"),p.id="wmsx-netplay-link",p.textContent="🔗",p.setAttribute("title","Copy Join Session link to clipboard"),k.appendChild(p),l=document.createElement("div"),l.id="wmsx-netplay-session-box",j.appendChild(l);var a=document.createElement("div");a.id="wmsx-netplay-session-label",l.appendChild(a),m=document.createElement("button"),m.id="wmsx-netplay-start",m.wmsxCommand=!0,m.classList.add("wmsx-netplay-button"),m.textContent="START",l.appendChild(m),r=document.createElement("input"),r.id="wmsx-netplay-session-name",r.setAttribute("placeholder","Enter a name"),r.setAttribute("maxlength",12),r.spellcheck=!1,r.autocorrect=!1,r.autocapitalize=!1,l.appendChild(r),n=document.createElement("button"),n.id="wmsx-netplay-join",n.wmsxCommand=!0,n.classList.add("wmsx-netplay-button"),n.textContent="JOIN",l.appendChild(n);var c=document.createElement("div");c.id="wmsx-netplay-nick-label",l.appendChild(c),s=document.createElement("input"),s.id="wmsx-netplay-nick",s.setAttribute("placeholder","Automatic"),s.setAttribute("maxlength",12),s.spellcheck=!1,s.autocorrect=!1,s.autocapitalize=!1,l.appendChild(s),h(),b.appendChild(j)}function h(){function b(a){var b=a.target,c=b.value;return!c||c.match(/^[A-Za-z0-9]+[A-Za-z0-9_\-]*@?$/)?b.wmsxLastValidValue=c:b.value=b.wmsxLastValidValue||""}wmsx.Util.onTapOrMouseDownWithBlock(j,function(a){a.target.wmsxCommand?f(a):j.focus()}),j.addEventListener("keydown",function(a){var b=v.codeNewForKeyboardEvent(a);return w.indexOf(b)>=0&&i.hide(),wmsx.Util.blockEvent(a)}),r.addEventListener("input",b),s.addEventListener("input",b),wmsx.Util.addEventsListener(o,"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(r,"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(s,"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup",function(a){a.stopPropagation()}),j.ondragstart=wmsx.Util.blockEvent,k.addEventListener("contextmenu",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(p,"click",function(b){if(wmsx.Util.blockEvent(b),!document.queryCommandSupported||!document.queryCommandSupported("copy"))return a.showOSD("Copy to Clipboard not supported by the browser!",!0,!0);q.value=e(),q.focus(),q.select(),document.execCommand("copy"),j.focus()})}var i=this;this.show=function(){if(!j)return g(),setTimeout(i.show,0);c(),d(),t=!0,j.classList.add("wmsx-show"),j.focus(),wmsx.Util.scaleToFitParentWidth(j,b,12)},this.hide=function(){t&&(j.classList.remove("wmsx-show"),t=!1,a.screen.focus())},this.roomNetPlayStatusChangeUpdate=function(b){if(t&&c(),2===a.netPlayMode&&b<0&&t)return setTimeout(function(){i.hide()},2e3);0===a.netPlayMode&&b>0&&!t&&i.show()},this.isVisible=function(){return t};var j,k,l,m,n,o,p,q,r,s,t=!1,u=WMSX.userPreferences.current,v=wmsx.DOMKeys,w=[v.VK_ESCAPE.wc]},wmsx.WebAudioSpeaker=function(a){"use strict";function b(){return wmsx.Util.isMobileDevice()?"CHROME"!==wmsx.Util.browserInfo().name||wmsx.Util.isIOSDevice()?3:4:2}function c(){ -return"SAFARI"===wmsx.Util.browserInfo().name||wmsx.Util.isIOSDevice()?b():0}function d(){!o||m.state&&"suspended"!==m.state||(a.addEventListener("touchend",e,!0),a.addEventListener("mousedown",e,!0),a.addEventListener("keydown",e,!0),m.addEventListener("statechange",f),i.speakerUnlockStateUpdate(!1),wmsx.Util.log("Speaker Audio Context resume event registered"))}function e(){try{m.resume()}catch(a){return}var a=m.createBufferSource();a.buffer=m.createBuffer(1,1,22050),a.connect(m.destination),a.start(0),"running"===m.state&&f()}function f(){"running"===m.state&&(a.removeEventListener("touchend",e,!0),a.removeEventListener("mousedown",e,!0),a.removeEventListener("keydown",e,!0),m.removeEventListener("statechange",f),i.speakerUnlockStateUpdate(!0),wmsx.Util.log("Speaker Audio Context restablished!"))}function g(){if(o){p.length=q.length=r.length=s.length=t.length=l.length;for(var a=0;a=0;e-=1)b[e]=c[e]=0;if(0!==l.length)for(var f=l.length-1;f>=0;f-=1){var g=p[f],h=d*g+q[f]|0,i=l[f].retrieveSamples(h,v),j=i.buffer0,k=i.buffer1,m=i.bufferSize,n=i.start,o=n+q[f];if(g<1){for(var u=r[f],w=s[f],x=t[f],y=0;y=m&&(o-=m),b[y]+=u*(1-x),c[y]+=w*(1-x),u=j[0|o],w=k[0|o],b[y]+=u*x,c[y]+=w*x,x=o-(0|o);r[f]=u,s[f]=w,t[f]=x}else for(y=0;y=m&&(o-=m),b[y]+=j[0|o],c[y]+=k[0|o];o=0||(wmsx.Util.arrayAdd(l,a),g())},this.disconnectAudioSignal=function(a){l.indexOf(a)<0||(wmsx.Util.arrayRemoveAllElement(l,a),g())},this.powerOn=function(){j(),o&&(d(),this.unpauseAudio())},this.powerOff=function(){this.pauseAudio(),m&&m.close(),m=o=void 0},this.mute=function(){v=!0},this.unMute=function(){v=!1},this.pauseAudio=function(){o&&o.disconnect()},this.unpauseAudio=function(){o&&o.connect(m.destination)},this.toggleBufferBaseSize=function(a){if(!m)return i.showOSD("Audio is DISABLED",!0,!0);a?--u<-1&&(u=6):++u>6&&(u=-1),this.pauseAudio(),k(),this.unpauseAudio(),i.showOSD("Audio Buffer size: "+(-1===u?"Auto ("+n+")":0===u?"Browser ("+n+")":n),!0),WMSX.userPreferences.current.audioBufferBase=u,WMSX.userPreferences.setDirty()},this.getControlReport=function(a){return{label:-2===u?"OFF":-1===u?"Auto":0===u?"Browser":n,active:u>0}};var i,j=function(){if(-2===u||0===WMSX.AUDIO_MONITOR_BUFFER_SIZE)return void wmsx.Util.warning("Audio disabled in configuration");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error("WebAudio API not supported by the browser");m=new a,wmsx.Util.log("Speaker AudioContext created. Sample rate: "+m.sampleRate+(m.state?", "+m.state:"")),k()}catch(a){wmsx.Util.error("Could not create AudioContext. Audio DISABLED!\n"+a)}},k=function(){try{var a=-1===u?b():0===u?c():u,d=WMSX.AUDIO_MONITOR_BUFFER_SIZE>0?WMSX.AUDIO_MONITOR_BUFFER_SIZE:a>0?wmsx.Util.exp2(0|wmsx.Util.log2((m.sampleRate+14e3)/22050))*wmsx.Util.exp2(a-1)*256:0;d=d<256?256:d>16384?16384:d,o=m.createScriptProcessor(d,2,2),o.onaudioprocess=h,n=o.bufferSize,g(),wmsx.Util.log("Audio Processor buffer size: "+o.bufferSize)}catch(a){wmsx.Util.error("Could not create ScriptProcessorNode. Audio DISABLED!\n"+a)}},l=[];this.signals=l;var m,n,o,p=[],q=[],r=[],s=[],t=[],u=-3===WMSX.AUDIO_MONITOR_BUFFER_BASE?WMSX.userPreferences.current.audioBufferBase:WMSX.AUDIO_MONITOR_BUFFER_BASE,v=!1},wmsx.SaveStateMedia=function(a){"use strict";function b(a){wmsx.Util.error("Error accessing IndexedDB, falling back to LocalStorage:",a),h=void 0}this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(a){j=a},this.isSlotUsed=function(a){return void 0!==localStorage["wmsxsave"+a+o+"u"]||void 0!==localStorage["wmsxsave"+a+o]},this.persistState=function(a,b,d){var f=e(b);c("save"+a+o,f,d)},this.retrieveState=function(a,b){d("save"+a+o,function(a){b(a&&f(a))})},this.saveStateFile=function(a){var b=e(a);b&&j.startDownloadBinary("WMSX SaveState"+m,b,"State File")},this.loadStateFile=function(a){return f(a)},this.externalStateChange=function(){a.netController&&a.netController.processExternalStateChange()};var c=function(a,c,d){function e(){i.store(a,c,function(){localStorage["wmsx"+a+"u"]="Y",d(!0)},function(a){wmsx.Util.error(a),d(!1)})}g(function(){h?h.store(a,c,function(){localStorage["wmsx"+a+"u"]="Y",d(!0)},function(a){b(a),e()}):e()})},d=function(a,c){function e(){i.retrieve(a,function(a){c(a)},function(a){wmsx.Util.warning(a),c(void 0)})}g(function(){h?h.retrieve(a,function(a){a?c(a):e()},function(e){b(e),d(a,c)}):e()})},e=function(a){try{return k+JSON.stringify(a)}catch(a){wmsx.Util.error(a)}},f=function(a){try{var b;if((b="string"==typeof a?a.substr(0,k.length):wmsx.Util.int8BitArrayToByteString(a,0,k.length))!==k&&b!==l)return;var c;return(c="string"==typeof a?a.slice(k.length):wmsx.Util.int8BitArrayToByteString(a,k.length))&&JSON.parse(c)}catch(a){wmsx.Util.error(a)}},g=function(a){if(i)return a();i=new wmsx.LocalStoragePersistence,h=new wmsx.IndexedDBPersistence,h.open(n,a,function(){h=null,a()})};this.getIndexed=function(){return h};var h,i,j,k=String.fromCharCode(0,0)+"wmsx"+String.fromCharCode(0,0)+"state!",l="wmsxsavestate!",m=".wst",n=1,o=WMSX.ENVIRONMENT?"_"+WMSX.ENVIRONMENT:""},wmsx.LocalStoragePersistence=function(){"use strict";this.open=function(a,b,c){b()},this.store=function(a,b,c,d){try{localStorage["wmsx"+a]=b,c()}catch(a){d(a)}},this.retrieve=function(a,b,c){try{b(localStorage["wmsx"+a])}catch(a){c(a)}},this.clear=function(a,b){a()}},wmsx.IndexedDBPersistence=function(){"use strict";var a=this;this.open=function(b,c,d){function e(b){wmsx.Util.error("Error obtaining IndexedDB persistence, falling back to LocalStorage only"),a.db=null,d(b)}try{var f=indexedDB.open("WebMSX",b)}catch(a){e(a)}f.onupgradeneeded=function(a){try{var b=a.target.result;b.objectStoreNames.contains("WebMSX")||(wmsx.Util.log("Creating IndexedDB persistence..."),b.createObjectStore("MainStore"))}catch(a){e(a)}},f.onsuccess=function(b){a.db=b.target.result,wmsx.Util.log("Using IndexedDB persistence"),c(a.db)},f.onerror=e},this.store=function(a,b,c,d){try{var e=this.db.transaction("MainStore","readwrite");e.onerror=d;var f=e.objectStore("MainStore"),g=f.put(b,a);g.onsuccess=function(){c()},g.onerror=d}catch(a){d(a)}},this.retrieve=function(a,b,c){var d=this.db.transaction("MainStore");d.onerror=c;var e=d.objectStore("MainStore"),f=e.get(a);f.onsuccess=function(a){b(a.target.result)},f.onerror=c},this.clear=function(a,b){var c=indexedDB.deleteDatabase("WebMSX");c.onsuccess=a,c.onerror=b},this.db=void 0},wmsx.FileCartridgeSlot=function(a){"use strict";this.connect=function(a,d){b=a,c=d},this.connectPeripherals=function(a){d=a},this.insertCartridge=function(d,e,f,g){if(b.insertCartridge(d,e,f,g),d&&d.rom.info.e){var h=d.rom.info.e;h&&WMSX.EXTENSIONS_CONFIG[h]&&c.activateExtension(h,!0,0===e,!0,!0)}1===a.netPlayMode&&a.netController.addPeripheralOperationToSend({op:0,c:d.saveState(),p:e,a:f})},this.insertSerializedCartridge=function(a,c,d){var e=wmsx.SlotCreator.recreateFromSaveState(a,b.cartridgeInserted(c));this.insertCartridge(e,c,d)},this.loadCartridgeData=function(c,d,e){var f=b.loadCartridgeData(c,d,e);return f&&1===a.netPlayMode&&a.netController.addPeripheralOperationToSend({op:1,p:c,n:d,c:wmsx.Util.compressInt8BitArrayToStringBase64(e)}),f},this.loadSerializedCartridgeData=function(a,c,d){b.loadCartridgeData(a,c,wmsx.Util.uncompressStringBase64ToInt8BitArray(d))},this.cartridgeInserted=function(a){return b.cartridgeInserted(a)},this.removeCartridge=function(a,c){b.removeCartridge(a,c)},this.saveCartridgeDataFile=function(a){var c=b.getCartridgeData(a) -;d.startDownloadBinary(c.fileName,c.content,c.desc)};var b,c,d},wmsx.FileCassetteDeck=function(a){"use strict";function b(){k(),q.showOSD("Cassette Tape rewound."+n(),!0)}function c(){j(),q.showOSD("Cassette forwarded to Tape end",!0)}function d(){s="New Tape.cas",t=[],k(),q.showOSD("Cassette loaded with new blank Tape",!0),o()}function e(a){return a?wmsx.Util.leafFilenameNoExtension(a)+".cas":"New Tape.cas"}function f(a,b){b=b||0,-1===(u=wmsx.Util.arrayIndexOfSubArray(t,x,u+b,a))&&(-1===a?k():j())}function g(){return!t&&(q.showOSD("No Cassette Tape!",!0,!0),!0)}function h(){return u===t.length}function i(){return 0===u}function j(){u=t.length}function k(){u=0}function l(){for(;u%8;)t[u++]=0}function m(a){if(!t||t.lengthb&&(c.length=b),b-=c.length;var g=a.items.filter(function(a){return a.isDir});g.length>b&&(g.length=b),a.nextFreeEntry=2+g.length,e(a,c),a.nextFreeEntry=2,d(a,g),i(a),j(a)}function d(a,b){for(var d=0;dW?++Z:(e.content=wmsx.Util.arrayFill(new Array(g*N),0),e.parentDir=a,e.usedNames=new Set,e.nextFreeEntry=0,m(e),f(a,e),c(e),++Y)}}function e(a,b){for(var c=0;cW?++Z:(m(d),f(a,d),j(d),++Y)}}function f(a,b){for(var c=a.content,d=(a.availableEntries?a.availableEntries[a.nextFreeEntry]:a.nextFreeEntry)*H,e=q(b,a.usedNames),f=0;f<11;++f)c[d+f]=e.charCodeAt(f);var g=b.isDir?16:32;c[d+11]=g;var h=d+22,i=b.lastModified?new Date(b.lastModified):b.lastModifiedDate||$,j=s(i);c[h]=255&j,c[h+1]=j>>8;var k=t(i);c[h+2]=255&k,c[h+3]=k>>8,h=d+26,c[h]=255&b.clusterChain[0],c[h+1]=b.clusterChain[0]>>8,h=d+28;var l=b.isDir?0:b.content.length;c[h]=255&l,c[h+1]=l>>8&255,c[h+2]=l>>16&255,c[h+3]=l>>24&255,a.nextFreeEntry++}function g(a){for(var b=a.content,c=a.availableEntries=[],d=0,e=0,f=b.length;d=0;d-=H)c?0===b[d]&&(b[d]=229):0!==b[d]&&(c=!0)}function j(b){var c=b.content,d=b.continuousContentPosition;if(d)for(var e=0,f=c.length;e>8):(d=I*x+3*(b>>1),1&b?(a[d+1]=15&a[d+1]|(15&c)<<4,a[d+2]=(4080&c)>>4):(a[d]=255&c,a[d+1]=240&a[d+1]|(3840&c)>>8))}function l(b){var c;return R?(c=I*x+(b<<1),a[c]|a[c+1]<<8):(c=I*x+3*(b>>1),1&b?a[c+1]>>4|a[c+2]<<4:a[c]|(15&a[c+1])<<8)}function m(a){var b=o(a.content.length);if(a.clusterChain=new Array(b),0===b)a.clusterChain[0]=0;else{for(var c=0;c8||b.has(c)){var f,g=0;do{++g,f="~"+g,c=(d.substr(0,8-f.length)+f+" ").substr(0,8)+e}while(b.has(c))}return b.add(c),c}function r(a){return a.toUpperCase().replace(/[^a-z0-9!#$%&'\(\)\-@\^_`{}~]/gi,"_")}function s(a){return a?a.getHours()<<11|(a.getMinutes()<<5)+a.getSeconds()/2:0}function t(a){return a?(a.getFullYear()-1980&127)<<9|(a.getMonth()+1<<5)+a.getDate():0}var u=a[510]|a[511]<<8,v=(a[450],a[454]|a[455]<<8|a[456]<<16|a[457]<<24),w=0;43605===u&&1===v&&(w=this.BYTES_PER_SECTOR);var x=a[w+11]|a[w+12]<<8,y=a[w+13],z=a[w+14]|a[w+15]<<8,A=a[w+16],B=a[w+17]|a[w+18]<<8,C=a[w+19]|a[w+20]<<8,D=a[w+21],E=a[w+22]|a[w+23]<<8,F=a[w+32]|a[w+33]<<8|a[w+34]<<16|a[w+35]<<24,G=C||F,H=32,I=v+z,J=I+A*E,K=J*x,L=J+H*B/x,M=L*x,N=y*x,O=(G-(L-v))/y|0,P=a[I*x],Q=String.fromCharCode(a[w+54],a[w+55],a[w+56],a[w+57],a[w+58],a[w+59],a[w+60],a[w+61]),R="FAT16 "===Q||"FAT12 "!==Q&&O>=4080;if(!(D===P&&(240===D||D>=248)&&O>=64)){var S=this.MEDIA_TYPE_INFO[P];if(!S||S.size!==a.length){var T=new Error("Could not write files: Current Disk format not recognized (unformatted?)");throw T.wmsx=!0,T}var U=this.MEDIA_TYPE_DPB[P];x=(U[2]<<8)+U[1],y=U[5]+1,I=(U[8]<<8)+U[7],A=U[9],B=U[10],L=(U[12]<<8)+U[11],O=(U[14]<<8)+U[13]-1,E=U[15],J=(U[17]<<8)+U[16],N=y*x,R=!1}var V=function(){ -for(var a=O+2-1,b=-1,c=0,d=2;d<=a;++d){0===l(d)&&(++c,b<0&&(b=d))}return{first:b,quant:c,max:a}}(),W=V.quant,X=(V.max,V.first);if(0===W)throw T=new Error("Could not write files: Disk full"),T.wmsx=!0,T;var Y=0,Z=0,$=new Date;if(function(b){var c={name:"ROOT",lastModifiedDate:$,isDir:!0,items:b,content:a.slice(K,K+B*H),nextFreeEntry:0,continuousContentPosition:K,clusterChain:[0]};g(c),h(c);var f=c.availableEntries.length,k=c.items.filter(function(a){return!a.isDir});k.length>f&&(k.length=f),f-=k.length;var l=c.items.filter(function(a){return a.isDir});l.length>f&&(l.length=f),c.nextFreeEntry=l.length,e(c,k),c.nextFreeEntry=0,d(c,l),i(c),j(c)}(b),Z>0&&0===Y)throw T=new Error("No files could fit in available Disk space"),T.wmsx=!0,T;return this.mirrorFatCopies(A,I,E,x,a),Z>0?Y+" of "+(Y+Z)+" files":Y+(1===Y?" file":" files")},this.createNewDisk=function(a,b){var c=new Uint8Array(this.MEDIA_TYPE_INFO[a].size);return b||this.formatDisk(a,c),c},this.formatDisk=function(a,b){this.HARDDISK_MEDIA_TYPE_HEADER_INFO[a]?this.formatHardDisk(a,b):this.formatFloppyDisk(a,b)},this.formatFloppyDisk=function(a,b){for(var d=c.hasDOS2()||c.hasHardDiskInterface()?this.MEDIA_TYPE_BOOT_SECTOR_DOS2[a]:this.MEDIA_TYPE_BOOT_SECTOR_DOS1[a],e=0;e>8&255,b[g+2]=e>>16&255,b[g+3]=e>>24&255}}).start()},this.makeBootDisk=function(d){var e=[{url:"@DOS1Boot.zip"}];c.hasHardDiskInterface()&&e.push({url:"@NextorBoot.zip"}),new wmsx.MultiDownloader(e,function(c){c[1]&&b.writeFilesToImage(d,a.fileLoader.createTreeFromZip(wmsx.Util.checkContentIsZIP(c[1].content))),b.writeFilesToImage(d,a.fileLoader.createTreeFromZip(wmsx.Util.checkContentIsZIP(c[0].content)))}).start()},this.hardDiskMediaTypeNeededForFiles=function(a){for(var b,c=0,d=this.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES.length;c1.3*e)break}return b},this.estimatedTotalSizeOnDisk=function(a,b){for(var c=this.MEDIA_TYPE_INFO[b].clusterSize,d=0,e=0,f=a.length;e0)return g.length>h&&(g=g.slice(0,h)),loadStack(a,g,null,d,e),g}catch(a){wmsx.Util.error(a)}}function checkFileHasValidImages(a,b,c,d){if(!d){var e=wmsx.Util.checkContentIsZIP(a.content);if(e){try{var f=wmsx.Util.getZIPFilesSorted(e);for(var g in f){f[g].content=f[g].asUint8Array() -;var h=checkFileHasValidImages(f[g],b,c,!0);if(h)return h}}catch(a){wmsx.Util.error(a)}return null}}var i=wmsx.Util.checkContentIsGZIP(a.content);if(i)return checkFileHasValidImages({name:a.name,content:i},b,c,!0);var j=checkContentIsValidImages(a.content,b,c);if(j){var k=wmsx.Util.leafFilename(a.name);if(1===j)return[{name:k,content:a.content}];for(var l=new Array(j),m=a.content.length/j|0,n=0,o=0;n=240&&a[513]>=255)return 1;for(var d=0;d<32;++d)if(0!==a[d])return 0;return 1}var e=MEDIA_TYPE_VALID_SIZES[0];return a.length%e==0?a.length/e|0:0}function emptyStack(a){driveStack[a].length=0,curDisk[a]=-1,driveDiskChanged[a]=null}function loadStack(a,b,c,d,e,f){1===room.netPlayMode&&room.netController.addPeripheralOperationToSend({op:10,d:a,s:serializeStack(b),t:c,p:d,a:e}),e?(driveStack[a]=driveStack[a].concat(b),getCurrentDisk(a)||setCurrentDiskNum(a,0)):(driveStack[a]=b,setCurrentDiskNum(a,0)),stackLoadedMessage(a,c,b.length,e,f),fireMediaStateUpdate(a),driveStack[a].length>1?d||2===room.netPlayMode||self.openDiskSelectDialog(a,0,d):autoPower(d)}function autoPower(a){(diskDriveSocket.hasDiskInterface()&&getCurrentDisk(0)||diskDriveSocket.hasHardDiskInterface()&&getCurrentDisk(2))&&diskDriveSocket.autoPowerCycle(a)}function replaceCurrentDisk(a,b,c){c&&1===room.netPlayMode&&room.netController.addPeripheralOperationToSend({op:12,d:a,k:serializeDisk(b)}),driveStack[a][curDisk[a]]=b,driveDiskChanged[a]=!0,fireMediaStateUpdate(a)}function makeFileNameToSave(a){return a?wmsx.Util.leafFilenameNoExtension(a)+".dsk":"New Disk.dsk"}function motorOff(a,b){driveMotor[a]&&(driveMotorOffTimer[a]&&b&&(clearTimeout(driveMotorOffTimer[a]),driveMotorOffTimer[a]=null),driveMotorOffTimer[a]||(driveMotorOffTimer[a]=setTimeout(function(){driveMotorOffTimer[a]=null,driveMotor[a]=!1,fireMotorStateUpdate()},MOTOR_SPINDOWN_EXTRA_MILLIS[a])))}function setCurrentDiskNum(a,b){curDisk[a]=b,driveDiskChanged[a]=!0}function getCurrentDisk(a){return driveStack[a][curDisk[a]]}function fireMediaStateUpdate(a){screen.diskDrivesMediaStateUpdate(a),fireMotorStateUpdate()}function fireMotorStateUpdate(){var a=getCurrentDisk(0),b=getCurrentDisk(1),c=getCurrentDisk(2);screen.diskDrivesMotorStateUpdate(a,driveMotor[0],a&&a.modified,b,driveMotor[1],b&&b.modified,c,driveMotor[2],c&&c.modified)}function noDiskInsertedMessage(a){return!self.isDiskInserted(a)&&(screen.showOSD("No Disk in "+driveName[a],!0,!0),!0)}function maxStackReachedMessage(a){return driveStack[a].length>=MAX_STACK&&(screen.showOSD("Maximum Stack size in "+driveName[a]+" ("+driveStack[a].length+" disks)",!0,!0),!0)}function stackLoadedMessage(a,b,c,d,e){b=b||"Disk";var f=d?c+" "+b+(c>1?"s":"")+" added to "+driveName[a]:c>1?c+" Disks loaded in "+driveName[a]:currentDiskDesc(a);screen.showOSD(f+(e?" "+e:""),!0)}function diskInsertedMessage(a){noDiskInsertedMessage(a)||screen.showOSD(currentDiskDesc(a),!0)}function currentDiskDesc(a){var b=getCurrentDisk(a),c=currentDiskNumDesc(a);return driveName[a]+": "+(c?c+" ":"")+(b?b.name:"")}function currentDiskNumDesc(a){return driveStack[a].length>1?"("+(curDisk[a]+1)+"/"+driveStack[a].length+")":""}function serializeStack(a){for(var b=new Array(a.length),c=0;c=0)){f=!0;var g=diskDriveSocket.hasDiskInterface(),h=diskDriveSocket.hasHardDiskInterface();if(g)a=h?a<0?-a:self.isHardDriveFirst()?2:0:a<0?-a:0;else{if(!h)return;a=2}}var i=tryLoadDiskStackFromFiles(a,f,b,c,d,e);return i||(f&&0===a&&!d&&h?tryLoadDiskStackFromFiles(2,!0,b,c,d,e):void 0)},this.loadAsDiskFromFiles=function(a,b,c,d){if(!(a>=0)){var e=diskDriveSocket.hasDiskInterface(),f=diskDriveSocket.hasHardDiskInterface();if(e)a=f?a<0?-a:this.isHardDriveFirst()?2:0:a<0?-a:0;else{if(!f)return;a=2}}var g,h=getCurrentDisk(a);if(h)g=h.content;else{try{var i=2===a?images.hardDiskMediaTypeNeededForFiles(c):this.FORMAT_OPTIONS_MEDIA_TYPES[0]}catch(b){console.error(b),i=2===a?this.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES[1]:this.FORMAT_OPTIONS_MEDIA_TYPES[0]}g=images.createNewDisk(i)}try{var j=images.writeFilesToImage(g,c);if(!j)return}catch(a){throw console.error(a),a}if(h)return screen.showOSD(driveName[a]+": "+j+" added to disk",!0),h.content=g,h.modified=!0,replaceCurrentDisk(a,h,!0),this.getDriveStack(a);b=(b||"New "+this.MEDIA_TYPE_INFO[i].desc)+".dsk";var k=[{name:b,content:g,modified:!1}];return loadStack(a,k,null,d,!1,"("+j+" added to disk)"),k},this.loadSerializedStack=function(a,b,c,d,e){loadStack(a,deserializeStack(b,e?void 0:driveStack[a]),c,d,e)},this.replaceCurrentDiskSerialized=function(a,b){replaceCurrentDisk(a,deserializeDisk(b,getCurrentDisk(a)))},this.insertNewDisk=function(a,b,c,d){if(2===a||!maxStackReachedMessage(a)){b||(b=2===a?this.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES[0]:this.FORMAT_OPTIONS_MEDIA_TYPES[0]),1===room.netPlayMode&&room.netController.addPeripheralOperationToSend({op:11,d:a,m:b,b:c,u:d});var e=(this.MEDIA_TYPE_INFO[b],"New "+this.MEDIA_TYPE_INFO[b].desc+(c?" Boot":"")+" Disk.dsk"),f=images.createNewDisk(b,d),g=0===driveStack[a].length||2!==a;g&&driveStack[a].push({}),curDisk[a]=driveStack[a].length-1,replaceCurrentDisk(a,{name:e,content:f}),c&&images.makeBootDisk(f);var h=g&&driveStack[a].length>1;diskInsertedMessage(a),h&&2!==room.netPlayMode&&self.openDiskSelectDialog(a,0,!0)}},this.removeStack=function(a){if(!noDiskInsertedMessage(a)){var b=driveStack[a].length>1;emptyStack(a),screen.showOSD((b?"Disk Stack in ":"Disk in ")+driveName[a]+" removed",!0),fireMediaStateUpdate(a)}},this.insertDiskFromStack=function(a,b,c){setCurrentDiskNum(a,b),diskInsertedMessage(a),fireMediaStateUpdate(a),autoPower(c)},this.moveDiskInStack=function(a,b,c){var d=driveStack[a];if(!(b<0||c<0||b>d.length-1||c>d.length-1)){var e=d[curDisk[a]];d.splice(c,0,d.splice(b,1)[0]),e&&(curDisk[a]=d.indexOf(e)),fireMediaStateUpdate(a)}},this.saveDiskFile=function(a){if(!noDiskInsertedMessage(a))try{var b=getCurrentDisk(a);fileDownloader.startDownloadBinary(makeFileNameToSave(b.name),b.content.constructor===Uint8Array?b.content:new Uint8Array(b.content),driveName[a]+" Image file")&&(b.modified=!1,fireMotorStateUpdate())}catch(a){}},this.openDiskSelectDialog=function(a,b,c){ -noDiskInsertedMessage(a)||screen.openDiskSelectDialog(a,b,c)},this.openNewHardDiskDialog=function(a,b){screen.openNewHardDiskDialog(a,b)},this.getDriveStack=function(a){return driveStack[a]},this.getCurrentDiskNum=function(a){return curDisk[a]},this.getCurrentDiskDesc=function(a){return currentDiskDesc(a)},this.getCurrentDiskNumDesc=function(a){return currentDiskNumDesc(a)},this.getDriveName=function(a){return driveName[a]},this.diskHasChanged=function(a){return driveDiskChanged[a]?(driveDiskChanged[a]=!1,!0):driveDiskChanged[a]},this.getTotalSectorsAvailable=function(a){return this.isDiskInserted(a)?getCurrentDisk(a).content.length/BYTES_PER_SECTOR|0:null},this.isDiskInserted=function(a){return!!getCurrentDisk(a)},this.diskWriteProtected=function(a){return!1},this.readByte=function(a,b){if(!this.isDiskInserted(a))return null;var c=getCurrentDisk(a).content;return b>=c.length?null:c[b]},this.readDWord=function(a,b){if(!this.isDiskInserted(a))return null;var c=getCurrentDisk(a).content;return b+3>=c.length?null:c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24},this.readSectorsToSlot=function(a,b,c,d,e){if(!this.isDiskInserted(a))return!1;var f=getCurrentDisk(a).content,g=b*BYTES_PER_SECTOR,h=c*BYTES_PER_SECTOR;if(g>=f.length||g+h>f.length)return!1;for(var i=0;i=g.length||h+i>g.length)return!1;for(var j=0;j>4)||v.push(e),b(e.c>>4,e.c>>1&1,1&e.c,e.d)}},this.netClientApplyControlsChanges=function(a){for(var c=0,d=a.length;c>4,e.c>>1&1,1&e.c,e.d)}};var f,g,h,i,j,k,l,m,n,o,p,q,r=wmsx.PeripheralControls,s=!1,t=!1,u={},v=new Array(100);v.length=0;var w=wmsx.DOMKeys,x=~w.SHIFT,y=w.SHIFT,z=wmsx.FileLoader.OPEN_TYPE,A=w.VK_LEFT.wc,B=w.VK_UP.wc,C=w.VK_RIGHT.wc,D=w.VK_DOWN.wc,E=w.VK_CONTEXT.wc,F=w.VK_BACKSPACE.wc,G=w.VK_C.wc,H=w.VK_V.wc,I=w.VK_INSERT.wc,J=w.VK_B.wc,K=w.VK_G.wc,L=w.VK_F6.wc,M=w.VK_F7.wc,N=(w.VK_F8.wc, -w.VK_F8.wc),O=w.VK_F12.wc,P=w.VK_HOME.wc,Q=w.VK_END.wc,R=w.VK_PAGE_UP.wc,S=w.VK_PAGE_DOWN.wc,T=w.VK_HOME.wc,U=w.VK_END.wc,V=w.VK_PAGE_UP.wc,W=w.VK_PAGE_DOWN.wc,X=w.VK_L.wc,Y=w.VK_J.wc,Z=w.VK_K.wc,$=w.VK_M.wc,_=w.VK_CAPS_LOCK.wc,aa=w.VK_N.wc,ba=w.VK_H.wc,ca=w.VK_E.wc,da=w.VK_R.wc,ea=w.VK_U.wc,fa=w.VK_I.wc,ga=w.VK_ENTER.wc,ha=w.VK_F11.wc,ia=w.VK_F12.wc,ja=WMSX.SCREEN_RESIZE_DISABLED,ka=new Set([r.MACHINE_LOAD_STATE_FILE,r.MACHINE_SAVE_STATE_FILE,r.MACHINE_LOAD_STATE_MENU,r.MACHINE_SAVE_STATE_MENU,r.MACHINE_SELECT,r.SCREEN_OPEN_MACHINE_SELECT,r.EXTENSION_TOGGLE,r.DISK_LOAD_FILES,r.DISK_ADD_FILES,r.DISK_LOAD_URL,r.DISK_LOAD_FILES_AS_DISK,r.DISK_LOAD_ZIP_AS_DISK,r.DISK_SAVE_FILE,r.DISK_EMPTY,r.DISK_BOOT,r.DISK_SELECT,r.DISK_PREVIOUS,r.DISK_NEXT,r.HARDDISK_LOAD_FILE,r.HARDDISK_LOAD_URL,r.HARDDISK_LOAD_FILES_AS_DISK,r.HARDDISK_LOAD_ZIP_AS_DISK,r.HARDDISK_SAVE_FILE,r.HARDDISK_CHOOSE_EMPTY,r.HARDDISK_CHOOSE_BOOT,r.HARDDISK_NEW,r.CARTRIDGE_LOAD_FILE,r.CARTRIDGE_LOAD_URL,r.CARTRIDGE_LOAD_DATA_FILE,r.CARTRIDGE_SAVE_DATA_FILE,r.CARTRIDGE_CHOOSE_FORMAT,r.TAPE_LOAD_FILE,r.TAPE_LOAD_URL,r.TAPE_SAVE_FILE,r.AUTO_LOAD_FILE,r.AUTO_LOAD_URL]),la=new Set([r.DISK_MOVE,r.DISK_INSERT,r.DISK_REMOVE,r.HARDDISK_REMOVE,r.CARTRIDGE_REMOVE,r.TAPE_EMPTY,r.TAPE_REWIND,r.TAPE_TO_END,r.TAPE_SEEK_FWD,r.TAPE_SEEK_BACK,r.TAPE_REMOVE]),ma=new Set([r.SCREEN_ASPECT_PLUS,r.SCREEN_ASPECT_MINUS,r.SCREEN_SCALE_PLUS,r.SCREEN_SCALE_MINUS,r.SCREEN_FULLSCREEN,r.SCREEN_CRT_FILTER,r.SCREEN_CRT_SCANLINES,r.SCREEN_CRT_PHOSPHOR,r.SCREEN_TOGGLE_MENU,r.SCREEN_OPEN_HELP,r.SCREEN_OPEN_ABOUT,r.SCREEN_OPEN_SETTINGS,r.SCREEN_OPEN_QUICK_OPTIONS,r.SCREEN_OPEN_TOUCH_CONFIG,r.SCREEN_TOGGLE_VIRTUAL_KEYBOARD,r.SCREEN_DEFAULTS,r.SPEAKER_BUFFER_TOGGLE,r.MACHINE_POWER_TOGGLE,r.MACHINE_POWER_RESET,r.KEYBOARD_TOGGLE_HOST_LAYOUT,r.JOYSTICKS_TOGGLE_MODE,r.JOYKEYS_TOGGLE_MODE,r.TOUCH_TOGGLE_MODE,r.TOUCH_TOGGLE_DIR_BIG,r.TURBO_FIRE_TOGGLE,r.HAPTIC_FEEDBACK_TOGGLE_MODE,r.COPY_STRING,r.OPEN_PASTE_STRING,r.OPEN_ENTER_STRING,r.CAPTURE_SCREEN,r.SCREEN_OPEN_NETPLAY]);!function(){e()}()},wmsx.NetServer=function(a){"use strict";function b(){void 0===v&&(v=setInterval(p,3e4));var a={sessionControl:"createSession",sessionType:wmsx.NetServer.SESSION_TYPE_VERSION,wsOnly:D,queryVariables:["RTC_CONFIG","RTC_DATA_CHANNEL_CONFIG"]};u&&(a.sessionID=u),s.send(JSON.stringify(a))}function c(){r.stopSession(!0,v?"NetPlay Session stopped: Connection lost":"NetPlay: Connection error")}function d(a){var b=JSON.parse(a.data);if(b.wmsxUpdate){var c=E[a.clientNick];return void(c&&o(c,b.wmsxUpdate))}if(b.sessionControl)switch(b.sessionControl){case"sessionCreated":return void e(b);case"clientJoined":return void f(b);case"clientLeft":return void g(b);case"createError":return void r.stopSession(!0,"NetPlay: "+b.errorMessage)}else b.clientSDP&&h(b)}function e(b){try{G=JSON.parse(b.queriedVariables.RTC_CONFIG||"{}")}catch(a){}try{H=JSON.parse(b.queriedVariables.RTC_DATA_CHANNEL_CONFIG||"{}")}catch(a){}t=b.sessionID,x.netClearControlsToSend(),y.netClearMatrixChangesToSend(),z.netClearInfoToSend(),z.netServerClearClientsMergedInfo(),A.netClearControlsToSend(),F.length=0,a.enterNetServerMode(r),a.showOSD('NetPlay session "'+b.sessionID+'" started',!0),wmsx.Util.log('NetPlay session "'+b.sessionID+'" started')}function f(b){var c={nick:b.clientNick,justJoined:!0,wsOnly:D||!!b.wsOnly};if(E[c.nick]=c,a.showOSD('NetPlay client "'+c.nick+'" joined',!0),wmsx.Util.log('NetPlay client "'+c.nick+'" joined'),!c.wsOnly){var d=new RTCPeerConnection(G);c.rtcConnection=d,d.onicecandidate=function(a){a.candidate||(wmsx.Util.log("Server SDP for client "+c.nick+":",d.localDescription),s.send(JSON.stringify({toClientNick:c.nick,serverSDP:d.localDescription})))};var e=d.createDataChannel("dataChannel",H);c.dataChannel=e,e.onopen=function(a){i(c,a)},e.onclose=function(a){j(c,a)},e.onmessage=function(a){k(c,a)},d.createOffer().then(function(a){return d.setLocalDescription(a)}).catch(function(a){l(c,a)})}}function g(a){var b=E[a.clientNick];b&&n(b,!0,!1,'NetPlay client "'+b.nick+'" left')}function h(a){var b=E[a.fromClientNick];b&&(wmsx.Util.log("Client SDP from client "+b.nick+":",a.clientSDP),b.rtcConnection.setRemoteDescription(new RTCSessionDescription(a.clientSDP)).catch(l))}function i(a,b){wmsx.Util.log("Client "+a.nick+" dataChannel open"),a.dataChannelActive=!0}function j(a,b){wmsx.Util.error("NetPlay Client "+a.nick+" dataChannel closed"),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection lost')}function k(a,b){o(a,JSON.parse(b.data))}function l(a,b){wmsx.Util.error("NetPlay Client "+a.nick+" RTC error:",b),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection error')}function m(){for(var a in E)n(E[a],!1)}function n(b,c,d,e){c&&(a.showOSD(e||'NetPlay client "'+b.nick+'" left',!0,d),(d?wmsx.Util.error:wmsx.Util.log)(e||'NetPlay client "'+b.nick+'" left')),b.dataChannel&&(b.dataChannel.onopen=b.dataChannel.onclose=b.dataChannel.onmessage=void 0,b.dataChannel.close()),b.rtcConnection&&(b.rtcConnection.onicecandidate=void 0,b.rtcConnection.close()),delete E[b.nick]}function o(a,b){b.c&&x.netServerProcessControlsChanges(b.c),b.k&&y.netServerProcessMatrixChanges(b.k),b.pc&&A.netServerProcessControlsChanges(b.pc),b.ch&&z.netServerReceiveClientInfo(a,b.ch)}function p(){try{s.send('{ "sessionControl": "keep-alive" }')}catch(a){wmsx.Util.error("NetPlay error sending keep-alive"),r.stopSession(!0,"NetPlay Session stopped: connection error")}}function q(a,b){var c=b.length;if(c=0&&WMSXFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&h.machine.userPowerOn(!0)}function e(){h.mainVideoClock=new wmsx.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new wmsx.DOMPeripheralControls(h),h.machineControls=new wmsx.DOMMachineControls(h,h.peripheralControls),h.controllersHub=new wmsx.ControllersHub(h,h.machineControls),h.keyboard=h.controllersHub.getKeyboard(),h.fileDownloader=new wmsx.FileDownloader,h.stateMedia=new wmsx.SaveStateMedia(h),h.cartridgeSlot=new wmsx.FileCartridgeSlot(h),h.cassetteDeck=new wmsx.FileCassetteDeck(h),h.diskDrive=new wmsx.FileDiskDrive(h),h.fileLoader=new wmsx.FileLoader(h),h.screen=new wmsx.CanvasDisplay(h,a),h.speaker=new wmsx.WebAudioSpeaker(a),h.fileLoader.connectPeripherals(h.screen,h.peripheralControls,h.cartridgeSlot,h.cassetteDeck,h.diskDrive),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.cartridgeSlot,h.fileLoader,h.fileDownloader,h.machineControls,h.peripheralControls,h.controllersHub,h.diskDrive,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.machineControls.connectPeripherals(h.screen),h.controllersHub.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.cartridgeSlot.connectPeripherals(h.fileDownloader),h.cassetteDeck.connectPeripherals(h.screen,h.fileDownloader),h.diskDrive.connectPeripherals(h.screen,h.fileDownloader),h.peripheralControls.connectPeripherals(h.cartridgeSlot,h.machineControls,h.screen,h.speaker,h.controllersHub,h.fileLoader,h.cassetteDeck,h.diskDrive)}function g(){h.machine=new wmsx.Machine,h.mainVideoClock.connect(h.machine.getVideoClockSocket()),h.stateMedia.connect(h.machine.getSavestateSocket()),h.fileLoader.connect(h.machine),h.screen.connect(h.machine),h.speaker.connect(h.machine.getAudioSocket()),h.machineControls.connect(h.machine.getMachineControlsSocket()),h.controllersHub.connect(h.machine.getMachineTypeSocket(),h.machine.getMachineControlsSocket(),h.machine.getControllersSocket(),h.machine.getBIOSSocket()),h.cartridgeSlot.connect(h.machine.getCartridgeSocket(),h.machine.getExtensionsSocket()),h.cassetteDeck.connect(h.machine.getCassetteSocket()),h.diskDrive.connect(h.machine.getDiskDriveSocket()),h.peripheralControls.connect(h.machine.getMachineTypeSocket(),h.machine.getExtensionsSocket(),h.machine.getCartridgeSocket()),h.machine.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.controllersHub.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.machine.powerOff(),h.controllersHub.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.machine.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.machine.vSynchSetSupported(b>0),h.machine.preStart(),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.machine.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.machine.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.controllersHub.controllersClockPulse(),h.machine.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,this.mainVideoClock.setVSynchAltNativeFrequency(void 0),h.mainVideoClock.go(), -this.netPlayStateBeforeClientMode&&(this.machine.loadState(this.netPlayStateBeforeClientMode),this.controllersHub.netClientRestoreControlsModes(this.netPlayControlsModesBeforeClientMode),this.netPlayStateBeforeClientMode=this.netPlayControlsModesBeforeClientMode=void 0),a!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(a),this.controllersHub.roomNetPlayStatusChangeUpdate(a))},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,this.mainVideoClock.setVSynchAltNativeFrequency(void 0),h.mainVideoClock.go(),b!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(b),this.controllersHub.roomNetPlayStatusChangeUpdate(b))},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.machine.saveState(!0),this.netPlayControlsModesBeforeClientMode=this.controllersHub.netClientGetControlsModes(),b!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(b),this.controllersHub.roomNetPlayStatusChangeUpdate(b))},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(b),this.controllersHub.roomNetPlayStatusChangeUpdate(b))},this.getNetServer=function(){return this.netServer||(this.netServer=new wmsx.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new wmsx.NetClient(this)),this.netClient},this.mainVideoClock=null,this.machine=null,this.screen=null,this.speaker=null,this.machineControls=null,this.controllersHub=null,this.keyboard=null,this.fileDownloader=null,this.cartridgeSlot=null,this.cassetteDeck=null,this.diskDrive=null,this.stateMedia=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModesBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=wmsx.Util.performanceNow(),c=0;c=0){var f="SLOT"+d[0]+(d[1]||"")+"_FORMAT",g=c?WMSX[f]:null;delete WMSX[f],function(b,c,d){a[a.length]={url:b,onSuccess:function(a){WMSX.room.fileLoader.loadFromContentAsSlot(a.url,a.content,c,!0,d,!0)}}}(c||"@[Empty].rom",e,g)}}}}return a},mediaURLSpecs:function(){var a=wmsx.FileLoader.OPEN_TYPE;return[WMSX.AUTODETECT_URL&&{url:WMSX.AUTODETECT_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO,0,!0)}},WMSX.CARTRIDGE1_URL&&{url:WMSX.CARTRIDGE1_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,0,!0,!1,WMSX.CARTRIDGE1_FORMAT)}},WMSX.CARTRIDGE2_URL&&{url:WMSX.CARTRIDGE2_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,1,!0,!1,WMSX.CARTRIDGE2_FORMAT)}},WMSX.DISKA_URL&&{url:WMSX.DISKA_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.DISK,0,!0)}},!WMSX.DISKA_URL&&WMSX.DISKA_FILES_URL?{url:WMSX.DISKA_FILES_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO_AS_DISK,0,!0)}}:null,WMSX.DISKB_URL&&{url:WMSX.DISKB_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.DISK,1,!0)}},!WMSX.DISKB_URL&&WMSX.DISKB_FILES_URL?{url:WMSX.DISKB_FILES_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO_AS_DISK,1,!0)}}:null,WMSX.HARDDISK_URL&&{url:WMSX.HARDDISK_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.DISK,2,!0)}},!WMSX.HARDDISK_URL&&WMSX.HARDDISK_FILES_URL?{url:WMSX.HARDDISK_FILES_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO_AS_DISK,2,!0)}}:null,WMSX.TAPE_URL&&{url:WMSX.TAPE_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.TAPE,0,!0)}}]},extensionsInitialURLSpecs:function(){return WMSX.room.machine.getExtensionsSocket().getInitialLoaderURLSpecs()},detectDefaultMachine:function(){ -var a=WMSX.MACHINES_CONFIG[WMSX.MACHINE]&&WMSX.MACHINES_CONFIG[WMSX.MACHINE].AUTO_TYPE||3,b=wmsx.Util.userLanguage(),c="A";0===b.indexOf("ja")&&(c="J");var d=""+WMSX.MACHINE+c;if(!WMSX.MACHINES_CONFIG[d])for(d in WMSX.MACHINES_CONFIG)if(WMSX.MACHINES_CONFIG[d].TYPE<=a)break;return wmsx.Util.log("Machine auto-detection: "+d),d},saveState:function(){return{mc:WMSX.MACHINES_CONFIG,ec:WMSX.EXTENSIONS_CONFIG,pc:WMSX.PRESETS_CONFIG}},loadState:function(a,b){b?(WMSX.MACHINES_CONFIG=b.mc,WMSX.EXTENSIONS_CONFIG=b.ec,WMSX.PRESETS_CONFIG=b.pc):this.adaptForOldState(a);for(var c=0;c=0||this.listeners.push(a)},listeners:[],originalConfig:{},parameters:{},abbreviations:{E:"ENVIRONMENT",ENV:"ENVIRONMENT",M:"MACHINE",P:"PRESETS",PRESET:"PRESETS",ROM:"CARTRIDGE1_URL",CART:"CARTRIDGE1_URL",CART1:"CARTRIDGE1_URL",CART2:"CARTRIDGE2_URL",ROM_FORMAT:"CARTRIDGE1_FORMAT",CART_FORMAT:"CARTRIDGE1_FORMAT",CART1_FORMAT:"CARTRIDGE1_FORMAT",CART2_FORMAT:"CARTRIDGE2_FORMAT",DISK:"DISKA_URL",DISK_FILES:"DISKA_FILES_URL",DISKA:"DISKA_URL",DISKB:"DISKB_URL",DISKA_FILES:"DISKA_FILES_URL",DISKB_FILES:"DISKB_FILES_URL",HARDDISK:"HARDDISK_URL",HARDDISK_FILES:"HARDDISK_FILES_URL",TAPE:"TAPE_URL",RAM_SIZE:"RAMNORMAL_SIZE",ANY:"AUTODETECT_URL",AUTO:"AUTODETECT_URL",AUTODETECT:"AUTODETECT_URL",STATE:"STATE_URL",SAVESTATE:"STATE_URL",JOIN:"NETPLAY_JOIN",NICK:"NETPLAY_NICK",JOYSTICKS:"JOYSTICKS_MODE",JOYKEYS:"JOYKEYS_MODE",MOUSE:"MOUSE_MODE",TURBO:"CPU_TURBO_MODE",CPU_TURBO:"CPU_TURBO_MODE",VDP_TURBO:"VDP_TURBO_MODE",VERSION:"VERSION_CHANGE_ATTEMPTED"}},WMSX.start=function(a){"use strict";if(!WMSX.screenElement&&(WMSX.screenElement=document.getElementById(WMSX.SCREEN_ELEMENT_ID),!WMSX.screenElement))throw new Error('WMSX cannot be started. HTML document is missing screen element with id "'+WMSX.SCREEN_ELEMENT_ID+'"');delete WMSX.start,delete WMSX.preLoadImagesAndStart,wmsx.Configurator.applyConfig(function(){WMSX.userPreferences.load(),void 0===a&&(a=WMSX.AUTO_POWER_ON_DELAY>=0),WMSX.room=new wmsx.Room(WMSX.screenElement,a),WMSX.room.powerOn(),wmsx.Util.log("version "+WMSX.VERSION+" started"),wmsx.ROMDatabase.uncompress();var b=WMSX.NETPLAY_JOIN;if(!b&&WMSX.STATE_URL)new wmsx.MultiDownloader([{url:WMSX.STATE_URL}],function(a){WMSX.room.start(function(){WMSX.room.fileLoader.loadFromContent(a[0].url,a[0].content,wmsx.FileLoader.OPEN_TYPE.STATE,0,!1)})}).start();else{var c=wmsx.Configurator.slotURLSpecs(),d=wmsx.Configurator.extensionsInitialURLSpecs(),e=b?[]:wmsx.Configurator.mediaURLSpecs();new wmsx.MultiDownloader(c.concat(e).concat(d),function(){WMSX.room.start(b?function(){WMSX.room.getNetClient().joinSession(b,WMSX.NETPLAY_NICK)}:void 0)},function(a){wmsx.Util.message(a.errorMessage)}).start()}}),WMSX.shutdown=function(){WMSX.room&&WMSX.room.powerOff(),wmsx.Util.log("shutdown")}},WMSX.preLoadImagesAndStart=function(){function a(a){WMSX.start&&WMSX.AUTO_START&&(a||b&&0===c)&&WMSX.start()}var b=!1,c=wmsx.Images.embedded?0:wmsx.Images.count;if(document.addEventListener("DOMContentLoaded",function(){b=!0,a(!1)}),c>0)for(var d in wmsx.Images.urls){var e=new Image;e.src=wmsx.Images.urls[d],e.onload=function(){c--,a(!1)}}window.addEventListener("load",function(){a(!0)})},window.applicationCache&&(window.applicationCache.status===window.applicationCache.UPDATEREADY?onUpdateReady():window.applicationCache.addEventListener("updateready",onUpdateReady)),WMSX.VERSION="5.3.4",WMSX.preLoadImagesAndStart(); \ No newline at end of file diff --git a/release/stable/5.3/cbios/standalone/index.html b/release/stable/5.3/cbios/standalone/index.html deleted file mode 100644 index 990af83a..00000000 --- a/release/stable/5.3/cbios/standalone/index.html +++ /dev/null @@ -1,690 +0,0 @@ - - - - - - - - - WebMSX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- The online MSX emulator - WebMSX -  -
-
-
- - - -
-
-
- -
- Use the media icons to load files -
-
- Drag & Drop or use the media icons to load files -
- - - - - - - - \ No newline at end of file diff --git a/release/stable/5.3/embedded/wmsx.js b/release/stable/5.3/embedded/wmsx.js deleted file mode 100644 index cc548af2..00000000 --- a/release/stable/5.3/embedded/wmsx.js +++ /dev/null @@ -1,464 +0,0 @@ -// WebMSX version 5.3.4 -// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file. - -// Main Emulator parameters. -// May be overridden dynamically by external Config File or URL query parameters - -WMSX = { - - // Main Setup - ENVIRONMENT: 0, // 0: Default Emulator Environment. 1..99: Custom User Environment - CONFIG_URL: "", // Configuration file to merge. Processed before URL parameters - MACHINE: "", // Machine Type. See Machine Configuration. Leave blank for auto-detection - PRESETS: "", // Configuration Presets to apply. See Presets Configuration - - // Full or relative URL of Media files to load - CARTRIDGE1_URL: "", - CARTRIDGE2_URL: "", - DISKA_URL: "", // Image files - DISKB_URL: "", - HARDDISK_URL: "", - DISKA_FILES_URL: "", // File to load into a Disk. For several files, use a ZIP file - DISKB_FILES_URL: "", - HARDDISK_FILES_URL: "", - TAPE_URL: "", - STATE_URL: "", - AUTODETECT_URL: "", - - // Forcing ROM formats - CARTRIDGE1_FORMAT: "", // Normal, ASCII8, ASCII16, Konami, KonamiSCC, KonamiSCCI, FMPAC, etc... - CARTRIDGE2_FORMAT: "", - - // BASIC loading/typing commands. Not needed for AUTOEXEC.BAS, AUTOEXEC.BAT or Tape Images - BASIC_RUN: "", - BASIC_LOAD: "", - BASIC_BRUN: "", - BASIC_BLOAD: "", - BASIC_TYPE: "", - BASIC_ENTER: "", - - // Boot Options - BOOT_KEYS: "", // Keys to keep pressed at every boot, comma separated - BOOT_KEYS_ONCE: "", // Same as above, but only on first boot (do not use both) - BOOT_KEYS_FRAMES: -1, // -1: auto; > 0: number of frames for Boot Keys - FAST_BOOT: 0, // 0: off; 1: auto (same as Boot Keys frames); > 1: number of frames for 10x speed at boot - - // NetPlay - NETPLAY_JOIN: "", // Join NetPlay! Session automatically - NETPLAY_NICK: "", // NetPlay! Nickname, optional - - // Internal Machine configuration - BIOS_SLOT: [0], // Slot to use when loading ROM of type - CARTRIDGE1_SLOT: [1], - CARTRIDGE2_SLOT: [2], - EXPANSION1_SLOT: [2, 1], - EXPANSION2_SLOT: [2, 2], - BIOSEXT_SLOT: [3, 1], - RAMMAPPER_SIZE: 512, // 64, 128, 256, 512, 1024, 2048, 4096: RAM Mapper size in KB when active - RAMNORMAL_SIZE: 64, // 16..64: Normal RAM size in KB when active - EXTENSIONS: { }, // Extensions active. See Extensions Configuration. Use Presets to activate/deactivate - VDP_TYPE: -1, // -1: auto; 1: V9918; 2: V9938; 3: V9958 - RTC_ACTIVE: -1, // -1: auto; 0: not present; 1: present - - // General options - VOL: 1.0, // Master Volume factor - SPEED: 100, // Default emulation speed (in %) - AUTO_START: true, - AUTO_POWER_ON_DELAY: 1200, // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON - MEDIA_CHANGE_DISABLED: false, - SCREEN_RESIZE_DISABLED: false, - SCREEN_ELEMENT_ID: "wmsx-screen", - SCREEN_FULLSCREEN_MODE: -1, // -2: disabled; -1: auto; 0: off; 1: on (Full Screen); 2: on (Full Windowed) - SCREEN_FILTER_MODE: -3, // -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level - SCREEN_CRT_SCANLINES: -1, // -1: user set (default off); 0: off; 1..10: level - SCREEN_CRT_PHOSPHOR: -1, // -1: auto; 0: off; 1: on - SCREEN_DEFAULT_SCALE: -1, // -1: auto; 0.5..N in 0.05 steps: scale - SCREEN_DEFAULT_ASPECT: 1.14, // in 0.01 steps - SCREEN_CONTROL_BAR: 1, // 0: on hover; 1: always - SCREEN_FORCE_HOST_NATIVE_FPS: -1, // -1: auto. Don't change! :-) - SCREEN_VSYNC_MODE: -2, // -2: user set (default auto); -1: disabled; 0: off; 1: auto (on when available) - AUDIO_MONITOR_BUFFER_BASE: -3, // -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay - AUDIO_MONITOR_BUFFER_SIZE: -1, // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-) - AUDIO_SIGNAL_BUFFER_RATIO: 2, // Internal Audio Signal buffer based on Monitor buffer - AUDIO_SIGNAL_ADD_FRAMES: 3, // Additional frames in internal Audio Signal buffer based on Monitor buffer - JOYSTICKS_MODE: 0, // -1: disabled; 0: auto; 1: auto (swapped) - JOYKEYS_MODE: -1, // -1: disabled; 0: enabled at port 1; 1: enabled at port 2; 2: enabled at both ports; 3: enabled at both ports (swapped) - MOUSE_MODE: -1, // -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 - TOUCH_MODE: 0, // -1: disabled; 0: auto; 1: enabled at port 1; 2: enabled at port 2 - CPU_TURBO_MODE: 0, // -1: off; 0: auto (software activation); (0..8]: CPU clock multiplier; 1: 2x multiplier (backward compatibility) - VDP_TURBO_MODE: 0, // -1: off; 0: auto (software activation); 2..8: VDP Command Engine clock multiplier; 9: instantaneous - CPU_SOFT_TURBO_MULTI: 2, // 1..8 CPU clock multiplier when in AUTO mode and activated by software - VDP_SOFT_TURBO_MULTI: 2, // 1..9 VDP Command Engine clock multiplier when in AUTO mode and activated by software - KEYBOARD_JAPAN_LAYOUT: 1, // 0: ANSI; 1: JIS - DEBUG_MODE: 0, // 0: off; 1..7: debug mode. Don't change! :-) - SPRITES_DEBUG_MODE: 0, // 0: off; 1: unlimited; 2: no collisions; 3: both. May cause problems :-) - ROM_MAX_HASH_SIZE_KB: 3072, // Maximum ROM size for Hash calculation - HARDDISK_MIN_SIZE_KB: 720, // Minimum file size to be accepted as HardDisk image (besides all valid Floppy formats) - MEGARAM_SIZE: 2048, // 256, 512, 1024, 2048: MegaRAM size in KB - DISK_ROM_START_PAGE: 0, // 0..1: Change starting page for ROMs > 16KB when format is DiskPatch - LIGHT_STATES: true, - - PSG_VOL: "f", // 0..f (hex digit): PSG Volume adjust. Set globally or for each channel (4 values) - PSG_PAN: "8", // 0; 1..8..f (hex digit): PSG PanPot adjust. Set globally or for each channel (4 values) - SCC_VOL: "f", // SCC Volume adjust. Same as above (5 values) - SCC_PAN: "8", // SCC PanPot adjust. Same as above (5 values) - OPLL_VOL: "f", // OPLL Volume adjust. Same as above (14 values) - OPLL_PAN: "8", // OPLL PanPot adjust. Same as above (14 values) - - IMAGES_PATH: window.WMSX_IMAGES_PATH || "images/", - FILE_SEPARATOR_REGEX: /[\\/?:]/, - PAGE_BACK_CSS: "", // CSS to modify page background color. Applied to the body element - - WEB_EXTENSIONS_SERVER: "webmsx.herokuapp.com", // Server address for NetPlay! - - STATE_VERSION: 530, - STATE_VERSIONS_ACCEPTED: { 9: true, 50: true, 51: true, 511: true, 520: true, 530: true }, - - ALLOW_URL_PARAMETERS: true // Allows user to override any of these parameters via URL query parameters - -}; - -WMSX.MACHINES_CONFIG = { - MSX2PP: { DESCX: "MSX2++ Auto Detect", AUTO_TYPE: 4 }, - MSX2P: { DESCX: "MSX2+ Auto Detect", AUTO_TYPE: 3 }, - MSX2: { DESCX: "MSX2 Auto Detect", AUTO_TYPE: 2 }, - MSX1: { DESCX: "MSX Auto Detect", AUTO_TYPE: 1 }, - MSX2PPA: { DESC: "MSX2++ America (NTSC)", TYPE: 4, PRESETS: "_MSX2PPA", LANG: "en" }, - MSX2PPE: { DESC: "MSX2++ Europe (PAL)", TYPE: 4, PRESETS: "_MSX2PPE", LANG: "en" }, - MSX2PPJ: { DESC: "MSX2++ Japan (NTSC)", TYPE: 4, PRESETS: "_MSX2PPJ", LANG: "ja" }, - MSX2PA: { DESC: "MSX2+ America (NTSC)", TYPE: 3, PRESETS: "_MSX2PA", LANG: "en" }, - MSX2PE: { DESC: "MSX2+ Europe (PAL)", TYPE: 3, PRESETS: "_MSX2PE", LANG: "en" }, - MSX2PJ: { DESC: "MSX2+ Japan (NTSC)", TYPE: 3, PRESETS: "_MSX2PJ", LANG: "ja" }, - MSX2A: { DESC: "MSX2 America (NTSC)", TYPE: 2, PRESETS: "_MSX2A", LANG: "en" }, - MSX2E: { DESC: "MSX2 Europe (PAL)", TYPE: 2, PRESETS: "_MSX2E", LANG: "en" }, - MSX2J: { DESC: "MSX2 Japan (NTSC)", TYPE: 2, PRESETS: "_MSX2J", LANG: "ja" }, - MSX1A: { DESC: "MSX America (NTSC)", TYPE: 1, PRESETS: "_MSX1A", LANG: "en" }, - MSX1E: { DESC: "MSX Europe (PAL)", TYPE: 1, PRESETS: "_MSX1E", LANG: "en" }, - MSX1J: { DESC: "MSX Japan (NTSC)", TYPE: 1, PRESETS: "_MSX1J", LANG: "ja" }, - EMPTY2PP: { DESCX: "MSX2++ Empty (NTSC)", TYPE: 4, PRESETS: "_EMPTY" }, - EMPTY2P: { DESCX: "MSX2+ Empty (NTSC)", TYPE: 3, PRESETS: "_EMPTY" }, - EMPTY2: { DESCX: "MSX2 Empty (NTSC)", TYPE: 2, PRESETS: "_EMPTY" }, - EMPTY1: { DESCX: "MSX Empty (NTSC)", TYPE: 1, PRESETS: "_EMPTY" } -}; - -WMSX.EXTENSIONS_CONFIG = { - HARDDISK: { DESC: "Hard Drive", URL: "@[Nextor16Patch].rom", SLOT: [2, 3], SLOT2: [3, 3], TOGGLE: "DISK", CHANGE: { RAMMAPPER: 1 } }, - DISK: { DESC: "Floppy Drives", URL: "@[DiskPatch].rom", SLOT: [2, 3], SLOT2: [3, 3], TOGGLE: "HARDDISK" }, - RAMMAPPER: { DESC: "RAM Mapper", URL: "@[RAMMapper].rom", SLOT: [3], MUTUAL: "RAMNORMAL" }, - RAMNORMAL: { URL: "@[RAMNormal].rom", SLOT: [3], MUTUAL: "RAMMAPPER" }, - KANJI: { DESC: "KANJI Fonts", URL: "@[Kanji1].rom", SLOT: [4, 0] }, - MSXMUSIC: { DESC: "MSX-MUSIC", URL: "@[MSXMUSIC].rom", SLOT: [3, 2] }, - OPL4: { DESC: "OPL4 Wave", URL: "@[MoonSound].rom", SLOT: [4, 1] }, - DOUBLEPSG: { DESC: "Double PSG", URL: "@[ExtraPSG].rom", SLOT: [4, 2] }, - SCCI: { DESC: "Konami SCC+", URL: "@[SCCIExpansion].rom", SLOT: [1], SLOT2: [2], CHANGE: { SCC: 0, PAC: 0, MEGARAM: 0 } }, - SCC: { URL: "@[SCCExpansion].rom", SLOT: [1], SLOT2: [2], CHANGE: { SCCI: 0, PAC: 0, MEGARAM: 0 } }, - PAC: { DESC: "PAC SRAM", URL: "@[PACExpansion].rom", SLOT: [1], SLOT2: [2], CHANGE: { SCCI: 0, SCC: 0, MEGARAM: 0 } }, - MEGARAM: { DESC: "MegaRAM", URL: "@[MegaRAM].rom", SLOT: [1], SLOT2: [2], CHANGE: { SCCI: 0, SCC: 0, PAC: 0 } } -}; - -WMSX.PRESETS_CONFIG = { - - // Extensions Options Presets. Must be specified in this order - - // Hard Disk: Nextor Removable Device - HARDDISK: { "EXTENSIONS.HARDDISK": 1, "EXTENSIONS.DISK": 2, _INCLUDE: "RAMMAPPER" }, - HARDDISKC: { "EXTENSIONS.HARDDISK": 2, "EXTENSIONS.DISK": 1, _INCLUDE: "RAMMAPPER" }, - DOS2: { "EXTENSIONS.HARDDISK": 1, "EXTENSIONS.DISK": 2, _INCLUDE: "RAMMAPPER" }, - NOHARDDISK: { "EXTENSIONS.HARDDISK": 0 }, - - // Floppy Disk Drives - DISK: { "EXTENSIONS.DISK": 2 }, - DISKA: { "EXTENSIONS.DISK": 1 }, - NODISK: { "EXTENSIONS.DISK": 0 }, - - // RAM type - RAMMAPPER: { "EXTENSIONS.RAMMAPPER": 1, "EXTENSIONS.RAMNORMAL": 0 }, - RAMNORMAL: { "EXTENSIONS.RAMMAPPER": 0, "EXTENSIONS.RAMNORMAL": 1 }, - NORAM: { "EXTENSIONS.RAMMAPPER": 0, "EXTENSIONS.RAMNORMAL": 0 }, - - // Japanese character support - KANJI: { "EXTENSIONS.KANJI": 1 }, - NOKANJI: { "EXTENSIONS.KANJI": 0 }, - - // Sound Devices - MSXMUSIC: { "EXTENSIONS.MSXMUSIC": 1 }, - NOMSXMUSIC: { "EXTENSIONS.MSXMUSIC": 0 }, - DOUBLEPSG: { "EXTENSIONS.DOUBLEPSG": 1 }, - OPL4: { "EXTENSIONS.OPL4": 1 }, - - // Other Cartridge extensions - - SCCI: { "EXTENSIONS.SCCI": 1 }, - SCCI2: { "EXTENSIONS.SCCI": 2 }, - - SCC: { "EXTENSIONS.SCC": 1 }, - SCC2: { "EXTENSIONS.SCC": 2 }, - - PAC: { "EXTENSIONS.PAC": 1 }, - PAC2: { "EXTENSIONS.PAC": 2 }, - - MEGARAM: { "EXTENSIONS.MEGARAM": 1 }, - MEGARAM2: { "EXTENSIONS.MEGARAM": 2 }, - - // Configuration Helper Presets - - RAM128: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 128 }, - RAM256: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 256 }, - RAM512: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 512 }, - RAM1024: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 1024 }, - RAM2048: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 2048 }, - RAM4096: { _INCLUDE: "RAMMAPPER", RAMMAPPER_SIZE: 4096 }, - NORAMMAPPER: { _INCLUDE: "RAMNORMAL"}, - - MEGARAM256: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 256 }, - MEGARAM512: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 512 }, - MEGARAM1024: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 1024 }, - MEGARAM2048: { _INCLUDE: "MEGARAM", MEGARAM_SIZE: 2048 }, - - VSYNCDISABLED: { SCREEN_VSYNC_MODE: -1 }, - VSYNCOFF: { SCREEN_VSYNC_MODE: 0 }, - VSYNCON: { SCREEN_VSYNC_MODE: 1 }, - - PSGSTEREO: { PSG_PAN: "4c8" }, - PSGSTEREO2: { PSG_PAN: "8c4" }, - SCCSTEREO: { SCC_PAN: "8c4c4" }, - SCCSTEREO2: { PSG_PAN: "4c4c8" }, - OPLLSTEREO: { OPLL_PAN: "4c4c4c4c488888" }, - ALLSTEREO: { _INCLUDE: "PSGSTEREO, SCCSTEREO, OPLLSTEREO" }, - ALLSTEREO2: { _INCLUDE: "PSGSTEREO2, SCCSTEREO2, OPLLSTEREO" }, - - // Alternate Slot Configuration: try to keep RAM alone on primary Slot 3 - - ALTSLOTCONFIG: { - EXPANSION1_SLOT: [3, 2], - EXPANSION2_SLOT: [3, 3], - "EXTENSIONS_CONFIG.MSXMUSIC.SLOT": [2, 2], - "PRESETS_CONFIG.DISK": { "EXTENSIONS.DISK": 1 } - }, - - // MSX2++ Machine Presets. Do not use directly - - _MSX2PPA: { - _INCLUDE: "_MSX2PA, _MSX2PPBASE", - BOOT_DURATION_AUTO: 165 - }, - _MSX2PPE: { - _INCLUDE: "_MSX2PE, _MSX2PPBASE", - BOOT_DURATION_AUTO: 175 - }, - _MSX2PPJ: { - _INCLUDE: "_MSX2PJ, _MSX2PPBASE", - BOOT_DURATION_AUTO: 165 - }, - _MSX2PPBASE: { - _INCLUDE: "HARDDISK", - CPU_TURBO_MODE: 4, - VDP_TURBO_MODE: 4 - }, - - // MSX2+ Machine Presets. Do not use directly - - _MSX2PA: { - _INCLUDE: "_MSX2PBASE", - SLOT0_URL: "@MSX2P_NTSC.bios", - SLOT31_URL: "@MSX2PEXT_NTSC.bios | @KanjiBasic.bios", - BOOT_DURATION_AUTO: 380 - }, - _MSX2PE: { - _INCLUDE: "_MSX2PBASE", - SLOT0_URL: "@MSX2P_PAL.bios", - SLOT31_URL: "@MSX2PEXT_PAL.bios | @KanjiBasic_PAL.bios", - BOOT_DURATION_AUTO: 395 - }, - _MSX2PJ: { - _INCLUDE: "_MSX2PBASE, KANJI", - SLOT0_URL: "@MSX2P_JAP.bios", - SLOT31_URL: "@MSX2PEXT_JAP.bios | @KanjiBasic.bios", - BOOT_DURATION_AUTO: 380 - }, - _MSX2PBASE: { - _INCLUDE: "_MSX2BASE" - }, - - // MSX2 Machine Presets. Do not use directly - - _MSX2A: { - _INCLUDE: "_MSX2BASE", - SLOT0_URL: "@MSX2_NTSC.bios", - SLOT31_URL: "@MSX2EXT_NTSC.bios", - BOOT_DURATION_AUTO: 385 - }, - _MSX2E: { - _INCLUDE: "_MSX2BASE", - SLOT0_URL: "@MSX2_PAL.bios", - SLOT31_URL: "@MSX2EXT_PAL.bios", - BOOT_DURATION_AUTO: 400 - }, - _MSX2J: { - _INCLUDE: "_MSX2BASE, KANJI", - SLOT0_URL: "@MSX2_JAP.bios", - SLOT31_URL: "@MSX2EXT_JAP.bios | @KanjiBasic.bios", - BOOT_DURATION_AUTO: 360 - }, - _MSX2BASE: { - _INCLUDE: "_BASE, RAMMAPPER, DISK, MSXMUSIC, NOKANJI" - }, - - // MSX1 Machine Presets. Do not use directly - - _MSX1A: { - _INCLUDE: "_MSX1BASE", - SLOT0_URL: "@MSX1_NTSC.bios", - BOOT_DURATION_AUTO: 375 - }, - _MSX1E: { - _INCLUDE: "_MSX1BASE", - SLOT0_URL: "@MSX1_PAL.bios", - BOOT_DURATION_AUTO: 375 - }, - _MSX1J: { - _INCLUDE: "_MSX1BASE", - SLOT0_URL: "@MSX1_JAP.bios", - BOOT_DURATION_AUTO: 230 - }, - _MSX1BASE: { - _INCLUDE: "_BASE, RAMNORMAL, DISK, NOHARDDISK, NOMSXMUSIC, NOKANJI", - SLOT31_URL : "" // MSX1 has no BIOS Extension - }, - - // Base Machines Presets. Do not use directly - - _EMPTY: { - _INCLUDE: "_BASE", - EXTENSIONS: null, - SLOT0P_URL: "", - SLOT1P_URL: "", - SLOT2P_URL: "", - SLOT3P_URL: "", - SLOT4P_URL: "" // Special Device I/O only slot - }, - - _BASE: { - CPU_TURBO_MODE: 0, - VDP_TURBO_MODE: 0, - VDP_TYPE: -1, - RTC_ACTIVE: -1 - } - -}; - -wmsx = window.wmsx || {}; // Namespace - -function onUpdateReady(){alert("A new version is available!\nWebMSX will restart..."),window.applicationCache.swapCache(),window.location.reload()}WMSXFullScreenSetup={apply:function(){if(!this.cssApplied){var a=document.createElement("style");a.type="text/css",a.innerHTML=this.css,document.head.appendChild(a),this.cssApplied=!0}document.documentElement.classList.toggle("wmsx-full-screen",this.shouldStartInFullScreen())},shouldStartInFullScreen:function(){return window.WMSX?WMSX.SCREEN_FULLSCREEN_MODE>=1||-1===WMSX.SCREEN_FULLSCREEN_MODE&&this.isBrowserStandaloneMode():this.isBrowserStandaloneMode()},isBrowserStandaloneMode:function(){return navigator.standalone||window.matchMedia("(display-mode: standalone)").matches},css:"html.wmsx-full-screen, html.wmsx-full-screen body { background: black;}html.wmsx-full-screen .wmsx-full-screen-hidden { display: none;}html:not(.wmsx-full-screen) .wmsx-full-screen-only { display: none;}"},WMSXFullScreenSetup.apply(),wmsx.Util=new function(){"use strict";function a(a,b){return a.nameb.name?1:0}function b(a){return a.stopPropagation(),a.cancelable&&a.preventDefault(),!1}this.log=function(a){var b=[">> wmsx:"];Array.prototype.push.apply(b,arguments),console.log.apply(console,b)},this.warning=function(a){var b=[">> wmsx Warning:"];Array.prototype.push.apply(b,arguments),console.warn.apply(console,b)},this.error=function(a){var b=[">> wmsx Error:"];Array.prototype.push.apply(b,arguments),console.error.apply(console,b)},this.message=function(a){console.info(a),alert(a)},this.asNormalArray=function(a,b,c){return!c&&a instanceof Array?a:c?this.arrayCopy(a,b,new Array(c)):this.arrayCopy(a,0,new Array(a.length))},this.arrayFill=function(a,b,c,d){if(a.fill)return a.fill(b,c,d);void 0===c&&(c=0);for(var e=(void 0===d?a.length:d)-1;e>=c;e-=1)a[e]=b;return a},this.arrayCopy=function(a,b,c,d,e){d=d||0;for(var f=e?b+e:a.length;b=0;)a.splice(c,1);return a},this.arraysConcatAll=function(a){for(var b=0,c=0;c>8&255);return d},this.byteStringToInt16BitArray=function(a,b){if(null===a||void 0===a)return a;if("null"==a)return null;if("undefined"!=a){for(var c=a.length/2|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e>8&255)+String.fromCharCode(a[e]>>16&255)+String.fromCharCode(a[e]>>24&255);return d},this.byteStringToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if("null"==a)return null;if("undefined"!=a){for(var c=a.length/4|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e=0&&b.length%2?"0"+b:b},this.toHex4=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();if(a<0)return b;switch(b.length){case 4:return b;case 3:return"0"+b;case 2:return"00"+b;case 1:return"000"+b;default:return b}},this.escapeHtml=function(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/\?/g,"?").replace(/\-/g,"-").replace(/\|/g,"|")},this.arrayFind=function(a,b){if(a.find)return a.find(b);for(var c=0,d=a.length;c=0&&h=0;--c){var d=b[c].trim();if(d)return d}return""},this.leafFilenameNoExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(".");return c<=0?b:b.substr(0,c).trim()},this.leafFilenameOnlyExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(".");return c<=0?"":b.substr(c+1).trim()},this.dump=function(a,b,c,d){var e="",f=b||0;d=d||1;for(var g=0;g0||"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},this.isMobileDevice=function(){return this.isTouchDevice()&&/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)},this.isIOSDevice=function(){return/ipad|iphone|ipod/i.test(navigator.userAgent)},this.isBrowserStandaloneMode=function(){return navigator.standalone||window.matchMedia("(display-mode: standalone)").matches},this.onTapOrMouseDown=function(a,b){this.addEventsListener(a,this.isTouchDevice()?"touchstart mousedown":"mousedown",b)},this.onTapOrMouseDownWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?"touchstart mousedown":"mousedown",d)},this.onTapOrMouseUpWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?"touchstart mouseup":"mouseup",d)},this.onTapOrMouseDownWithBlockUIG=function(a,c){function d(a){if("touchend"===a.type&&!a.target.wmsxNeedsUIG)return b(a);var d="touchstart"===a.type&&a.target.wmsxNeedsUIG,e="touchend"===a.type;return c(a,d,e),b(a)}this.addEventsListener(a,this.isTouchDevice()?"touchstart touchend mousedown":"mousedown",d)},this.blockEvent=b,this.addEventsListener=function(a,b,c,d){b=b.split(" ");for(var e=0;e=0;c--)b+=this.hex_chr.charAt(a>>4*c&15);return b},str2blks_SHA1:function(a){for(var b=1+(a.length+8>>6),c=new Array(16*b),d=0;d<16*b;d++)c[d]=0;for(d=0;d>2]|=a.charCodeAt(d)<<24-d%4*8;return c[d>>2]|=128<<24-d%4*8,c[16*b-1]=8*a.length,c},add:function(a,b){var c=(65535&a)+(65535&b);return(a>>16)+(b>>16)+(c>>16)<<16|65535&c},rol:function(a,b){return a<>>32-b},ft:function(a,b,c,d){return a<20?b&c|~b&d:a<40?b^c^d:a<60?b&c|b&d|c&d:b^c^d},kt:function(a){return a<20?1518500249:a<40?1859775393:a<60?-1894007588:-899497514},calcSHA1FromByteArray:function(a){for(var b="",c=0;c>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0, -this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\0\0",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(void 0===a||!a.length)return 0;var e="string"!==c.getTypeOf(a);void 0===b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date(1980+(a>>25&127),(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\0",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a,b){return"/"!=a.slice(-1)&&(a+="/"),b=void 0!==b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent="",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=""),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),n=b.comment||"",o=d.transformTo("string",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t="",u="",v="";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+="up"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+="uc"+s(v.length,2)+v);var w="";return w+="\n\0",w+=p||q?"\0\b":"\0\0",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2),{fileRecord:f.LOCAL_FILE_HEADER+w+m+t,dirRecord:f.CENTRAL_FILE_HEADER+"\0"+w+s(o.length,2)+"\0\0\0\0"+(!0===j?"\0\0\0":"\0\0\0\0")+s(g,4)+m+t+o,compressedObject:c}},A={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(128>(e=a[b++]))i[c++]=e;else if((f=g[e])>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length;f>c;){var g=j(a,Math.min(c+65536,f));b.push(k(e.uint8array?a.subarray(c,g):a.slice(c,g))),c=g}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44;d>0;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(0!==c)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};l.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?4:0,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),1!==(c=g.deflate(e,d))&&0!==c)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&4===d)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&1!==c);return 4!==d||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,0===c)},l.prototype.onData=function(a){this.chunks.push(a)},l.prototype.onEnd=function(a){0===a&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=l,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)} -var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0==(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),(c=f.inflate(l,i.Z_NO_FLUSH))!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(128>(f=a[c++]))j[e++]=f;else if((g=h[f])>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do{e=e+b[d++]|0,f=f+e|0}while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(a,b,c,e){var f=d,g=e+c;a^=-1;for(var h=e;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var d=function(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}();b.exports=c},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ha?a.strstart-(a.w_size-ha):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ga,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do{if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do{}while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ga-(m-f),f=m-ga,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}}while((b=l[b&k])>i&&0!=--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ha)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do{d=a.head[--b],a.head[b]=d>=g?d-g:0}while(--c);c=g,b=c;do{d=a.prev[--b],a.prev[b]=d>=g?d-g:0}while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=fa)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return qa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return qa;if(a.strstart-a.block_start>=a.w_size-ha&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):(a.strstart>a.block_start&&(h(a,!1),a.strm.avail_out),qa)}function o(a,b){for(var c,d;;){if(a.lookahead=fa&&(a.ins_h=(a.ins_h<=fa)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-fa),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=fa){a.match_length--;do{a.strstart++,a.ins_h=(a.ins_h<=fa&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=fa-1)),a.prev_length>=fa&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-fa,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-fa),a.lookahead-=a.prev_length-1,a.prev_length-=2;do{++a.strstart<=e&&(a.ins_h=(a.ins_h<=fa&&a.strstart>0&&(e=a.strstart-1,(d=g[e])===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ga;do{}while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ga-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=fa?(c=D._tr_tally(a,1,a.match_length-fa),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return qa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=fa-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*da),this.dyn_dtree=new C.Buf16(2*(2*ba+1)),this.bl_tree=new C.Buf16(2*(2*ca+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ea+1),this.heap=new C.Buf16(2*aa+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*aa+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?ja:oa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===pa&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===ja)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ka):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,ua),h.status=oa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1 -;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ia),m+=31-m%31,h.status=oa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ka)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=la)}else h.status=la;if(h.status===la)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ma)}else h.status=ma;if(h.status===ma)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=na)}else h.status=na;if(h.status===na&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=oa)):h.status=oa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===pa&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==pa){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===sa||o===ta)&&(h.status=pa),o===qa||o===sa)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ra&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==ja&&b!==ka&&b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa?d(a,O):(a.state=null,b===oa?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=286,ba=30,ca=19,da=2*aa+1,ea=15,fa=3,ga=258,ha=ga+fa+1,ia=32,ja=42,ka=69,la=73,ma=91,na=103,oa=113,pa=666,qa=1,ra=2,sa=3,ta=4,ua=3,va=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new va(0,0,0,0,n),new va(4,4,8,4,o),new va(4,5,16,8,o),new va(4,6,32,32,o),new va(4,4,16,16,p),new va(8,16,32,32,p),new va(8,16,128,128,p),new va(8,32,128,256,p),new va(32,128,258,1024,p),new va(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";b.exports=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A;c=a.state,d=a.next_in,z=a.input,e=d+(a.avail_in-5),f=a.next_out,A=a.output,g=f-(b-a.avail_out),h=f+(a.avail_out-257),i=c.dmax,j=c.wsize,k=c.whave,l=c.wnext,m=c.window,n=c.hold,o=c.bits,p=c.lencode,q=c.distcode,r=(1<o&&(n+=z[d++]<>>24,n>>>=u,o-=u,0===(u=t>>>16&255))A[f++]=65535&t;else{if(!(16&u)){if(0==(64&u)){t=p[(65535&t)+(n&(1<o&&(n+=z[d++]<>>=u,o-=u),15>o&&(n+=z[d++]<>>24,n>>>=u,o-=u,!(16&(u=t>>>16&255))){if(0==(64&u)){t=q[(65535&t)+(n&(1<o&&(n+=z[d++]<o&&(n+=z[d++]<i){a.msg="invalid distance too far back",c.mode=30;break a}if(n>>>=u,o-=u,u=f-g,w>u){if((u=w-u)>k&&c.sane){a.msg="invalid distance too far back",c.mode=30;break a}if(x=0,y=m,0===l){if(x+=j-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}else if(u>l){if(x+=j+l-u,u-=l,v>u){v-=u;do{A[f++]=m[x++]}while(--u);if(x=0,v>l){u=l,v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}}else if(x+=l-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}for(;v>2;)A[f++]=y[x++],A[f++]=y[x++],A[f++]=y[x++],v-=3;v&&(A[f++]=y[x++],v>1&&(A[f++]=y[x++]))}else{x=f-w;do{A[f++]=A[x++],A[f++]=A[x++],A[f++]=A[x++],v-=3}while(v>2);v&&(A[f++]=A[x++],v>1&&(A[f++]=A[x++]))}break}}break}}while(e>d&&h>f);v=o>>3,d-=v,o-=v<<3,n&=(1<d?e-d+5:5-(d-e),a.avail_out=h>f?h-f+257:257-(f-h),c.hold=n,c.bits=o}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=1+(b>>4),48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,qa)}function k(a){if(ra){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),ra=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=la;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=la;break}if(m>>>=4,n-=4,wa=8+(15&m),0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=la;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=1+(31&m),m>>>=5,n-=5,c.ncode=4+(15&m),m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg="invalid literal/length code",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if((q=c.offset-q)>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do{f[h++]=pa[oa++]}while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=y;y++)K[y]=0;for(z=0;j>z;z++)K[b[i+z]]++;for(C=x,B=d;B>=1&&0===K[B];B--);if(C>B&&(C=B),0===B)return k[l++]=20971520,k[l++]=20971520,n.bits=1,0;for(A=1;B>A&&0===K[A];A++);for(A>C&&(C=A),F=1,y=1;d>=y;y++)if(F<<=1,0>(F-=K[y]))return-1;if(F>0&&(0===a||1!==B))return-1;for(L[1]=0,y=1;d>y;y++)L[y+1]=L[y]+K[y];for(z=0;j>z;z++)0!==b[i+z]&&(m[L[b[i+z]]++]=z);if(0===a?(I=M=m,t=19):1===a?(I=e,J-=257,M=f,N-=257,t=256):(I=g,M=h,t=-1),H=0,z=0,y=A,s=l,D=C,E=0,q=-1,G=1<852||2===a&&G>592)return 1;for(var O=0;;){O++,u=y-E,m[z]t?(v=M[N+m[z]],w=I[J+m[z]]):(v=96,w=0),o=1<>E)+p]=u<<24|v<<16|w|0}while(0!==p);for(o=1<>=1;if(0!==o?(H&=o-1,H+=o):H=0,z++,0==--K[y]){if(y===B)break;y=b[i+m[z]]}if(y>C&&(H&r)!==q){for(0===E&&(E=C),s+=A,D=y-E,F=1<D+E&&!(0>=(F-=K[D+E]));)D++,F<<=1;if(G+=1<852||2===a&&G>592)return 1;q=H&r,k[q]=C<<24|D<<16|s-l|0}}return 0!==H&&(k[s+H]=y-E<<24|64<<16|0),n.bits=C,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?da[a]:da[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>T-c?(a.bi_buf|=b<>T-a.bi_valid,a.bi_valid+=c-T):(a.bi_buf|=b<>>=1,c<<=1}while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;S>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;R>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)(e=a.heap[--c])>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(S+1),g=0;for(d=1;S>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(S+1);for(c=0,d=0;M-1>d;d++)for(fa[d]=c,a=0;a<1<d;d++)for(ga[d]=e,a=0;a<1<<$[d];a++)da[e++]=d;for(e>>=7;P>d;d++)for(ga[d]=e<<7,a=0;a<1<<$[d]-7;a++)da[256+e++]=d;for(b=0;S>=b;b++)f[b]=0;for(a=0;143>=a;)ba[2*a+1]=8,a++,f[8]++;for(;255>=a;)ba[2*a+1]=9,a++,f[9]++;for(;279>=a;)ba[2*a+1]=7,a++,f[7]++;for(;287>=a;)ba[2*a+1]=8,a++,f[8]++;for(l(ba,O+1,f),a=0;P>a;a++)ca[2*a+1]=5,ca[2*a]=i(a,5);ha=new ka(ba,Z,N+1,O,S),ia=new ka(ca,$,0,P,S),ja=new ka(new Array(0),_,0,Q,U)}function n(a){var b;for(b=0;O>b;b++)a.dyn_ltree[2*b]=0;for(b=0;P>b;b++)a.dyn_dtree[2*b]=0;for(b=0;Q>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*V]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do{c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1)}while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*W]++):10>=h?a.bl_tree[2*X]++:a.bl_tree[2*Y]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj)do{h(a,e,a.bl_tree)}while(0!=--j);else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,W,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,X,a.bl_tree),g(a,j-3,3)):(h(a,Y,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=Q-1;b>=3&&0===a.bl_tree[2*aa[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4), -e=0;d>e;e++)g(a,a.bl_tree[2*aa[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;N>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){ma||(m(),ma=!0),a.l_desc=new la(a.dyn_ltree,ha),a.d_desc=new la(a.dyn_dtree,ia),a.bl_desc=new la(a.bl_tree,ja),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,V,ba),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ba,ca)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ea[c]+N+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=29,N=256,O=N+1+M,P=30,Q=19,R=2*O+1,S=15,T=16,U=7,V=256,W=16,X=17,Y=18,Z=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],$=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],aa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ba=new Array(2*(O+2));d(ba);var ca=new Array(2*P);d(ca);var da=new Array(512);d(da);var ea=new Array(256);d(ea);var fa=new Array(M);d(fa);var ga=new Array(P);d(ga);var ha,ia,ja,ka=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},la=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},ma=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),wmsx.EmbeddedFiles={get:function(a){if(a.indexOf("|")<0)return this.getFile(a);for(var b=a.split(/\s*\|\s*/),c=new Array(b.length),d=0;d0||(a.success=!0,a.content=wmsx.Util.arraysConcatAll(a.filesContent),a.onSuccess&&a.onSuccess(a),j())}function i(a,b){var d="Could not load file: "+a.url+"\nError: "+b;a.success=!1,a.error=b,a.errorMessage=d,a.onError?(wmsx.Util.error(d),a.onError(a)):c||wmsx.Util.message(d),j()}function j(){if(!q){for(var d=0;d>>8}function fromE(){return 255&DE}function fromH(){return HL>>>8}function fromL(){return 255&HL}function fromIXh(){return IX>>>8}function fromIXl(){return 255&IX}function fromIYh(){return IY>>>8}function fromIYl(){return 255&IY}function toA(a){A=a}function toB(a){B=a}function toC(a){C=a}function toD(a){DE=255&DE|a<<8}function toE(a){DE=65280&DE|a}function toH(a){HL=255&HL|a<<8}function toL(a){HL=65280&HL|a}function toIXh(a){IX=255&IX|a<<8}function toIXl(a){IX=65280&IX|a}function toIYh(a){IY=255&IY|a<<8}function toIYl(a){IY=65280&IY|a}function fromAF(){return A<<8|F}function fromBC(){return B<<8|C}function fromDE(){return DE}function fromHL(){return HL}function fromSP(){return SP}function fromIX(){return IX}function fromIY(){return IY}function toAF(a){A=a>>>8,F=255&a}function toBC(a){B=a>>>8,C=255&a}function toDE(a){DE=a}function toHL(a){HL=a}function toSP(a){SP=a}function toIX(a){IX=a}function toIY(a){IY=a}function from_BC_8(){return bus.read(fromBC())}function from_DE_8(){return bus.read(DE)}function from_HL_8(){return bus.read(HL)}function from_SP_16(){var a=SP+1;return a>65535&&(a=0),bus.read(SP)|bus.read(a)<<8}function to_BC_8(a){bus.write(fromBC(),a)}function to_DE_8(a){bus.write(DE,a)}function to_HL_8(a){bus.write(HL,a)}function to_SP_16(a){bus.write(SP,255&a);var b=SP+1;b>65535&&(b=0),bus.write(b,a>>>8)}function preReadIXYd(){preReadIXYdOffset=bus.read(pcInc())}function from_IXd_8(){return bus.read(sum16Signed(IX,bus.read(pcInc())))}function from_IYd_8(){return bus.read(sum16Signed(IY,bus.read(pcInc())))} -function to_IXd_8(a){bus.write(sum16Signed(IX,bus.read(pcInc())),a)}function to_IYd_8(a){bus.write(sum16Signed(IY,bus.read(pcInc())),a)}function fromN(){return bus.read(pcInc())}function fromNN(){return bus.read(pcInc())|bus.read(pcInc())<<8}function from_NN_8(){return bus.read(bus.read(pcInc())|bus.read(pcInc())<<8)}function to_NN_8(a){var b=bus.read(pcInc())|bus.read(pcInc())<<8;bus.write(b,a)}function from_NN_16(){var a=bus.read(pcInc())|bus.read(pcInc())<<8,b=bus.read(a);return a+=1,a>65535&&(a=0),bus.read(a)<<8|b}function to_NN_16(a){var b=bus.read(pcInc())|bus.read(pcInc())<<8;bus.write(b,255&a),b+=1,b>65535&&(b=0),bus.write(b,a>>>8)}function sum16Signed(a,b){return a+(b>127?-256+b:b)&65535}function push16(a){bus.write(decSP(),a>>>8),bus.write(decSP(),255&a)}function pop16(){return bus.read(spInc())|bus.read(spInc())<<8}function NOP(){}function HALT(){--PC}function newLD(a,b){return function(){a(b())}}function LDAI(){A=I,F=1&F|168&A|(0===A)<9)&&(a-=6),(F&bC||A>153)&&(a-=96)):((F&bH||(15&A)>9)&&(a+=6),(F&bC||A>153)&&(a+=96)),a&=255,F=3&F|168&a|(0===a)<153,A=a}function CPL(){A=255&~A,F=197&F|18|40&A}function NEG(){var a=A;A=255&-A,F=bN|168&A|(0===A)<>>7),F=196&F|40&A|A&bC}function RLA(){var a=A;A=255&(A<<1|F&bC),F=196&F|40&A|a>>>7&bC}function RRCA(){A=255&(A>>>1|A<<7),F=196&F|40&A|A>>>7}function RRA(){var a=A;A=A>>>1|(F&bC)<<7,F=196&F|40&A|a&bC}function RLD(){var a=from_HL_8();to_HL_8(255&(a<<4|15&A)),A=240&A|a>>>4,F=F&bC|168&A|(0===A)<>>4)),A=240&A|15&a,F=F&bC|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newADC(a){return function(){var b=a(),c=A+b+(F&bC),d=A^b^c;A=255&c,F=168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newSUB(a){return function(){var b=a(),c=A-b,d=A^b^c;A=255&c,F=bN|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newSBC(a){return function(){var b=a(),c=A-b-(F&bC),d=A^b^c;A=255&c,F=bN|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newAND(a){return function(){A&=a(),F=bH|168&A|(0===A)<>>6^d>>>5)&bPV|c>>>8&bC}}function newINC(a,b){return function(){var c=a()+1&255;b(c),F=F&bC|168&c|(0===c)<>>8&40|(d^e^f)>>>8&bH|f>>>16&bC}}function newADC16(a,b,c){return function(){var d=b(),e=c(),f=d+e+(F&bC);a(65535&f);var g=(d^e^f)>>>8;F=f>>>8&168|(0==(65535&f))<>>6^g>>>5)&bPV|f>>>16&bC}}function newSBC16(a,b,c){return function(){var d=b(),e=c(),f=d-e-(F&bC);a(65535&f);var g=(d^e^f)>>>8;F=bN|f>>>8&168|(0==(65535&f))<>>6^g>>>5)&bPV|f>>>16&bC}}function newINC16(a,b){return function(){a(b()+1&65535)}}function newDEC16(a,b){return function(){a(b()-1&65535)}}function newRLC(a,b,c){return function(){var d=b(),e=255&(d<<1|d>>>7);a(e),c&&c(e),F=168&e|(0===e)<>>7&bC}}function newRRC(a,b,c){return function(){var d=b(),e=255&(d>>>1|d<<7);a(e),c&&c(e),F=168&e|(0===e)<>>1|(F&bC)<<7);a(e),c&&c(e),F=168&e|(0===e)<>>7&bC}}function newSRA(a,b,c){return function(){var d=b(),e=d>>>1|128&d;a(e),c&&c(e),F=168&e|(0===e)<>>7&bC}}function newSRL(a,b,c){return function(){var d=b(),e=d>>>1;a(e),c&&c(e),F=168&e|(0===e)<0&&(extensionExtraIterations=a.extraIterations))}return function d(){if(null===extensionCurrentlyRunning){extensionCurrentlyRunning=a,extensionExtraIterations=0;c(bus.cpuExtensionBegin(b(a))),d()}else if(extensionExtraIterations>0)extensionExtraIterations--,PC-=2;else{var e=bus.cpuExtensionFinish(b(a));c(e),extensionCurrentlyRunning=null}}}function defineAllInstructions(){function a(a,c,d,e,f,g,h){var i={};return i.prefix=c?a<<8|c:a,i.opcode=d,i.remainCycles=e+1,i.totalCycles=i.remainCycles+(a?5:0)+(c?4:0),i.operation=f,i.mnemonic=g,i.undocumented=h,i.opcodeString=(i.prefix?wmsx.Util.toHex2(i.prefix):"")+(56779===i.prefix||64971===i.prefix?" ":"")+wmsx.Util.toHex2(i.opcode)+" "+g+(h?"*":""),i.toString=function(){return this.opcodeString},b(i),i}function b(a){if(self.instructionsAll.push(a),a.prefix)if(237===a.prefix)instructionsED[a.opcode]=a;else if(203===a.prefix)instructionsCB[a.opcode]=a;else if(56779===a.prefix)instructionsDDCB[a.opcode]=a;else if(64971===a.prefix)instructionsFDCB[a.opcode]=a;else if(221===a.prefix)instructionsDD[a.opcode]=a;else{if(253!==a.prefix)throw new Error("Invalid instruction prefix!");instructionsFD[a.opcode]=a}else instructions[a.opcode]=a}var c={A:{bits:7,to:toA,from:fromA,desc:"A"},B:{bits:0,to:toB,from:fromB,desc:"B"},C:{bits:1,to:toC,from:fromC,desc:"C"},D:{bits:2,to:toD,from:fromD,desc:"D"},E:{bits:3,to:toE,from:fromE,desc:"E"},H:{bits:4,to:toH,from:fromH,desc:"H"},L:{bits:5,to:toL,from:fromL,desc:"L"}},d={A:{bits:7,to:toA,from:fromA,desc:"A"},B:{bits:0,to:toB,from:fromB,desc:"B"},C:{bits:1,to:toC,from:fromC,desc:"C"},D:{bits:2,to:toD,from:fromD,desc:"D"},E:{bits:3,to:toE,from:fromE,desc:"E"},H:{bits:4,to:toH,from:fromH,desc:"H",nopref:!0},L:{bits:5,to:toL,from:fromL,desc:"L",nopref:!0},IXh:{bits:4,to:toIXh,from:fromIXh,desc:"IXh",pref:221},IXl:{bits:5,to:toIXl,from:fromIXl,desc:"IXl",pref:221},IYh:{bits:4,to:toIYh,from:fromIYh,desc:"IYh",pref:253},IYl:{bits:5,to:toIYl,from:fromIYl,desc:"IYl",pref:253}},e={_HL_:{to:to_HL_8,from:from_HL_8,desc:"(HL)"},_IXd_:{to:to_IXd_8,from:from_IXd_8,desc:"(IX+d)",pref:221},_IYd_:{to:to_IYd_8,from:from_IYd_8,desc:"(IY+d)",pref:253}},f=64;for(var g in d){var h=d[g];for(var i in d){var j=d[i];if(!(h.pref&&(j.nopref||j.pref&&j.pref!=h.pref)||j.pref&&(h.nopref||h.pref&&h.pref!=j.pref))){var k=f|h.bits<<3|j.bits,l=newLD(h.to,j.from),m=h.pref|j.pref;a(m,null,k,4,l,"LD "+h.desc+", "+j.desc,m)}}}f=6;for(g in d)h=d[g],k=f|h.bits<<3,l=newLD(h.to,fromN),m=h.pref,a(m,null,k,7,l,"LD "+h.desc+", n",m);f=70;for(g in c){h=c[g];for(i in e)j=e[i],k=f|h.bits<<3,l=newLD(h.to,j.from),m=j.pref,a(m,null,k,7+(m?8:0),l,"LD "+h.desc+", "+j.desc,!1)}f=112;for(g in e){h=e[g];for(i in c)j=c[i],k=f|j.bits,l=newLD(h.to,j.from),m=h.pref,a(m,null,k,7+(m?8:0),l,"LD "+h.desc+", "+j.desc,!1)}f=54;for(g in e)h=e[g],k=f,m=h.pref,l=m?newLD_PreRead_IXYd_(h.to.toPreReadAddr,fromN):newLD(h.to,fromN),a(m,null,k,10+(m?5:0),l,"LD "+h.desc+", n",!1);k=10,l=newLD(toA,from_BC_8),a(null,null,k,7,l,"LD A, (BC)",!1),k=26,l=newLD(toA,from_DE_8),a(null,null,k,7,l,"LD A, (DE)",!1),k=58,l=newLD(toA,from_NN_8),a(null,null,k,13,l,"LD A, (nn)",!1),k=2,l=newLD(to_BC_8,fromA),a(null,null,k,7,l,"LD (BC), A",!1),k=18,l=newLD(to_DE_8,fromA),a(null,null,k,7,l,"LD (DE), A",!1),k=50,l=newLD(to_NN_8,fromA),a(null,null,k,13,l,"LD (nn), A",!1),k=87,l=LDAI,a(null,237,k,5,l,"LD A, I",!1),k=95,l=LDAR,a(null,237,k,5,l,"LD A, R",!1),k=71,l=LDIA,a(null,237,k,5,l,"LD I, A",!1),k=79,l=LDRA,a(null,237,k,5,l,"LD R, A",!1);var n={BC:{bits:0,to:toBC,from:fromBC,desc:"BC"},DE:{bits:1,to:toDE,from:fromDE,desc:"DE"},HL:{bits:2,to:toHL,from:fromHL,desc:"HL"},SP:{bits:3,to:toSP,from:fromSP,desc:"SP"}},o={BC:{bits:0,to:toBC,from:fromBC,desc:"BC"},DE:{bits:1,to:toDE,from:fromDE,desc:"DE"},HL:{bits:2,to:toHL,from:fromHL,desc:"HL",nopref:!0},SP:{bits:3,to:toSP,from:fromSP,desc:"SP"},IX:{bits:2,to:toIX,from:fromIX,desc:"IX",pref:221},IY:{bits:2,to:toIY,from:fromIY,desc:"IY",pref:253}},p={BC:{bits:0,to:toBC,from:fromBC,desc:"BC"},DE:{bits:1,to:toDE,from:fromDE,desc:"DE"},HL:{bits:2,to:toHL,from:fromHL,desc:"HL"},AF:{bits:3,to:toAF,from:fromAF,desc:"AF"},IX:{bits:2,to:toIX,from:fromIX,desc:"IX",pref:221},IY:{bits:2,to:toIY,from:fromIY,desc:"IY",pref:253}},q={HL:{to:toHL,from:fromHL,desc:"HL",nopref:!0},IXd:{to:toIX,from:fromIX,desc:"IX",pref:221},IYd:{to:toIY,from:fromIY,desc:"IY",pref:253}};f=1;for(g in o)h=o[g],k=f|h.bits<<4,l=newLD(h.to,fromNN),m=h.pref,a(m,null,k,10,l,"LD "+h.desc+", nn",!1);k=42;for(g in q)h=q[g],l=newLD(h.to,from_NN_16),m=h.pref,a(m,null,k,16,l,"LD "+h.desc+", (nn)",!1);f=75;for(g in n)h=n[g],k=f|h.bits<<4,l=newLD(h.to,from_NN_16),a(null,237,k,16,l,"LD "+h.desc+", (nn)",!1);k=34;for(i in q)j=q[i],l=newLD(to_NN_16,j.from),m=j.pref,a(m,null,k,16,l,"LD (nn), "+j.desc,!1);f=67;for(i in n)j=n[i],k=f|j.bits<<4,l=newLD(to_NN_16,j.from),a(null,237,k,16,l,"LD (nn), "+j.desc,!1);k=249;for(i in q)j=q[i],l=newLD(toSP,j.from),m=j.pref,a(m,null,k,6,l,"LD SP, "+j.desc,!1);f=197;for(i in p)j=p[i],k=f|j.bits<<4,l=newPUSH(j.from),m=j.pref,a(m,null,k,11,l,"PUSH "+j.desc,!1);f=193;for(g in p)h=p[g],k=f|h.bits<<4,l=newPOP(h.to),m=h.pref,a(m,null,k,10,l,"POP "+h.desc,!1);k=235,l=EXDEHL,a(null,null,k,4,l,"EX DE, HL",!1),k=8,l=EXAFAF2,a(null,null,k,4,l,"EX AF, AF'",!1),k=217,l=EXX,a(null,null,k,4,l,"EXX",!1),k=227;for(var r in q){var s=q[r];l=newEXr_SP_16(s.to,s.from),m=s.pref,a(m,null,k,19,l,"EX (SP), "+s.desc,!1)}k=160,l=LDI,a(null,237,k,12,l,"LDI",!1),k=176,l=LDIR,a(null,237,k,12,l,"LDIR",!1),k=168,l=LDD,a(null,237,k,12,l,"LDD",!1),k=184,l=LDDR,a(null,237,k,12,l,"LDDR",!1),k=161,l=CPI,a(null,237,k,12,l,"CPI",!1),k=177,l=CPIR,a(null,237,k,12,l,"CPIR",!1),k=169,l=CPD,a(null,237,k,12,l,"CPD",!1),k=185,l=CPDR,a(null,237,k,12,l,"CPDR",!1);var t={ADD:{desc:"ADD A, ",instr:newADD,variations:{rp:{opcode:128},n:{opcode:198},_HLp_:{opcode:134,T:7}}},ADC:{desc:"ADC A, ",instr:newADC,variations:{rp:{opcode:136},n:{opcode:206},_HLp_:{opcode:142,T:7}}},SUB:{desc:"SUB ",instr:newSUB,variations:{rp:{opcode:144},n:{opcode:214},_HLp_:{opcode:150,T:7}}},SBC:{desc:"SBC A, ",instr:newSBC,variations:{rp:{opcode:152},n:{opcode:222},_HLp_:{opcode:158,T:7}}},AND:{desc:"AND ",instr:newAND,variations:{rp:{opcode:160},n:{opcode:230},_HLp_:{opcode:166,T:7}}},OR:{desc:"OR ",instr:newOR,variations:{rp:{opcode:176},n:{opcode:246},_HLp_:{opcode:182,T:7}}}, -XOR:{desc:"XOR ",instr:newXOR,variations:{rp:{opcode:168},n:{opcode:238},_HLp_:{opcode:174,T:7}}},CP:{desc:"CP ",instr:newCP,variations:{rp:{opcode:184},n:{opcode:254},_HLp_:{opcode:190,T:7}}},INC:{desc:"INC ",instr:newINC,selfModifyInstr:newINC_PreRead_IXYd_,variations:{rp:{opcode:4,rShift:3},_HLp_:{opcode:52,T:11}}},DEC:{desc:"DEC ",instr:newDEC,selfModifyInstr:newDEC_PreRead_IXYd_,variations:{rp:{opcode:5,rShift:3},_HLp_:{opcode:53,T:11}}}};for(var u in t){var v=t[u],w=v.variations.rp;f=w.opcode;for(r in d)s=d[r],k=f|s.bits<",!1),k=237,l=pSET_ED,a(null,null,k,4,l,"< SET ED >",!1),k=221,l=pSET_DD,a(null,null,k,4,l,"< SET DD >",!1),k=221,l=pSET_DD,a(221,null,k,4,l,"< SET DD again >",!1),k=253,l=pSET_FD,a(221,null,k,4,l,"< SWITCH to FD >",!1),k=203,l=pSET_DDCB,a(221,null,k,3,l,"< SET DDCB >",!1),k=253,l=pSET_FD,a(null,null,k,4,l,"< SET FD >",!1),k=253,l=pSET_FD,a(253,null,k,4,l,"< SET FD again >",!1),k=221,l=pSET_DD,a(253,null,k,4,l,"< SWITCH to DD >",!1),k=203,l=pSET_FDCB,a(253,null,k,3,l,"< SET FDCB >",!1),k=257,l=pADT_CYCLES,instructionADT_CYCLES=a(null,null,k,0,l,"< ADT CYCLES >",!1)}var self=this;this.powerOn=function(){toAF(65533),toBC(65535),DE=65535,HL=65535,AF2=65533,BC2=65535,DE2=65535,HL2=65535,toIX(65535),toIY(65535),SP=65535,setINT(255),this.reset()},this.powerOff=function(){}, -this.clockPulses=function(a){for(var b=a*turboClockMulti|0,c=b;c>0;--c)--T>1||(T>0?instruction.operation():(++R,ackINT?acknowledgeINT():fetchNextInstruction()));busCycles+=a},this.connectBus=function(a){bus=a},this.reset=function(){busCycles=0,T=-1,opcode=null,ackINT=!1,instruction=null,prefix=0,PC=0,I=0,R=0,IFF1=0,IM=0,extensionCurrentlyRunning=null,extensionExtraIterations=0},this.setINTChannel=function(a,b){setINT(b?INT|1<8?8:a},this.getCPUTurboMulti=function(){return turboClockMulti},this.getCPUTurboFreqDesc=function(){return(3.58*turboClockMulti).toFixed(2)+" MHz"};var turboClockMulti=1,extensionCurrentlyRunning=null,extensionExtraIterations=0,bus,INT=255,PC=0,SP=0,A=0,F=0,B=0,C=0,DE=0,HL=0,IX=0,IY=0,AF2=0,BC2=0,DE2=0,HL2=0,I=0,R=0,IFF1=0,IM=0,bS=128,nS=7,bZ=64,nZ=6,bF5=32,nF5=5,bH=16,nH=4,bF3=8,nF3=3,bPV=4,nPV=2,bN=2,nN=1,bC=1,nC=0,busCycles=0,T=-1,opcode,prefix,instruction,ackINT=!1,instructions=new Array(270),instructionsED=new Array(270),instructionsCB=new Array(270),instructionsDD=new Array(270),instructionsFD=new Array(270),instructionsDDCB=new Array(270),instructionsFDCB=new Array(270),instructionsByPrefix=[instructions,instructionsED,instructionsCB,instructionsDD,instructionsFD,instructionsDDCB,instructionsFDCB,instructions],instructionADT_CYCLES,instructionHALT;this.instructionsAll=[];var preReadIXYdOffset=0;from_IXd_8.fromPreReadAddr=function(){return bus.read(sum16Signed(IX,preReadIXYdOffset))},from_IYd_8.fromPreReadAddr=function(){return bus.read(sum16Signed(IY,preReadIXYdOffset))},to_IXd_8.toPreReadAddr=function(a){bus.write(sum16Signed(IX,preReadIXYdOffset),a)},to_IYd_8.toPreReadAddr=function(a){bus.write(sum16Signed(IY,preReadIXYdOffset),a)};var parities=[4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4,4,0,0,4,0,4,4,0,4,0,0,4,0,4,4,0,0,4,4,0,4,0,0,4];this.saveState=function(){return{PC:PC,SP:SP,A:A,F:F,B:B,C:C,DE:DE,HL:HL,IX:IX,IY:IY,AF2:AF2,BC2:BC2,DE2:DE2,HL2:HL2,I:I,R:R,IM:IM,IFF1:IFF1,INT:INT,nINT:1,c:busCycles,T:T,o:opcode,p:prefix,ai:ackINT,ii:this.instructionsAll.indexOf(instruction),ecr:extensionCurrentlyRunning,eei:extensionExtraIterations,tcm:turboClockMulti}},this.loadState=function(a){PC=a.PC,SP=a.SP,A=a.A,F=a.F,B=a.B,C=a.C,DE=a.DE,HL=a.HL,IX=a.IX,IY=a.IY,AF2=a.AF2,BC2=a.BC2,DE2=a.DE2,HL2=a.HL2,I=a.I,R=a.R,IM=a.IM,IFF1=a.IFF1,setINT(a.nINT?a.INT:a.INT?255:254),busCycles=a.c,T=a.T,opcode=a.o,prefix=a.p,ackINT=a.ai,instruction=this.instructionsAll[a.ii]||null,extensionCurrentlyRunning=a.ecr,extensionExtraIterations=a.eei,turboClockMulti=void 0!==a.tcm?a.tcm:a.tcs>0?2:1},this.toString=function(){return"CPU PC: "+wmsx.Util.toHex2(PC)+" op: "+(instruction?instruction.mnemonic:"NULL")+" cycle: "+busCycles+"\n\nA: "+wmsx.Util.toHex2(A)+" B: "+wmsx.Util.toHex2(B)+" C: "+wmsx.Util.toHex2(C)+" D: "+wmsx.Util.toHex2(DE>>>8)+" E: "+wmsx.Util.toHex2(255&DE)+" H: "+wmsx.Util.toHex2(HL>>>8)+" L: "+wmsx.Util.toHex2(255&HL)+"\nBC: "+wmsx.Util.toHex2(fromBC())+" DE: "+wmsx.Util.toHex2(DE)+" HL: "+wmsx.Util.toHex2(HL)+" IX: "+wmsx.Util.toHex2(IX)+" IY: "+wmsx.Util.toHex2(IY)+" SP: "+wmsx.Util.toHex2(SP)+"\n\nFlags: "+(F&bS?"S ":"- ")+(F&bZ?"Z ":"- ")+(F&bF5?"5 ":"- ")+(F&bH?"H ":"- ")+(F&bF3?"3 ":"- ")+(F&bPV?"P ":"- ")+(F&bN?"N ":"- ")+(F&bC?"C":"-")+" IFF: "+IFF1+" INT: "+wmsx.Util.toHex2(INT)+" prefix: "+prefix},this.eval=function(str){return eval(str)},init()},wmsx.Z80.BASE_CLOCK=3584160,wmsx.PPI=function(a,b){"use strict";function c(){i=15&f,g!==(128&f)>0&&(g=!g,a.setPulseSignal(g))}function d(){h!==(32&f)>0&&(h=!h,a.setPulseSignal(h))}this.connectBus=function(a){e=a,e.connectInputDevice(168,this.inputA8),e.connectOutputDevice(168,this.outputA8),e.connectInputDevice(169,this.inputA9),e.connectOutputDevice(169,wmsx.DeviceMissing.outputPortIgnored),e.connectInputDevice(170,this.inputAA),e.connectOutputDevice(170,this.outputAA),e.connectInputDevice(171,wmsx.DeviceMissing.inputPortIgnored),e.connectOutputDevice(171,this.outputAB)},this.powerOn=function(){},this.powerOff=function(){},this.inputA8=function(){return e.getPrimarySlotConfig()},this.outputA8=function(a){e.setPrimarySlotConfig(a)},this.inputA9=function(){return b.readKeyboardPort(i)},this.inputAA=function(){return f},this.outputAA=function(a){f!==a&&(f=a,c(),d())},this.outputAB=function(a){0==(1&a)?f&=~(1<<((14&a)>>>1)):f|=1<<((14&a)>>>1);var b=(14&a)>>>1;b<=3||7===b?c():5===b&&d()};var e,f=0,g=!1,h=!1,i=0;this.saveState=function(){return{c:f}},this.loadState=function(a){f=a.c||0,c(),d()}},wmsx.VDP=function(machine,cpu){"use strict";function init(){videoSignal=new wmsx.VideoSignal(self),cpuClockPulses=cpu.clockPulses,audioClockPulse32=machine.getAudioSocket().audioClockPulse32,initFrameResources(!1),initColorCaches(),initDebugPatternTables(),initSpritesConflictMap(),modeData=modes[0],pendingBackdropCacheUpdate=!0,self.setDefaults(),commandProcessor=new wmsx.VDPCommandProcessor,commandProcessor.connectVDP(self,vram,register,status),commandProcessor.setVDPModeData(modeData)}function registerWrite(a,b){if(!(a>46)){var c,d=register[a]^b;switch(register[a]=b,a){case 0:16&d&&updateIRQ(),14&d&&updateMode();break;case 1:32&d&&updateIRQ(),64&d&&(blankingChangePending=!0),24&d&&updateMode(),4&d&&updateBlinking(),3&d&&updateSpritesConfig();break;case 2:127&d&&updateLayoutTableAddress();break;case 10:if(0==(7&d))break;case 3:c=131071&(register[10]<<14|register[3]<<6),colorTableAddress=c&modeData.colorTBase,colorTableAddressMask=c|colorTableAddressMaskBase;break;case 4:if(0==(63&d))break;c=b<<11&131071,patternTableAddress=c&modeData.patTBase,patternTableAddressMask=c|patternTableAddressMaskBase;break;case 11:if(0==(3&d))break;case 5:c=131071&(register[11]<<15|register[5]<<7),spriteAttrTableAddress=c&modeData.sprAttrTBase;break;case 6:63&d&&updateSpritePatternTableAddress();break;case 7:d&(modeData.bdPaletted?15:255)&&updateBackdropColor();break;case 8:32&d&&updateTransparency(),2&d&&updateSpritesConfig();break;case 9:128&d&&updateSignalMetrics(!1),8&d&&updateRenderMetrics(!1),4&d&&updateLayoutTableAddressMask(),2&d&&updateVideoStandardSoft();break;case 13:updateBlinking();break;case 14:7&d&&(vramPointer=(7&b)<<14|16383&vramPointer);break;case 16:paletteFirstWrite=null;break;case 18:15&d&&(horizontalAdjust=(15&b^7)-7),240&d&&(verticalAdjust=(b>>>4^7)-7,updateSignalMetrics(!1));break;case 19:horizontalIntLine=b-register[23]&255;break;case 23:horizontalIntLine=register[19]-b&255;break;case 25:isV9958&&(24&d&&updateMode(),leftMask=0!=(2&b),leftScroll2Pages=0!=(1&b));break;case 26:isV9958&&(leftScrollChars=63&b,leftScrollCharsInPage=31&leftScrollChars);break;case 27:isV9958&&(rightScrollPixels=7&b);break;case 44:commandProcessor.cpuWrite(b);break;case 46:commandProcessor.startCommand(b)}}}function updateLayoutTableAddress(){var a=modeData.vramInter?(63®ister[2])<<11|1024:(127®ister[2])<<10;layoutTableAddress=a&modeData.layTBase,layoutTableAddressMaskSetValue=a|layoutTableAddressMaskBase,updateLayoutTableAddressMask()}function updateLayoutTableAddressMask(){layoutTableAddressMask=layoutTableAddressMaskSetValue&(blinkEvenPage||4®ister[9]&&0==(2&status[2])?modeData.blinkPageMask:-1)}function updateSpritePatternTableAddress(){spritePatternTableAddress=debugModeSpriteInfo?16===spritesSize?DEBUG_PAT_DIGI16_TABLE_ADDRESS:DEBUG_PAT_DIGI8_TABLE_ADDRESS:register[6]<<11&131071}function getStatus0(){ -var a=0;return verticalIntReached&&(a|=128,verticalIntReached=!1,updateIRQ()),spritesCollided&&(a|=32,spritesCollided=!1),spritesInvalid>=0?(a|=64|spritesInvalid,spritesInvalid=-1):a|=spritesMaxComputed,spritesMaxComputed=0,a}function checkVRAMPointerWrap(){0==(16383&vramPointer)&&(modeData.isV9938&&(register[14]=register[14]+1&7),vramPointer=register[14]<<14)}function paletteRegisterWrite(a,b,c){if(paletteRegister[a]!==b||c){paletteRegister[a]=b;var d=colors512[(1792&b)>>>2|(112&b)>>>1|7&b];colorPaletteReal[a]=d,debugModeSpriteHighlight&&(d&=DEBUG_DIM_ALPHA_MASK),colorPaletteSolid[a]=d,0===a?color0Solid&&(colorPalette[0]=d):colorPalette[a]=d,a===backdropColor?updateBackdropValue():modeData.tiled&&a<=3&&(pendingBackdropCacheUpdate=!0)}}function setDebugMode(a){debugMode=(a+8)%8;var b=debugModeSpriteHighlight;debugModeSpriteHighlight=debugMode>=1&&debugMode<=3,debugModeSpriteInfo=2===debugMode||3===debugMode,debugModeSpriteInfoNumbers=2===debugMode,debugModeSpritesHidden=debugMode>=4;var c=debugModePatternInfo;debugModePatternInfo=debugMode>=5,debugModePatternInfoBlocks=6===debugMode,debugModePatternInfoNames=7===debugMode,b===debugModeSpriteHighlight&&c===debugModePatternInfo||debugAdjustPalette(),initFrameResources(debugModeSpriteHighlight),updateLineActiveType(),updateSpritesConfig(),updateSpritePatternTableAddress(),videoSignal.setDebugMode(debugMode>0)}function setSpriteDebugMode(a){spriteDebugMode=a>=0?a%4:4+a,spriteDebugModeLimit=0===spriteDebugMode||2===spriteDebugMode,spriteDebugModeCollisions=spriteDebugMode<2}function debugAdjustPalette(){if(isV9918)initColorPalette();else for(var a=0;a<16;a++)paletteRegisterWrite(a,paletteRegister[a],!0)}function updateSynchronization(){pulldown=1===vSynchMode?videoStandard.pulldowns[machine.getVideoClockSocket().getVSynchNativeFrequency()]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER}function cycleEvents(){var a=framePulldown.linesPerCycle;pulldown.steps>1&&frame%pulldown.steps==0&&(a+=pulldown.firstStepCycleLinesAdjust);for(var b=a;b>0;b-=1)lineEvents(),(currentScanline+=1)>=finishingScanline&&finishFrame()}function lineEvents(){blinkPerLine&&blinkPageDuration>0&&clockPageBlinking()&&updateLayoutTableAddressMask(),currentScanline===startingActiveScanline?setActiveDisplay():currentScanline-frameStartingActiveScanline===signalActiveHeight&&setBorderDisplay(),cpuClockPulses(33),audioClockPulse32(),blankingChangePending&&updateLineActiveType(),1&status[1]&&0==(16®ister[0])&&(status[1]&=-2),currentScanline===startingActiveScanline-1?status[2]&=-65:currentScanline-frameStartingActiveScanline===signalActiveHeight&&triggerVerticalInterrupt(),cpuClockPulses(10),status[2]&=-33,cpuClockPulses(22),audioClockPulse32(),cpuClockPulses(33),audioClockPulse32(),cpuClockPulses(32),audioClockPulse32(),currentScanline>=startingVisibleTopBorderScanline&¤tScanline>1,c=vram.slice(0,b),d=0;d>1,b=0,c=a,d=vram.slice(a),e=0;e>>1;commandProcessor.setVDPModeData(modes[b]),isV9958&&0!=(8®ister[25])&&0==(16&b)&&(b=32|(24®ister[25])>>3),modeData=modes[b];var c;updateLayoutTableAddress(),c=131071&(register[10]<<14|register[3]<<6),colorTableAddress=c&modeData.colorTBase,colorTableAddressMask=c|colorTableAddressMaskBase,c=register[4]<<11&131071,patternTableAddress=c&modeData.patTBase,patternTableAddressMask=c|patternTableAddressMaskBase,c=131071&(register[11]<<15|register[5]<<7),spriteAttrTableAddress=c&modeData.sprAttrTBase,updateSpritePatternTableAddress(),modeData.bdPaletted!==a.bdPaletted&&updateBackdropColor(),modeData.tiled!==a.tiled&&(pendingBackdropCacheUpdate=!0),updateVRAMInterleaving(),updateLineActiveType(),updateRenderMetrics(!1)}function updateVideoStandardSoft(){var a=2®ister[9];machine.setVideoStandardSoft(a?wmsx.VideoStandard.PAL:wmsx.VideoStandard.NTSC)}function updateSignalMetrics(a){var b;isV9918?(signalActiveHeight=192,b=0):128®ister[9]?(signalActiveHeight=212,b=0):(signalActiveHeight=192,b=10),startingVisibleTopBorderScanline=8,startingActiveScanline=startingVisibleTopBorderScanline+8+b+verticalAdjust,startingInvisibleScanline=startingActiveScanline+signalActiveHeight+8+b-verticalAdjust,finishingScanline=frameVideoStandard.totalHeight,a&&(frameStartingActiveScanline=startingActiveScanline)}function updateRenderMetrics(a){var b,c,d,e,f=!1;isV9918?(b=wmsx.VDP.SIGNAL_WIDTH_V9918,d=2,c=wmsx.VDP.SIGNAL_HEIGHT_V9918,e=2):(512===modeData.width?(b=544,d=1):(b=272,d=2),8®ister[9]?(c=456,e=1):(c=228,e=2)),renderMetricsChangePending=!1,b===renderWidth&&c===renderHeight||(b!==renderWidth&&(currentScanlinerenderWidth?(currentScanline>=startingVisibleTopBorderScanline&&stretchFromCurrentToTopScanline(),renderWidth=b,f=!0):renderMetricsChangePending=!0),c!==renderHeight&&(a?(cleanFrameBuffer(),renderHeight=c,f=!0):renderMetricsChangePending=!0),f&&videoSignal.setPixelMetrics(d,e))}function setActiveDisplay(){renderLine=renderLineActive}function setBorderDisplay(){renderLine=renderLineBorders}function updateLineActiveType(){var a=renderLine===renderLineActive;renderLineActive=0==(64®ister[1])?renderLineBlanked:debugModePatternInfo?modeData.renderLinePatInfo:modeData.renderLine,a&&(renderLine=renderLineActive),blankingChangePending=!1}function updateSpritesConfig(){spritesEnabled=!debugModeSpritesHidden&&0==(2®ister[8]),spritesSize=2®ister[1]?16:8,spritesMag=1®ister[1]}function updateTransparency(){color0Solid=0!=(32®ister[8]),colorPalette[0]=color0Solid?colorPaletteSolid[0]:backdropValue}function updateBackdropColor(){backdropColor=register[7]&(modeData.bdPaletted?15:255),updateBackdropValue()}function updateBackdropValue(){var a=debugModePatternInfo?debugBackdropValue:modeData.bdPaletted?colorPaletteSolid[backdropColor]:colors256[backdropColor];backdropValue!==a&&(backdropValue=a,color0Solid||(colorPalette[0]=a),pendingBackdropCacheUpdate=!0)}function updateBackdropCache(){if(modeData.tiled&&!debugModePatternInfo){for(var a=colorPaletteSolid[backdropColor>>>2],b=colorPaletteSolid[3&backdropColor],c=0;c>>4==0?(blinkEvenPage=!1,blinkPageDuration=0):0==(15®ister[13])?(blinkEvenPage=!0,blinkPageDuration=0):(blinkEvenPage=!0,blinkPageDuration=1),updateLayoutTableAddressMask()}function clockPageBlinking(){ -return 0==--blinkPageDuration&&(blinkEvenPage=!blinkEvenPage,blinkPageDuration=10*(register[13]>>>(blinkEvenPage?4:0)&15),!0)}function renderLineBorders(){pendingBackdropCacheUpdate&&updateBackdropCache(),frameBackBuffer.set(backdropFullLineCache,bufferPosition),bufferPosition+=bufferLineAdvance}function renderLineBlanked(){renderLineBorders()}function getRealLine(){return currentScanline-frameStartingActiveScanline+register[23]&255}function renderLineModeT1(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=register[7],d=patternTableAddress+(7&b),e=colorPalette[c>>>4],f=colorPalette[15&c],g=layoutTableAddress+40*(b>>>3);paintBackdrop8(a),a+=8;for(var h=0;h<40;++h){var i=vram[g++];paintPattern6(a,vram[(i<<3)+d],e,f),a+=6}paintBackdrop8(a),a+=8,a-=rightScrollPixels+256,leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeT2(){paintBackdrop32(bufferPosition),paintBackdrop32(bufferPosition+512);var a,b,c,d,e,f=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),g=getRealLine(),h=patternTableAddress+(7&g),i=layoutTableAddress+80*(g>>>3);if(paintBackdrop16(f),f+=16,blinkEvenPage)for(var j=colorTableAddress+10*(g>>>3),k=7,l=0;l<80;++l){var m=vram[j&colorTableAddressMask]>>>k&1;a=vram[i++&layoutTableAddressMask],c=register[m?12:7],b=vram[(a<<3)+h],d=m?colorPaletteSolid[c>>>4]:colorPalette[c>>>4],e=m?colorPaletteSolid[15&c]:colorPalette[15&c],paintPattern6(f,b,d,e),--k<0&&(j++,k=7),f+=6}else for(c=register[7],d=colorPalette[c>>>4],e=colorPalette[15&c],l=0;l<80;++l)a=vram[i++&layoutTableAddressMask],b=vram[(a<<3)+h],paintPattern6(f,b,d,e),f+=6;paintBackdrop16(f),f+=16,f-=512+(rightScrollPixels<<1),leftMask&&paintBackdrop16(f),rightScrollPixels&&paintBackdrop16(f+512),bufferPosition+=bufferLineAdvance}function renderLineModeMC(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=patternTableAddress+((b>>>3&3)<<1)+(b>>>2&1),d=layoutTableAddress+(b>>>3<<5),e=d+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(e&=modeData.evenPageMask);for(var f=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,g=0;g<32;++g){g===f&&(e=leftScroll2Pages&&leftScrollChars>=32?d&modeData.evenPageMask:d);var h=vram[e++],i=(h<<3)+c,j=vram[i];paintPattern8(a,240,colorPalette[j>>>4],colorPalette[15&j]),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG1(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=patternTableAddress+(7&b),d=layoutTableAddress+(b>>>3<<5),e=d+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(e&=modeData.evenPageMask);for(var f=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,g=0;g<32;++g){g===f&&(e=leftScroll2Pages&&leftScrollChars>=32?d&modeData.evenPageMask:d);var h=vram[e++],i=vram[colorTableAddress+(h>>>3)];paintPattern8(a,vram[(h<<3)+c],colorPalette[i>>>4],colorPalette[15&i]),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG2(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=colorTableAddress+(7&b),d=patternTableAddress+(7&b),e=(192&b)<<2,f=layoutTableAddress+(b>>>3<<5),g=f+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(g&=modeData.evenPageMask);for(var h=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,i=0;i<32;++i){i===h&&(g=leftScroll2Pages&&leftScrollChars>=32?f&modeData.evenPageMask:f);var j=vram[g++]|e,k=vram[(j<<3)+c&colorTableAddressMask];paintPattern8(a,vram[(j<<3)+d&patternTableAddressMask],colorPalette[k>>>4],colorPalette[15&k]),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG3(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=colorTableAddress+(7&b),d=patternTableAddress+(7&b),e=(192&b)<<2,f=layoutTableAddress+(b>>>3<<5),g=f+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(g&=modeData.evenPageMask);for(var h=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,i=0;i<32;++i){i===h&&(g=leftScroll2Pages&&leftScrollChars>=32?f&modeData.evenPageMask:f);var j=vram[g++]|e,k=vram[(j<<3)+c&colorTableAddressMask];paintPattern8(a,vram[(j<<3)+d&patternTableAddressMask],colorPalette[k>>>4],colorPalette[15&k]),a+=8}a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG4(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=layoutTableAddress+(b<<7),d=c+(leftScrollCharsInPage<<2);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++&layoutTableAddressMask];frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g]}a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG5(){paintBackdrop32Tiled(bufferPosition),paintBackdrop32Tiled(bufferPosition+512);var a=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),b=getRealLine(),c=layoutTableAddress+(b<<7),d=c+(leftScrollCharsInPage<<2);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1;if(color0Solid)for(var f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++&layoutTableAddressMask];frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPaletteSolid[g>>>6],frameBackBuffer[a++]=colorPaletteSolid[g>>>4&3],frameBackBuffer[a++]=colorPaletteSolid[g>>>2&3],frameBackBuffer[a++]=colorPaletteSolid[3&g]}else for(f=0;f<32;++f)f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c),g=vram[d++&layoutTableAddressMask], -frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven,g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven,g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven,g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=192&g?colorPaletteSolid[g>>>6]:backdropTileOdd,frameBackBuffer[a++]=48&g?colorPaletteSolid[g>>>4&3]:backdropTileEven,frameBackBuffer[a++]=12&g?colorPaletteSolid[g>>>2&3]:backdropTileOdd,frameBackBuffer[a++]=3&g?colorPaletteSolid[3&g]:backdropTileEven;a-=512+(rightScrollPixels<<1),spritesEnabled&&renderSpritesLineMode2Tiled(b,a),leftMask&&paintBackdrop16Tiled(a),rightScrollPixels&&paintBackdrop16Tiled(a+512),bufferPosition+=bufferLineAdvance}function renderLineModeG6(){paintBackdrop32(bufferPosition),paintBackdrop32(bufferPosition+512);var a=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),b=getRealLine(),c=layoutTableAddress+(b<<8),d=c+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++&layoutTableAddressMask];frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g],g=vram[d++&layoutTableAddressMask],frameBackBuffer[a++]=colorPalette[g>>>4],frameBackBuffer[a++]=colorPalette[15&g]}a-=512+(rightScrollPixels<<1),spritesEnabled&&renderSpritesLineMode2Stretched(b,a),leftMask&&paintBackdrop16(a),rightScrollPixels&&paintBackdrop16(a+512),bufferPosition+=bufferLineAdvance}function renderLineModeG7(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=debugModeSpriteHighlight?DEBUG_DIM_ALPHA_MASK:4294967295,d=layoutTableAddress+(b<<8),e=d+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(e&=modeData.evenPageMask);for(var f=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,g=0;g<32;++g)g===f&&(e=leftScroll2Pages&&leftScrollChars>=32?d&modeData.evenPageMask:d),frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c,frameBackBuffer[a++]=colors256[vram[e++&layoutTableAddressMask]]&c;a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,spritePaletteG7),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeYJK(){paintBackdrop20(bufferPosition),paintBackdrop16(bufferPosition+256+4);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels+4,b=getRealLine(),c=layoutTableAddress+(b<<8),d=c+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e,f,g,h,i,j,k,l,m,n,o=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,p=4278190080&(debugModeSpriteHighlight?DEBUG_DIM_ALPHA_MASK:4278190080),q=0;q<32;++q)q===o&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c),e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=h>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l,i=h>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l;a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeYAE(){paintBackdrop20(bufferPosition),paintBackdrop16(bufferPosition+256+4);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels+4,b=getRealLine(),c=layoutTableAddress+(b<<8),d=c+(leftScrollCharsInPage<<3);leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e,f,g,h,i,j,k,l,m,n,o=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,p=4278190080&(debugModeSpriteHighlight?DEBUG_DIM_ALPHA_MASK:4278190080),q=0;q<32;++q)q===o&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c),e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),8&e?frameBackBuffer[a++]=colorPalette[e>>4]:(i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&f?frameBackBuffer[a++]=colorPalette[f>>4]:(i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&g?frameBackBuffer[a++]=colorPalette[g>>4]:(i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&h?frameBackBuffer[a++]=colorPalette[h>>4]:(i=h>>3,l=from5bitsTruncTo8bits(i+j), -m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),e=vram[d++&layoutTableAddressMask],f=vram[d++&layoutTableAddressMask],g=vram[d++&layoutTableAddressMask],h=vram[d++&layoutTableAddressMask],j=(7&g|(3&h)<<3)-((4&h)<<3),k=(7&e|(3&f)<<3)-((4&f)<<3),8&e?frameBackBuffer[a++]=colorPalette[e>>4]:(i=e>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&f?frameBackBuffer[a++]=colorPalette[f>>4]:(i=f>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&g?frameBackBuffer[a++]=colorPalette[g>>4]:(i=g>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l),8&h?frameBackBuffer[a++]=colorPalette[h>>4]:(i=h>>3,l=from5bitsTruncTo8bits(i+j),m=from5bitsTruncTo8bits(i+k),n=from5bitsTruncTo8bits(5*i-(j<<1)-k>>2),frameBackBuffer[a++]=p|n<<16|m<<8|l);a-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(b,a,colorPaletteReal),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function from5bitsTruncTo8bits(a){return a<=0?0:a>=31?color5to8bits[31]:color5to8bits[a]}function renderLineModeT1PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=7&b,d=layoutTableAddress+40*(b>>>3);paintBackdrop8(a),a+=8;for(var e=0;e<40;++e){var f=vram[d++];if(debugModePatternInfoNames){var g=0===f||32===f?4293787648:4294967295,h=vram[DEBUG_PAT_DIGI6_TABLE_ADDRESS+(f<<3)+c];paintPattern6TInfo(a,h,g,4278190080)}else h=vram[patternTableAddress+(f<<3)+c],paintPattern6(a,h,4294967295,4278190080);a+=6}paintBackdrop8(a),a+=8,a-=rightScrollPixels+256,leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeT2PatInfo(){paintBackdrop32(bufferPosition),paintBackdrop32(bufferPosition+512);var a,b,c,d=bufferPosition+16+(horizontalAdjust+rightScrollPixels<<1),e=getRealLine(),f=7&e,g=layoutTableAddress+80*(e>>>3);if(paintBackdrop16(d),d+=16,blinkEvenPage)for(var h=colorTableAddress+10*(e>>>3),i=7,j=0;j<80;++j){var k=vram[h&colorTableAddressMask]>>>i&1;a=vram[g++&layoutTableAddressMask],debugModePatternInfoNames?(c=0===a||32===a?4293787648:4294967295,k&&(c&=4288716960),b=vram[DEBUG_PAT_DIGI6_TABLE_ADDRESS+(a<<3)+f],paintPattern6TInfo(d,b,c,4278190080)):(b=vram[patternTableAddress+(a<<3)+f],paintPattern6(d,b,k?4288716960:4294967295,4278190080)),--i<0&&(h++,i=7),d+=6}else for(j=0;j<80;++j)a=vram[g++&layoutTableAddressMask],debugModePatternInfoNames?(c=0===a||32===a?4293787648:4294967295,b=vram[DEBUG_PAT_DIGI6_TABLE_ADDRESS+(a<<3)+f],paintPattern6TInfo(d,b,c,4278190080)):(b=vram[patternTableAddress+(a<<3)+f],paintPattern6(d,b,4294967295,4278190080)),d+=6;paintBackdrop16(d),d+=16,d-=512+(rightScrollPixels<<1),leftMask&&paintBackdrop16(d),rightScrollPixels&&paintBackdrop16(d+512),bufferPosition+=bufferLineAdvance}function paintPattern6TInfo(a,b,c,d){var e=2550136831&c;frameBackBuffer[a]=128&b?c:d,frameBackBuffer[a+1]=64&b?c:d,frameBackBuffer[a+2]=32&b?c:d,frameBackBuffer[a+3]=16&b?e:d,frameBackBuffer[a+4]=8&b?e:d,frameBackBuffer[a+5]=4&b?e:d}function renderLineModeMCPatInfo(){if(!debugModePatternInfoNames)return renderLineModeMC();paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a=bufferPosition+8+horizontalAdjust+rightScrollPixels,b=getRealLine(),c=layoutTableAddress+(b>>>3<<5),d=c+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(d&=modeData.evenPageMask);for(var e=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,f=0;f<32;++f){f===e&&(d=leftScroll2Pages&&leftScrollChars>=32?c&modeData.evenPageMask:c);var g=vram[d++];paintPattern8(a,vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(g<<3)+(7&b)],4294967295,4278190080),a+=8}a-=rightScrollPixels+256,renderSpritesLineMode1(b,a),leftMask&&paintBackdrop8(a),rightScrollPixels&&paintBackdrop8(a+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG1PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a,b,c,d=bufferPosition+8+horizontalAdjust+rightScrollPixels,e=getRealLine(),f=7&e,g=layoutTableAddress+(e>>>3<<5),h=g+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(h&=modeData.evenPageMask);for(var i=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,j=0;j<32;++j){j===i&&(h=leftScroll2Pages&&leftScrollChars>=32?g&modeData.evenPageMask:g);var k=vram[h++];if(debugModePatternInfoNames)b=0===k||32===k?4293787648:4294967295,c=4278190080,a=vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(k<<3)+f];else if(debugModePatternInfoBlocks){var l=vram[colorTableAddress+(k>>>3)];b=colorPalette[l>>>4],c=colorPalette[15&l],a=vram[DEBUG_PAT_BLOCK_TABLE_ADDRESS+f]}else b=4294967295,c=4278190080,a=vram[patternTableAddress+(k<<3)+f];paintPattern8(d,a,b,c),d+=8}d-=rightScrollPixels+256,renderSpritesLineMode1(e,d),leftMask&&paintBackdrop8(d),rightScrollPixels&&paintBackdrop8(d+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG2PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a,b,c,d=bufferPosition+8+horizontalAdjust+rightScrollPixels,e=getRealLine(),f=7&e,g=(192&e)<<2,h=layoutTableAddress+(e>>>3<<5),i=h+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(i&=modeData.evenPageMask);for(var j=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,k=0;k<32;++k){k===j&&(i=leftScroll2Pages&&leftScrollChars>=32?h&modeData.evenPageMask:h);var l=vram[i++]|g;if(debugModePatternInfoNames)l&=255,b=0===l||32===l?4293787648:4294967295,c=4278190080,a=vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(l<<3)+f];else if(debugModePatternInfoBlocks){var m=vram[colorTableAddress+(l<<3)+f&colorTableAddressMask];b=colorPalette[m>>>4],c=colorPalette[15&m],a=vram[DEBUG_PAT_BLOCK_TABLE_ADDRESS+f]}else b=4294967295,c=4278190080,a=vram[patternTableAddress+(l<<3)+f&patternTableAddressMask];paintPattern8(d,a,b,c),d+=8}d-=rightScrollPixels+256,renderSpritesLineMode1(e,d),leftMask&&paintBackdrop8(d),rightScrollPixels&&paintBackdrop8(d+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function renderLineModeG3PatInfo(){paintBackdrop16(bufferPosition),paintBackdrop16(bufferPosition+256);var a,b,c,d=bufferPosition+8+horizontalAdjust+rightScrollPixels,e=getRealLine(),f=7&e,g=(192&e)<<2,h=layoutTableAddress+(e>>>3<<5),i=h+leftScrollCharsInPage;leftScroll2Pages&&leftScrollChars<32&&(i&=modeData.evenPageMask);for(var j=leftScrollCharsInPage?32-leftScrollCharsInPage:-1,k=0;k<32;++k){k===j&&(i=leftScroll2Pages&&leftScrollChars>=32?h&modeData.evenPageMask:h);var l=vram[i++]|g;if(debugModePatternInfoNames)l&=255,b=0===l||32===l?4293787648:4294967295,c=4278190080,a=vram[DEBUG_PAT_DIGI8_TABLE_ADDRESS+(l<<3)+f];else if(debugModePatternInfoBlocks){var m=vram[colorTableAddress+(l<<3)+f&colorTableAddressMask];b=colorPalette[m>>>4],c=colorPalette[15&m],a=vram[DEBUG_PAT_BLOCK_TABLE_ADDRESS+f]}else b=4294967295,c=4278190080,a=vram[patternTableAddress+(l<<3)+f&patternTableAddressMask];paintPattern8(d,a,b,c),d+=8}d-=rightScrollPixels+256,spritesEnabled&&renderSpritesLineMode2(e,d,colorPaletteReal),leftMask&&paintBackdrop8(d),rightScrollPixels&&paintBackdrop8(d+256),renderWidth>500&&stretchCurrentLine(),bufferPosition+=bufferLineAdvance}function paintPattern6(a,b,c,d){frameBackBuffer[a]=128&b?c:d,frameBackBuffer[a+1]=64&b?c:d,frameBackBuffer[a+2]=32&b?c:d,frameBackBuffer[a+3]=16&b?c:d,frameBackBuffer[a+4]=8&b?c:d,frameBackBuffer[a+5]=4&b?c:d}function paintPattern8(a,b,c,d){frameBackBuffer[a]=128&b?c:d,frameBackBuffer[a+1]=64&b?c:d, -frameBackBuffer[a+2]=32&b?c:d,frameBackBuffer[a+3]=16&b?c:d,frameBackBuffer[a+4]=8&b?c:d,frameBackBuffer[a+5]=4&b?c:d,frameBackBuffer[a+6]=2&b?c:d,frameBackBuffer[a+7]=1&b?c:d}function paintBackdrop8(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue}function paintBackdrop16(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue,frameBackBuffer[a+8]=backdropValue,frameBackBuffer[a+9]=backdropValue,frameBackBuffer[a+10]=backdropValue,frameBackBuffer[a+11]=backdropValue,frameBackBuffer[a+12]=backdropValue,frameBackBuffer[a+13]=backdropValue,frameBackBuffer[a+14]=backdropValue,frameBackBuffer[a+15]=backdropValue}function paintBackdrop20(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue,frameBackBuffer[a+8]=backdropValue,frameBackBuffer[a+9]=backdropValue,frameBackBuffer[a+10]=backdropValue,frameBackBuffer[a+11]=backdropValue,frameBackBuffer[a+12]=backdropValue,frameBackBuffer[a+13]=backdropValue,frameBackBuffer[a+14]=backdropValue,frameBackBuffer[a+15]=backdropValue,frameBackBuffer[a+16]=backdropValue,frameBackBuffer[a+17]=backdropValue,frameBackBuffer[a+18]=backdropValue,frameBackBuffer[a+19]=backdropValue}function paintBackdrop32(a){frameBackBuffer[a]=backdropValue,frameBackBuffer[a+1]=backdropValue,frameBackBuffer[a+2]=backdropValue,frameBackBuffer[a+3]=backdropValue,frameBackBuffer[a+4]=backdropValue,frameBackBuffer[a+5]=backdropValue,frameBackBuffer[a+6]=backdropValue,frameBackBuffer[a+7]=backdropValue,frameBackBuffer[a+8]=backdropValue,frameBackBuffer[a+9]=backdropValue,frameBackBuffer[a+10]=backdropValue,frameBackBuffer[a+11]=backdropValue,frameBackBuffer[a+12]=backdropValue,frameBackBuffer[a+13]=backdropValue,frameBackBuffer[a+14]=backdropValue,frameBackBuffer[a+15]=backdropValue,frameBackBuffer[a+16]=backdropValue,frameBackBuffer[a+17]=backdropValue,frameBackBuffer[a+18]=backdropValue,frameBackBuffer[a+19]=backdropValue,frameBackBuffer[a+20]=backdropValue,frameBackBuffer[a+21]=backdropValue,frameBackBuffer[a+22]=backdropValue,frameBackBuffer[a+23]=backdropValue,frameBackBuffer[a+24]=backdropValue,frameBackBuffer[a+25]=backdropValue,frameBackBuffer[a+26]=backdropValue,frameBackBuffer[a+27]=backdropValue,frameBackBuffer[a+28]=backdropValue,frameBackBuffer[a+29]=backdropValue,frameBackBuffer[a+30]=backdropValue,frameBackBuffer[a+31]=backdropValue}function paintBackdrop16Tiled(a){var b=backdropTileOdd,c=backdropTileEven;frameBackBuffer[a]=b,frameBackBuffer[a+1]=c,frameBackBuffer[a+2]=b,frameBackBuffer[a+3]=c,frameBackBuffer[a+4]=b,frameBackBuffer[a+5]=c,frameBackBuffer[a+6]=b,frameBackBuffer[a+7]=c,frameBackBuffer[a+8]=b,frameBackBuffer[a+9]=c,frameBackBuffer[a+10]=b,frameBackBuffer[a+11]=c,frameBackBuffer[a+12]=b,frameBackBuffer[a+13]=c,frameBackBuffer[a+14]=b,frameBackBuffer[a+15]=c}function paintBackdrop32Tiled(a){var b=backdropTileOdd,c=backdropTileEven;frameBackBuffer[a]=b,frameBackBuffer[a+1]=c,frameBackBuffer[a+2]=b,frameBackBuffer[a+3]=c,frameBackBuffer[a+4]=b,frameBackBuffer[a+5]=c,frameBackBuffer[a+6]=b,frameBackBuffer[a+7]=c,frameBackBuffer[a+8]=b,frameBackBuffer[a+9]=c,frameBackBuffer[a+10]=b,frameBackBuffer[a+11]=c,frameBackBuffer[a+12]=b,frameBackBuffer[a+13]=c,frameBackBuffer[a+14]=b,frameBackBuffer[a+15]=c,frameBackBuffer[a+16]=b,frameBackBuffer[a+17]=c,frameBackBuffer[a+18]=b,frameBackBuffer[a+19]=c,frameBackBuffer[a+20]=b,frameBackBuffer[a+21]=c,frameBackBuffer[a+22]=b,frameBackBuffer[a+23]=c,frameBackBuffer[a+24]=b,frameBackBuffer[a+25]=c,frameBackBuffer[a+26]=b,frameBackBuffer[a+27]=c,frameBackBuffer[a+28]=b,frameBackBuffer[a+29]=c,frameBackBuffer[a+30]=b,frameBackBuffer[a+31]=c}function renderSpritesLineMode1(a,b){if(!debugModeSpritesHidden&&208!==vram[spriteAttrTableAddress]){var c,d,e,f,g,h,i,j,k,l,m=spritesSize<=m)){if(++o>4&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=n),spriteDebugModeLimit))return;j=vram[c+1],d=vram[c+3],128&d&&(j-=32)<=-m||(d&=15,16===spritesSize?(e=debugModeSpriteInfoNumbers?n<<2:252&vram[c+2],f=spritePatternTableAddress+(e<<3)+(i>>>spritesMag),g=vram[f]<<8|vram[f+16]):(e=debugModeSpriteInfoNumbers?n:vram[c+2],g=vram[spritePatternTableAddress+(e<<3)+(i>>>spritesMag)]),k=j<=256-m?0:j-(256-m),l=j>=0?m:m+j,j+=m-l,paintSpriteMode1(j,a,b+j,spritesGlobalPriority+n,g,d,k,l,spritesMag,spriteDebugModeCollisions&&o<5))}spritesInvalid<0&&n>spritesMaxComputed&&(spritesMaxComputed=n)}}function paintSpriteMode1(a,b,c,d,e,f,g,h,i,j){for(var k=h-1;k>=g;k-=1,a+=1,c+=1){0!==(e>>>(k>>>i)&1)&&(spritesLinePriorities[a]=p)){if(++s>8&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=q),spriteDebugModeLimit))return;if(k>>>=spritesMag,f=vram[e+k],o=64&f){if(r===SPRITE_MAX_PRIORITY||debugModeSpriteInfo)continue}else r=spritesGlobalPriority+q;(0!=(15&f)||color0Solid)&&(l=vram[d+1],128&f&&(l-=32)<=-p||(16===spritesSize?(g=debugModeSpriteInfoNumbers?q<<2:252&vram[d+2],h=spritePatternTableAddress+(g<<3)+k,i=vram[h]<<8|vram[h+16]):(g=debugModeSpriteInfoNumbers?q:vram[d+2],i=vram[spritePatternTableAddress+(g<<3)+k]),m=l<=256-p?0:l-(256-p),n=l>=0?p:p+l,l+=p-n,o?paintSpriteMode2CC(l,b+l,r,i,15&f,c,m,n,spritesMag):paintSpriteMode2(l,a,b+l,r,i,15&f,c,m,n,spritesMag,spriteDebugModeCollisions&&0==(32&f)&&s<9)))}spritesInvalid<0&&q>spritesMaxComputed&&(spritesMaxComputed=q)}}function paintSpriteMode2(a,b,c,d,e,f,g,h,i,j,k){for(var l=i-1;l>=h;l-=1,a+=1,c+=1){0!==(e>>>(l>>>j)&1)&&(spritesLinePriorities[a]=g;k-=1,a+=1,b+=1){if(0!==(d>>>(k>>>i)&1)){var l=spritesLinePriorities[a];l=o)){if(++r>8&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=p),spriteDebugModeLimit))return;if(j>>>=spritesMag,e=vram[d+j],n=64&e){if(q===SPRITE_MAX_PRIORITY||debugModeSpriteInfo)continue}else q=spritesGlobalPriority+p;(0!=(15&e)||color0Solid)&&(k=vram[c+1],128&e&&(k-=32)<=-o||(16===spritesSize?(f=debugModeSpriteInfoNumbers?p<<2:252&vram[c+2],g=spritePatternTableAddress+(f<<3)+j, -h=vram[g]<<8|vram[g+16]):(f=debugModeSpriteInfoNumbers?p:vram[c+2],h=vram[spritePatternTableAddress+(f<<3)+j]),l=k<=256-o?0:k-(256-o),m=k>=0?o:o+k,k+=o-m,n?paintSpriteMode2TiledCC(k,b+(k<<1),q,h,15&e,l,m,spritesMag):paintSpriteMode2Tiled(k,a,b+(k<<1),q,h,15&e,l,m,spritesMag,spriteDebugModeCollisions&&0==(32&e)&&r<9)))}spritesInvalid<0&&p>spritesMaxComputed&&(spritesMaxComputed=p)}}function paintSpriteMode2Tiled(a,b,c,d,e,f,g,h,i,j){for(var k=h-1;k>=g;k-=1,a+=1,c+=2){0!==(e>>>(k>>>i)&1)&&(spritesLinePriorities[a]>>2],frameBackBuffer[c+1]=colorPaletteReal[3&f]))}}function paintSpriteMode2TiledCC(a,b,c,d,e,f,g,h){for(var i,j=g-1;j>=f;j-=1,a+=1,b+=2){if(0!==(d>>>(j>>>h)&1)){var k=spritesLinePriorities[a];k>>2],frameBackBuffer[b+1]=colorPaletteReal[3&i])}}}function renderSpritesLineMode2Stretched(a,b){if(216!==vram[spriteAttrTableAddress+512]){var c,d,e,f,g,h,i,j,k,l,m,n,o=spritesSize<=o)){if(++r>8&&(spritesInvalid<0&&!verticalIntReached&&(spritesInvalid=p),spriteDebugModeLimit))return;if(j>>>=spritesMag,e=vram[d+j],n=64&e){if(q===SPRITE_MAX_PRIORITY||debugModeSpriteInfo)continue}else q=spritesGlobalPriority+p;(0!=(15&e)||color0Solid)&&(k=vram[c+1],128&e&&(k-=32)<=-o||(16===spritesSize?(f=debugModeSpriteInfoNumbers?p<<2:252&vram[c+2],g=spritePatternTableAddress+(f<<3)+j,h=vram[g]<<8|vram[g+16]):(f=debugModeSpriteInfoNumbers?p:vram[c+2],h=vram[spritePatternTableAddress+(f<<3)+j]),l=k<=256-o?0:k-(256-o),m=k>=0?o:o+k,k+=o-m,n?paintSpriteMode2StretchedCC(k,b+(k<<1),q,h,15&e,l,m,spritesMag):paintSpriteMode2Stretched(k,a,b+(k<<1),q,h,15&e,l,m,spritesMag,spriteDebugModeCollisions&&0==(32&e)&&r<9)))}spritesInvalid<0&&p>spritesMaxComputed&&(spritesMaxComputed=p)}}function paintSpriteMode2Stretched(a,b,c,d,e,f,g,h,i,j){for(var k=h-1;k>=g;k-=1,a+=1,c+=2){0!==(e>>>(k>>>i)&1)&&(spritesLinePriorities[a]=f;j-=1,a+=1,b+=2){if(0!==(d>>>(j>>>h)&1)){var k=spritesLinePriorities[a];k=0||(spritesCollisionX=a+12,spritesCollisionY=b+8,0==(192®ister[8])&&(status[3]=255&spritesCollisionX,status[4]=254|spritesCollisionX>>>8,status[5]=255&spritesCollisionY,status[6]=252|spritesCollisionY>>>8))}function stretchCurrentLine(){for(var a=bufferPosition+272-1,b=bufferPosition+544-2,c=272;c>0;--c,--a,b-=2)frameBackBuffer[b]=frameBackBuffer[b+1]=frameBackBuffer[a]}function stretchFromCurrentToTopScanline(){for(var a=bufferPosition,b=currentScanline;b>=startingVisibleTopBorderScanline;--b,a-=bufferLineAdvance)for(var c=a+272-1,d=a+544-2,e=272;e>0;--e,--c,d-=2)frameBackBuffer[d]=frameBackBuffer[d+1]=frameBackBuffer[c]}function cleanFrameBuffer(){wmsx.Util.arrayFill(frameBackBuffer,modeData.tiled?4278190080:backdropValue)}function refresh(){videoSignal.newFrame(frameCanvas,refreshWidth,refreshHeight),refreshWidth=refreshHeight=0}function beginFrame(){framePulldown!==pulldown&&(frameVideoStandard=videoStandard,framePulldown=pulldown,updateSignalMetrics(!1)),currentScanline=0,frameStartingActiveScanline=startingActiveScanline,renderMetricsChangePending&&updateRenderMetrics(!0),!blinkPerLine&&blinkPageDuration>0&&clockPageBlinking(),status[2]^=2,8®ister[9]?(bufferPosition=2&status[2]?LINE_WIDTH:0,bufferLineAdvance=2*LINE_WIDTH):(bufferPosition=0,bufferLineAdvance=LINE_WIDTH),updateLayoutTableAddressMask()}function finishFrame(){refreshWidth=renderWidth,refreshHeight=renderHeight,frameContext.putImageData(frameImageData,0,0,0,0,refreshWidth,refreshHeight),frame+=1,beginFrame()}function refreshDisplayMetrics(){videoSignal.setDisplayMetrics(wmsx.VDP.SIGNAL_MAX_WIDTH_V9938,isV9918?2*wmsx.VDP.SIGNAL_HEIGHT_V9918:wmsx.VDP.SIGNAL_MAX_HEIGHT_V9938)}function initRegisters(){wmsx.Util.arrayFill(register,0),wmsx.Util.arrayFill(status,0),register[9]=videoStandard===wmsx.VideoStandard.PAL?2:0,status[1]=isV9958?4:0,status[2]=12,status[4]=254,status[6]=252,status[9]=254}function initFrameResources(a){(!frameCanvas||!frameContextUsingAlpha&&a)&&(frameContextUsingAlpha=!!a,frameCanvas=document.createElement("canvas"),frameCanvas.width=wmsx.VDP.SIGNAL_MAX_WIDTH_V9938,frameCanvas.height=wmsx.VDP.SIGNAL_MAX_HEIGHT_V9938,frameContext=frameCanvas.getContext("2d",{alpha:frameContextUsingAlpha,antialias:!1}),frameImageData||(frameImageData=frameContext.createImageData(frameCanvas.width,frameCanvas.height+1+1),frameBackBuffer=new Uint32Array(frameImageData.data.buffer,0,frameCanvas.width*(frameCanvas.height+1)),backdropFullLineCache=new Uint32Array(frameImageData.data.buffer,frameCanvas.width*(frameCanvas.height+1)*4,frameCanvas.width)))}function initColorPalette(){for(var a=isV9918?colorPaletteInitialV9918:colorPaletteInitialV9938,b=0;b<16;b+=1){paletteRegister[b]=paletteRegisterInitialValuesV9938[b];var c=a[b];colorPaletteReal[b]=c,debugModeSpriteHighlight&&(c&=DEBUG_DIM_ALPHA_MASK),colorPalette[b]=c,colorPaletteSolid[b]=c}}function initColorCaches(){for(var a=0;a<=511;a++)1&a&&(colors256[a>>>1]=4278190080|color2to8bits[a>>>1&3]<<16|color3to8bits[a>>>6]<<8|color3to8bits[a>>>3&7]),colors512[a]=4278190080|color3to8bits[7&a]<<16|color3to8bits[a>>>6]<<8|color3to8bits[a>>>3&7]}function initDebugPatternTables(){for(var a=[["111","101","101","101","111"],["110","010","010","010","111"],["111","001","111","100","111"],["111","001","111","001","111"],["101","101","111","001","001"],["111","100","111","001","111"],["111","100","111","101","111"],["111","001","001","001","001"],["111","101","111","101","111"],["111","101","111","001","001"],["110","001","111","101","111"],["100","100","111","101","110"],["000","111","100","100","111"],["001","001","111","101","111"],["110","101","111","100","011"],["011","100","110","100","100"]],b=DEBUG_PAT_DIGI6_TABLE_ADDRESS,c=DEBUG_PAT_DIGI8_TABLE_ADDRESS,d=DEBUG_PAT_DIGI16_TABLE_ADDRESS,e=DEBUG_PAT_BLOCK_TABLE_ADDRESS,f=0;f<256;f++){for(var g=f/16|0,h=f%16,i=0;i<5;i++)vram[b++]=parseInt(a[g][i]+a[h][i]+"00",2),vram[c++]=parseInt(a[g][i]+"0"+a[h][i]+"0",2);for(vram[b++]=vram[c++]=parseInt("00000000",2),vram[b++]=vram[c++]=parseInt("01111100",2),vram[b++]=vram[c++]=parseInt("00000000",2),vram[d++]=parseInt("11111111",2),i=0;i<4;i++)vram[d++]=parseInt("10000000",2);for(i=0;i<5;i++)vram[d++]=parseInt("1000"+a[g][i]+"0",2);for(i=0;i<5;i++)vram[d++]=parseInt("10000000",2);for(i=0;i<2;i++)vram[d++]=parseInt("11111111",2);for(i=0;i<4;i++)vram[d++]=parseInt("00000001",2);for(i=0;i<5;i++)vram[d++]=parseInt("0"+a[h][i]+"0001",2);for(i=0;i<5;i++)vram[d++]=parseInt("00000001",2);vram[d++]=parseInt("11111111",2)}vram[e]=vram[e+7]=0,vram[e+1]=vram[e+2]=vram[e+3]=vram[e+4]=vram[e+5]=vram[e+6]=126}function initSpritesConflictMap(){wmsx.Util.arrayFill(spritesLinePriorities,SPRITE_MAX_PRIORITY),wmsx.Util.arrayFill(spritesLineColors,0),spritesGlobalPriority=SPRITE_MAX_PRIORITY}function logInfo(a){cpu.getBUSCycles();console.log(a+", currentScanLine: "+currentScanline+", activeRenderScanline: "+(currentScanline-frameStartingActiveScanline)+", activeHeigh: "+signalActiveHeight)}var self=this;this.setMachineType=function(a){var b=WMSX.VDP_TYPE>0?WMSX.VDP_TYPE:a;isV9918=b<=1,isV9938=2===b, -isV9958=b>=3,refreshDisplayMetrics()},this.connectBus=function(a){a.connectInputDevice(152,this.input98),a.connectOutputDevice(152,this.output98),a.connectInputDevice(153,this.input99),a.connectOutputDevice(153,this.output99),a.connectInputDevice(154,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(154,this.output9a),a.connectInputDevice(155,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(155,this.output9b)},this.powerOn=function(){this.reset()},this.powerOff=function(){videoSignal.signalOff()},this.setVideoStandard=function(a){videoStandard=a,updateSynchronization()},this.setVSynchMode=function(a){vSynchMode=a,updateSynchronization()},this.getVideoOutput=function(){return videoSignal},this.getDesiredVideoPulldown=function(){return pulldown},this.videoClockPulse=function(){cycleEvents(),refreshWidth&&refresh()},this.input98=function(){dataFirstWrite=null;var a=dataPreRead;return dataPreRead=vram[vramPointer++],checkVRAMPointerWrap(),a},this.output98=function(a){dataFirstWrite=null,vram[vramPointer++]=dataPreRead=a,checkVRAMPointerWrap()},this.input99=function(){dataFirstWrite=null;var a,b=register[15];switch(b){case 0:a=getStatus0();break;case 1:a=status[1],status[1]&=-129,16®ister[0]&&1&status[1]&&(status[1]&=-2,updateIRQ());break;case 2:commandProcessor.updateStatus(),a=status[2];break;case 3:case 4:case 6:a=status[b];break;case 5:a=status[5],spritesCollisionX=spritesCollisionY=-1,status[3]=status[4]=status[5]=status[6]=0;break;case 7:a=status[7],commandProcessor.cpuRead();break;case 8:case 9:a=status[b];break;default:a=255}return a},this.output99=function(a){null===dataFirstWrite?(dataFirstWrite=a,isV9918&&(vramPointer=-256&vramPointer|a)):(128&a?isV9918?(registerWrite(7&a,dataFirstWrite),vramPointer=114943&vramPointer|(63&a)<<8):0==(64&a)&®isterWrite(63&a,dataFirstWrite):(vramPointer=114688&vramPointer|(63&a)<<8|dataFirstWrite,0==(64&a)&&(dataPreRead=vram[vramPointer++],checkVRAMPointerWrap())),dataFirstWrite=null)},this.output9a=function(a){isV9918||(null===paletteFirstWrite?paletteFirstWrite=a:(paletteRegisterWrite(register[16],a<<8|paletteFirstWrite,!1),++register[16]>15&&(register[16]=0),paletteFirstWrite=null))},this.output9b=function(a){if(!isV9918){var b=63®ister[17];17!==b&®isterWrite(b,a),0==(128®ister[17])&&(register[17]=b+1&63)}},this.toggleDebugModes=function(a){return setDebugMode(debugMode+(a?-1:1)),videoSignal.showOSD("Debug Mode"+(debugMode>0?" "+debugMode:"")+": "+["OFF","Sprites Highlighted","Sprite Numbers","Sprite Names","Sprites Hidden","Pattern Bits","Pattern Color Blocks","Pattern Names"][debugMode],!0),debugMode},this.toggleSpriteDebugModes=function(a){setSpriteDebugMode(spriteDebugMode+(a?-1:1)),videoSignal.showOSD("Sprites Mode"+(spriteDebugMode>0?" "+spriteDebugMode:"")+": "+["Normal","Unlimited","NO Collisions","Unlimited, No Collisions"][spriteDebugMode],!0)},this.getSpriteDebugModeQuickDesc=function(){return["Normal","Unlimited","No Collis.","Both"][spriteDebugMode]},this.setVDPTurboMulti=function(a){commandProcessor.setVDPTurboMulti(a)},this.getVDPTurboMulti=function(){return commandProcessor.getVDPTurboMulti()},this.setDefaults=function(){setDebugMode(STARTING_DEBUG_MODE),setSpriteDebugMode(STARTING_SPRITES_DEBUG_MODE)},this.reset=function(){frame=cycles=lastBUSCyclesComputed=0,dataFirstWrite=null,dataPreRead=0,vramPointer=0,paletteFirstWrite=null,verticalAdjust=horizontalAdjust=0,leftMask=leftScroll2Pages=!1,leftScrollChars=leftScrollCharsInPage=rightScrollPixels=0,backdropColor=backdropValue=0,spritesCollided=!1,spritesCollisionX=spritesCollisionY=spritesInvalid=-1,spritesMaxComputed=0,verticalIntReached=!1,horizontalIntLine=0,vramInterleaving=!1,renderMetricsChangePending=!1,refreshWidth=refreshHeight=0,frameVideoStandard=videoStandard,framePulldown=pulldown,currentScanline=-1,initRegisters(),initColorPalette(),commandProcessor.reset(),updateSignalMetrics(!0),updateIRQ(),updateMode(),updateSpritesConfig(),updateBackdropColor(),updateTransparency(),updateSynchronization(),updateBlinking(),beginFrame()},this.updateCycles=function(){var a=cpu.getBUSCycles();if(a===lastBUSCyclesComputed)return cycles;var b=6*(a-lastBUSCyclesComputed);return lastBUSCyclesComputed=a,cycles+=b},this.getScreenText=function(){var a=modeData.textCols;if(!a)return null;for(var b=128®ister[9]?27:24,c=[],d=0;d>8&3,register[34]=255&a}function getDX(){return(1®ister[37])<<8|register[36]}function getDY(){return(3®ister[39])<<8|register[38]}function setDY(a){register[39]=a>>8&3,register[38]=255&a}function getNX(){return(1®ister[41])<<8|register[40]}function getNY(){return(3®ister[43])<<8|register[42]}function setNY(a){register[43]=a>>8&3,register[42]=255&a}function getDIX(){return 4®ister[45]?-1:1}function getDIY(){return 8®ister[45]?-1:1}function getCLR(){return register[44]}function setCLR(a){register[44]=a}function getMAJ(){return 1®ister[45]}function getEQ(){return 0==(2®ister[45])}function getLOP(){return LOGICAL_OPERATIONS[15®ister[46]]}function HMMC(){var a=getDX();DY=getDY(),NX=getNX(),NY=getNY(),DIX=getDIX(),DIY=getDIY(),a>>=modePPBShift,NX>>=modePPBShift,a>=layoutLineBytes?(a&=layoutLineBytes-1,NX=1):(NX=NX||layoutLineBytes,NX=1===DIX?min(NX,layoutLineBytes-a):min(NX,a+1)),NY=NY||1024,ENY=1===DIY?NY:min(NY,DY+1), -destPos=DY*layoutLineBytes+a,writeStart(HMMCNextWrite)}function HMMCNextWrite(a){vram[destPos&VRAM_LIMIT]=a,CX+=1,CX>=NX?(destPos-=DIX*(NX-1),CX=0,CY+=1,CY>=ENY?finish():destPos+=DIY*layoutLineBytes):destPos+=DIX,setDY(DY+DIY*CY),setNY(NY-CY)}function YMMM(){var a=getSY(),b=getDX(),c=getDY(),d=getNY(),e=getDIX(),f=getDIY();(b>>=modePPBShift)>=layoutLineBytes&&(b&=layoutLineBytes-1);var g=1===e?layoutLineBytes-b:b+1;d=d||1024;for(var h=1===f?d:min(d,min(a,c)+1),i=a*layoutLineBytes+b,j=c*layoutLineBytes+b,k=-e*g+layoutLineBytes*f,l=h;l>0;l-=1){for(var m=g;m>0;m-=1)vram[j&VRAM_LIMIT]=vram[i&VRAM_LIMIT],i+=e,j+=e;i+=k,j+=k}setSY(a+f*h),setDY(c+f*h),setNY(d-h),start(g*h,64,h,0)}function HMMM(){var a=getSX(),b=getSY(),c=getDX(),d=getDY(),e=getNX(),f=getNY(),g=getDIX(),h=getDIY();a>>=modePPBShift,c>>=modePPBShift,e>>=modePPBShift,a>=layoutLineBytes||c>=layoutLineBytes?(a&=layoutLineBytes-1,c&=layoutLineBytes-1,e=1):(e=e||layoutLineBytes,e=1===g?min(e,layoutLineBytes-max(a,c)):min(e,min(a,c)+1)),f=f||1024;for(var i=1===h?f:min(f,min(b,d)+1),j=b*layoutLineBytes+a,k=d*layoutLineBytes+c,l=-g*e+layoutLineBytes*h,m=i;m>0;m-=1){for(var n=e;n>0;n-=1)vram[k&VRAM_LIMIT]=vram[j&VRAM_LIMIT],j+=g,k+=g;j+=l,k+=l}setSY(b+h*i),setDY(d+h*i),setNY(f-i),start(e*i,88,i,64)}function HMMV(){var a=getDX(),b=getDY(),c=getNX(),d=getNY(),e=getCLR(),f=getDIX(),g=getDIY();a>>=modePPBShift,c>>=modePPBShift,a>=layoutLineBytes?(a&=layoutLineBytes-1,c=1):(c=c||layoutLineBytes,c=1===f?min(c,layoutLineBytes-a):min(c,a+1)),d=d||1024;for(var h=1===g?d:min(d,b+1),i=b*layoutLineBytes+a,j=-f*c+layoutLineBytes*g,k=h;k>0;k-=1){for(var l=c;l>0;l-=1)vram[i&VRAM_LIMIT]=e,i+=f;i+=j}setDY(b+g*h),setNY(d-h),start(c*h,48,h,56)}function LMMC(){DX=getDX(),DY=getDY(),NX=getNX(),NY=getNY(),DIX=getDIX(),DIY=getDIY(),LOP=getLOP(),DX>=modeWidth?(DX&=modeWidth-1,NX=1):(NX=NX||modeWidth,NX=1===DIX?min(NX,modeWidth-DX):min(NX,DX+1)),NY=NY||1024,ENY=1===DIY?NY:min(NY,DY+1),writeStart(LMMCNextWrite)}function LMMCNextWrite(a){logicalPSET(DX,DY,a,LOP),CX+=1,CX>=NX?(DX-=DIX*(NX-1),CX=0,CY+=1,DY+=DIY,CY>=ENY&&finish()):DX+=DIX,setDY(DY),setNY(NY-CY)}function LMCM(){SX=getSX(),SY=getSY(),NX=getNX(),NY=getNY(),DIX=getDIX(),DIY=getDIY(),SX>=modeWidth?(SX&=modeWidth-1,NX=1):(NX=NX||modeWidth,NX=1===DIX?min(NX,modeWidth-SX):min(NX,SX+1)),NY=NY||1024,ENY=1===DIY?NY:min(NY,SY+1),readStart(LMCMNextRead)}function LMCMNextRead(){status[7]=normalPGET(SX,SY),CX+=1,CX>=NX?(SX-=DIX*(NX-1),CX=0,CY+=1,SY+=DIY,CY>=ENY&&finish()):SX+=DIX,setSY(SY),setNY(NY-CY)}function LMMM(){var a=getSX(),b=getSY(),c=getDX(),d=getDY(),e=getNX(),f=getNY(),g=getDIX(),h=getDIY(),i=getLOP();a>=modeWidth||c>=modeWidth?(a&=modeWidth-1,c&=modeWidth-1,e=1):(e=e||modeWidth,e=1===g?min(e,modeWidth-max(a,c)):min(e,min(a,c)+1)),f=f||1024;for(var j=1===h?f:min(f,min(b,d)+1),k=j;k>0;k-=1){for(var l=e;l>0;l-=1)logicalPCOPY(c,d,a,b,i),a+=g,c+=g;a-=g*e,c-=g*e,b+=h,d+=h}setSY(b),setDY(d),setNY(f-j),start(e*j,120,j,64)}function LMMV(){var a=getDX(),b=getDY(),c=getNX(),d=getNY(),e=getCLR(),f=getDIX(),g=getDIY(),h=getLOP();a>=modeWidth?(a&=modeWidth-1,c=1):(c=c||modeWidth,c=1===f?min(c,modeWidth-a):min(c,a+1)),d=d||1024;for(var i=1===g?d:min(d,b+1),j=i;j>0;j-=1){for(var k=c;k>0;k-=1)logicalPSET(a,b,e,h),a+=f;a-=f*c,b+=g}setDY(b),setNY(d-i),start(c*i,96,i,64)}function LINE(){var a=getDX(),b=getDY(),c=getNX(),d=getNY(),e=getCLR(),f=getDIX(),g=getDIY(),h=getMAJ(),i=getLOP(),j=modeWidth-1;a&=j;var k=0,l=0;if(0===h)for(var m=0;m<=c&&(logicalPSET(a,b,e,i),a+=f,d>0&&(l+=d)<<1>=c&&(b+=g,l-=c,k+=1),!(a>j||a<0||b<0));m+=1);else for(m=0;m<=c&&(logicalPSET(a,b,e,i),b+=g,d>0&&(l+=d)<<1>=c&&(a+=f,l-=c,k+=1),!(a>j||a<0||b<0));m+=1);setDY(b),start(m,112,k,32)}function SRCH(){var a=getSX(),b=getSY(),c=getCLR(),d=getDIX(),e=getEQ();a>=modeWidth&&(a&=modeWidth-1);var f=1===d?modeWidth:-1,g=a,h=!1;if(e)do{if(normalPGET(g,b)===c){h=!0;break}g+=d}while(g!==f);else do{if(normalPGET(g,b)!==c){h=!0;break}g+=d}while(g!==f);status[2]=-17&status[2]|(h?16:0),status[8]=255&g,status[9]=g>>8&1,start(Math.abs(g-a)+1,86,1,50)}function PSET(){var a=getDX(),b=getDY(),c=getCLR(),d=getLOP();a>=modeWidth&&(a&=modeWidth-1),logicalPSET(a,b,c,d),start(0,0,1,40)}function POINT(){var a=getSX(),b=getSY();a>=modeWidth&&(a&=modeWidth-1);var c=normalPGET(a,b);setCLR(c),status[7]=c,start(0,0,1,40)}function STOP(){finish()}function normalPGET(a,b){var c,d;switch(modePPB){case 2:c=1&a?0:4,a>>>=1,d=15<>>=2,d=3<>c}function logicalPSET(a,b,c,d){var e,f;switch(modePPB){case 2:e=1&a?0:4,a>>>=1,c=(15&c)<>>=2,c=(3&c)<>>=1,a>>>=1,h=15;break;case 4:f=2*(3-(3&c)),g=2*(3-(3&a)),c>>>=2,a>>>=2,h=3;break;default:f=g=0,h=255}var i=d*layoutLineBytes+c,j=b*layoutLineBytes+a,k=(vram[i&VRAM_LIMIT]>>f&h)<b?a:b}function start(a,b,c,d,e){CE=1,writeHandler=null,readHandler=null,estimateDuration(a,b,c,d,e)}function estimateDuration(a,b,c,d,e){if(e)finishingCycle=-1;else if(0===turboClockMulti)finishingCycle=0;else{var f=(a*b*COMMAND_PER_PIXEL_DURATION_FACTOR+c*d)/turboClockMulti|0;finishingCycle=vdp.updateCycles()+f}}function writeStart(a){start(0,0,0,0,!0),CX=0,CY=0,writeHandler=a,TR=1,writeReady&&(writeHandler(getCLR()),writeReady=!1)}function readStart(a){start(0,0,0,0,!0),CX=0,CY=0,readHandler=a,TR=1,readHandler()}function finish(){CE=0,writeHandler=null,writeReady=!1,readHandler=null,register[46]&=-241}this.connectVDP=function(a,b,c,d){vdp=a,vram=b,register=c,status=d},this.reset=function(){STOP()},this.startCommand=function(a){switch(240&a){case 240:HMMC();break;case 224:YMMM();break;case 208:HMMM();break;case 192:HMMV();break;case 176:LMMC();break;case 160:LMCM();break;case 144:LMMM();break;case 128:LMMV();break;case 112:LINE();break;case 96:SRCH();break;case 80:PSET();break;case 64:POINT();break;case 0:STOP()}},this.cpuWrite=function(a){writeHandler?writeHandler(a):(writeReady=!0,TR=0)},this.cpuRead=function(){readHandler?readHandler():TR=0},this.updateStatus=function(){CE&&finishingCycle>=0&&(0===finishingCycle||vdp.updateCycles()>=finishingCycle)&&finish(),status[2]=-130&status[2]|TR<<7|CE},this.setVDPModeData=function(a){modeData=a,modeWidth=modeData.width,modePPB=modeData.ppb||1,modePPBShift=modePPB>>1,modePPBMask=-1<8?0:a},this.getVDPTurboMulti=function(){return turboClockMulti};var VRAM_LIMIT=wmsx.VDP.VRAM_LIMIT,COMMAND_HANDLERS={HMMCNextWrite:HMMCNextWrite,LMMCNextWrite:LMMCNextWrite,LMCMNextRead:LMCMNextRead},COMMAND_PER_PIXEL_DURATION_FACTOR=1.1,LOGICAL_OPERATIONS=[lopIMP,lopAND,lopOR,lopXOR,lopNOT,lopIMP,lopIMP,lopIMP,lopTIMP,lopTAND,lopTOR,lopTXOR,lopTNOT,lopIMP,lopIMP,lopIMP],turboClockMulti=1,vdp,vram,register,status,CE=!1,TR=!1,SX,SY,DX,DY,NX,NY,ENY,DIX,DIY,CX,CY,LOP,destPos,writeReady=!1,writeHandler=null,readHandler=null,finishingCycle=0,modeData,modePPB,modePPBShift,modePPBMask,modeWidth,layoutLineBytes;this.saveState=function(){return{ce:CE,tr:TR,wr:writeReady,wh:writeHandler&&writeHandler.name,rh:readHandler&&readHandler.name,fc:finishingCycle,SX:SX,SY:SY,DX:DX,DY:DY,NX:NX, -NY:NY,ENY:ENY,DIX:DIX,DIY:DIY,CX:CX,CY:CY,LOP:LOP&&LOGICAL_OPERATIONS.indexOf(LOP),dp:destPos,tcm:turboClockMulti}},this.loadState=function(a){CE=a.ce,TR=a.tr,writeReady=a.wr,writeHandler=COMMAND_HANDLERS[a.wh],readHandler=COMMAND_HANDLERS[a.rh],finishingCycle=a.fc,SX=a.SX,SY=a.SY,DX=a.DX,DY=a.DY,NX=a.NX,NY=a.NY,ENY=a.ENY,DIX=a.DIX,DIY=a.DIY,CX=a.CX,CY=a.CY,LOP=a.LOP>=0?LOGICAL_OPERATIONS[a.LOP]:void 0,destPos=a.dp,turboClockMulti=void 0!==a.tcm?a.tcm:1},this.eval=function(str){return eval(str)}},wmsx.VideoSignal=function(a){"use strict";this.connectMonitor=function(a){b=a},this.newFrame=function(a,c,d){b.newFrame(a,c,d)},this.signalOff=function(){b&&b.signalOff()},this.showOSD=function(a,c,d){b&&b.showOSD(a,c,d)},this.setDisplayMetrics=function(a,c){b&&b.setDisplayMetrics(a,c)},this.setPixelMetrics=function(a,c){b&&b.setPixelMetrics(a,c)},this.setDebugMode=function(a){b&&b.setDebugMode(a)},this.getScreenText=function(){return a.getScreenText()};var b},wmsx.VideoStandard={NTSC:{name:"NTSC",desc:"NTSC 60Hz",totalWidth:342,totalHeight:262,topBorderHeight:16,targetFPS:60,pulldowns:{60:{standard:"NTSC",frequency:60,divider:1,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},120:{standard:"NTSC",frequency:120,divider:2,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},"120s":{standard:"NTSC",frequency:120,divider:1,linesPerCycle:131,firstStepCycleLinesAdjust:0,cadence:[0,1],steps:2},50:{standard:"NTSC",frequency:50,divider:1,linesPerCycle:314,firstStepCycleLinesAdjust:2,cadence:[1,1,1,1,2],steps:5},100:{standard:"NTSC",frequency:100,divider:2,linesPerCycle:314,firstStepCycleLinesAdjust:2,cadence:[1,1,1,1,2],steps:5},"100s":{standard:"NTSC",frequency:100,divider:1,linesPerCycle:157,firstStepCycleLinesAdjust:2,cadence:[0,1,0,1,1,0,1,0,1,1],steps:10},TIMER:{standard:"NTSC",frequency:62.5,divider:1,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}},PAL:{name:"PAL",desc:"PAL 50Hz",totalWidth:342,totalHeight:313,topBorderHeight:43,targetFPS:50,pulldowns:{50:{standard:"PAL",frequency:50,divider:1,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},100:{standard:"PAL",frequency:100,divider:2,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},"100s":{standard:"PAL",frequency:100,divider:1,linesPerCycle:156,firstStepCycleLinesAdjust:1,cadence:[0,1],steps:2},60:{standard:"PAL",frequency:60,divider:1,linesPerCycle:261,firstStepCycleLinesAdjust:-1,cadence:[0,1,1,1,1,1],steps:6},120:{standard:"PAL",frequency:120,divider:2,linesPerCycle:261,firstStepCycleLinesAdjust:-1,cadence:[0,1,1,1,1,1],steps:6},"120s":{standard:"PAL",frequency:120,divider:1,linesPerCycle:130,firstStepCycleLinesAdjust:5,cadence:[0,0,1,0,1,0,0,1,0,1,0,1],steps:12},TIMER:{standard:"PAL",frequency:50,divider:1,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}}},wmsx.AudioTables={setupVolPan:function(a,b,c,d,e){this.createVolPanVolumeTable();for(var f=0;ff?b[f]:"f")),h=Number("0x"+(1===c.length?c[0]:c.length>f?c[f]:"8"));d[f]=this.VOLPAN_VOLUME_TABLE[this.VOL_VALUES[g]+this.PAN_VALUES[0][h]],e[f]=this.VOLPAN_VOLUME_TABLE[this.VOL_VALUES[g]+this.PAN_VALUES[1][h]]}},createVolPanVolumeTable:function(){if(!this.VOLPAN_VOLUME_TABLE){for(var a=new Array(256),b=0;b<127;++b)a[b]=Math.pow(10,-.75*b/20);for(b=127;b<256;++b)a[b]=0;this.VOLPAN_VOLUME_TABLE=a}},VOL_VALUES:[128,28,26,24,22,20,18,16,14,12,10,8,6,4,2,0],PAN_VALUES:[[127,0,0,0,0,0,0,0,0,4,8,12,16,20,24,127],[127,127,24,20,16,12,8,4,0,0,0,0,0,0,0,0]],VOLPAN_VOLUME_TABLE:void 0},wmsx.PSG=function(controllersSocket,secondary){"use strict";this.connectBus=function(a){var b=secondary?16:160;a.connectInputDevice(b,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(b,this.outputA0),a.connectInputDevice(b+1,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(b+1,this.outputA1),a.connectInputDevice(b+2,this.inputA2),a.connectOutputDevice(b+2,wmsx.DeviceMissing.outputPortIgnored),powerIsOn&&audioChannel.connectAudio()},this.disconnectBus=function(a){var b=secondary?16:160;a.disconnectInputDevice(b,wmsx.DeviceMissing.inputPortIgnored),a.disconnectOutputDevice(b,this.outputA0),a.disconnectInputDevice(b+1,wmsx.DeviceMissing.inputPortIgnored),a.disconnectOutputDevice(b+1,this.outputA1),a.disconnectInputDevice(b+2,this.inputA2),a.disconnectOutputDevice(b+2,wmsx.DeviceMissing.outputPortIgnored),audioChannel.disconnectAudio()},this.setAudioSocket=function(a){audioChannel.setAudioSocket(a)},this.powerOn=function(){powerIsOn=!0,audioChannel.powerOn(),register[15]=15},this.powerOff=function(){powerIsOn=!1,audioChannel.powerOff()},this.reset=function(){audioChannel.reset()},this.getAudioChannel=function(){return audioChannel},this.outputA0=function(a){registerAddress=a>15?0:a},this.outputA1=function(a){switch(register[registerAddress]=a,registerAddress){case 0:case 1:audioChannel.setPeriodA((15®ister[1])<<8|register[0]);break;case 2:case 3:audioChannel.setPeriodB((15®ister[3])<<8|register[2]);break;case 4:case 5:audioChannel.setPeriodC((15®ister[5])<<8|register[4]);break;case 6:audioChannel.setPeriodN(31&a);break;case 7:audioChannel.setMixerControl(a);break;case 8:audioChannel.setAmplitudeA(a);break;case 9:audioChannel.setAmplitudeB(a);break;case 10:audioChannel.setAmplitudeC(a);break;case 11:case 12:audioChannel.setPeriodE(register[12]<<8|register[11]);break;case 13:audioChannel.setEnvelopeControl(a);break;case 15:controllersSocket&&(controllersSocket.writeControllerPin8Port(0,(16&a)>>4),controllersSocket.writeControllerPin8Port(1,(32&a)>>5))}},this.inputA2=function(){if(14!==registerAddress)return register[registerAddress];var a=register[15]>>6&1;return controllersSocket?controllersSocket.readControllerPort(a):63};var powerIsOn=!1,registerAddress=0,register=wmsx.Util.arrayFill(new Array(16),0),audioChannel=new wmsx.PSGAudio(secondary);this.saveState=function(){return{p:powerIsOn,ra:registerAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),ac:audioChannel.saveState()}},this.loadState=function(a){powerIsOn=void 0===a.p||a.p,registerAddress=a.ra,register=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r,register),audioChannel.loadState(a.ac)},this.eval=function(str){return eval(str)}},wmsx.AudioSignal=function(a,b,c,d,e,f){"use strict";function g(a){switch(a){case 32:return j;case 72:return k;case 81:return l;default:throw new Error("Unsupported AudioSignal Sample Rate CPU Clock multiple: "+a)}}function h(a){switch(a){case 72:return m;default:throw new Error("Unsupported AudioSignal Clock CPU Clock multiple: "+a)}}function i(){var a=H*WMSX.AUDIO_SIGNAL_BUFFER_RATIO+v*WMSX.AUDIO_SIGNAL_ADD_FRAMES&-8;F.length=a,a>C&&wmsx.Util.arrayFill(F,0,C,a),e&&(G.length=a,a>C&&wmsx.Util.arrayFill(G,0,C,a)),C=a,I.bufferSize=C,E=C-2,s.flush()}function j(){if(B>0){if(D<=0)return void(B=0);t(),--B,--D}}function k(){1&--w||8===w||(0===w&&(w=9),j())}function l(){--x,1&x&&j(),0===x&&(x=5)}function m(){1&--y||8===y||(0===y&&(y=9),b.audioClockPulse())}function n(){F[z]=b.nextSample()*c,++z>=C&&(z=0)}function o(){var a=b.nextSample();F[z]=a[0]*c,G[z]=a[1]*c,++z>=C&&(z=0)}function p(){F[z]=0,++z>=C&&(z=0)}function q(){F[z]=G[z]=0,++z>=C&&(z=0)}function r(a,b){if(b)for(var c=a;c>0;c-=1)u();else for(var d=a;d>0;d-=1)t();D-=a}var s=this;this.audioClockPulse=null,this.flush=function(){z=0,A=0,D=E},this.setFps=function(a){v=Math.floor(d/a),i()},this.audioFinishFrame=function(){if(B>0)for(;B>0;)j();B=v},this.retrieveSamples=function(a,b){var c=E-D,d=a-c;d>-4&&(d+4>D&&(d=D-4),r(d+4,b)),I.start=A;var e=c+d;return D+=e,A+=e,A>=C&&(A-=C),I},this.getSampleRate=function(){return d},this.toString=function(){return"AudioSignal "+a},this.setAudioMonitorBufferSize=function(a){H=a,i()};var t=n,u=p;this.name=a -;var v,w=9,x=5,y=9,z=0,A=0,B=0,C=0,D=0,E=0,F=wmsx.Util.arrayFill(new Array(C),0),G=e?wmsx.Util.arrayFill(new Array(C),0):F,H=0,I={stereo:e,buffer0:F,buffer1:G,bufferSize:C,start:0};!function(){c=1.1*c*WMSX.VOL,t=e?o:n,u=e?q:p;var a=Math.floor(wmsx.Machine.BASE_CPU_CLOCK/d),b=g(a);if(f){a=Math.floor(wmsx.Machine.BASE_CPU_CLOCK/f);var i=h(a);s.audioClockPulse=function(){i(),b()}}else s.audioClockPulse=b}()},wmsx.PSGAudio=function(a){"use strict";function b(a,b){a^b&&(L=!L),I=L?0:15,J=b?0:L?1:-1}function c(){o&&(l=R[I]),v&&(s=R[I]),C&&(z=R[I])}function d(){return 1&(P=P>>1|(1&(P>>2^1&P))<<16)}function e(){for(var a=0;a<16;a++)R[a]=(Math.pow(V,a/15)-1)/(V-1)*U}var f=this;this.setAudioSocket=function(a){h=a},this.powerOn=function(){this.reset(),this.connectAudio()},this.powerOff=function(){this.disconnectAudio()},this.reset=function(){this.setMixerControl(255),this.setAmplitudeA(0),this.setAmplitudeB(0),this.setAmplitudeC(0),O=!1},this.nextSample=function(){if(i>0&&(j+=2)>=i&&(j=j-i&1,k=k?0:1),p>0&&(q+=2)>=p&&(q=q-p&1,r=r?0:1),w>0&&(x+=2)>=w&&(x=x-w&1,y=y?0:1),(n||u||B)&&(E+=1)>=D&&(E=0,F=d()),0!==J&&(H+=1)>=G&&(H=0,I+=J,(I<0||I>15)&&(K?b(M,N):(L=!0,b(!0,!0))),c()),$){var a=0===l||m&&!k||n&&!F?0:l,e=0===s||t&&!r||u&&!F?0:s,f=0===z||A&&!y||B&&!F?0:z,g=O?U:0;return Q[0]=a*S[0]+e*S[1]+f*S[2]+g*S[3],Q[1]=a*T[0]+e*T[1]+f*T[2]+g*T[3],Q}return(0===l||m&&!k||n&&!F?0:l)+(0===s||t&&!r||u&&!F?0:s)+(0===z||A&&!y||B&&!F?0:z)+(O?U:0)},this.setPeriodA=function(a){i!==a&&(a<2?(i=0,k=1):i=a)},this.setPeriodB=function(a){p!==a&&(a<2?(p=0,r=1):p=a)},this.setPeriodC=function(a){w!==a&&(a<2?(w=0,y=1):w=a)},this.setPeriodN=function(a){D!==a&&(D=a<1?1:a)},this.setPeriodE=function(a){G!==a&&(G=a<1?1:a)},this.setAmplitudeA=function(a){16&a?(o=!0,l=R[I]):(o=!1,l=R[15&a])},this.setAmplitudeB=function(a){16&a?(v=!0,s=R[I]):(v=!1,s=R[15&a])},this.setAmplitudeC=function(a){16&a?(C=!0,z=R[I]):(C=!1,z=R[15&a])},this.setMixerControl=function(a){m=0==(1&a),n=0==(8&a),t=0==(2&a),u=0==(16&a),A=0==(4&a),B=0==(32&a)},this.setEnvelopeControl=function(a){K=(8&a)>0,L=(4&a)>0,M=(2&a)>0,N=(1&a)>0,b(!1,!1),c()},this.setPulseSignal=function(a){O=a},this.connectAudio=function(){h&&(g||(g=new wmsx.AudioSignal("PSG"+(a?"2":""),f,W,X,$)),h.connectAudioSignal(g))},this.disconnectAudio=function(){h&&g&&h.disconnectAudioSignal(g)};var g,h,i=0,j=0,k=0,l=0,m=!1,n=!1,o=!1,p=0,q=0,r=0,s=0,t=!1,u=!1,v=!1,w=0,x=0,y=0,z=0,A=!1,B=!1,C=!1,D=1,E=1,F=0,G=1,H=1,I=0,J=0,K=!1,L=!1,M=!1,N=!1,O=!1,P=131070,Q=[0,0],R=new Array(16),S=new Array(4),T=new Array(4),U=.25,V=30,W=.66,X=112005,Y=(a&&WMSX.PSG2_VOL||WMSX.PSG_VOL||"f").toUpperCase(),Z=(a&&WMSX.PSG2_PAN||WMSX.PSG_PAN||"0").toUpperCase(),$="F"!==Y||"8"!==Z;this.saveState=function(){return{pa:i,pac:j,ca:k,aa:l,ta:m,na:n,ea:o,pb:p,pbc:q,cb:r,ab:s,tb:t,nb:u,eb:v,pc:w,pcc:x,cc:y,ac:z,tc:A,nc:B,ec:C,pn:D,pnc:E,cn:F,pe:G,pec:H,ce:I,de:J,cne:K,ate:L,ale:M,he:N,ps:O,lf:P}},this.loadState=function(a){i=a.pa,j=a.pac,k=a.ca,l=a.aa,m=a.ta,n=a.na,o=a.ea,p=a.pb,q=a.pbc,r=a.cb,s=a.ab,t=a.tb,u=a.nb,v=a.eb,w=a.pc,x=a.pcc,y=a.cc,z=a.ac,A=a.tc,B=a.nc,C=a.ec,D=a.pn,E=a.pnc,F=a.cn,G=a.pe,H=a.pec,I=a.ce,J=a.de,K=a.cne,L=a.ate,M=a.ale,N=a.he,O=a.ps,P=a.lf},function(){e(),$&&wmsx.AudioTables.setupVolPan(4,Y,Z,S,T)}()},wmsx.PCM8BitAudio=function(){"use strict";this.setAudioSocket=function(a){c=a},this.connectAudio=function(){b||(b=new wmsx.AudioSignal("PCM 8 bit",this,e,f)),c&&c.connectAudioSignal(b)},this.disconnectAudio=function(){b&&c&&c.disconnectAudioSignal(b)},this.reset=function(){a=0},this.setSampleValue=function(b){a=b-128},this.nextSample=function(){return a*d};var a,b,c,d=.25/128,e=.66,f=112005;this.saveState=function(){return{s:a}},this.loadState=function(b){a=b.s}},wmsx.SCCIAudio=function(){"use strict";function a(a,b){if((a&=255)<128)return U[a>>>5][31&a]=b<128?b:-256+b,void(a>>>5==3&&(O[31&a]=b<128?b:-256+b));if(a<160){if((a&=239)<138)return void f(a-128>>>1,b,1&a);if(a<143)return void e(a-138,15&b);g(b)}}function b(a){return a&=255,a<128?255&U[a>>>5][31&a]:255}function c(a,b){if((a&=255)<160)return void(U[a>>>5][31&a]=b<128?b:-256+b);if(a<192){if((a&=239)<170)return void f(a-160>>>1,b,1&a);if(a<175)return void e(a-170,15&b);g(b)}}function d(a){return a&=255,a<160?255&U[a>>>5][31&a]:255}function e(a,b){switch(a){case 0:r=W[b];break;case 1:y=W[b];break;case 2:F=W[b];break;case 3:M=W[b];break;case 4:T=W[b]}}function f(a,b,c){switch(a){case 0:n=c?255&n|(15&b)<<8:65280&n|b;break;case 1:u=c?255&u|(15&b)<<8:65280&u|b;break;case 2:B=c?255&B|(15&b)<<8:65280&B|b;break;case 3:I=c?255&I|(15&b)<<8:65280&I|b;break;case 4:P=c?255&P|(15&b)<<8:65280&P|b}}function g(a){l=1&a?1:0,s=2&a?1:0,z=4&a?1:0,G=8&a?1:0,N=16&a?1:0}function h(){for(var a=0;a<16;a++)W[a]=(Math.pow($,a/15)-1)/($-1)*Z}this.setAudioSocket=function(a){k=a},this.connectAudio=function(){j||(j=new wmsx.AudioSignal("SCC",this,_,aa,da)),k&&k.connectAudioSignal(j)},this.disconnectAudio=function(){j&&k&&k.disconnectAudioSignal(j)},this.reset=function(){this.disconnectAudio(),g(0),r=y=F=M=T=0,n=u=B=I=P=0,o=v=C=J=Q=0,p=w=D=K=R=0,q=x=E=L=S=0;for(var a=0;a<5;a++)wmsx.Util.arrayFill(U[a],0);this.setSCCIMode(!1)},this.setSCCIMode=function(e){i!==e&&(i=!!e,i?(this.read=d,this.write=c):(this.read=b,this.write=a))},this.nextSample=function(){var a=0,b=0,c=0,d=0,e=0;if(n>0)for(l&&(a=q*r),o+=32;o>=n;)o-=n,++p>31&&(p=0),q=m[p];if(u>0)for(s&&(b=x*y),v+=32;v>=u;)v-=u,++w>31&&(w=0),x=t[w];if(B>0)for(z&&(c=E*F),C+=32;C>=B;)C-=B,++D>31&&(D=0),E=A[D];if(I>0)for(G&&(d=L*M),J+=32;J>=I;)J-=I,++K>31&&(K=0),L=H[K];if(P>0)for(N&&(e=S*T),Q+=32;Q>=P;)Q-=P,++R>31&&(R=0),S=O[R];return da?(V[0]=a*X[0]+b*X[1]+c*X[2]+d*X[3]+e*X[4],V[1]=a*Y[0]+b*Y[1]+c*Y[2]+d*Y[3]+e*Y[4],V):a+b+c+d+e};var i,j,k,l=0,m=wmsx.Util.arrayFill(new Array(32),0),n=0,o=0,p=0,q=0,r=0,s=0,t=wmsx.Util.arrayFill(new Array(32),0),u=0,v=0,w=0,x=0,y=0,z=0,A=wmsx.Util.arrayFill(new Array(32),0),B=0,C=0,D=0,E=0,F=0,G=0,H=wmsx.Util.arrayFill(new Array(32),0),I=0,J=0,K=0,L=0,M=0,N=!1,O=wmsx.Util.arrayFill(new Array(32),0),P=0,Q=0,R=0,S=0,T=0,U=[m,t,A,H,O],V=[0,0],W=new Array(16),X=new Array(5),Y=new Array(5),Z=.23/128,$=3,_=.65,aa=112005,ba=(WMSX.SCC_VOL||"f").toUpperCase(),ca=(WMSX.SCC_PAN||"8").toUpperCase(),da="F"!==ba||"8"!==ca;this.saveState=function(){return{m:i,c1:l,p1:n,pc1:o,sc1:p,cs1:q,a1:r,c2:s,p2:u,pc2:v,sc2:w,cs2:x,a2:y,c3:z,p3:B,pc3:C,sc3:D,cs3:E,a3:F,c4:G,p4:I,pc4:J,sc4:K,cs4:L,a4:M,c5:N,p5:P,pc5:Q,sc5:R,cs5:S,a5:T,s1:wmsx.Util.storeInt8BitArrayToStringBase64(m),s2:wmsx.Util.storeInt8BitArrayToStringBase64(t),s3:wmsx.Util.storeInt8BitArrayToStringBase64(A),s4:wmsx.Util.storeInt8BitArrayToStringBase64(H),s5:wmsx.Util.storeInt8BitArrayToStringBase64(O)}},this.loadState=function(a){this.reset(),l=a.c1,n=a.p1,o=a.pc1,p=a.sc1,q=a.cs1,r=a.a1,s=a.c2,u=a.p2,v=a.pc2,w=a.sc2,x=a.cs2,y=a.a2,z=a.c3,B=a.p3,C=a.pc3,D=a.sc3,E=a.cs3,F=a.a3,G=a.c4,I=a.p4,J=a.pc4,K=a.sc4,L=a.cs4,M=a.a4,N=a.c5,P=a.p5,Q=a.pc5,R=a.sc5,S=a.cs5,T=a.a5,m=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s1,m),t=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s2,t),A=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s3,A),H=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s4,H),O=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.s5||a.s4,O),U[0]!==m&&(U[0]=m),U[1]!==t&&(U[1]=t),U[2]!==A&&(U[2]=A),U[3]!==H&&(U[3]=H),U[4]!==O&&(U[4]=O),this.setSCCIMode(!0===a.m)},function(a){h(),da&&wmsx.AudioTables.setupVolPan(5,ba,ca,X,Y),a.setSCCIMode(!1)}(this)},wmsx.YM2413Tables=function(){"use strict";this.getFullSineTable=function(){for(var a=new Array(1024),b=0;b<1024;++b)a[b]=(b>511?16384:0)|Math.round(256*-wmsx.Util.log2(Math.abs(Math.sin(2*(b+.5)*Math.PI/1024))));return a},this.getHalfSineTable=function(){for(var a=new Array(1024),b=0;b<1024;++b)a[b]=Math.round(256*-wmsx.Util.log2(Math.abs(Math.sin(2*(b<512?b+.5:.5)*Math.PI/1024))));return a},this.getExpTable=function(){for(var a=new Array(32768),b=0;b<32768;++b){ -var c=Math.round(1024*wmsx.Util.exp2((255&b^255)/256))<<1>>Math.min((16128&b)>>8,31);16384&b&&(c=-c),a[b]=c}return a},this.getInstrumentsROM=function(){return this.INSTRUMENT_ROM},this.getVIBValues=function(){return this.VIB_VALUES},this.getKSLValues=function(){return this.KSL_VALUES},this.getMultiFactorsDoubled=function(){return this.MULTI_FACTORS},this.getRateDecayDurations=function(){for(var a=new Array(76),b=0;b<64;++b){var c=this.RATE_DECAY_DURATIONS[b];a[b]=c>=0?Math.max(1,Math.round(c/1e3*49780/128)):0}for(b=64;b<76;++b)a[b]=a[63];return a},this.getRateAttackDurations=function(){for(var a=new Array(76),b=0;b<64;++b){var c=this.RATE_ATTACK_DURATIONS[b];a[b]=c>=0?Math.max(1,Math.round(c/1e3*49780/128*8)):0}for(b=64;b<76;++b)a[b]=a[63];return a},this.INSTRUMENT_ROM=[[0,0,0,0,0,0,0,0],[97,97,30,23,240,127,0,23],[19,65,22,14,253,244,35,35],[3,1,154,4,243,243,19,243],[17,97,14,7,250,100,112,23],[34,33,30,6,240,118,0,40],[33,34,22,5,240,113,0,24],[33,97,29,7,130,128,23,23],[35,33,45,22,144,144,0,7],[33,33,27,6,100,101,16,23],[33,33,11,26,133,160,112,7],[35,1,131,16,255,180,16,244],[151,193,32,7,255,244,34,34],[97,0,12,5,194,246,64,68],[1,1,86,3,148,194,3,18],[33,1,137,3,241,228,240,35],[1,1,20,0,253,248,111,141],[1,17,0,0,248,247,248,247],[5,17,0,0,248,250,248,85]],this.VIB_VALUES=[[0,0,0,0,0,0,0,0],[0,0,1,0,0,0,-1,0],[0,1,2,1,0,-1,-2,-1],[0,1,3,1,0,-1,-3,-1],[0,2,4,2,0,-2,-4,-2],[0,2,5,2,0,-2,-5,-2],[0,3,6,3,0,-3,-6,-3],[0,3,7,3,0,-3,-7,-3]],this.KSL_VALUES=[[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,1,1,2,2,3,3,4],[0,0,0,0,0,1,2,3,4,5,5,6,6,7,7,8],[0,0,0,2,4,5,6,7,8,9,9,10,10,11,11,12],[0,0,4,6,8,9,10,11,12,13,13,14,14,15,15,16],[0,4,8,10,12,13,14,15,16,17,17,18,18,19,19,20],[0,8,12,14,16,17,18,19,20,21,21,22,22,23,23,24],[0,12,16,18,20,21,22,23,24,25,25,26,26,27,27,28]],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8],[0,0,0,0,0,3,5,7,8,10,11,12,13,14,15,16],[0,0,0,5,8,11,13,15,16,18,19,20,21,22,23,24],[0,0,8,13,16,19,21,23,24,26,27,28,29,30,31,32],[0,8,16,21,24,27,29,31,32,34,35,36,37,38,39,40],[0,16,24,29,32,35,37,39,40,42,43,44,45,46,47,48],[0,24,32,37,40,43,45,47,48,50,51,52,53,54,55,56]],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,4,6,8,10,12,14,16],[0,0,0,0,0,6,10,14,16,20,22,24,26,28,30,32],[0,0,0,10,16,22,26,30,32,36,38,40,42,44,46,48],[0,0,16,26,32,38,42,46,48,52,54,56,58,60,62,64],[0,16,32,42,48,54,58,62,64,68,70,72,74,76,78,80],[0,32,48,58,64,70,74,78,80,84,86,88,90,92,94,96],[0,48,64,74,80,86,90,94,96,100,102,104,106,108,110,112]]],this.MULTI_FACTORS=[1,2,4,6,8,10,12,14,16,18,20,20,24,24,30,30],this.RATE_DECAY_DURATIONS=[-1,-1,-1,-1,20926.6,16807.2,14006,12028.7,10463.3,8403.58,7002.98,6014.32,5231.64,4201.79,3501.49,3007.16,2615.82,2100.89,1750.75,1503.58,1307.91,1050.45,875.37,751.79,653.95,525.22,437.69,375.9,326.98,262.61,218.84,187.95,163.49,131.31,109.42,93.97,81.74,65.65,54.71,46.99,40.87,32.83,27.36,23.49,20.44,16.41,13.68,11.75,10.22,8.21,6.84,5.87,5.11,4.1,3.42,2.94,2.55,2.05,1.71,1.47,1.27,1.27,1.27,1.27],this.RATE_ATTACK_DURATIONS=[-1,-1,-1,-1,1730.15,1400.6,1153.43,988.66,865.08,700.3,576.72,494.33,432.54,350.15,288.36,247.16,216.27,175.07,144.18,123.58,108.13,87.54,72.09,61.79,54.07,43.77,36.04,30.9,27.03,21.88,18.02,15.45,13.52,10.94,9.01,7.72,6.76,5.47,4.51,3.86,3.38,2.74,2.25,1.93,1.69,1.37,1.13,.97,.84,.7,.6,.54,.5,.42,.34,.3,.28,.22,.18,.14,0,0,0,0]},wmsx.YM2413Audio=function(pName){"use strict";function init(){name=pName||"YM2413";var a=new wmsx.YM2413Tables;sineTable=a.getFullSineTable(),halfSineTable=a.getHalfSineTable(),expTable=a.getExpTable(),instrumentsParameters=a.getInstrumentsROM(),multiFactors=a.getMultiFactorsDoubled(),vibValues=a.getVIBValues(),kslValues=a.getKSLValues(),rateAttackDurTable=a.getRateAttackDurations(),rateDecayDurTable=a.getRateDecayDurations(),VOLPAN&&wmsx.AudioTables.setupVolPan(14,VOL,PAN,volPanL,volPanR)}function connectAudio(){audioSocket&&(audioSignal||(audioSignal=new wmsx.AudioSignal(name,self,VOLUME,SAMPLE_RATE,VOLPAN)),audioSocket.connectAudioSignal(audioSignal),audioConnected=!0)}function disconnectAudio(){audioSocket&&audioSignal&&audioSocket.disconnectAudioSignal(audioSignal),audioConnected=!1}function registerWrite(a,b){var c=15&a;c>8&&(c-=9);var d=c<<1,e=d+1,f=register[a]^b;switch(register[a]=b,a){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:f&&(instrumentsParameters[0][a]=b,updateCustomInstrChannels());break;case 14:32&f&&setRhythmMode(0!=(32&b)),rhythmMode&&(48&f&&(setRhythmKeyOnOp(12,(16&b)>>4),setRhythmKeyOnOp(13,(16&b)>>4)),40&f&&setRhythmKeyOnOp(15,(8&b)>>3),36&f&&setRhythmKeyOnOp(16,(4&b)>>2),34&f&&setRhythmKeyOnOp(17,(2&b)>>1),33&f&&setRhythmKeyOnOp(14,1&b));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:f&&(fNum[d]=-256&fNum[d]|b,fNum[e]=fNum[d],updateFrequency(c));break;case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:32&f&&setSustain(c,(32&b)>>5),16&f&&!(rhythmMode&&c>5)&&setKeyOn(c,(16&b)>>4),1&f&&(fNum[d]=-257&fNum[d]|(1&b)<<8,fNum[e]=fNum[d]),14&f&&(block[d]=b>>1&7,block[e]=block[d]),15&f&&updateFrequency(c);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:case 63:rhythmMode&&c>5?(240&f&&c>6&&setVolumeOp(d,b>>>4),15&f&&setVolumeOp(e,15&b)):(240&f&&(audioConnected||connectAudio(),setInstr(c,b>>>4)),15&f&&setVolumeOp(e,15&b))}}function clockNoise(){noiseRegister>>=1,(noiseOutput=1&noiseRegister)&&(noiseRegister^=134230048)}function clockAM(){return!(511&clock)&&(0!==amLevel&&13!==amLevel||(amLevelInc=-amLevelInc),amLevel+=amLevelInc,!0)}function clockVIB(){return!(1023&clock)&&(vibPhase=clock>>10&7,!0)}function clockEnvelope(a){envLevel[a]===envStepNextAtLevel[a]?setEnvStepOp(a,envStepNext[a]):clock===envStepLevelIncClock[a]&&(envStepLevelIncClock[a]+=envStepLevelDur[a],envLevel[a]+=envStepLevelInc[a],updateEnvAttenuationOp(a))}function setSustain(a,b){sustain[a]=b}function setKeyOn(a,b){var c=a<<1,d=c+1;keyOn[c]=b,keyOn[d]=b,b?setEnvStep(a,DAMP):envStep[d]!==IDLE&&setEnvStepOp(d,RELEASE)}function setRhythmKeyOnOp(a,b){keyOn[a]=b,b?setEnvStepOp(a,DAMP):envStep[a]!==IDLE&&setEnvStepOp(a,RELEASE)}function setEnvStep(a,b){var c=a<<1,d=c+1;setEnvStepOp(c,b),setEnvStepOp(d,b)}function setEnvStepOp(a,b){switch(envStep[a]=b,b){case DAMP:envStepLevelDur[a]=rateDecayDurTable[48+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=ATTACK;break;case ATTACK:envStepLevelDur[a]=rateAttackDurTable[(ar[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=-8,envStepNextAtLevel[a]=0,envStepNext[a]=DECAY,phaseCounter[a]=0;break;case DECAY:envStepLevelDur[a]=rateDecayDurTable[(dr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=sl[a]<<3,envStepNext[a]=SUSTAIN;break;case SUSTAIN:envType[a]?(envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=SUSTAIN):(envStepLevelDur[a]=rateDecayDurTable[(rr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE);break;case RELEASE:var c=envType[a]?sustain[a>>1]?5:rr[a]:sustain[a>>1]?5:7;envStepLevelDur[a]=rateDecayDurTable[(c<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE;break;case IDLE:default: -envLevel[a]=128,envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=IDLE}}function setRhythmMode(a){rhythmMode=a,rhythmMode?(audioConnected||connectAudio(),setInstr(6,16),setInstr(7,17),setInstr(8,18)):(setEnvStep(6,IDLE),updateEnvAttenuation(6),setEnvStep(7,IDLE),updateEnvAttenuation(7),setEnvStep(8,IDLE),updateEnvAttenuation(8),setInstr(6,register[36]>>4),setInstr(7,register[37]>>4),setInstr(8,register[38]>>4))}function setInstr(a,b){instr[a]=b;var c=a<<1,d=c+1,e=instrumentsParameters[b];am[c]=e[0]>>7&1,am[d]=e[1]>>7&1,vib[c]=e[0]>>6&1,vib[d]=e[1]>>6&1,envType[c]=e[0]>>5&1,envType[d]=e[1]>>5&1,ksr[c]=e[0]>>4&1,ksr[d]=e[1]>>4&1,multi[c]=multiFactors[15&e[0]],multi[d]=multiFactors[15&e[1]],ksl[c]=e[2]>>6,ksl[d]=e[3]>>6,modTL[c]=63&e[2],halfWave[c]=e[3]>>3&1,halfWave[d]=e[3]>>4&1,fbShift[a]=7&e[3]?8-(7&e[3]):0,ar[c]=e[4]>>4,ar[d]=e[5]>>4,dr[c]=15&e[4],dr[d]=15&e[5],sl[c]=e[6]>>4,sl[d]=e[7]>>4,rr[c]=15&e[6],rr[d]=15&e[7],updateAMAttenuation(a),updateFrequency(a),updateModAttenuationOp(c)}function updateCustomInstrChannels(){for(var a=0;a<9;a++)0===instr[a]&&setInstr(a,0)}function setVolumeOp(a,b){volume[a]=b,updateVolumeAttenuationOp(a)}function updateFrequency(a){var b=a<<1,c=b+1,d=vib[b]?vibValues[fNum[b]>>6][vibPhase]:0;phaseInc[b]=((fNum[b]<<1)+d)*multi[b]<>2,d=vib[c]?vibValues[fNum[c]>>6][vibPhase]:0,phaseInc[c]=((fNum[c]<<1)+d)*multi[c]<>2,updateKSLAttenuation(a),updateKSROffset(a)}function updateFrequencyOp(a){var b=vib[a]?vibValues[fNum[a]>>6][vibPhase]:0;phaseInc[a]=((fNum[a]<<1)+b)*multi[a]<>2,updateKSLAttenuationOp(a),updateKSROffsetOp(a)}function updateKSROffset(a){var b=a<<1,c=b+1;ksrOffset[b]=(ksr[b]?block[b]<<1:block[b]>>1)|fNum[b]>>>9-ksr[b],ksrOffset[c]=(ksr[c]?block[c]<<1:block[c]>>1)|fNum[c]>>>9-ksr[c]}function updateKSROffsetOp(a){ksrOffset[a]=(ksr[a]?block[a]<<1:block[a]>>1)|fNum[a]>>>9-ksr[a]}function updateAMAttenuation(a){var b=a<<1,c=b+1;amAtt[b]=am[b]?amLevel<<4:0,amAtt[c]=am[c]?amLevel<<4:0,updateTotalAttenuation(a)}function updateAMAttenuationOp(a){amAtt[a]=am[a]?amLevel<<4:0,updateTotalAttenuationOp(a)}function updateKSLAttenuation(a){var b=a<<1,c=b+1;kslAtt[b]=kslValues[ksl[b]][block[b]][fNum[b]>>>5]<<4,kslAtt[c]=kslValues[ksl[c]][block[c]][fNum[c]>>>5]<<4,updateTotalAttenuation(a)}function updateKSLAttenuationOp(a){kslAtt[a]=kslValues[ksl[a]][block[a]][fNum[a]>>>5]<<4,updateTotalAttenuationOp(a)}function updateEnvAttenuation(a){var b=a<<1,c=b+1;envAtt[b]=(128===envLevel[b]?256:envLevel[b])<<4,envAtt[c]=(128===envLevel[c]?256:envLevel[c])<<4,updateTotalAttenuation(a)}function updateEnvAttenuationOp(a){envAtt[a]=(128===envLevel[a]?256:envLevel[a])<<4,updateTotalAttenuationOp(a)}function updateModAttenuationOp(a){volModAtt[a]=modTL[a]<<5,updateTotalAttenuationOp(a)}function updateVolumeAttenuationOp(a){volModAtt[a]=(15===volume[a]?30:volume[a])<<7,updateTotalAttenuationOp(a)}function updateTotalAttenuation(a){var b=a<<1,c=b+1;totalAtt[b]=amAtt[b]+kslAtt[b]+envAtt[b]+volModAtt[b],totalAtt[c]=amAtt[c]+kslAtt[c]+envAtt[c]+volModAtt[c]}function updateTotalAttenuationOp(a){totalAtt[a]=amAtt[a]+kslAtt[a]+envAtt[a]+volModAtt[a]}var self=this;this.connect=function(a){a.bus.connectInputDevice(124,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectInputDevice(125,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectOutputDevice(124,this.output7C),a.bus.connectOutputDevice(125,this.output7D),audioSocket=a.getAudioSocket(),audioConnected&&connectAudio()},this.disconnect=function(a){a.bus.disconnectInputDevice(124,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectInputDevice(125,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectOutputDevice(124,this.output7C),a.bus.disconnectOutputDevice(125,this.output7D),disconnectAudio(),audioSocket=null},this.powerOn=function(){this.reset()},this.powerOff=function(){disconnectAudio()},this.reset=function(){registerAddress=0,wmsx.Util.arrayFill(register,0),wmsx.Util.arrayFill(instrumentsParameters[0],0),clock=0,noiseRegister=65535,noiseOutput=0,amLevel=0,amLevelInc=-1,vibPhase=0,rhythmMode=!1,wmsx.Util.arrayFill(sustain,0),wmsx.Util.arrayFill(instr,0),wmsx.Util.arrayFill(keyOn,0),wmsx.Util.arrayFill(am,0),wmsx.Util.arrayFill(vib,0),wmsx.Util.arrayFill(envType,0),wmsx.Util.arrayFill(ksr,0),wmsx.Util.arrayFill(multi,0),wmsx.Util.arrayFill(ksl,0),wmsx.Util.arrayFill(halfWave,0),wmsx.Util.arrayFill(ar,0),wmsx.Util.arrayFill(dr,0),wmsx.Util.arrayFill(sl,0),wmsx.Util.arrayFill(rr,0),wmsx.Util.arrayFill(fNum,0),wmsx.Util.arrayFill(block,0),wmsx.Util.arrayFill(volume,0),wmsx.Util.arrayFill(modTL,0),wmsx.Util.arrayFill(fbShift,0),wmsx.Util.arrayFill(volModAtt,0),wmsx.Util.arrayFill(amAtt,0),wmsx.Util.arrayFill(envAtt,0),wmsx.Util.arrayFill(kslAtt,0),wmsx.Util.arrayFill(totalAtt,0),wmsx.Util.arrayFill(envStep,IDLE),wmsx.Util.arrayFill(envStepLevelDur,0),wmsx.Util.arrayFill(envStepLevelIncClock,0),wmsx.Util.arrayFill(envStepLevelInc,0),wmsx.Util.arrayFill(envStepNext,DAMP),wmsx.Util.arrayFill(envStepNextAtLevel,0),wmsx.Util.arrayFill(envLevel,0),wmsx.Util.arrayFill(ksrOffset,0),wmsx.Util.arrayFill(fbLastMod1,0),wmsx.Util.arrayFill(fbLastMod2,0),wmsx.Util.arrayFill(phaseInc,0),wmsx.Util.arrayFill(phaseCounter,0),disconnectAudio()},this.output7C=function(a){registerAddress=63&a},this.output7D=function(a){registerWrite(registerAddress,a)},this.nextSample=function(){var a,b,c,d,e,f,g=!1;++clock,(a=clockAM())&&(g=clockVIB());for(var h=0,i=0,j=0,k=0,l=rhythmMode?5:8,m=l;m>=0;--m)b=m<<1,c=b+1,envStep[c]!==IDLE&&(a&&(am[b]&&updateAMAttenuationOp(b),am[c]&&updateAMAttenuationOp(c),g&&(vib[b]&&updateFrequencyOp(b),vib[c]&&updateFrequencyOp(c))),envStep[b]!==IDLE&&clockEnvelope(b),clockEnvelope(c),d=(phaseCounter[b]+=phaseInc[b])>>9,e=(phaseCounter[c]+=phaseInc[c])>>9,fbShift[m]?(d+=fbLastMod1[m]+fbLastMod2[m]>>fbShift[m],f=expTable[(halfWave[b]?halfSineTable:sineTable)[1023&d]+totalAtt[b]],fbLastMod2[m]=fbLastMod1[m]>>1,fbLastMod1[m]=f>>1):f=expTable[(halfWave[b]?halfSineTable:sineTable)[1023&d]+totalAtt[b]],h=expTable[(halfWave[c]?halfSineTable:sineTable)[e+f&1023]+totalAtt[c]]>>4,VOLPAN?(i+=h*volPanL[m],j+=h*volPanR[m]):k+=h);if(rhythmMode&&(clockNoise(),c=13,envStep[c]!==IDLE&&(b=12,clockEnvelope(b),clockEnvelope(c),d=((phaseCounter[b]+=phaseInc[b])>>9)-1,e=(phaseCounter[c]+=phaseInc[c])>>9,f=expTable[sineTable[1023&d]+totalAtt[b]],h=expTable[sineTable[e+f&1023]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[9],j+=h*volPanR[9]):k+=h),c=15,envStep[c]!==IDLE&&(clockEnvelope(c),e=(phaseCounter[c]+=phaseInc[c])>>9,h=expTable[sineTable[256&e?noiseOutput?0:130:noiseOutput?0:893]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[10],j+=h*volPanR[10]):k+=h),c=16,envStep[c]!==IDLE&&(clockEnvelope(c),e=(phaseCounter[c]+=phaseInc[c])>>9,h=expTable[sineTable[1023&e]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[11],j+=h*volPanR[11]):k+=h),envStep[17]!==IDLE||envStep[14]!==IDLE)){var n=(phaseCounter[14]+=phaseInc[14])>>9,o=(phaseCounter[17]+=phaseInc[17])>>9,p=(0!=(4&o)&&0==(16&o))!=(0!=(2&n)!=(0!=(256&n))||0!=(4&n));c=17,envStep[c]!==IDLE&&(clockEnvelope(c),h=expTable[sineTable[p?200:823]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[12],j+=h*volPanR[12]):k+=h),c=14,envStep[c]!==IDLE&&(clockEnvelope(c),h=expTable[sineTable[p?noiseOutput?40:10:noiseOutput?983:1013]+totalAtt[c]]>>3,VOLPAN?(i+=h*volPanL[13],j+=h*volPanR[13]):k+=h)}return VOLPAN?(sampleResult[0]=i,sampleResult[1]=j,sampleResult):k} -;var name,audioConnected=!1,IDLE=255,DAMP=0,ATTACK=1,DECAY=2,SUSTAIN=3,RELEASE=4,clock,noiseRegister,noiseOutput,amLevel,amLevelInc,vibPhase,registerAddress,register=new Array(56),rhythmMode,sustain=new Array(9),instr=new Array(9),keyOn=new Array(18),am=new Array(18),vib=new Array(18),envType=new Array(18),ksr=new Array(18),multi=new Array(18),ksl=new Array(18),halfWave=new Array(18),ar=new Array(18),dr=new Array(18),sl=new Array(18),rr=new Array(18),fNum=new Array(18),block=new Array(18),volume=new Array(18),modTL=new Array(18),fbShift=new Array(9),volModAtt=new Array(18),amAtt=new Array(18),envAtt=new Array(18),kslAtt=new Array(18),totalAtt=new Array(18),envStep=new Array(18),envStepLevelDur=new Array(18),envStepLevelIncClock=new Array(18),envStepLevelInc=new Array(18),envStepNext=new Array(18),envStepNextAtLevel=new Array(18),envLevel=new Array(18),ksrOffset=new Array(18),fbLastMod1=new Array(9),fbLastMod2=new Array(9),phaseInc=new Array(18),phaseCounter=new Array(18),volPanL=new Array(14),volPanR=new Array(14),sineTable,halfSineTable,expTable,instrumentsParameters,multiFactors,vibValues,kslValues,rateAttackDurTable,rateDecayDurTable,audioSocket,audioSignal,sampleResult=[0,0],VOLUME=1.58/9/256*.68,SAMPLE_RATE=49780,VOL=(WMSX.OPLL_VOL||"f").toUpperCase(),PAN=(WMSX.OPLL_PAN||"8").toUpperCase(),VOLPAN="F"!==VOL||"8"!==PAN;this.saveState=function(){return{n:name,ac:audioConnected,ra:registerAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),c:clock,nr:noiseRegister,no:noiseOutput,al:amLevel,ai:amLevelInc,vp:vibPhase,amt:wmsx.Util.storeInt16BitArrayToStringBase64(amAtt),evt:wmsx.Util.storeInt16BitArrayToStringBase64(envAtt),kst:wmsx.Util.storeInt16BitArrayToStringBase64(kslAtt),tot:wmsx.Util.storeInt16BitArrayToStringBase64(totalAtt),evs:wmsx.Util.storeInt8BitArrayToStringBase64(envStep),evd:wmsx.Util.storeInt32BitArrayToStringBase64(envStepLevelDur),evc:envStepLevelIncClock,evi:wmsx.Util.storeInt8BitArrayToStringBase64(envStepLevelInc),evn:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNext),evl:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNextAtLevel),eve:wmsx.Util.storeInt8BitArrayToStringBase64(envLevel),kso:wmsx.Util.storeInt8BitArrayToStringBase64(ksrOffset),fb1:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod1),fb2:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod2)}},this.loadState=function(a){this.reset(),name=a.n,audioConnected=a.ac,registerAddress=a.ra;for(var b=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r),c=0;c255&&(timer1Counter=register[2],timer1Masked||(status|=192,updateIRQ())),timer2Active&&0==(15&clock)&&++timer2Counter>255&&(timer2Counter=register[3],timer2Masked||(status|=160,updateIRQ()))}function updateIRQ(){cpu.setINTChannel(1,0==(128&status))}function connectAudio(){}function registerWrite(a,b){if(4===a&&128&b)return register[4]&=-129,status=0,void updateIRQ();var c=register[a]^b;switch(register[a]=b,a){case 4:1&c&&(timer1Active=0!=(1&b))&&(timer1Counter=register[2]),2&c&&(timer2Active=0!=(2&b))&&(timer2Counter=register[3]),64&c&&(timer1Masked=0!=(64&b)),32&c&&(timer2Masked=0!=(32&b))}return}function clockNoise(){noiseRegister>>=1,(noiseOutput=1&noiseRegister)&&(noiseRegister^=134230048)}function clockAM(){return!(511&clock)&&(0!==amLevel&&13!==amLevel||(amLevelInc=-amLevelInc),amLevel+=amLevelInc,!0)}function clockVIB(){return!(1023&clock)&&(vibPhase=clock>>10&7,!0)}function clockEnvelope(a){envLevel[a]===envStepNextAtLevel[a]?setEnvStepOp(a,envStepNext[a]):clock===envStepLevelIncClock[a]&&(envStepLevelIncClock[a]+=envStepLevelDur[a],envLevel[a]+=envStepLevelInc[a],updateEnvAttenuationOp(a))}function setSustain(a,b){sustain[a]=b}function setKeyOn(a,b){var c=a<<1,d=c+1;keyOn[c]=b,keyOn[d]=b,b?setEnvStep(a,DAMP):envStep[d]!==IDLE&&setEnvStepOp(d,RELEASE)}function setRhythmKeyOnOp(a,b){keyOn[a]=b,b?setEnvStepOp(a,DAMP):envStep[a]!==IDLE&&setEnvStepOp(a,RELEASE)}function setEnvStep(a,b){var c=a<<1,d=c+1;setEnvStepOp(c,b),setEnvStepOp(d,b)}function setEnvStepOp(a,b){switch(envStep[a]=b,b){case DAMP:envStepLevelDur[a]=rateDecayDurTable[48+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=ATTACK;break;case ATTACK:envStepLevelDur[a]=rateAttackDurTable[(ar[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=-8,envStepNextAtLevel[a]=0,envStepNext[a]=DECAY,phaseCounter[a]=0;break;case DECAY:envStepLevelDur[a]=rateDecayDurTable[(dr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=sl[a]<<3,envStepNext[a]=SUSTAIN;break;case SUSTAIN:envType[a]?(envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=SUSTAIN):(envStepLevelDur[a]=rateDecayDurTable[(rr[a]<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE);break;case RELEASE:var c=envType[a]?sustain[a>>1]?5:rr[a]:sustain[a>>1]?5:7;envStepLevelDur[a]=rateDecayDurTable[(c<<2)+ksrOffset[a]],envStepLevelIncClock[a]=clock+envStepLevelDur[a],envStepLevelInc[a]=1,envStepNextAtLevel[a]=128,envStepNext[a]=IDLE;break;case IDLE:default:envLevel[a]=128,envStepLevelIncClock[a]=envStepLevelDur[a]=0,envStepLevelInc[a]=0,envStepNextAtLevel[a]=255,envStepNext[a]=IDLE}}function setRhythmMode(a){rhythmMode=a,rhythmMode?(audioConnected||connectAudio(),setInstr(6,16),setInstr(7,17),setInstr(8,18)):(setEnvStep(6,IDLE),updateEnvAttenuation(6),setEnvStep(7,IDLE),updateEnvAttenuation(7),setEnvStep(8,IDLE),updateEnvAttenuation(8),setInstr(6,register[36]>>4),setInstr(7,register[37]>>4),setInstr(8,register[38]>>4))}function setInstr(a,b){instr[a]=b;var c=a<<1,d=c+1,e=instrumentsParameters[b];am[c]=e[0]>>7&1,am[d]=e[1]>>7&1,vib[c]=e[0]>>6&1,vib[d]=e[1]>>6&1,envType[c]=e[0]>>5&1,envType[d]=e[1]>>5&1,ksr[c]=e[0]>>4&1,ksr[d]=e[1]>>4&1,multi[c]=multiFactors[15&e[0]],multi[d]=multiFactors[15&e[1]],ksl[c]=e[2]>>6,ksl[d]=e[3]>>6,modTL[c]=63&e[2],halfWave[c]=e[3]>>3&1,halfWave[d]=e[3]>>4&1,fbShift[a]=7&e[3]?8-(7&e[3]):0,ar[c]=e[4]>>4,ar[d]=e[5]>>4,dr[c]=15&e[4],dr[d]=15&e[5],sl[c]=e[6]>>4,sl[d]=e[7]>>4,rr[c]=15&e[6],rr[d]=15&e[7],updateAMAttenuation(a),updateFrequency(a),updateModAttenuationOp(c)}function updateCustomInstrChannels(){for(var a=0;a<9;a++)0===instr[a]&&setInstr(a,0)}function setVolumeOp(a,b){volume[a]=b,updateVolumeAttenuationOp(a)}function updateFrequency(a){var b=a<<1,c=b+1,d=vib[b]?vibValues[fNum[b]>>6][vibPhase]:0;phaseInc[b]=((fNum[b]<<1)+d)*multi[b]<>2,d=vib[c]?vibValues[fNum[c]>>6][vibPhase]:0,phaseInc[c]=((fNum[c]<<1)+d)*multi[c]<>2,updateKSLAttenuation(a),updateKSROffset(a)}function updateFrequencyOp(a){var b=vib[a]?vibValues[fNum[a]>>6][vibPhase]:0;phaseInc[a]=((fNum[a]<<1)+b)*multi[a]<>2,updateKSLAttenuationOp(a),updateKSROffsetOp(a)}function updateKSROffset(a){var b=a<<1,c=b+1;ksrOffset[b]=(ksr[b]?block[b]<<1:block[b]>>1)|fNum[b]>>>9-ksr[b],ksrOffset[c]=(ksr[c]?block[c]<<1:block[c]>>1)|fNum[c]>>>9-ksr[c]}function updateKSROffsetOp(a){ksrOffset[a]=(ksr[a]?block[a]<<1:block[a]>>1)|fNum[a]>>>9-ksr[a]}function updateAMAttenuation(a){var b=a<<1,c=b+1;amAtt[b]=am[b]?amLevel<<4:0,amAtt[c]=am[c]?amLevel<<4:0,updateTotalAttenuation(a)}function updateAMAttenuationOp(a){amAtt[a]=am[a]?amLevel<<4:0,updateTotalAttenuationOp(a)}function updateKSLAttenuation(a){var b=a<<1,c=b+1;kslAtt[b]=kslValues[ksl[b]][block[b]][fNum[b]>>>5]<<4,kslAtt[c]=kslValues[ksl[c]][block[c]][fNum[c]>>>5]<<4,updateTotalAttenuation(a)}function updateKSLAttenuationOp(a){kslAtt[a]=kslValues[ksl[a]][block[a]][fNum[a]>>>5]<<4,updateTotalAttenuationOp(a)}function updateEnvAttenuation(a){var b=a<<1,c=b+1;envAtt[b]=(128===envLevel[b]?256:envLevel[b])<<4,envAtt[c]=(128===envLevel[c]?256:envLevel[c])<<4,updateTotalAttenuation(a)}function updateEnvAttenuationOp(a){envAtt[a]=(128===envLevel[a]?256:envLevel[a])<<4,updateTotalAttenuationOp(a)}function updateModAttenuationOp(a){volModAtt[a]=modTL[a]<<5,updateTotalAttenuationOp(a)}function updateVolumeAttenuationOp(a){volModAtt[a]=(15===volume[a]?30:volume[a])<<7,updateTotalAttenuationOp(a)}function updateTotalAttenuation(a){var b=a<<1,c=b+1;totalAtt[b]=amAtt[b]+kslAtt[b]+envAtt[b]+volModAtt[b],totalAtt[c]=amAtt[c]+kslAtt[c]+envAtt[c]+volModAtt[c]}function updateTotalAttenuationOp(a){totalAtt[a]=amAtt[a]+kslAtt[a]+envAtt[a]+volModAtt[a]}var self=this;this.connect=function(a){cpu=a.cpu,a.bus.connectInputDevice(196,this.inputC4),a.bus.connectOutputDevice(196,this.outputC4),a.bus.connectInputDevice(197,this.inputC5),a.bus.connectOutputDevice(197,this.outputC5),a.bus.connectInputDevice(198,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectOutputDevice(198,this.outputC6),a.bus.connectInputDevice(199,this.inputC5),a.bus.connectOutputDevice(199,this.outputC5)},this.disconnect=function(a){a.bus.disconnectInputDevice(196,this.inputC4),a.bus.disconnectOutputDevice(196,this.outputC4),a.bus.disconnectInputDevice(197,this.inputC5),a.bus.disconnectOutputDevice(197,this.outputC5),a.bus.disconnectInputDevice(198,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectOutputDevice(198,this.outputC6),a.bus.disconnectInputDevice(199,this.inputC5),a.bus.disconnectOutputDevice(199,this.outputC5)},this.reset=function(){status=0,registerAddress=0,wmsx.Util.arrayFill(register,0),clock=0,busyUntilBUSCycle=0,timer1Counter=timer2Counter=0,timer1Active=timer2Active=!1,timer1Masked=timer2Masked=0,wmsx.Util.arrayFill(instrumentsParameters[0],0),noiseRegister=65535,noiseOutput=0,amLevel=0,amLevelInc=-1,vibPhase=0,rhythmMode=!1,wmsx.Util.arrayFill(sustain,0),wmsx.Util.arrayFill(instr,0),wmsx.Util.arrayFill(keyOn,0),wmsx.Util.arrayFill(am,0),wmsx.Util.arrayFill(vib,0),wmsx.Util.arrayFill(envType,0),wmsx.Util.arrayFill(ksr,0),wmsx.Util.arrayFill(multi,0),wmsx.Util.arrayFill(ksl,0),wmsx.Util.arrayFill(halfWave,0),wmsx.Util.arrayFill(ar,0),wmsx.Util.arrayFill(dr,0),wmsx.Util.arrayFill(sl,0),wmsx.Util.arrayFill(rr,0),wmsx.Util.arrayFill(fNum,0),wmsx.Util.arrayFill(block,0),wmsx.Util.arrayFill(volume,0),wmsx.Util.arrayFill(modTL,0),wmsx.Util.arrayFill(fbShift,0),wmsx.Util.arrayFill(volModAtt,0),wmsx.Util.arrayFill(amAtt,0),wmsx.Util.arrayFill(envAtt,0),wmsx.Util.arrayFill(kslAtt,0),wmsx.Util.arrayFill(totalAtt,0),wmsx.Util.arrayFill(envStep,IDLE),wmsx.Util.arrayFill(envStepLevelDur,0), -wmsx.Util.arrayFill(envStepLevelIncClock,0),wmsx.Util.arrayFill(envStepLevelInc,0),wmsx.Util.arrayFill(envStepNext,DAMP),wmsx.Util.arrayFill(envStepNextAtLevel,0),wmsx.Util.arrayFill(envLevel,0),wmsx.Util.arrayFill(ksrOffset,0),wmsx.Util.arrayFill(fbLastMod1,0),wmsx.Util.arrayFill(fbLastMod2,0),wmsx.Util.arrayFill(phaseInc,0),wmsx.Util.arrayFill(phaseCounter,0)},this.inputC4=function(){return status},this.outputC4=function(a){registerAddress=a},this.inputC5=function(){return register[registerAddress]},this.outputC5=function(a){registerWrite(registerAddress,a)},this.outputC6=function(a){registerAddress=256|a},this.audioClockPulse=function(){0==(3&++clock)&&clockTimers()},this.setBusyCycles=function(a){},this.nextSample=function(){return 0};var cpu,busyUntilBUSCycle,audioConnected=!1,status=0,registerAddress=0,register=new Array(56),timer1Counter=0,timer2Counter=0,timer1Active=!1,timer2Active=!1,timer1Masked=!1,timer2Masked=!1,IDLE=255,DAMP=0,ATTACK=1,DECAY=2,SUSTAIN=3,RELEASE=4,clock,noiseRegister,noiseOutput,amLevel,amLevelInc,vibPhase,rhythmMode,sustain=new Array(9),instr=new Array(9),keyOn=new Array(18),am=new Array(18),vib=new Array(18),envType=new Array(18),ksr=new Array(18),multi=new Array(18),ksl=new Array(18),halfWave=new Array(18),ar=new Array(18),dr=new Array(18),sl=new Array(18),rr=new Array(18),fNum=new Array(18),block=new Array(18),volume=new Array(18),modTL=new Array(18),fbShift=new Array(9),volModAtt=new Array(18),amAtt=new Array(18),envAtt=new Array(18),kslAtt=new Array(18),totalAtt=new Array(18),envStep=new Array(18),envStepLevelDur=new Array(18),envStepLevelIncClock=new Array(18),envStepLevelInc=new Array(18),envStepNext=new Array(18),envStepNextAtLevel=new Array(18),envLevel=new Array(18),ksrOffset=new Array(18),fbLastMod1=new Array(9),fbLastMod2=new Array(9),phaseInc=new Array(18),phaseCounter=new Array(18),sineTable,halfSineTable,expTable,instrumentsParameters,multiFactors,vibValues,kslValues,rateAttackDurTable,rateDecayDurTable,VOLUME=1.55/9/256*.65;this.saveState=function(){return{ac:audioConnected,s:status,ra:registerAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),c:clock,nr:noiseRegister,no:noiseOutput,al:amLevel,ai:amLevelInc,vp:vibPhase,t1c:timer1Counter,t2c:timer2Counter,t1a:timer1Active,t2a:timer2Active,t1m:timer1Masked,t2m:timer2Masked,amt:wmsx.Util.storeInt16BitArrayToStringBase64(amAtt),evt:wmsx.Util.storeInt16BitArrayToStringBase64(envAtt),kst:wmsx.Util.storeInt16BitArrayToStringBase64(kslAtt),tot:wmsx.Util.storeInt16BitArrayToStringBase64(totalAtt),evs:wmsx.Util.storeInt8BitArrayToStringBase64(envStep),evd:wmsx.Util.storeInt32BitArrayToStringBase64(envStepLevelDur),evc:envStepLevelIncClock,evi:wmsx.Util.storeInt8BitArrayToStringBase64(envStepLevelInc),evn:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNext),evl:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNextAtLevel),eve:wmsx.Util.storeInt8BitArrayToStringBase64(envLevel),kso:wmsx.Util.storeInt8BitArrayToStringBase64(ksrOffset),fb1:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod1),fb2:wmsx.Util.storeInt16BitArrayToStringBase64(fbLastMod2)}},this.loadState=function(a){this.reset(),audioConnected=a.ac,status=a.s,registerAddress=a.ra;for(var b=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r),c=0;c=4194304&&(memoryAddress=0);break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15: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:c=a-8,readWaveHeader(c,(1®ister[32+c])<<8|b);break;case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:c=a-32,254&d&&(fNum[c]=b>>1|(7®ister[56+c])<<7,updateFrequency(c));break;case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63: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:case 79:c=a-56,240&d&&(octave[c]=128&b?(b>>4)-16:b>>4),7&d&&(fNum[c]=(7&b)<<7|register[32+c]>>1),247&d&&updateFrequency(c),8&d&&(reverb[c]=(8&b)>>3);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:case 95:case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:c=a-80,254&d&&(volumeAtt[c]=254&b,updateSettingsAttenuation(c));break;case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111: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:c=a-104,192&d&&setKeyOnAndDamp(c,128&b,64&b),32&d&&setLFOReset(c,32&b),15&d&&(panpotAttL[c]=panpotValues[0][15&b],panpotAttR[c]=panpotValues[1][15&b],updateSettingsAttenuation(c));break;case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 140:case 141:case 142:case 143:case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:c=a-128,56&d&&(lfoStepDur[c]=lfoStepClocks[(56&b)>>3]),7&d&&(vibDepth[c]=7&b,updateVIBOffset(c,lfoStep[c]));break;case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:c=a-152,240&d&&(ar[c]=b>=240?63:(240&b)>>2),15&d&&(d1r[c]=15==(15&b)?63:(15&b)<<2);break;case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:c=a-176,240&d&&(dl[c]=(b>=240?31:b>>4)<<4),15&d&&(d2r[c]=15==(15&b)?63:(15&b)<<2);break;case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: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:case 223:c=a-200,240&d&&(rc[c]=b>>4, -updateRateCorrOffset(c)),15&d&&(rr[c]=15==(15&b)?63:(15&b)<<2);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:case 239:case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:c=a-224,7&d&&(amDepth[c]=7&b,updateAMAttenuation(c,lfoStep[c]));break;case 249:if(63&d)for(mixerAttL=7==(7&b)?512:(7&b)<<4,mixerAttR=56==(56&b)?512:(56&b)<<1,c=23;c>=0;--c)updateSettingsAttenuation(c)}}function registerRead(a){var b;switch(a){case 6:b=opl4.memoryRead(memoryAddress),++memoryAddress>=4194304&&(memoryAddress=0);break;default:b=register[a]}return b}function readWaveHeader(a,b){var c=register[2]>>2&7,d=b<384||0===c?12*b:(c<<19)+12*(b-384),e=opl4.memoryRead(d++);dataBits[a]=e>>6,startAddress[a]=(63&e)<<16|opl4.memoryRead(d++)<<8|opl4.memoryRead(d++),loopPosition[a]=opl4.memoryRead(d++)<<8|opl4.memoryRead(d++),endPosition[a]=65535&~(opl4.memoryRead(d++)<<8|opl4.memoryRead(d++)),registerWrite(128+a,opl4.memoryRead(d++)),registerWrite(152+a,opl4.memoryRead(d++)),registerWrite(176+a,opl4.memoryRead(d++)),registerWrite(200+a,opl4.memoryRead(d++)),registerWrite(224+a,opl4.memoryRead(d++)),envStep[a]!==IDLE&&startSample(a)}function clockLFO(a){return clock!==lfoStepChangeClock[a]?-1:(lfoStepChangeClock[a]+=lfoStepDur[a],lfoStep[a]=lfoStep[a]+1&127)}function updateVIBOffset(a,b){var c=vibStepOffsets[vibDepth[a]<<7|b];vibOffset[a]!==c&&(vibOffset[a]=c,updateFrequency(a))}function updateAMAttenuation(a,b){var c=amStepOffsets[amDepth[a]<<7|b];amAtt[a]!==c&&(amAtt[a]=c,updateDynamicLevel(a))}function clockEnvelope(a){if(clock===envStepLevelChangeClock[a]){var b=envStepLevelPattCounter[a]=envStepLevelPattCounter[a]+1&7;if(envStep[a]===ATTACK){var c=rateAttackPatterns[envStepRate[a]<<3|b];if(c>=0){if(envAtt[a]-=1+(envAtt[a]>>c),envAtt[a]<=0)return setEnvStep(a,DECAY1);updateDynamicLevel(a)}}else if((c=rateDecayPatterns[envStepRate[a]<<3|b])>=0){if(envAtt[a]+=c,envAtt[a]>=envStepNextAtLevel[a])return setEnvStep(a,envStepNext[a]);updateDynamicLevel(a)}envStepLevelChangeClock[a]+=envStepLevelDur[a]}}function setKeyOnAndDamp(a,b,c){c?envStep[a]!==IDLE&&envStep[a]!==DAMP&&setEnvStep(a,DAMP):b?(startSample(a),setEnvStep(a,ATTACK)):envStep[a]!==IDLE&&envStep[a]!==REVERB&&envStep[a]!==DAMP&&setEnvStep(a,RELEASE)}function setLFOReset(a,b){b?(lfoStep[a]=0,lfoStepChangeClock[a]=0,0!==vibOffset[a]&&(vibOffset[a]=0,updateFrequency(a)),0!==amAtt[a]&&(amAtt[a]=0,updateDynamicLevel(a))):lfoStepChangeClock[a]=clock+lfoStepDur[a]}function startSample(a){samplePos[a]=0,phaseCounter[a]=0,sampleValue[a]=readSample(a,0),sampleValue2[a]=readSample(a,advancedSamplePos(a,0,1))}function advanceSample(a,b){var c=advancedSamplePos(a,samplePos[a],b);samplePos[a]=c,sampleValue[a]=readSample(a,c),sampleValue2[a]=readSample(a,advancedSamplePos(a,c,1))}function advancedSamplePos(a,b,c){var d=b+c;return d>endPosition[a]?loopPosition[a]+(d-endPosition[a])-1:d}function readSample(a,b){var c,d,e=startAddress[a],f=dataBits[a];return 1===f?(c=e+3*(b>>1),d=1&b?opl4.memoryRead(c+2)<<4|15&opl4.memoryRead(c+1):opl4.memoryRead(c)<<4|opl4.memoryRead(c+1)>>4,d=d<<4|(2047&d)>>7):2===f?(c=e+(b<<1),d=opl4.memoryRead(c)<<8|opl4.memoryRead(c+1)):0===f?(c=e+b,d=opl4.memoryRead(c),d=d<<8|(127&d)<<1):d=0,32768&d?d-65536:d}function setEnvStep(a,b){var c,d;switch(b){case ATTACK:d=0===ar[a]?0:ar[a]+rcOffset[a];break;case DECAY1:if(envAtt[a]=0,0===(c=dl[a]))return setEnvStep(a,DECAY2);d=0===d1r[a]?0:d1r[a]+rcOffset[a],reverb[a]&&c>=REVERB_ENV_LEVEL?(envStepNextAtLevel[a]=REVERB_ENV_LEVEL,envStepNext[a]=REVERB):(envStepNextAtLevel[a]=c,envStepNext[a]=DECAY2);break;case DECAY2:d=0===d2r[a]?0:d2r[a]+rcOffset[a],reverb[a]&&envAtt[a]=52?1:1<<13-(d>>2),envStepLevelChangeClock[a]=clock+envStepLevelDur[a],envStepLevelPattCounter[a]=0,updateDynamicLevel(a)}function updateFrequency(a){phaseInc[a]=(1024+fNum[a]<<8)+256*vibOffset[a]>>8-octave[a]+1,updateRateCorrOffset(a)}function updateRateCorrOffset(a){if(15===rc[a])return rcOffset[a]=0;var b=(rc[a]+octave[a]<<1)+(fNum[a]>>9);rcOffset[a]=b>=0?b:0}function updateSettingsAttenuation(a){settingsAttL[a]=volumeAtt[a]+panpotAttL[a]+mixerAttL,settingsAttR[a]=volumeAtt[a]+panpotAttR[a]+mixerAttR,updateDynamicLevel(a)}function updateDynamicLevel(a){var b=amAtt[a]+envAtt[a];dynamicLevelL[a]=volumeTable[b+settingsAttL[a]],dynamicLevelR[a]=volumeTable[b+settingsAttR[a]]}var self=this;this.connect=function(a){a.bus.connectOutputDevice(126,this.output7E),a.bus.connectInputDevice(127,this.input7F),a.bus.connectOutputDevice(127,this.output7F)},this.disconnect=function(a){a.bus.disconnectOutputDevice(126,this.output7E),a.bus.disconnectInputDevice(127,this.input7F),a.bus.disconnectOutputDevice(127,this.output7F)},this.reset=function(){clock=0,memoryAddress=0,registerAddress=0,wmsx.Util.arrayFill(register,0),register[2]=34,register[248]=27,register[0]=register[1]=register[7]=register[250]=register[251]=register[252]=register[253]=register[254]=register[255]=255,wmsx.Util.arrayFill(dataBits,0),wmsx.Util.arrayFill(startAddress,0),wmsx.Util.arrayFill(loopPosition,0),wmsx.Util.arrayFill(endPosition,0),wmsx.Util.arrayFill(phaseInc,512),wmsx.Util.arrayFill(fNum,0),wmsx.Util.arrayFill(octave,0),wmsx.Util.arrayFill(reverb,0),wmsx.Util.arrayFill(ar,0),wmsx.Util.arrayFill(d1r,0),wmsx.Util.arrayFill(dl,0),wmsx.Util.arrayFill(d2r,0),wmsx.Util.arrayFill(rr,0),wmsx.Util.arrayFill(rc,0),wmsx.Util.arrayFill(rcOffset,0),wmsx.Util.arrayFill(lfoStepDur,0),wmsx.Util.arrayFill(vibDepth,0),wmsx.Util.arrayFill(amDepth,0),wmsx.Util.arrayFill(volumeAtt,0),wmsx.Util.arrayFill(panpotAttL,0),wmsx.Util.arrayFill(panpotAttR,0),mixerAttL=0,mixerAttR=0,wmsx.Util.arrayFill(samplePos,0),wmsx.Util.arrayFill(sampleValue,0),wmsx.Util.arrayFill(sampleValue2,0),wmsx.Util.arrayFill(phaseCounter,0),wmsx.Util.arrayFill(envStep,IDLE),wmsx.Util.arrayFill(envStepNext,IDLE),wmsx.Util.arrayFill(envStepNextAtLevel,0),wmsx.Util.arrayFill(envStepRate,0),wmsx.Util.arrayFill(envStepLevelDur,0),wmsx.Util.arrayFill(envStepLevelChangeClock,0),wmsx.Util.arrayFill(envStepLevelPattCounter,0),wmsx.Util.arrayFill(envAtt,512),wmsx.Util.arrayFill(lfoStep,0),wmsx.Util.arrayFill(lfoStepChangeClock,0),wmsx.Util.arrayFill(vibOffset,0),wmsx.Util.arrayFill(amAtt,0),wmsx.Util.arrayFill(settingsAttL,0),wmsx.Util.arrayFill(settingsAttR,0),wmsx.Util.arrayFill(dynamicLevelL,0),wmsx.Util.arrayFill(dynamicLevelR,0)},this.output7E=function(a){registerAddress=a},this.input7F=function(){return registerRead(registerAddress)},this.output7F=function(a){registerWrite(registerAddress,a)},this.nextSample=function(){var a,b,c,d,e,f=0,g=0,h=0;for(++clock,e=23;e>=0;--e)a=clockLFO(e),a>=0&&(vibDepth[e]&&updateVIBOffset(e,a),amDepth[e]&&updateAMAttenuation(e,a)),envStep[e]!==IDLE&&(clockEnvelope(e),b=phaseCounter[e],c=phaseCounter[e]=b+phaseInc[e]&2147483647,d=(c>>10)-(b>>10),d>0&&advanceSample(e,d),f=sampleValue[e]*(1024-(1023&c))+sampleValue2[e]*(1023&c)>>10,g+=f*dynamicLevelL[e],h+=f*dynamicLevelR[e]);return sampleResult[0]=g,sampleResult[1]=h,sampleResult} -;var memoryAddress,registerAddress,register=new Array(255),clock,dataBits=new Array(24),startAddress=new Array(24),loopPosition=new Array(24),endPosition=new Array(24),samplePos=new Array(24),sampleValue=new Array(24),sampleValue2=new Array(24),phaseInc=new Array(24),phaseCounter=new Array(24),fNum=new Array(24),octave=new Array(24),reverb=new Array(24),ar=new Array(24),d1r=new Array(24),dl=new Array(24),d2r=new Array(24),rc=new Array(24),rr=new Array(24),rcOffset=new Array(24),lfoStepDur=new Array(24),vibDepth=new Array(24),amDepth=new Array(24),volumeAtt=new Array(24),panpotAttL=new Array(24),panpotAttR=new Array(24),mixerAttL=0,mixerAttR=0,settingsAttL=new Array(24),settingsAttR=new Array(24),envStep=new Array(24),envStepNext=new Array(24),envStepNextAtLevel=new Array(24),envStepRate=new Array(24),envStepLevelDur=new Array(24),envStepLevelChangeClock=new Array(24),envStepLevelPattCounter=new Array(24),envAtt=new Array(24),lfoStep=new Array(24),lfoStepChangeClock=new Array(24),vibOffset=new Array(24),amAtt=new Array(24),dynamicLevelL=new Array(24),dynamicLevelR=new Array(24),IDLE=255,ATTACK=1,DECAY1=2,DECAY2=3,RELEASE=4,REVERB=5,DAMP=6,REVERB_ENV_LEVEL=96,REVERB_RATE=20,DAMP_RATE=60,regWriteMasks,rateAttackPatterns,rateDecayPatterns,lfoStepClocks,vibStepOffsets,amStepOffsets,panpotValues,volumeTable,sampleResult=[0,0];this.saveState=function(){return{c:clock,ra:registerAddress,ma:memoryAddress,r:wmsx.Util.storeInt8BitArrayToStringBase64(register),db:wmsx.Util.storeInt8BitArrayToStringBase64(dataBits),sa:wmsx.Util.storeInt32BitArrayToStringBase64(startAddress),lp:wmsx.Util.storeInt16BitArrayToStringBase64(loopPosition),ep:wmsx.Util.storeInt16BitArrayToStringBase64(endPosition),sp:wmsx.Util.storeInt16BitArrayToStringBase64(samplePos),sv:wmsx.Util.storeInt16BitArrayToStringBase64(sampleValue),pc:wmsx.Util.storeInt32BitArrayToStringBase64(phaseCounter),evs:wmsx.Util.storeInt8BitArrayToStringBase64(envStep),evr:wmsx.Util.storeInt8BitArrayToStringBase64(envStepRate),evd:wmsx.Util.storeInt32BitArrayToStringBase64(envStepLevelDur),evc:envStepLevelChangeClock,evn:wmsx.Util.storeInt8BitArrayToStringBase64(envStepNext),evl:wmsx.Util.storeInt16BitArrayToStringBase64(envStepNextAtLevel),epc:wmsx.Util.storeInt8BitArrayToStringBase64(envStepLevelPattCounter),eva:wmsx.Util.storeInt16BitArrayToStringBase64(envAtt),lfs:wmsx.Util.storeInt8BitArrayToStringBase64(lfoStep),lfc:lfoStepChangeClock,vio:wmsx.Util.storeInt8BitArrayToStringBase64(vibOffset),ama:wmsx.Util.storeInt8BitArrayToStringBase64(amAtt),saL:wmsx.Util.storeInt16BitArrayToStringBase64(settingsAttL),saR:wmsx.Util.storeInt16BitArrayToStringBase64(settingsAttR),dlvL:dynamicLevelL,dlvR:dynamicLevelR}},this.loadState=function(a){this.reset(),registerAddress=a.ra;for(var b=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r),c=2;c<6;c++)registerWrite(c,b[c]);for(c=8;c<32;c++)register[c]=b[c];for(c=32;c<250;c++)registerWrite(c,b[c]);memoryAddress=a.ma,clock=a.c,dataBits=wmsx.Util.restoreStringBase64ToInt8BitArray(a.db,dataBits),startAddress=wmsx.Util.restoreStringBase64ToInt32BitArray(a.sa,startAddress),loopPosition=wmsx.Util.restoreStringBase64ToInt16BitArray(a.lp,loopPosition),endPosition=wmsx.Util.restoreStringBase64ToInt16BitArray(a.ep,endPosition),phaseCounter=wmsx.Util.restoreStringBase64ToInt32BitArray(a.pc,phaseCounter),samplePos=wmsx.Util.restoreStringBase64ToInt16BitArray(a.sp,samplePos),sampleValue=wmsx.Util.restoreStringBase64ToSignedInt16BitArray(a.sv,sampleValue),envStep=wmsx.Util.restoreStringBase64ToInt8BitArray(a.evs,envStep),envStepRate=wmsx.Util.restoreStringBase64ToInt8BitArray(a.evr,envStepRate),envStepLevelDur=wmsx.Util.restoreStringBase64ToInt32BitArray(a.evd,envStepLevelDur),envStepLevelChangeClock=a.evc,envStepNext=wmsx.Util.restoreStringBase64ToInt8BitArray(a.evn,envStepNext),envStepNextAtLevel=wmsx.Util.restoreStringBase64ToInt16BitArray(a.evl,envStepNextAtLevel),envStepLevelPattCounter=wmsx.Util.restoreStringBase64ToInt16BitArray(a.epc,envStepLevelPattCounter),envAtt=wmsx.Util.restoreStringBase64ToInt16BitArray(a.eva,envAtt),lfoStep=wmsx.Util.restoreStringBase64ToInt8BitArray(a.lfs,lfoStep),lfoStepChangeClock=a.lfc,vibOffset=wmsx.Util.restoreStringBase64ToSignedInt8BitArray(a.vio,vibOffset),amAtt=wmsx.Util.restoreStringBase64ToInt8BitArray(a.ama,amAtt),settingsAttL=wmsx.Util.restoreStringBase64ToInt16BitArray(a.saL,settingsAttL),settingsAttR=wmsx.Util.restoreStringBase64ToInt16BitArray(a.saR,settingsAttR),dynamicLevelL=a.dlvL,dynamicLevelR=a.dlvR},init(),this.eval=function(str){return eval(str)}},wmsx.RTC=function(){"use strict";function a(a){i!==a&&(a?(c(),i=!0):(i=!1,b()))}function b(){h||(h=new Date(Math.floor(g))),k[0]=h.getUTCSeconds()%10,k[1]=h.getUTCSeconds()/10|0,k[2]=h.getUTCMinutes()%10,k[3]=h.getUTCMinutes()/10|0,l[10]?(k[4]=h.getUTCHours()%10,k[5]=h.getUTCHours()/10|0):(k[4]=h.getUTCHours()%12%10,k[5]=h.getUTCHours()%12/10|0,h.getUTCHours()>=12&&(k[5]|=2)),k[6]=h.getUTCDay()+1,k[7]=h.getUTCDate()%10,k[8]=h.getUTCDate()/10|0,k[9]=(h.getUTCMonth()+1)%10,k[10]=(h.getUTCMonth()+1)/10|0,k[11]=(h.getUTCFullYear()-1980)%10,k[12]=(h.getUTCFullYear()-1980)/10|0}function c(){h||(h=new Date),h.setUTCSeconds(k[0]+10*k[1]),h.setUTCMinutes(k[2]+10*k[3]),1&l[10]?h.setUTCHours(k[4]+10*k[5]):h.setUTCHours(k[4]+(2&k[5]?12:0)+(1&k[5]?10:0)),h.setUTCDate(k[7]+10*k[8]),h.setUTCMonth(k[9]+10*k[10]-1),h.setUTCFullYear(k[11]+10*k[12]+1980),g=h.getTime()}function d(a){if(a&=1,(1&l[10])!==a){var b;a?(b=k[4]+(2&k[5]?12:0)+(1&k[5]?10:0),k[5]=b/10|0,k[4]=b%10):(b=k[4]+10*k[5],k[5]=(b>=12?2:0)|(b%12>=10?1:0),k[4]=b%12%10)}}this.setMachineType=function(a){e=WMSX.RTC_ACTIVE>=0?!!WMSX.RTC_ACTIVE:a>=2,e&&wmsx.Util.arrayFill(m[0],0),wmsx.Util.arrayFill(m[1],0)},this.connectBus=function(a){a.connectInputDevice(180,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(180,this.outputB4),a.connectInputDevice(181,this.inputB5),a.connectOutputDevice(181,this.outputB5)},this.powerOn=function(){this.reset()},this.powerOff=function(){},this.reset=function(){f=0,a(!0)},this.videoClockPulse=function(){g+=j,h&&(h=void 0)},this.setFps=function(a){j=1e3/a},this.outputB4=function(a){e&&(n=15&a)},this.outputB5=function(b){if(e)if(b&=15,n<13)switch(f){case 0:k[n]=b&o[n];break;case 1:10===n&&d(b),l[n]=b&p[n];break;case 2:case 3:m[1&f][n]=b}else switch(n){case 13:f=3&b,a(0!=(8&b))}},this.inputB5=function(){if(!e)return 255;var a;if(n<13)switch(f){case 0:i&&b(),a=k[n];break;case 1:a=l[n];break;case 2:case 3:a=m[1&f][n]}else switch(n){case 13:a=(i?8:0)|f;break;case 14:case 15:a=15}return a};var e,f=0,g=Date.now()-60*(new Date).getTimezoneOffset()*1e3,h=void 0,i=!0,j=1e3/60,k=wmsx.Util.arrayFill(new Array(13),0),l=wmsx.Util.arrayFill(new Array(13),0),m=[new Array(13),new Array(13)],n=0,o=[15,7,15,7,15,3,7,15,3,15,1,15,15],p=[0,0,15,7,15,3,7,15,3,0,1,3,0];this.saveState=function(){return{a:e,m:f,i:g,c:i,rc:wmsx.Util.storeInt8BitArrayToStringBase64(k),rm:wmsx.Util.storeInt8BitArrayToStringBase64(l),r0:wmsx.Util.storeInt8BitArrayToStringBase64(m[0]),r1:wmsx.Util.storeInt8BitArrayToStringBase64(m[1]),ra:n}},this.loadState=function(a){e=void 0!==a.a?a.a:a.m2,f=a.m,i=a.c,g=a.i?a.i:a.co+a.t,h=void 0,k=wmsx.Util.restoreStringBase64ToInt8BitArray(a.rc,k),l=wmsx.Util.restoreStringBase64ToInt8BitArray(a.rm,l),m[0]=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r0,m[0]),m[1]=wmsx.Util.restoreStringBase64ToInt8BitArray(a.r1,m[1]),n=a.ra}},wmsx.SystemFlags=function(){"use strict";this.setMachineType=function(b){a=b>=3},this.connectBus=function(a){a.connectInputDevice(243,this.inputF3),a.connectOutputDevice(243,this.outputF3),a.connectInputDevice(244,this.inputF4),a.connectOutputDevice(244,this.outputF4),a.connectInputDevice(245,wmsx.DeviceMissing.outputPortIgnored),a.connectOutputDevice(245,wmsx.DeviceMissing.outputPortIgnored),a.connectInputDevice(246,wmsx.DeviceMissing.inputPortIgnored), -a.connectOutputDevice(246,wmsx.DeviceMissing.outputPortIgnored),a.connectInputDevice(247,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(247,wmsx.DeviceMissing.outputPortIgnored),a.connectInputDevice(248,wmsx.DeviceMissing.inputPortIgnored),a.connectOutputDevice(248,wmsx.DeviceMissing.outputPortIgnored)},this.powerOn=function(){this.reset()},this.powerOff=function(){},this.reset=function(){b=d,c=e},this.inputF3=function(){return a?c:255},this.outputF3=function(b){a&&(c=b)},this.inputF4=function(){return a?b:255},this.outputF4=function(c){a&&(b=c)};var a,b,c,d=255,e=0;this.saveState=function(){return{a:a,bf:b,vf:c}},this.loadState=function(d){a=void 0!==d.a?d.a:d.m2p,b=d.bf,c=d.vf}},wmsx.ImageCassetteDriver=function(){"use strict";function a(a){return l.motor(!0),l.readHeader()?h(a,o):i(a)}function b(a){var b=l.readByte();if(null===b)return i(a);var c=h(a,p);return c.A=b,c}function c(){l.motor(!1)}function d(a,b){return l.motor(!0),l.writeHeader(a)?h(b,a?m:n):i(b)}function e(a,b){return l.writeByte(a)?h(b,p):i(b)}function f(){l.finishWriting(),l.motor(!1)}function g(a){l.motor(255===a?null:a>0)}function h(a,b){return{F:254&a,extraIterations:b}}function i(a){return{F:a|=1}}var j=this;this.connect=function(a,b){b.getCassetteSocket().connectDriver(this),l=b.getCassetteSocket().getDeck(),k=a.getKeyboardExtension()},this.disconnect=function(a,b){b.getCassetteSocket().connectDriver(null)},this.powerOff=function(){l&&l.motor(!1)},this.typeCurrentAutoRunCommand=function(){var a=j.currentAutoRunCommand();a&&k.typeString(a)},this.currentAutoRunCommand=function(){var a=l.peekFileInfoAtCurrentPosition();if(!a)return null;switch(a.type){case"Binary":return'\r\r\rbload "cas:'+a.name+'", r\r';case"Basic":return'\r\r\rcload "'+a.name+'"\rrun\r';case"ASCII":return'\r\r\rrun "cas:'+a.name+'"\r'}return null},this.cpuExtensionBegin=function(h){switch(h.extNum){case 224:return a(h.F);case 225:return b(h.F);case 226:return c();case 227:return d(h.A,h.F);case 228:return e(h.A,h.F);case 229:return f();case 230:return g(h.A)}},this.cpuExtensionFinish=function(a){},this.patchBIOS=function(a){a[225]=237,a[226]=224,a[227]=201,a[228]=237,a[229]=225,a[230]=201,a[231]=237,a[232]=226,a[233]=201,a[234]=237,a[235]=227,a[236]=201,a[237]=237,a[238]=228,a[239]=201,a[240]=237,a[241]=229,a[242]=201,a[243]=237,a[244]=230,a[245]=201};var k,l,m=3e5,n=m/3,o=.4*n,p=10},wmsx.TurboDriver=function(){"use strict";function a(){var a=f.bytes;237!==a[400]&&(a[384]=195,a[385]=141,a[386]=1,a[387]=195,a[388]=144,a[389]=1,a[397]=237,a[398]=232,a[399]=201,a[400]=237,a[401]=233,a[402]=201)}function b(){var a=f.bytes;237===a[400]&&(a[384]=a[387]=a[397]=a[400]=201)}function c(a){i=131&a;var b=(3&i)>0;j!==b&&(j=b,0===h.getCPUTurboMode()?(e.turboModesUpdate(),h.showCPUTurboModeMessage()):h.showOSD("Could not set CPU Turbo by software: mode is FORCED "+h.getCPUTurboModeDesc(),!0,!0))}function d(){return{A:i}}var e=this;this.connect=function(a,b){f=a,g=b.getBIOSSocket(),h=b,this.turboModesUpdate()},this.reset=function(){i=0,j&&(j=!1,this.turboModesUpdate())},this.turboModesUpdate=function(){var c=h.machineType>=2,d=h.getCPUTurboMode(),e=h.getVDPTurboMode();d<0||!c?b():a(),h.cpu.setCPUTurboMulti(0===d&&c&&j?WMSX.CPU_SOFT_TURBO_MULTI:d<=0?1:d),h.vdp.setVDPTurboMulti(0===e&&c&&j?WMSX.VDP_SOFT_TURBO_MULTI:e>1?e:1),g.fireMachineTurboModesStateUpdate()},this.cpuExtensionBegin=function(a){if(!(h.machineType<=1))switch(a.extNum){case 232:return c(a.A);case 233:return d()}},this.cpuExtensionFinish=function(a){},this.saveState=function(){return{st:j,cv:i}},this.loadState=function(a){j=!!a&&a.st,i=a?a.cv:0};var f,g,h,i=0,j=!1},wmsx.BIOSKeyboardExtension=function(){"use strict";this.connect=function(b){a=b.bus},this.typeString=function(a){if(void 0!==a&&null!==a){var c=a.toString();c&&(c=c.replace(/\r\n/g,"\r").replace(/\n/g,"\r"),b=(b||"")+c)}},this.cancelTypeString=function(){b=null,c=0},this.keyboardExtensionClockPulse=function(){if(b){var h=a.read(e)|a.read(e+1)<<8;if(!(hg)){var i=a.read(d)|a.read(d+1)<<8;if(!(ig)){var j=h-i-1;if(j<0&&(j+=40),!(j<=0)){for(var k=b.substr(c,j),l=0;lg&&(i=f);a.write(d,255&i),a.write(d+1,i>>8),c+=k.length,c>=b.length&&this.cancelTypeString()}}}}},this.saveState=function(){return{s:b&&btoa(b),p:c}},this.loadState=function(a){b=a.s&&atob(a.s),c=a.p};var a,b,c=0,d=62456,e=62458,f=64496,g=64535},wmsx.ImageDiskDriver=function(){"use strict";function a(a,b){return{HL:65280&b|(64&a?1:2)}}function b(a,b,e,f,g,h){return 1&a?d(a,b,e,f,g,h):c(a,b,e,f,g,h)}function c(a,b,c,d,e,f){var g=o.motorOn(b);return o.readSectorsToSlot(b,e,c,k(f),f)?{F:-2&a,B:0,extraIterations:g+c*u}:{F:1|a,A:2,B:c,extraIterations:g}}function d(a,b,c,d,e,f){var g=o.motorOn(b);return o.isDiskInserted(b)&&o.writeSectorsFromSlot(b,e,c,k(f),f)?{F:-2&a,B:0,extraIterations:g+c*u}:{F:1|a,A:2,B:c,extraIterations:g}}function e(a,b,c,d,e){var g=o.diskHasChanged(b);if(!1===g)return{F:-2&a,B:1};var h=o.motorOn(b),i=o.readByte(b,r);return null===i?{F:1|a,A:2,B:0,extraIterations:h}:(f(b,i,d,e),{F:-2&a,B:!0===g?255:0,extraIterations:h})}function f(a,b,c,d){var e=0===b?c:b;if(!(e<248)){j(o.MEDIA_TYPE_DPB[e],d+1)}}function g(){return{HL:t}}function h(a,b,c){var d=c>>>8,e=b-1;if(e<0||e>1||d<0||d>1)return{F:1|a,A:12};var f=o.FORMAT_OPTIONS_MEDIA_TYPES[e];return o.insertNewDisk(d,f,!1,!0),o.motorOn(d),o.formatCurrentDisk(d,f),{F:-2&a,extraIterations:v}}function i(){o.allMotorsOffNow()}function j(a,b){for(var c=k(b),d=0;d=16384&&a<=32767){var c=p.read(62274);b=p.getSlot(3&c),0!=(128&c)&&b.isExpanded()&&(b=b.getSubSlot(c>>2&3))}else b=p.getSlotForAddress(a),b.isExpanded()&&(b=b.getSubSlotForAddress(a));return b}function l(a,b,c){delete q[b];var d=p.read(c+26),e=3&d,f=e<=1;return f&&(o.motorFlash(e),!o.isDiskInserted(e))?{F:1|a,A:26}:(p.write(c+0,f?1:0),p.write(c+1,130),p.write(c+12+0,0),p.write(c+12+1,0),p.write(c+12+2,0),p.write(c+12+3,0),p.write(c+28,9),p.write(c+29,0),p.write(c+30,2),q[b]=e,{F:-2&a})}function m(a,b,c,d,e,f){var g=q[b];return g>=0&&o.motorFlash(g),void 0!==g&&o.isDiskInserted(g)?o.readSectorsToSlot(g,(f<<16)+e,c,p,d)?{F:-2&a}:{F:1|a,A:6}:{F:1|a,A:26}}function n(a,b,c,d,e,f){var g=q[b];return g>=0&&o.motorFlash(g),void 0!==g&&o.isDiskInserted(g)?o.writeSectorsFromSlot(g,(f<<16)+e,c,p,d)?{F:-2&a}:{F:1|a,A:6}:{F:1|a,A:26}}this.connect=function(a,b){o=b.getDiskDriveSocket().getDrive(),p=b.bus,p.setCpuExtensionHandler(243,this),p.setCpuExtensionHandler(244,this),p.setCpuExtensionHandler(245,this)},this.disconnect=function(a,b){o.allMotorsOff(),p.setCpuExtensionHandler(243,void 0),p.setCpuExtensionHandler(244,void 0),p.setCpuExtensionHandler(245,void 0)},this.powerOff=function(){o.allMotorsOff()},this.cpuExtensionBegin=function(c){switch(c.extNum){case 232:return;case 233:return a(c.F,c.HL);case 234:return b(c.F,c.A,c.B,c.C,c.DE,c.HL);case 235:return e(c.F,c.A,c.B,c.C,c.HL);case 236:return f(c.A,c.B,c.C,c.HL);case 237:return g();case 238:return h(c.F,c.A,c.DE);case 239:return i();case 243:return m(c.F,c.C,c.B,c.HL,c.IX,c.IY);case 244:return n(c.F,c.C,c.B,c.HL,c.IX,c.IY);case 245:return l(c.F,c.C,c.HL)}},this.cpuExtensionFinish=function(a){o.allMotorsOff()},this.patchDiskBIOS=function(a,b){a[b+5999]=237,a[b+6e3]=232,a[b+6001]=0,a[b+6224]=237,a[b+6225]=233,a[b+6226]=0,a[b+16]=237,a[b+17]=234,a[b+18]=201,a[b+19]=237,a[b+20]=235,a[b+21]=201,a[b+22]=237,a[b+23]=236,a[b+24]=201,a[b+25]=237,a[b+26]=237,a[b+27]=201,a[b+28]=237,a[b+29]=238,a[b+30]=201,a[b+31]=237,a[b+32]=239,a[b+33]=201,wmsx.Util.arrayFill(a,255,b+16384);for(var c=0;c>8&255,d>>16&255,d>>24&255,1,0,0,0,0],f=0;f<12;++f)m.write(c+f,e[f]);return{A:0}}function i(a,b,c){delete n[b];var d=m.read(c+26),e=d>>4,f=15&d,g=0===e,h=0;if(g){if(l.motorFlash(2),!l.isDiskInserted(2))return{F:1|a,A:26};var i=l.readByte(2,510)<<8|l.readByte(2,511);if(null===i)return{F:1|a,A:26};var j=21930===i;if(f>0){if(!j)return{F:1|a,A:4};var k=446+16*(f-1),o=l.readByte(2,k+4);if(h=l.readDWord(2,k+8),null===o||null===h)return{F:1|a,A:26};if(!h||!o)return{F:1|a,A:4}}else if(j)return{F:1|a,A:4}}return m.write(c+0,g?1:0),m.write(c+1,145),m.write(c+12+0,255&h),m.write(c+12+1,h>>8&255),m.write(c+12+2,h>>16&255),m.write(c+12+3,h>>24&255),m.write(c+31,0),n[b]=h,{F:-2&a}}function j(a,b,c,d,e,f){var g=n[b];return g>=0&&l.motorFlash(2),void 0!==g&&l.isDiskInserted(2)?l.readSectorsToSlot(2,g+(f<<16)+e,c,m,d)?{F:-2&a}:{F:1|a,A:9}:{F:1|a,A:26}}function k(a,b,c,d,e,f){var g=n[b];return g>=0&&l.motorFlash(2),void 0!==g&&l.isDiskInserted(2)?l.writeSectorsFromSlot(2,g+(f<<16)+e,c,m,d)?{F:-2&a}:{F:1|a,A:9}:{F:1|a,A:26}}this.connect=function(a,b){l=b.getDiskDriveSocket().getDrive(),m=b.bus,m.setCpuExtensionHandler(240,this),m.setCpuExtensionHandler(241,this),m.setCpuExtensionHandler(242,this)},this.disconnect=function(a,b){b.bus.setCpuExtensionHandler(240,void 0),b.bus.setCpuExtensionHandler(241,void 0),b.bus.setCpuExtensionHandler(242,void 0)},this.powerOff=function(){},this.cpuExtensionBegin=function(d){switch(d.extNum){case 224:return a();case 225:return b(d.A,d.B,d.HL);case 232:return c(d.F,d.A,d.B,d.C,d.DE,d.HL);case 233:return f(d.A,d.B,d.HL);case 234:return g(d.A,d.B);case 235:return h(d.A,d.B,d.HL);case 240:return j(d.F,d.C,d.B,d.HL,d.IX,d.IY);case 241:return k(d.F,d.C,d.B,d.HL,d.IX,d.IY);case 242:return i(d.F,d.C,d.HL)}},this.cpuExtensionFinish=function(a){},this.patchNextorKernel=function(a){a[114958]=1;for(var b="WebMSX Nextor Device Driver ",c=0;c<32;++c)a[114960+c]=b.charCodeAt(c);for(a[114992]=201,a[114993]=201,a[114994]=201,a[114995]=237,a[114996]=224,a[114997]=201,a[114998]=237,a[114999]=225,a[115e3]=201,a[115001]=55,a[115002]=201,a[115003]=201,a[115004]=55,a[115005]=201,a[115006]=201,a[115007]=201,a[115008]=201,a[115009]=201,c=115010;c<115026;++c)a[c]=201;a[115040]=237,a[115041]=232,a[115042]=201,a[115043]=237,a[115044]=233,a[115045]=201,a[115046]=237,a[115047]=234,a[115048]=201,a[115049]=237,a[115050]=235,a[115051]=201},this.saveState=function(){return{so:n}},this.loadState=function(a){n=void 0!==(a&&a.so)?a.so:{}};var l,m,n={},o=252,p=181},wmsx.ROM=function(a,b,c,d){"use strict";this.source=wmsx.Util.leafFilename(a),this.content=b,this.info=c||wmsx.SlotCreator.produceInfo(this,d),this.saveState=function(){return{s:this.source,i:this.info}},this.reloadEmbeddedContent=function(){if(!this.content&&wmsx.EmbeddedFiles.isEmbeddedURL(this.source)){var a=wmsx.EmbeddedFiles.get(this.source);this.content=a&&a.content}}},wmsx.ROM.loadState=function(a){return new wmsx.ROM(a.s,null,a.i)},wmsx.ROMDatabase={uncompress:function(){wmsx.ROMDatabase=JSON.parse(wmsx.Util.uncompressStringBase64ToString(this.data))}, -data:"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" -},wmsx.SlotCreator=function(){"use strict";function a(a,b){var c,d=[];for(var e in wmsx.SlotFormats)c=wmsx.SlotFormats[e],c.prioritySelected=c.priorityForRom(a,b),c.prioritySelected&&(f(c,a.info),c.prioritySelected>=j||d.push(c));return d.sort(function(a,b){return a.prioritySelected-b.prioritySelected}),d}function b(a){var b={};return a.n&&(b.n=a.n),a.h&&(b.h=a.h),a.f&&(b.f=a.f),a.t&&(b.t=a.t),a.l&&(b.l=a.l),a.e&&(b.e=a.e),b}this.createFromROM=function(a,b){var d=c.getForROM(a);if(d){var e=wmsx.SlotFormats[d];if(e.priorityForRom(a))return wmsx.Util.log("USER Format selected: "+e.desc),e.createFromROM(a)}var f=this.getBestFormatOption(a,b);if(f){return wmsx.EmbeddedFiles.isEmbeddedURL(a.source)||wmsx.Util.log("AUTO Format selected: "+f.desc+", priority: "+f.prioritySelected),f.createFromROM(a)}},this.recreateFromSaveState=function(a,b){var c=wmsx.SlotFormats[a.f];if(!c)throw new Error("Unsupported ROM Format in Savestate: "+a.f);return b&&b.format!==c&&(b=null),c.recreateFromSaveState(a,b)},this.changeCartridgeFormat=function(a,b){return b.createFromROM(a.rom)},this.getBestFormatOption=function(b,c){var d=a(b,c);return 0===d.length?void 0:d[0]},this.getUserFormatOptionNames=function(a){for(var b=[],c=0,d=wmsx.SlotFormatsUserOptions.length;cm?void 0:wmsx.Util.sha1Generator.calcSHA1FromByteArray(a.content).toUpperCase();a.content.length>f&&(a.content.length=f);var h=wmsx.ROMDatabase[g],i=wmsx.EmbeddedFiles.isEmbeddedURL(a.source);return h?(h=b(h),i||wmsx.Util.log("ROM: "+h.n+(h.f?", format: "+h.f:"")+" ("+g+")")):(h=d(a.source),i||wmsx.Util.log("ROM: "+(f>0?"Unknown content":"No content")+", "+h.n+(h.f?", format: "+h.f:"")+(g?" ("+g+")":" (no hash computed)"))),e(h,a.source,g,c),h},this.setUserROMFormats=function(a){c=a};var c,d=function(a){var b={n:"Unknown"};return a?(b.n=wmsx.Util.leafFilenameNoExtension(a)||"Unknown",b):b},e=function(a,b,c,d){if(a.h=c,d){d=d.trim().toUpperCase();for(var e in wmsx.SlotFormats)if(e.toUpperCase()===d){a.f=wmsx.SlotFormats[e].name,a.t=!0;break}}if(!a.t){var f=b.toUpperCase();for(e in wmsx.SlotFormats)if(g(e.toUpperCase(),f)){a.f=wmsx.SlotFormats[e].name,a.t=!0;break}}},f=function(a,b){b.f&&a.name===b.f&&(a.prioritySelected-=b.t?l:k)},g=function(a,b){return b.match(h+a+i)},h="\\[",i="\\]",j=1e3,k=1e3,l=5e3,m=1024*(WMSX.ROM_MAX_HASH_SIZE_KB||3072);this.FORMAT_PRIORITY_BOOST=k},wmsx.SlotCreator=new wmsx.SlotCreator,wmsx.SlotFormats={Empty:{name:"Empty",desc:"Empty Slot",priority:1001,internal:!0,embeddedURL:"@[Empty].rom",priorityForRom:function(a){return a&&a.content&&0!==a.content.length?null:this.priority},createFromROM:function(a){return wmsx.SlotEmpty.singleton},recreateFromSaveState:function(a,b){return wmsx.SlotEmpty.singleton}},Expanded:{name:"Expanded",desc:"Expanded Slot",priority:1002,internal:!0,priorityForRom:function(a){return null},createFromROM:null,recreateFromSaveState:function(a,b){return wmsx.SlotExpanded.recreateFromSaveState(a,b)}},ExpandedS:{name:"ExpandedS",desc:"Special System Expanded Slot",priority:1003,internal:!0,priorityForRom:function(a){return null},createFromROM:null,recreateFromSaveState:function(a,b){return wmsx.SlotExpandedSpecial.recreateFromSaveState(a,b)}},ExpandedM:{name:"ExpandedM",desc:"Special System Expanded Slot for Modules (Device-only Slots)",priority:1004,internal:!0,priorityForRom:function(a){return null},createFromROM:null,recreateFromSaveState:function(a,b){return wmsx.SlotExpandedModules.recreateFromSaveState(a,b)}},BIOS:{name:"BIOS",desc:"Main BIOS",priority:201,internal:!0,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=65536&&243===a.content[0]&&(195===a.content[1]||24===a.content[1])?this.priority:null},createFromROM:function(a){return new wmsx.SlotBIOS(a)},recreateFromSaveState:function(a,b){return wmsx.SlotBIOS.recreateFromSaveState(a,b)}},MSX2BIOSExt:{name:"MSX2BIOSExt",desc:"MSX2/2+ BIOS Extension",priority:202,internal:!0,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=65536&&67===a.content[0]&&68===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.SlotMSX2BIOSExt(a)},recreateFromSaveState:function(a,b){return wmsx.SlotMSX2BIOSExt.recreateFromSaveState(a,b)}},RAMNormal:{name:"RAMNormal",desc:"Normal RAM (unmapped)",priority:1011,internal:!0,embeddedURL:"@[RAMNormal].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.SlotRAMNormal(a)},recreateFromSaveState:function(a,b){return wmsx.SlotRAMNormal.recreateFromSaveState(a,b)}},RAMMapper:{name:"RAMMapper",desc:"Standard RAM Mapper",priority:1012,internal:!0,embeddedURL:"@[RAMMapper].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.SlotRAMMapper(a)},recreateFromSaveState:function(a,b){return wmsx.SlotRAMMapper.recreateFromSaveState(a,b)}},DiskPatch:{name:"DiskPatch",desc:"Generic Patched Disk BIOS",priority:1301,internal:!0,embeddedURL:"@[DiskPatch].rom",priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=65536?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeDiskPatched(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeDiskPatched.recreateFromSaveState(a,b)}},Nextor16Patch:{name:"Nextor16Patch",desc:"Nextor ASCII-16 Patched Kernel",priority:1302,internal:!0,embeddedURL:"@[Nextor16Patch].rom",priorityForRom:function(a){return 131072===a.content.length&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeNextorPatched(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeNextorPatched.recreateFromSaveState(a,b)}},SCCExpansion:{name:"SCCExpansion",desc:"Konami SCC Sound Cartridge",priority:1501,internal:!0,embeddedURL:"@[SCCExpansion].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSCCExpansion(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSCCExpansion.recreateFromSaveState(a,b)}},SCCIExpansion:{name:"SCCIExpansion",desc:"Konami SCC+ Sound Mapper Cartridge",priority:1502,internal:!0,embeddedURL:"@[SCCIExpansion].rom",priorityForRom:function(a){return a.content.length<=131072?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSCCIExpansion(a,this,!1)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSCCIExpansion.recreateFromSaveState(a,b)}},MSXMUSIC:{name:"MSXMUSIC",desc:"MSX-MUSIC Sound Extension",priority:1503,internal:!0,embeddedURL:"@[MSXMUSIC].rom",priorityForRom:function(a){return 16384===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMSXMUSIC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMSXMUSIC.recreateFromSaveState(a,b)}},PACExpansion:{name:"PACExpansion",desc:"PAC SRAM Cartridge",priority:1505,internal:!0,embeddedURL:"@[PACExpansion].rom",priorityForRom:function(a,b){return 0===a.content.length?this.priority:!wmsx.CartridgePAC.isPACFileContentValid(a.content)||b&&b.format!==wmsx.SlotFormats.PACExpansion&&b.format!==wmsx.SlotFormats.FMPAC?null:this.priority-wmsx.SlotCreator.FORMAT_PRIORITY_BOOST},createFromROM:function(a){return new wmsx.CartridgePAC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgePAC.recreateFromSaveState(a,b)}},Kanji1:{name:"Kanji1",desc:"Kanji Font Driver",priority:1506,internal:!0,embeddedURL:"@[Kanji1].rom",priorityForRom:function(a){return 131072===a.content.length||262144===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeKanjiFont(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeKanjiFont.recreateFromSaveState(a,b)}},MoonSound:{ -name:"MoonSound",desc:"MoonSound OPL4 Sound Cartridge",priority:1507,internal:!0,embeddedURL:"@[MoonSound].rom",priorityForRom:function(a){return 2097152===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMoonSound(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMoonSound.recreateFromSaveState(a,b)}},ExtraPSG:{name:"ExtraPSG",desc:"Extra PSG Sound Chip",priority:1508,internal:!0,embeddedURL:"@[ExtraPSG].rom",priorityForRom:function(a){return 0===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeExtraPSG(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeExtraPSG.recreateFromSaveState(a,b)}},MegaRAM:{name:"MegaRAM",desc:"MegaRAM Mapper Cartridge",priority:1509,internal:!0,embeddedURL:"@[MegaRAM].rom",priorityForRom:function(a){return a.content.length<=2097152?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMegaRAM(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMegaRAM.recreateFromSaveState(a,b)}},Normal:{name:"Normal",desc:"Normal ROM, Mirroring Auto",priority:901,priorityForRom:function(a){return 8192!==a.content.length&&16384!==a.content.length||65!==a.content[0]||66!==a.content[1]?32768===a.content.length&&(65===a.content[0]&&66===a.content[1]||65===a.content[16384]&&66===a.content[16385])?this.priority:65536!==a.content.length&&49152!==a.content.length||!(65===a.content[16384]&&66===a.content[16385]||65===a.content[32768]&&66===a.content[32769])?null:this.priority:this.priority},createFromROM:function(a){return new wmsx.SlotNormal(a,this)},recreateFromSaveState:function(a,b){return wmsx.SlotNormal.recreateFromSaveState(a,b)}},Mirrored:{name:"Mirrored",desc:"Normal ROM, Mirrored",priority:902,priorityForRom:function(a){return wmsx.SlotFormats.Normal.priorityForRom(a)},createFromROM:function(a){return new wmsx.SlotNormal(a,this)},recreateFromSaveState:function(a,b){return wmsx.SlotNormal.recreateFromSaveState(a,b)}},NotMirrored:{name:"NotMirrored",desc:"Normal ROM, Not Mirrored",priority:903,priorityForRom:function(a){return wmsx.SlotFormats.Normal.priorityForRom(a)},createFromROM:function(a){return new wmsx.SlotNormal(a,this)},recreateFromSaveState:function(a,b){return wmsx.SlotNormal.recreateFromSaveState(a,b)}},ASCII8:{name:"ASCII8",desc:"ASCII 8K Mapper Cartridge",priority:911,priorityForRom:function(a){return a.content.length>=8192&&0==(8191&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8K(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8K.recreateFromSaveState(a,b)}},ASCII16:{name:"ASCII16",desc:"ASCII 16K Mapper Cartridge",priority:912,priorityForRom:function(a){return a.content.length>=16384&&0==(16383&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16K(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16K.recreateFromSaveState(a,b)}},Konami:{name:"Konami",desc:"Konami Mapper Cartridge",priority:913,priorityForRom:function(a){return a.content.length>=8192&&0==(8191&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeKonami(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeKonami.recreateFromSaveState(a,b)}},KonamiSCC:{name:"KonamiSCC",desc:"KonamiSCC Sound Mapper Cartridge",priority:914,priorityForRom:function(a){return a.content.length>=8192&&0==(8191&a.content.length)&&65===a.content[0]&&66===a.content[1]?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeKonamiSCC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeKonamiSCC.recreateFromSaveState(a,b)}},KonamiSCCI:{name:"KonamiSCCI",desc:"Konami SCC+ Sound Mapper Cartridge (in SCC-I mode)",priority:1101,priorityForRom:function(a){return a.content.length>0&&a.content.length<=131072?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSCCIExpansion(a,this,!0)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSCCIExpansion.recreateFromSaveState(a,b)}},ASCII8SRAM2:{name:"ASCII8SRAM2",desc:"ASCII 8K SRAM 2K Mapper Cartridge",priority:1102,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},ASCII8SRAM8:{name:"ASCII8SRAM8",desc:"ASCII 8K SRAM 8K Mapper Cartridge",priority:1103,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},KoeiSRAM8:{name:"KoeiSRAM8",desc:"Koei SRAM 8K Mapper Cartridge",priority:1104,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},KoeiSRAM32:{name:"KoeiSRAM32",desc:"Koei SRAM 32K Mapper Cartridge",priority:1105,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},Wizardry:{name:"Wizardry",desc:"Wizardry SRAM Mapper Cartridge",priority:1106,priorityForRom:function(a){return a.content.length>=8192&&a.content.length<=1048576&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII8KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII8KSRAM.recreateFromSaveState(a,b)}},ASCII16SRAM2:{name:"ASCII16SRAM2",desc:"ASCII 16K SRAM 2K Mapper Cartridge",priority:1107,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=2097152&&0==(16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16KSRAM.recreateFromSaveState(a,b)}},ASCII16SRAM8:{name:"ASCII16SRAM8",desc:"ASCII 16K SRAM 8K Mapper Cartridge",priority:1108,priorityForRom:function(a){return a.content.length>=16384&&a.content.length<=2097152&&0==(16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16KSRAM(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16KSRAM.recreateFromSaveState(a,b)}},RType:{name:"RType",desc:"R-Type Mapper Cartridge",priority:1111,priorityForRom:function(a){return 393216===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeRType(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeRType.recreateFromSaveState(a,b)}},CrossBlaim:{name:"CrossBlaim",desc:"CrossBlaim Mapper Cartridge",priority:1112,priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeCrossBlaim(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeCrossBlaim.recreateFromSaveState(a,b)}},Manbow2:{name:"Manbow2",desc:"Space Manbow 2 SCC Sound Mapper Cartridge",priority:1113,priorityForRom:function(a){return 524288===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeManbow2(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeManbow2.recreateFromSaveState(a,b)}},Majutsushi:{name:"Majutsushi", -desc:"Konami Hai no Majutsushi PCM Mapper Cartridge",priority:1114,priorityForRom:function(a){return a.content.length>0&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeMajutsushi(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeMajutsushi.recreateFromSaveState(a,b)}},Synthesizer:{name:"Synthesizer",desc:"Konami Synthesizer PCM Cartridge",priority:1115,priorityForRom:function(a){return a.content.length>0&&a.content.length<=32768&&0==(8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSynthesizer(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSynthesizer.recreateFromSaveState(a,b)}},GameMaster2:{name:"GameMaster2",desc:"Konami Game Master 2 SRAM Mapper Cartridge",priority:1116,priorityForRom:function(a){return 131072===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeGameMaster2(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeGameMaster2.recreateFromSaveState(a,b)}},HarryFox:{name:"HarryFox",desc:"HarryFox Mapper Cartridge",priority:1117,priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeHarryFox(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeHarryFox.recreateFromSaveState(a,b)}},Halnote:{name:"Halnote",desc:"Halnote SRAM Mapper Cartridge",priority:1118,priorityForRom:function(a){return 1048576===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeHalnote(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeHalnote.recreateFromSaveState(a,b)}},AlQuran:{name:"AlQuran",desc:"The Holy Quran Mapper Cartridge (Encoded)",priority:1119,priorityForRom:function(a){return 1048576===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeAlQuran(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeAlQuran.recreateFromSaveState(a,b)}},AlQuranDecoded:{name:"AlQuranDecoded",desc:"The Holy Quran Mapper Cartridge (Decoded)",priority:1120,priorityForRom:function(a){return 1048576===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeAlQuran(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeAlQuran.recreateFromSaveState(a,b)}},SuperSwangi:{name:"SuperSwangi",desc:"Super Swangi Mapper Cartridge",priority:1121,priorityForRom:function(a){return a.content.length>=16384&&0==(16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSuperSwangi(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSuperSwangi.recreateFromSaveState(a,b)}},MSXWrite:{name:"MSXWrite",desc:"MSX Write Mapper Cartridge",priority:1122,priorityForRom:function(a){return 524288===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeASCII16K(a,this)},recreateFromSaveState:function(a,b){return wmsx.CartridgeASCII16K.recreateFromSaveState(a,b)}},Zemina80in1:{name:"Zemina80in1",desc:"Zemina 80 in 1 Mapper Cartridge",priority:1123,priorityForRom:function(a){return 0===(a.content.length>=8192&&8191&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeZemina80(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeZemina80.recreateFromSaveState(a,b)}},Zemina90in1:{name:"Zemina90in1",desc:"Zemina 90 in 1 Mapper Cartridge",priority:1124,priorityForRom:function(a){return 0===(a.content.length>=16384&&16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeZemina90(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeZemina90.recreateFromSaveState(a,b)}},Zemina126in1:{name:"Zemina126in1",desc:"Zemina 126 in 1 Mapper Cartridge",priority:1125,priorityForRom:function(a){return 0===(a.content.length>=16384&&16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeZemina126(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeZemina126.recreateFromSaveState(a,b)}},SuperLodeRunner:{name:"SuperLodeRunner",desc:"Super Lode Runner Mapper Cartridge",priority:1126,priorityForRom:function(a){return 0===(a.content.length>=16384&&16383&a.content.length)?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeSuperLodeRunner(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeSuperLodeRunner.recreateFromSaveState(a,b)}},Dooly:{name:"Dooly",desc:"Agigongnyong Dooly Mapper Cartridge",priority:1127,priorityForRom:function(a){return 32768===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeDooly(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeDooly.recreateFromSaveState(a,b)}},FMPAC:{name:"FMPAC",desc:"FM-PAC SRAM Sound Mapper Cartridge",priority:1151,priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeFMPAC(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeFMPAC.recreateFromSaveState(a,b)}},MSXDOS2:{name:"MSXDOS2",desc:"MSX-DOS 2 Mapper Cartridge",priority:1504,embeddedURL:"@[MSXDOS2]v22.rom",priorityForRom:function(a){return 65536===a.content.length?this.priority:null},createFromROM:function(a){return new wmsx.CartridgeDOS2(a)},recreateFromSaveState:function(a,b){return wmsx.CartridgeDOS2.recreateFromSaveState(a,b)}}},wmsx.SlotFormats.GenericKonami=wmsx.SlotFormats.Normal,wmsx.SlotFormats.Manbow2_2=wmsx.SlotFormats.Manbow2,wmsx.SlotFormats.HamarajaNight=wmsx.SlotFormats.Manbow2,wmsx.SlotFormats.Kanji12=wmsx.SlotFormats.Kanji1,wmsx.SlotFormats.FMPAK=wmsx.SlotFormats.FMPAC,wmsx.SlotFormatsUserOptions=["Normal","Mirrored","NotMirrored","ASCII8","ASCII16","Konami","KonamiSCC","KonamiSCCI","ASCII8SRAM2","ASCII8SRAM8","ASCII16SRAM2","ASCII16SRAM8","MegaRAM","GameMaster2","AlQuran","AlQuranDecoded","CrossBlaim","Dooly","Halnote","HarryFox","KoeiSRAM8","KoeiSRAM32","Majutsushi","Manbow2","MSXWrite","RType","SuperLodeRunner","SuperSwangi","Synthesizer","Wizardry","Zemina80in1","Zemina90in1","Zemina126in1","FMPAC","Kanji1","MSXDOS2","MSXMUSIC"],wmsx.Slot=function(){"use strict";this.connect=function(a){},this.refreshConnect=function(a){},this.disconnect=function(a){},this.getDataDesc=function(){},this.loadData=function(a,b){},this.getDataToSave=function(){},this.dataModified=function(){return!1},this.powerOn=function(){},this.powerOff=function(){},this.reset=function(){},this.read=function(a){return 255},this.write=function(a,b){},this.cpuExtensionBegin=function(a){},this.cpuExtensionFinish=function(a){},this.isExpanded=function(){return!1},this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes||[])},this.lightState=function(){return WMSX.LIGHT_STATES&&wmsx.EmbeddedFiles.isEmbeddedURL(this.rom.source)},this.format=void 0,this.rom=void 0,this.bytes=void 0,this.dumpBytes=function(a,b,c){wmsx.Util.dump(this.bytes,a,b,c)},this.dumpRead=function(a,b,c){var d="",e=a||0;c=c||1;for(var f=0;f>14&3){case 0:return f;case 1:return g;case 2:return h;case 3:return i}}function b(){e=[k,k,k,k],c.subSlots=e}var c=this;this.isExpanded=function(){return!0},this.connect=function(a){d=a;for(var b=0;b<4;++b)e[b].connect(d)},this.refreshConnect=function(){for(var a=0;a<4;++a)e[a].refreshConnect()},this.disconnect=function(a){ -for(var b=0;b<4;++b)e[b].disconnect(a);d=null},this.powerOn=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].powerOn()},this.powerOff=function(){for(var a=0;a<4;a++)e[a].powerOff()},this.reset=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].reset()},this.isAllEmpty=function(){return e[0]===k&&e[1]===k&&e[2]===k&&e[3]===k},this.insertSubSlot=function(a,b){a=a||wmsx.SlotEmpty.singleton,e[b]!==a&&(d&&e[b].disconnect(d),e[b]=a,d&&e[b].connect(d),this.setSecondarySlotConfig(j))},this.getSubSlot=function(a){return e[a]},this.getSubSlotForAddress=a,this.read=function(a){switch(a>>14&3){case 0:return f.read(a);case 1:return g.read(a);case 2:return h.read(a);case 3:return 65535===a?255&~j:i.read(a)}},this.write=function(a,b){switch(a>>14&3){case 0:return void f.write(a,b);case 1:return void g.write(a,b);case 2:return void h.write(a,b);case 3:return 65535===a?void this.setSecondarySlotConfig(b):void i.write(a,b)}},this.setSecondarySlotConfig=function(a){j=a,f=e[3&a],g=e[a>>2&3],h=e[a>>4&3],i=e[a>>6&3]},this.getSecondarySlotConfig=function(){return j},this.cpuExtensionBegin=function(b){return a(b.extPC).cpuExtensionBegin(b)},this.cpuExtensionFinish=function(b){return a(b.extPC).cpuExtensionFinish(b)};var d,e,f,g,h,i,j=0,k=wmsx.SlotEmpty.singleton;this.format=wmsx.SlotFormats.Expanded,this.saveState=function(){return{f:this.format.name,s:j,s0:e[0].saveState(),s1:e[1].saveState(),s2:e[2].saveState(),s3:e[3].saveState()}},this.loadState=function(a){this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,e[0]),0),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,e[1]),1),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,e[2]),2),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,e[3]),3),this.setSecondarySlotConfig(a.s)},function(){b()}()},wmsx.SlotExpanded.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotExpanded;return c.loadState(a),c},wmsx.SlotExpandedSpecial=function(){"use strict";function a(a){switch(a>>14&3){case 0:return f;case 1:return g;case 2:return h;case 3:return i}}function b(){e=[k,k,k,k],c.subSlots=e}var c=this;this.isExpanded=function(){return!0},this.connect=function(a){d=a;for(var b=0;b<4;++b)e[b].connect(d)},this.refreshConnect=function(){for(var a=0;a<4;++a)e[a].refreshConnect()},this.disconnect=function(a){for(var b=0;b<4;++b)e[b].disconnect(a);d=null},this.powerOn=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].powerOn()},this.powerOff=function(){for(var a=0;a<4;a++)e[a].powerOff()},this.reset=function(){this.setSecondarySlotConfig(0);for(var a=0;a<4;a++)e[a].reset()},this.isAllEmpty=function(){return e[0]===k&&e[1]===k&&e[2]===k&&e[3]===k},this.insertSubSlot=function(a,b){a=a||wmsx.SlotEmpty.singleton,e[b]!==a&&(d&&e[b].disconnect(d),e[b]=a,d&&e[b].connect(d),this.setSecondarySlotConfig(j))},this.getSubSlot=function(a){return e[a]},this.getSubSlotForAddress=a,this.read=function(a){switch(a>>14&3){case 0:return f.read(a);case 1:return g.read(a);case 2:return h.read(a);case 3:return 65535===a?255&~j:i.read(a)}},this.write=function(a,b){switch(a>>14&3){case 0:return void f.write(a,b);case 1:return void g.write(a,b);case 2:return void h.write(a,b);case 3:return 65535===a?void this.setSecondarySlotConfig(b):void i.write(a,b)}},this.setSecondarySlotConfig=function(a){j=a,f=e[3&a],g=e[a>>2&3],h=e[a>>4&3],i=e[a>>6&3]},this.getSecondarySlotConfig=function(){return j},this.cpuExtensionBegin=function(b){return a(b.extPC).cpuExtensionBegin(b)},this.cpuExtensionFinish=function(b){return a(b.extPC).cpuExtensionFinish(b)};var d,e,f,g,h,i,j=0,k=wmsx.SlotEmpty.singleton;this.format=wmsx.SlotFormats.ExpandedS,this.saveState=function(){return{f:this.format.name,s:j,s0:e[0].saveState(),s1:e[1].saveState(),s2:e[2].saveState(),s3:e[3].saveState()}},this.loadState=function(a){this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,e[0]),0),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,e[1]),1),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,e[2]),2),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,e[3]),3),this.setSecondarySlotConfig(a.s)},function(){b()}()},wmsx.SlotExpandedSpecial.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotExpandedSpecial;return c.loadState(a),c},wmsx.SlotExpandedModules=function(){"use strict";function a(){d=[e,e,e,e],b.subSlots=d}var b=this;this.isExpanded=function(){return!0},this.connect=function(a){c=a;for(var b=0;b<4;++b)d[b].connect(c)},this.refreshConnect=function(){for(var a=0;a<4;++a)d[a].refreshConnect()},this.disconnect=function(a){for(var b=0;b<4;++b)d[b].disconnect(a);c=null},this.powerOn=function(){for(var a=0;a<4;a++)d[a].powerOn()},this.powerOff=function(){for(var a=0;a<4;a++)d[a].powerOff()},this.reset=function(){for(var a=0;a<4;a++)d[a].reset()},this.isAllEmpty=function(){return d[0]===e&&d[1]===e&&d[2]===e&&d[3]===e},this.insertSubSlot=function(a,b){a=a||wmsx.SlotEmpty.singleton,d[b]!==a&&(c&&d[b].disconnect(c),d[b]=a,c&&d[b].connect(c))},this.getSubSlot=function(a){return d[a]},this.getSubSlotForAddress=function(a){},this.read=function(a){},this.write=function(a,b){},this.setSecondarySlotConfig=function(a){},this.getSecondarySlotConfig=function(){},this.cpuExtensionBegin=function(a){},this.cpuExtensionFinish=function(a){};var c,d,e=wmsx.SlotEmpty.singleton;this.format=wmsx.SlotFormats.ExpandedM,this.saveState=function(){return{f:this.format.name,s0:d[0].saveState(),s1:d[1].saveState(),s2:d[2].saveState(),s3:d[3].saveState()}},this.loadState=function(a){this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,d[0]),0),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,d[1]),1),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,d[2]),2),this.insertSubSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,d[3]),3)},function(){a()}()},wmsx.SlotExpandedModules.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotExpandedModules;return c.loadState(a),c},wmsx.SlotNormal=function(a,b){"use strict";function c(a){if(65!==d[a]||66!==d[a+1])return null;for(var b=null,c=65535,e=a+2;e<=a+8;e+=2){var f=d[e+1]<<8|d[e];0!==f&&(f>14,lowestBasicPage:null!==b?b>>14:null}}this.read=function(a){return a>=e&&a=0)k=l>>14;else{for(var m=null,n=null,o=0;o64&&(e=64),c=wmsx.Util.arrayFill(new Array(1024*e),0),d=65536-c.length,b.bytes=c}this.refreshConnect=function(){1024*WMSX.RAMNORMAL_SIZE!==c.length&&b(self)}, -this.powerOff=function(){wmsx.Util.arrayFill(c,0)},this.read=function(a){return a>=d?c[a-d]:255},this.write=function(a,b){a>=d&&(c[a-d]=b)};var c;this.bytes=null;var d=0;this.rom=null,this.format=wmsx.SlotFormats.RAMNormal,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c)}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=65536-c.length},a&&b(this)},wmsx.SlotRAMNormal.prototype=wmsx.Slot.base,wmsx.SlotRAMNormal.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotRAMNormal;return c.loadState(a),c},wmsx.SlotRAMMapper=function(rom){"use strict";function init(a){a.rom=rom;for(var b=0;VALID_SIZES[b]>14)-1,pageReadBackOR=255&~pageMask}this.connect=function(a){a.bus.connectInputDevice(252,this.inputAll),a.bus.connectInputDevice(253,this.inputAll),a.bus.connectInputDevice(254,this.inputAll),a.bus.connectInputDevice(255,this.inputAll),a.bus.connectOutputDevice(252,this.outputFC),a.bus.connectOutputDevice(253,this.outputFD),a.bus.connectOutputDevice(254,this.outputFE),a.bus.connectOutputDevice(255,this.outputFF)},this.refreshConnect=function(){1024*WMSX.RAMMAPPER_SIZE!==bytes.length&&init(self)},this.disconnect=function(a){a.bus.disconnectInputDevice(252,this.inputAll),a.bus.disconnectInputDevice(253,this.inputAll),a.bus.disconnectInputDevice(254,this.inputAll),a.bus.disconnectInputDevice(255,this.inputAll),a.bus.disconnectOutputDevice(252,this.outputFC),a.bus.disconnectOutputDevice(253,this.outputFD),a.bus.disconnectOutputDevice(254,this.outputFE),a.bus.disconnectOutputDevice(255,this.outputFF)},this.powerOff=function(){wmsx.Util.arrayFill(bytes,0)},this.reset=function(){page0Offset=page1Offset=page2Offset=page3Offset=0},this.outputFC=function(a){page0Offset=(a&pageMask)<<14},this.outputFD=function(a){page1Offset=((a&pageMask)<<14)-16384},this.outputFE=function(a){page2Offset=((a&pageMask)<<14)-32768},this.outputFF=function(a){page3Offset=((a&pageMask)<<14)-49152},this.inputAll=function(a){switch(255&a){case 252:return pageReadBackOR|page0Offset>>14;case 253:return pageReadBackOR|page1Offset+16384>>14;case 254:return pageReadBackOR|page2Offset+32768>>14;case 255:return pageReadBackOR|page3Offset+49152>>14}},this.read=function(a){switch(49152&a){case 0:return bytes[a+page0Offset];case 16384:return bytes[a+page1Offset];case 32768:return bytes[a+page2Offset];case 49152:return bytes[a+page3Offset]}},this.write=function(a,b){switch(49152&a){case 0:return void(bytes[a+page0Offset]=b);case 16384:return void(bytes[a+page1Offset]=b);case 32768:return void(bytes[a+page2Offset]=b);case 49152:return void(bytes[a+page3Offset]=b)}};var page0Offset=0,page1Offset=0,page2Offset=0,page3Offset=0,pageMask=0,pageReadBackOR=0,bytes;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.RAMMapper;var VALID_SIZES=[64,128,256,512,1024,2048,4096];this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),p0:page0Offset,p1:page1Offset,p2:page2Offset,p3:page3Offset}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,pageMask=(bytes.length>>14)-1,page0Offset=a.p0,page1Offset=a.p1,page2Offset=a.p2,page3Offset=a.p3,pageReadBackOR=255&~pageMask},rom&&init(this),this.eval=function(str){return eval(str)}},wmsx.SlotRAMMapper.prototype=wmsx.Slot.base,wmsx.SlotRAMMapper.recreateFromSaveState=function(a,b){var c=b||new wmsx.SlotRAMMapper;return c.loadState(a),c},wmsx.SlotBIOS=function(a){"use strict";this.connect=function(a){e.connect(a),d.connect(this,a),f.connect(this,a),a.setBIOS(this)},this.disconnect=function(a){d&&d.disconnect(this,a),a.setBIOS(null)},this.getKeyboardExtension=function(){return e},this.getTurboDriver=function(){return f},this.powerOff=function(){d&&d.powerOff()},this.reset=function(){f&&f.reset()},this.read=function(a){return a=24576&&a<26624||a===h)return void(e=(b%g<<14)-16384);(a>=28672&&a<30720||a===i)&&(f=(b%g<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?d[e+a]:a<49152?d[f+a]:255};var d;this.bytes=null;var e,f,g,h,i;this.rom=null,this.format=b,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(d),b1:e,b2:f,n:g}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),d=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.b1,f=a.b2,g=a.n,c(this.format)},a&&function(e){e.rom=a,d=wmsx.Util.asNormalArray(a.content),e.bytes=d,g=d.length/16384|0,c(b)}(this)},wmsx.CartridgeASCII16K.prototype=wmsx.Slot.base,wmsx.CartridgeASCII16K.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeASCII16K;return c.loadState(a),c},wmsx.CartridgeKonami=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=d=e=-16384},this.write=function(a,b){a>=24576&&a<32767?c=(b%f<<13)-24576:a>=32768&&a<40959?d=(b%f<<13)-32768:a>=40960&&a<49151&&(e=(b%f<<13)-40960)},this.read=function(a){switch(57344&a){case 16384:return b[a-16384];case 24576:return b[c+a];case 32768:return b[d+a];case 40960:return b[e+a];default:return 255}};var b;this.bytes=null;var c,d,e,f;this.rom=null,this.format=wmsx.SlotFormats.Konami,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c,b3:d,b4:e,n:f}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=a.b3,e=a.b4,f=a.n},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,f=b.length/8192|0}(this)},wmsx.CartridgeKonami.prototype=wmsx.Slot.base,wmsx.CartridgeKonami.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeKonami;return c.loadState(a),c},wmsx.CartridgeRType=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=-32768},this.write=function(a,b){a>=28672&&a<32768&&(c=(b%24<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[229376+a]:a<49152?b[c+a]:255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.RType,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeRType.prototype=wmsx.Slot.base,wmsx.CartridgeRType.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeRType;return c.loadState(a),c},wmsx.CartridgeCrossBlaim=function(a){this.powerOn=function(){this.reset()},this.reset=function(){c=-16384},this.write=function(a,b){16453===a&&(c=((3&b)<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[a-16384]:a<49152?b[c+a]:255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.CrossBlaim,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeCrossBlaim.prototype=wmsx.Slot.base,wmsx.CartridgeCrossBlaim.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeCrossBlaim;return c.loadState(a),c},wmsx.CartridgeDOS2=function(a){"use strict";this.connect=function(a){a.getDiskDriveSocket().dos2ROMConnected(this)},this.disconnect=function(a){a.getDiskDriveSocket().dos2ROMDisconnected(this)},this.powerOn=function(){this.reset()},this.reset=function(){c=-16384},this.write=function(a,b){32766===a&&(c=((3&b)<<14)-16384)},this.read=function(a){return a>=16384&&a<32768?b[c+a]:255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.MSXDOS2,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeDOS2.prototype=wmsx.Slot.base,wmsx.CartridgeDOS2.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeDOS2;return c.loadState(a),c},wmsx.CartridgeHarryFox=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=d=-16384},this.write=function(a,b){if(a>=24576&&a<28672)return void(c=(1&b?32768:0)-16384);a>=28672&&a<32768&&(d=(1&b?49152:16384)-32768)},this.read=function(a){return a<16384?255:a<32768?b[c+a]:a<49152?b[d+a]:255};var b;this.bytes=null;var c,d;this.rom=null,this.format=wmsx.SlotFormats.HarryFox,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeHarryFox.prototype=wmsx.Slot.base,wmsx.CartridgeHarryFox.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeHarryFox;return c.loadState(a),c},wmsx.CartridgeAlQuran=function(a,b){"use strict";function c(){for(var a=new Array(256),b=0;b<256;++b)a[b]=77^(b<<4&80|b>>3&5|b<<1&160|b<<2&8|b>>6&2);for(var c=0,e=d.length;c>1)%d<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[a-16384]:a<49152?b[c+a]:255};var b;this.bytes=null;var c,d;this.rom=null,this.format=wmsx.SlotFormats.SuperSwangi,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=b.length/16384|0},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,d=b.length/16384|0}(this)},wmsx.CartridgeSuperSwangi.prototype=wmsx.Slot.base,wmsx.CartridgeSuperSwangi.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSuperSwangi;return c.loadState(a),c},wmsx.CartridgeZemina80=function(a){"use strict" -;this.powerOn=function(){this.reset()},this.reset=function(){c=d=e=f=-16384},this.write=function(a,b){switch(a){case 16384:return void(c=(b%g<<13)-16384);case 16385:return void(d=(b%g<<13)-24576);case 16386:return void(e=(b%g<<13)-32768);case 16387:f=(b%g<<13)-40960}},this.read=function(a){switch(57344&a){case 16384:return b[c+a];case 24576:return b[d+a];case 32768:return b[e+a];case 40960:return b[f+a];default:return 255}};var b;this.bytes=null;var c,d,e,f,g;this.rom=null,this.format=wmsx.SlotFormats.Zemina80in1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d,b3:e,b4:f}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2,e=a.b3,f=a.b4,g=b.length/8192|0},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,g=b.length/8192|0}(this)},wmsx.CartridgeZemina80.prototype=wmsx.Slot.base,wmsx.CartridgeZemina80.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeZemina80;return c.loadState(a),c},wmsx.CartridgeZemina90=function(a){"use strict";this.connect=function(a){a.bus.connectOutputDevice(119,this.output77)},this.disconnect=function(a){a.bus.disconnectOutputDevice(119,this.output77)},this.powerOn=function(){this.reset()},this.reset=function(){this.output77(0)},this.read=function(a){return a<16384?255:a<32768?b[d+a]:a<49152?f?b[e+a^8192]:b[e+a]:255},this.output77=function(a,b){c=a;var g=63&a,h=a>>6;2===h?(d=((62&g)<<14)-16384,e=((1|g)<<14)-32768):(d=(g<<14)-16384,e=(g<<14)-32768),f=3===h};var b;this.bytes=null;var c,d,e,f;this.rom=null,this.format=wmsx.SlotFormats.Zemina90in1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),bc:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,this.output77(a.bc)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeZemina90.prototype=wmsx.Slot.base,wmsx.CartridgeZemina90.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeZemina90;return c.loadState(a),c},wmsx.CartridgeZemina126=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=d=-16384},this.write=function(a,b){if(16384===a)return void(c=(b%e<<14)-16384);16385===a&&(d=(b%e<<14)-32768)},this.read=function(a){return a<16384?255:a<32768?b[c+a]:a<49152?b[d+a]:255};var b;this.bytes=null;var c,d,e;this.rom=null,this.format=wmsx.SlotFormats.Zemina126in1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2,e=b.length/16384|0},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,e=b.length/16384|0}(this)},wmsx.CartridgeZemina126.prototype=wmsx.Slot.base,wmsx.CartridgeZemina126.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeZemina126;return c.loadState(a),c},wmsx.CartridgeSuperLodeRunner=function(a){"use strict";function b(a,b){0===a&&(d=(b%e<<14)-32768)}this.connect=function(a){a.bus.setWriteMonitor(b)},this.disconnect=function(a){a.bus.setWriteMonitor(null)},this.powerOn=function(){this.reset()},this.reset=function(){d=32768},this.read=function(a){return a>=32768&&a<49152?c[d+a]:255};var c;this.bytes=null;var d,e;this.rom=null,this.format=wmsx.SlotFormats.SuperLodeRunner,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c),b1:d}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.b1,e=c.length/16384|0},a&&function(b){b.rom=a,c=wmsx.Util.asNormalArray(a.content),b.bytes=c,e=c.length/16384|0}(this)},wmsx.CartridgeSuperLodeRunner.prototype=wmsx.Slot.base,wmsx.CartridgeSuperLodeRunner.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSuperLodeRunner;return c.loadState(a),c},wmsx.CartridgeDooly=function(a){"use strict";this.powerOn=function(){this.reset()},this.reset=function(){c=0},this.write=function(a,b){a>=16384&&a<49152&&(c=7&b)},this.read=function(a){if(a>=16384&&a<49152){var d=b[a-16384];switch(c){case 0:return d;case 1:return 248&d|d<<2&4|d>>1&3;case 4:return 248&d|d>>2&1|d<<1&6;case 2:case 5:case 6:switch(7&d){case 1:case 2:case 4:return 248&d;case 3:case 5:case 6:if(2==c)return 248&d|7^(d<<2&4|d>>1&3);if(5==c)return 7^d;if(6==c)return 248&d|7^(d>>2&1|d<<1&6);default:return d}default:return 7|d}}return 255};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.Dooly,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),e:c}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.e},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeDooly.prototype=wmsx.Slot.base,wmsx.CartridgeDooly.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeDooly;return c.loadState(a),c},wmsx.CartridgeMegaRAM=function(a){"use strict";this.reinsertROMContent=function(){this.rom.content&&this.rom.content.length||(this.rom.content=this.bytes.slice(0,this.bytes.length))},this.connect=function(a){a.bus.connectInputDevice(142,this.input8E),a.bus.connectOutputDevice(142,this.output8E)},this.disconnect=function(a){a.bus.disconnectInputDevice(142,this.input8E),a.bus.disconnectOutputDevice(142,this.output8E)},this.powerOn=function(){this.reset()},this.reset=function(){h=!1},this.input8E=function(){return h=!0,255},this.output8E=function(a){h=!1},this.write=function(a,i){if(!(a<16384))return a<24576?void(h?b[d+a]=i:d=(i%c<<13)-16384):a<32768?void(h?b[e+a]=i:e=(i%c<<13)-24576):a<40960?void(h?b[f+a]=i:f=(i%c<<13)-32768):void(a<49152&&(h?b[g+a]=i:g=(i%c<<13)-40960))},this.read=function(a){switch(57344&a){case 16384:return b[d+a];case 24576:return b[e+a];case 32768:return b[f+a];case 40960:return b[g+a];default:return 255}};var b;this.bytes=null;var c,d=-16384,e=-16384,f=-16384,g=-16384,h=!1;this.rom=null,this.format=wmsx.SlotFormats.MegaRAM;var i=Math.min(WMSX.MEGARAM_SIZE/8,256),j=[32,64,128,256];this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:d,b2:e,b3:f,b4:g,n:c,m:h}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,d=a.b1,e=a.b2,f=a.b3,g=a.b4,c=a.n,h=a.m},a&&function(d){d.rom=a;var e=a.content;if(e&&e.length){c=Math.ceil(e.length/8192);for(var f=0;j[f]=c&&a=24576&&a<26624&&(c=((7&b)<<14)-16384)},this.read=function(a){return a>=16384&&a<32768?b[c+a]:255},this.cpuExtensionBegin=function(a){return d.cpuExtensionBegin(a)},this.cpuExtensionFinish=function(a){return d.cpuExtensionFinish(a)};var b;this.bytes=null;var c;this.rom=null,this.format=wmsx.SlotFormats.Nextor16Patch;var d=new wmsx.ImageNextorDeviceDriver;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:this.lightState()?null:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,d:d.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b):(this.rom.reloadEmbeddedContent(),b&&b.length===this.rom.content.length||(b=new Array(this.rom.content.length)),wmsx.Util.arrayCopy(this.rom.content,0,b),d.patchNextorKernel(b)),this.bytes=b,c=a.b1,d.loadState(a.d)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,d.patchNextorKernel(b)}(this)},wmsx.CartridgeNextorPatched.prototype=wmsx.Slot.base,wmsx.CartridgeNextorPatched.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeNextorPatched;return c.loadState(a),c},wmsx.CartridgeKonamiSCC=function(rom){"use strict";function init(a){a.rom=rom,bytes=wmsx.Util.asNormalArray(rom.content),a.bytes=bytes,numBanks=bytes.length/8192|0}function connectSCC(){scc.connectAudio(),sccConnected=!0}this.connect=function(a){scc.setAudioSocket(a.getAudioSocket()),sccConnected&&connectSCC()},this.disconnect=function(a){scc.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){scc.disconnectAudio()},this.reset=function(){bank1Offset=bank2Offset=bank3Offset=bank4Offset=-16384,sccSelected=sccConnected=!1,scc.reset()},this.write=function(a,b){return a>=20480&&a<=22527?void(bank1Offset=(b%numBanks<<13)-16384):a>=28672&&a<=30719?void(bank2Offset=(b%numBanks<<13)-24576):a>=36864&&a<=38911?(bank3Offset=(b%numBanks<<13)-32768,void(63==(63&b)?(sccSelected=!0,sccConnected||connectSCC()):sccSelected=!1)):sccSelected&&a>=38912&&a<=40959?void scc.write(a,b):void(a>=45056&&a<=47103&&(bank4Offset=(b%numBanks<<13)-40960))},this.read=function(a){switch(57344&a){case 16384:return bytes[bank1Offset+a];case 24576:return bytes[bank2Offset+a];case 32768:return a>=38912&&sccSelected?scc.read(a):bytes[bank3Offset+a];case 40960:return bytes[bank4Offset+a];default:return 255}};var bytes;this.bytes=null;var bank1Offset,bank2Offset,bank3Offset,bank4Offset,numBanks,scc=new wmsx.SCCIAudio,sccSelected=!1,sccConnected=!1;this.rom=null,this.format=wmsx.SlotFormats.KonamiSCC,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),b1:bank1Offset,b2:bank2Offset,b3:bank3Offset,b4:bank4Offset,n:numBanks,scc:scc.saveState(),scs:sccSelected,scn:sccConnected}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,bank1Offset=a.b1,bank2Offset=a.b2,bank3Offset=a.b3,bank4Offset=a.b4,numBanks=a.n,scc.loadState(a.scc),sccSelected=a.scs,(sccConnected=a.scn)&&connectSCC()},rom&&init(this),this.eval=function(arg){return eval(arg)}},wmsx.CartridgeKonamiSCC.prototype=wmsx.Slot.base,wmsx.CartridgeKonamiSCC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeKonamiSCC;return c.loadState(a),c},wmsx.CartridgeSCCExpansion=function(a){"use strict";function b(){c.connectAudio(),e=!0}this.connect=function(a){c.setAudioSocket(a.getAudioSocket()),e&&b()},this.disconnect=function(a){c.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){c.disconnectAudio()},this.reset=function(){d=e=!1,c.reset()},this.write=function(a,f){if(a>=36864&&a<=38911)return void(63==(63&f)?(d=!0,e||b()):d=!1);d&&a>=38912&&a<=40959&&c.write(a,f)},this.read=function(a){return d&&a>=38912&&a<=40959?c.read(a):255};var c=new wmsx.SCCIAudio,d=!1,e=!1;this.rom=null,this.format=wmsx.SlotFormats.SCCExpansion,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),scc:c.saveState(),scs:d,scn:e}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),c.loadState(a.scc),d=a.scs,(e=a.scn)&&b()},a&&function(b){b.rom=a}(this)},wmsx.CartridgeSCCExpansion.prototype=wmsx.Slot.base,wmsx.CartridgeSCCExpansion.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSCCExpansion;return c.loadState(a),c},wmsx.CartridgeSCCIExpansion=function(rom,format,startInSCCI){"use strict";function init(a){a.rom=rom;var b=rom.content;bytes=wmsx.Util.arrayFill(new Array(131072),255),a.bytes=bytes,b.length>0&&(a.preLoadedContentSize=b.length,wmsx.Util.arrayCopy(b,0,bytes),b.length<=65536&&wmsx.Util.arrayCopy(b,0,bytes,65536)),startingMode=startInSCCI?32:0}function setMode(a){mode=a,scciMode=0!=(32&a),scc.setSCCIMode(scciMode);var b=0!=(16&a);bank4RamMode=b,bank3RamMode=b||scciMode&&0!=(4&a),bank2RamMode=b||0!=(2&a),bank1RamMode=b||0!=(1&a)}function connectSCC(){scc.connectAudio(),sccConnected=!0}this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes?this.bytes.slice(0,this.preLoadedContentSize):[])},this.connect=function(a){scc.setAudioSocket(a.getAudioSocket()),sccConnected&&connectSCC()},this.disconnect=function(a){scc.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){scc.disconnectAudio(),0===this.preLoadedContentSize&&wmsx.Util.arrayFill(bytes,255)},this.reset=function(){bank1Offset=bank2Offset=bank3Offset=bank4Offset=-16384,sccSelected=scciSelected=sccConnected=!1,scc.reset(),setMode(startingMode)},this.read=function(a){switch(57344&a){case 16384:return bytes[bank1Offset+a];case 24576:return bytes[bank2Offset+a];case 32768:return a>=38912&&sccSelected&&!scciMode?scc.read(a):bytes[bank3Offset+a];case 40960:return a>=47104&&scciSelected&&scciMode?scc.read(a):bytes[bank4Offset+a];default:return 255}},this.write=function(a,b){if(49150===a||49151===a)return void setMode(b);switch(57344&a){case 16384:return void(bank1RamMode?bytes[bank1Offset+a]=b:a>=20480&&a<=22527&&(bank1Offset=((15&b)<<13)-16384));case 24576:return void(bank2RamMode?bytes[bank2Offset+a]=b:a>=28672&&a<=30719&&(bank2Offset=((15&b)<<13)-24576));case 32768:return void(bank3RamMode?bytes[bank3Offset+a]=b:a>=36864&&a<=38911?(bank3Offset=((15&b)<<13)-32768,(sccSelected=63==(63&b))&&!sccConnected&&connectSCC()):a>=38912&&sccSelected&&!scciMode&&scc.write(a,b));case 40960:bank4RamMode?bytes[bank4Offset+a]=b:a>=45056&&a<=47103?(bank4Offset=((15&b)<<13)-40960,(scciSelected=128==(128&b))&&!sccConnected&&connectSCC()):a>=47104&&scciSelected&&scciMode&&scc.write(a,b)}};var bytes;this.bytes=null -;var startingMode=0,mode,scciMode,bank4RamMode,bank3RamMode,bank2RamMode,bank1RamMode,bank1Offset,bank2Offset,bank3Offset,bank4Offset,scc=new wmsx.SCCIAudio,sccSelected,scciSelected=!1,sccConnected=!1;this.rom=null,this.format=format,this.preLoadedContentSize=0,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),pcs:this.preLoadedContentSize,b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),sm:startingMode,m:mode,b1:bank1Offset,b2:bank2Offset,b3:bank3Offset,b4:bank4Offset,scc:scc.saveState(),scs:sccSelected,sis:scciSelected,scn:sccConnected}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),this.preLoadedContentSize=a.pcs||0,bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,bank1Offset=a.b1,bank2Offset=a.b2,bank3Offset=a.b3,bank4Offset=a.b4,startingMode=a.sm||0,setMode(void 0!==a.m?a.m:startingMode),scc.loadState(a.scc),sccSelected=a.scs,scciSelected=a.sis,(sccConnected=a.scn)&&connectSCC()},this.eval=function(str){return eval(str)},rom&&init(this)},wmsx.CartridgeSCCIExpansion.prototype=wmsx.Slot.base,wmsx.CartridgeSCCIExpansion.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSCCIExpansion;return c.loadState(a),c},wmsx.CartridgeManbow2=function(rom){"use strict";function init(a){a.rom=rom,bytes=wmsx.Util.asNormalArray(rom.content),a.bytes=bytes}function writeMem(a,b){a>=458752&&a<524288&&(bytes[a]=b,sramModif||(sramModif=!0,cartridgeSocket.fireCartridgesModifiedStateUpdate()))}function connectSCC(){scc.connectAudio(),sccConnected=!0}this.getDataDesc=function(){return"SRAM"},this.loadData=function(a,b){if(65536!==b.length)return null;for(var c=0;c<65536;++c)bytes[458752+c]=b[c];return sramContentName=a,b},this.getDataToSave=function(){sramModif=!1,cartridgeSocket.fireCartridgesModifiedStateUpdate();var a=new Uint8Array(bytes.slice(458752));return{fileName:sramContentName||"Manbow2.sram",content:a,desc:this.getDataDesc()}},this.dataModified=function(){return sramModif},this.connect=function(a){cartridgeSocket=a.getCartridgeSocket(),scc.setAudioSocket(a.getAudioSocket()),sccConnected&&connectSCC()},this.disconnect=function(a){scc.disconnectAudio()},this.powerOn=function(){this.reset()},this.powerOff=function(){scc.disconnectAudio()},this.reset=function(){bank1Offset=bank2Offset=bank3Offset=bank4Offset=-16384,sccSelected=sccConnected=!1,scc.reset()},this.read=function(a){switch(57344&a){case 16384:return bytes[bank1Offset+a];case 24576:return bytes[bank2Offset+a];case 32768:return sccSelected&&a>=38912?scc.read(a):bytes[bank3Offset+a];case 40960:return bytes[bank4Offset+a];default:return 255}},this.write=function(a,b){switch(57344&a){case 16384:return writeMem(bank1Offset+a,b),void(a>=20480&&a<=22527&&(bank1Offset=((b&bankSelMask)<<13)-16384));case 24576:return writeMem(bank2Offset+a,b),void(a>=28672&&a<=30719&&(bank2Offset=((b&bankSelMask)<<13)-24576));case 32768:return sccSelected&&a>=38912&&scc.write(a,b),writeMem(bank3Offset+a,b),void(a>=36864&&a<=38911&&(bank3Offset=((b&bankSelMask)<<13)-32768,(sccSelected=63==(63&b))&&!sccConnected&&connectSCC()));case 40960:writeMem(bank4Offset+a,b),a>=45056&&a<=47103&&(bank4Offset=8192*(b&bankSelMask)-40960)}};var bytes;this.bytes=null;var bank1Offset,bank2Offset,bank3Offset,bank4Offset,bankSelMask=63,scc=new wmsx.SCCIAudio,sccSelected=!1,sccConnected=!1,sramContentName,sramModif=!1,cartridgeSocket;this.rom=null,this.format=wmsx.SlotFormats.Manbow2,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(bytes),b1:bank1Offset,b2:bank2Offset,b3:bank3Offset,b4:bank4Offset,scc:scc.saveState(),scs:sccSelected,scn:sccConnected,sn:sramContentName,d:sramModif}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),bytes=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,bytes),this.bytes=bytes,bank1Offset=a.b1,bank2Offset=a.b2,bank3Offset=a.b3,bank4Offset=a.b4,scc.loadState(a.scc),sccSelected=a.scs,sccConnected=a.scn,sramContentName=a.sn,sramModif=!!a.d,sccConnected&&connectSCC()},this.eval=function(str){return eval(str)},rom&&init(this)},wmsx.CartridgeManbow2.prototype=wmsx.Slot.base,wmsx.CartridgeManbow2.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeManbow2;return c.loadState(a),c},wmsx.CartridgeKanjiFont=function(a){"use strict";this.connect=function(a){a.bus.connectInputDevice(216,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectInputDevice(217,this.inputD9),a.bus.connectOutputDevice(216,this.outputD8),a.bus.connectOutputDevice(217,this.outputD9),a.bus.connectInputDevice(218,wmsx.DeviceMissing.inputPortIgnored),a.bus.connectInputDevice(219,this.inputDB),a.bus.connectOutputDevice(218,this.outputDA),a.bus.connectOutputDevice(219,this.outputDB)},this.disconnect=function(a){a.bus.disconnectInputDevice(216,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectInputDevice(217,this.inputD9),a.bus.disconnectOutputDevice(216,this.outputD8),a.bus.disconnectOutputDevice(217,this.outputD9),a.bus.disconnectInputDevice(218,wmsx.DeviceMissing.inputPortIgnored),a.bus.disconnectInputDevice(219,this.inputDB),a.bus.disconnectOutputDevice(218,this.outputDA),a.bus.disconnectOutputDevice(219,this.outputDB)},this.powerOn=function(){this.reset()},this.powerOff=function(){},this.reset=function(){b=c=0,d=e=0},this.read=function(a){return 255},this.write=function(a,b){},this.outputD8=function(a){b=4032&b|63&a,d=b<<5},this.outputD9=function(a){b=63&b|(63&a)<<6,d=b<<5},this.inputD9=function(){return f[131071&d++]},this.outputDA=function(a){c=4032&c|63&a,e=c<<5},this.outputDB=function(a){c=63&c|(63&a)<<6,e=c<<5},this.inputDB=function(){return g?f[131072+(131071&e++)]:255};var b,c,d,e,f,g=!1;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.Kanji1,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:this.lightState()?null:wmsx.Util.compressInt8BitArrayToStringBase64(f),c1:b,r1:d,c2:c,r2:e,j2:g}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?f=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,f):(this.rom.reloadEmbeddedContent(),f&&f.length===this.rom.content.length||(f=new Array(this.rom.content.length)),wmsx.Util.arrayCopy(this.rom.content,0,f)),this.bytes=f,b=a.c1,d=a.r1,c=a.c2,e=a.r2,g=a.j2},a&&function(b){b.rom=a,f=wmsx.Util.asNormalArray(a.content),b.bytes=f,g=262144===f.length}(this)},wmsx.CartridgeKanjiFont.prototype=wmsx.Slot.base,wmsx.CartridgeKanjiFont.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeKanjiFont;return c.loadState(a),c},wmsx.CartridgePAC=function(a){"use strict";function b(a,b){e=a;for(var d=wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length,f=0,g=c.length-2;f=16384&&a<=24573&&(c[a-16384]=b,g||(g=!0,f.fireCartridgesModifiedStateUpdate()))},this.read=function(a){return d&&a>=16384&&a<=24575?c[a-16384]:255};var c,d;this.sram=null;var e,f,g=!1;this.rom=null,this.format=wmsx.SlotFormats.PACExpansion,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),sa:d,s:wmsx.Util.compressInt8BitArrayToStringBase64(c),sn:e,d:g}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),d=a.sa,c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,c),e=a.sn,g=!!a.d},a&&function(d){d.rom=a,c=wmsx.Util.arrayFill(new Array(8192),0),d.sram=c, -0!==a.content.length&&b(a.source,a.content)}(this)},wmsx.CartridgePAC.prototype=wmsx.Slot.base,wmsx.CartridgePAC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgePAC;return c.loadState(a),c},wmsx.CartridgePAC.isPACFileContentValid=function(a){return 8206===a.length&&wmsx.Util.int8BitArrayToByteString(a,0,wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length)==wmsx.CartridgePAC.DATA_FILE_IDENTIFIER},wmsx.CartridgePAC.buildPACFileContentToSave=function(a){var b=new Uint8Array(wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length+a.length-2);return b.set(wmsx.Util.byteStringToInt8BitArray(wmsx.CartridgePAC.DATA_FILE_IDENTIFIER)),b.set(a.slice(0,-2),wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length),b},wmsx.CartridgePAC.DATA_FILE_IDENTIFIER="PAC2 BACKUP DATA",wmsx.CartridgeMSXMUSIC=function(a){"use strict";this.connect=function(a){c.connect(a)},this.disconnect=function(a){c.disconnect(a)},this.powerOn=function(){c.powerOn(),this.reset()},this.powerOff=function(){c.powerOff()},this.reset=function(){c.reset()},this.read=function(a){return a>=16384&&a<32768?b[a-16384]:255};var b;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.MSXMUSIC;var c=new wmsx.YM2413Audio("MSX-MUSIC");this.opll=c,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:this.lightState()?null:wmsx.Util.compressInt8BitArrayToStringBase64(b),fm:c.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b):(this.rom.reloadEmbeddedContent(),b&&b.length===this.rom.content.length||(b=new Array(this.rom.content.length)),wmsx.Util.arrayCopy(this.rom.content,0,b)),this.bytes=b,c.loadState(a.fm)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b}(this)},wmsx.CartridgeMSXMUSIC.prototype=wmsx.Slot.base,wmsx.CartridgeMSXMUSIC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeMSXMUSIC;return c.loadState(a),c},wmsx.CartridgeFMPAC=function(a){"use strict";function b(){k&&(1&i?m.connect(k):m.disconnect(k))}function c(a,b){g=a;for(var c=wmsx.CartridgePAC.DATA_FILE_IDENTIFIER.length,d=0,f=e.length-2;d=16384&&a<=24573&&(e[a-16384]=c,l||(l=!0,h.fireCartridgesModifiedStateUpdate()))},this.read=function(a){return 32758===a?i:32759===a?j+16384>>14:f?a>=16384&&a<=24575?e[a-16384]:255:a>=16384&&a<32768?d[j+a]:255};var d;this.bytes=null;var e,f;this.sram=null;var g,h,i,j,k,l=!1;this.rom=null,this.format=wmsx.SlotFormats.FMPAC;var m=new wmsx.YM2413Audio("FM-PAC");this.opll=m,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(d),b1:j,fe:i,sa:f,s:wmsx.Util.compressInt8BitArrayToStringBase64(e),sn:g,fm:m.saveState(),d:l}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),d=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,j=a.b1,i=a.fe,f=a.sa,e=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,e),g=a.sn,m.loadState(a.fm),l=!!a.d,b()},a&&function(b){b.rom=a,d=wmsx.Util.asNormalArray(a.content),b.bytes=d,e=wmsx.Util.arrayFill(new Array(8192),0),b.sram=e}(this)},wmsx.CartridgeFMPAC.prototype=wmsx.Slot.base,wmsx.CartridgeFMPAC.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeFMPAC;return c.loadState(a),c},wmsx.CartridgeMoonSound=function(a){"use strict";this.connect=function(a){c.connect(a)},this.disconnect=function(a){c.disconnect(a)},this.powerOn=function(){c.powerOn(),this.reset()},this.powerOff=function(){c.powerOff()},this.reset=function(){c.reset()},this.opl4ReadMemory=function(a){return b[4194303&a]},this.opl4WriteMemory=function(a,c){(4194303&a)<2097152||(b[4194303&a]=c)};var b;this.bytes=null,this.rom=null,this.format=wmsx.SlotFormats.MoonSound;var c=new wmsx.OPL4Audio("MoonSound",this);this.opl4=c,this.saveState=function(){var a=this.lightState();return{f:this.format.name,r:this.rom.saveState(),b:a?null:wmsx.Util.compressInt8BitArrayToStringBase64(b),ra:a?wmsx.Util.compressInt8BitArrayToStringBase64(b,2097152,2097152):null,opl4:c.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),a.b?b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b):(this.rom.reloadEmbeddedContent(),b||(b=new Array(4194304)),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.ra,b,!0,null,2097152),wmsx.Util.arrayCopy(this.rom.content,0,b)),this.bytes=b,c.loadState(a.opl4)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content,0,4194304),wmsx.Util.arrayFill(b,0,2097152),c.bytes=b}(this)},wmsx.CartridgeMoonSound.prototype=wmsx.Slot.base,wmsx.CartridgeMoonSound.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeMoonSound;return c.loadState(a),c},wmsx.CartridgeExtraPSG=function(a){"use strict";this.connect=function(a){b.setAudioSocket(a.getAudioSocket()),b.connectBus(a.bus)},this.disconnect=function(a){b.disconnectBus(a.bus)},this.powerOn=function(){b.powerOn()},this.powerOff=function(){b.powerOff()},this.reset=function(){b.reset()};var b=new wmsx.PSG(null,!0);this.rom=null,this.format=wmsx.SlotFormats.ExtraPSG,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),p:b.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b.loadState(a.p)},a&&function(b){b.rom=a}(this)},wmsx.CartridgeExtraPSG.prototype=wmsx.Slot.base,wmsx.CartridgeExtraPSG.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeExtraPSG;return c.loadState(a),c},wmsx.CartridgeGameMaster2=function(a){"use strict";this.connect=function(a){h=a.getCartridgeSocket()},this.getDataDesc=function(){return"SRAM"},this.loadData=function(a,b){if(8192!==b.length)return null;for(var c=0;c<8192;++c)f[c]=b[c];return g=a,b},this.getDataToSave=function(){i=!1,h.fireCartridgesModifiedStateUpdate();var a=new Uint8Array(f);return{fileName:g||"GameMaster2.sram",content:a,desc:this.getDataDesc()}},this.dataModified=function(){return i},this.powerOn=function(){this.reset()},this.reset=function(){c=1,d=2,e=3},this.write=function(a,b){if(!(a<24576||a>=49152))return a<28672?void(c=b):a>=32768&&a<36864?void(d=b):a>=40960&&a<45056?void(e=b):void(a>=45056&&16&e&&(f[((32&e)<<7)+a-45056]=b,i||(i=!0,h.fireCartridgesModifiedStateUpdate())))},this.read=function(a){switch(57344&a){case 16384:return b[a-16384];case 24576:return 16&c?f[((32&c)<<7)+(a-24576&4095)]:b[((15&c)<<13)+a-24576];case 32768:return 16&d?f[((32&d)<<7)+(a-32768&4095)]:b[((15&d)<<13)+a-32768];case 40960:return 16&e?f[((32&e)<<7)+(a-40960&4095)]:b[((15&e)<<13)+a-40960];default:return 255}};var b;this.bytes=null;var c,d,e,f;this.sram=null;var g,h,i=!1;this.rom=null,this.format=wmsx.SlotFormats.GameMaster2,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c,b3:d,b4:e,s:wmsx.Util.compressInt8BitArrayToStringBase64(f),sn:g,d:i}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=a.b3,e=a.b4,f=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,f),this.sram=f,g=a.sn,i=!!a.d},a&&function(c){c.rom=a, -b=wmsx.Util.asNormalArray(a.content),c.bytes=b,f=wmsx.Util.arrayFill(new Array(8192),0),c.sram=f}(this)},wmsx.CartridgeGameMaster2.prototype=wmsx.Slot.base,wmsx.CartridgeGameMaster2.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeGameMaster2;return c.loadState(a),c},wmsx.CartridgeASCII8KSRAM=function(a,b){"use strict";this.connect=function(a){n=a.getCartridgeSocket()},this.getDataDesc=function(){return"SRAM"},this.loadData=function(a,b){var c=l+1;if(b.length!==c)return null;for(var d=0;d=49152))return a<26624?void(d=b):a<28672?void(e=b):a<30720?void(f=b):a<32768?void(g=b):a<40960&&f&j?(k[((3&f)<<13)+a-32768&l]=b,void(o||(o=!0,n.fireCartridgesModifiedStateUpdate()))):void(g&j&&(k[((3&g)<<13)+a-40960&l]=b,o||(o=!0,n.fireCartridgesModifiedStateUpdate())))},this.read=function(a){switch(57344&a){case 16384:return d&j?k[((3&d)<<13)+a-16384&l]:c[((d&i)%h<<13)+a-16384];case 24576:return e&j?k[((3&e)<<13)+a-24576&l]:c[((e&i)%h<<13)+a-24576];case 32768:return f&j?k[((3&f)<<13)+a-32768&l]:c[((f&i)%h<<13)+a-32768];case 40960:return g&j?k[((3&g)<<13)+a-40960&l]:c[((g&i)%h<<13)+a-40960];default:return 255}};var c;this.bytes=null;var d,e,f,g,h,i,j,k;this.sram=null;var l,m,n,o=!1;this.rom=null,this.format=b,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c),b1:d,b2:e,b3:f,b4:g,n:h,rsm:i,s:wmsx.Util.compressInt8BitArrayToStringBase64(k),sn:m,ssm:j,d:o}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.b1,e=a.b2,f=a.b3,g=a.b4,h=a.n,i=a.rsm,k=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,k),this.sram=k,l=k.length-1,m=a.sn,j=a.ssm,o=!!a.d},a&&function(d){d.rom=a,c=wmsx.Util.asNormalArray(a.content),d.bytes=c,h=c.length/8192|0;var e=b===wmsx.SlotFormats.KoeiSRAM32?32768:b===wmsx.SlotFormats.ASCII16SRAM2?2048:8192;l=e-1,k=wmsx.Util.arrayFill(new Array(e),0),d.sram=k;var f=Math.max(32,1<=24576&&a<26624?void(d=b):a>=28672&&a<30720?void(e=b):void(a>=32768&&a<49152&&e&h&&(i[a-32768&j]=b,m||(m=!0,l.fireCartridgesModifiedStateUpdate())))},this.read=function(a){switch(49152&a){case 16384:return d&h?i[a-16384&j]:c[((d&g)%f<<14)+a-16384];case 32768:return e&h?i[a-32768&j]:c[((e&g)%f<<14)+a-32768];default:return 255}};var c;this.bytes=null;var d,e,f,g,h,i;this.sram=null;var j,k,l,m=!1;this.rom=null,this.format=b,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(c),b1:d,b2:e,n:f,rsm:g,s:wmsx.Util.compressInt8BitArrayToStringBase64(i),sn:k,ssm:h,d:m}},this.loadState=function(a){this.format=wmsx.SlotFormats[a.f],this.rom=wmsx.ROM.loadState(a.r),c=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.b1,e=a.b2,f=a.n,g=a.rsm,i=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,i),this.sram=i,j=i.length-1,k=a.sn,h=a.ssm,m=!!a.d},a&&function(d){d.rom=a,c=wmsx.Util.asNormalArray(a.content),d.bytes=c,f=c.length/16384|0;var e=b===wmsx.SlotFormats.ASCII16SRAM2?2048:8192;j=e-1,i=wmsx.Util.arrayFill(new Array(e),0),d.sram=i;var k=1<=28672&&i?b[(a<30720?g:h)+a]:b[d+a];case 32768:return b[e+a];case 40960:return b[f+a];default:return 255}};var b;this.bytes=null;var c,d,e,f,g,h,i,j;this.sram=null;var k,l,m,n=!1;this.rom=null,this.format=wmsx.SlotFormats.Halnote,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b1:c,b2:d,b3:e,b4:f,sb1:g,sb2:h,sbe:i,s:wmsx.Util.compressInt8BitArrayToStringBase64(j),se:k,sn:l,d:n}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b1,d=a.b2,e=a.b3,f=a.b4,g=a.sb1,h=a.sb2,i=a.sbe,j=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.s,j),this.sram=j,k=a.se,l=a.sn,n=!!a.d},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,j=wmsx.Util.arrayFill(new Array(16384),0),c.sram=j}(this)},wmsx.CartridgeHalnote.prototype=wmsx.Slot.base,wmsx.CartridgeHalnote.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeHalnote;return c.loadState(a),c},wmsx.CartridgeMajutsushi=function(a){"use strict";this.connect=function(a){g.setAudioSocket(a.getAudioSocket()),g.connectAudio()},this.disconnect=function(a){g.disconnectAudio()},this.powerOn=function(){this.reset(),g.connectAudio()},this.powerOff=function(){g.disconnectAudio(),this.reset()},this.reset=function(){c=d=e=-16384,g.reset()},this.write=function(a,b){a>=20480&&a<24575?g.setSampleValue(b):a>=24576&&a<32767?c=(b%f<<13)-24576:a>=32768&&a<40959?d=(b%f<<13)-32768:a>=40960&&a<49151&&(e=(b%f<<13)-40960)},this.read=function(a){switch(57344&a){case 16384:return b[a-16384];case 24576:return b[c+a];case 32768:return b[d+a];case 40960:return b[e+a];default:return 255}};var b;this.bytes=null;var c,d,e,f,g=new wmsx.PCM8BitAudio;this.rom=null,this.format=wmsx.SlotFormats.Majutsushi,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),b2:c,b3:d,b4:e,n:f,p:g.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c=a.b2,d=a.b3,e=a.b4,f=a.n,g.loadState(a.p)},a&&function(c){c.rom=a,b=wmsx.Util.asNormalArray(a.content),c.bytes=b,f=b.length/8192|0}(this)},wmsx.CartridgeMajutsushi.prototype=wmsx.Slot.base, -wmsx.CartridgeMajutsushi.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeMajutsushi;return c.loadState(a),c},wmsx.CartridgeSynthesizer=function(a){"use strict";this.connect=function(a){c.setAudioSocket(a.getAudioSocket()),c.connectAudio()},this.disconnect=function(a){c.disconnectAudio()},this.powerOn=function(){this.reset(),c.connectAudio()},this.powerOff=function(){c.disconnectAudio(),this.reset()},this.reset=function(){c.reset()},this.write=function(a,b){16384==(49168&a)&&c.setSampleValue(b)},this.read=function(a){return a>=16384&&a<49152?b[a-16384]:255};var b;this.bytes=null;var c=new wmsx.PCM8BitAudio;this.rom=null,this.format=wmsx.SlotFormats.Synthesizer,this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:wmsx.Util.compressInt8BitArrayToStringBase64(b),p:c.saveState()}},this.loadState=function(a){this.rom=wmsx.ROM.loadState(a.r),b=wmsx.Util.uncompressStringBase64ToInt8BitArray(a.b,b),this.bytes=b,c.loadState(a.p)},a&&function(c){c.rom=a,b=wmsx.Util.arrayFill(new Array(32768),255),c.bytes=b;for(var d=a.content.length,e=0;e<32768;++e)b[e]=a.content[e%d]}(this)},wmsx.CartridgeSynthesizer.prototype=wmsx.Slot.base,wmsx.CartridgeSynthesizer.recreateFromSaveState=function(a,b){var c=b||new wmsx.CartridgeSynthesizer;return c.loadState(a),c},wmsx.MachineTypeSocket=function(a){"use strict";this.getMachine=function(){return a.machineName},this.getMachineLang=function(){return WMSX.MACHINES_CONFIG[a.machineName].LANG||"en"},this.changeMachine=function(b){if(a.machineName!==b){if(WMSX.MEDIA_CHANGE_DISABLED)return b.showOSD("Machine change is disabled!",!0,!0);var c=WMSX.MACHINES_CONFIG[b];if(c){var d=a.powerIsOn;a.powerOff();var e=a.systemPause(!0);WMSX.MACHINE=b,wmsx.Configurator.applyFinalConfig(),a.updateMachineType(),new wmsx.MultiDownloader(wmsx.Configurator.slotURLSpecs(),function(){a.getExtensionsSocket().refreshSlotsFromConfig(function(){a.getSavestateSocket().externalStateChange(),a.showOSD((c.DESC||c.DESCX)+" machine activated",!0),e||a.systemPause(!1),d&&a.powerOn()})},function(a){wmsx.Util.message(a.errorMessage)}).start()}}},this.addMachineTypeStateListener=function(a,c){b.indexOf(a)<0&&(b.push(a),c||a.machineTypeStateUpdate())},this.fireMachineTypeStateUpdate=function(){for(var a=0;a>(a>>14<<1)&3){case 0:return slot0;case 1:return slot1;case 2:return slot2;case 3:return slot3}}function create(){slot0=slot1=slot2=slot3=slotModules=slotEmpty,slots=[slot0,slot1,slot2,slot3,slotModules],devicesInputPorts=wmsx.Util.arrayFill(new Array(256),deviceInputMissing),devicesOutputPorts=wmsx.Util.arrayFill(new Array(256),deviceOutputMissing),self.slots=slots,self.devicesInputPorts=devicesInputPorts,self.devicesOutputPorts=devicesOutputPorts}var self=this;this.powerOn=function(){this.setPrimarySlotConfig(0);for(var a=0;a<5;a++)slots[a].powerOn()},this.powerOff=function(){for(var a=0;a<5;a++)slots[a].powerOff()},this.reset=function(){this.setPrimarySlotConfig(0);for(var a=0;a<5;a++)slots[a].reset()},this.refreshConnect=function(){for(var a=0;a<5;++a)slots[a].refreshConnect()},this.insertSlot=function(a,b){if(a=a||slotEmpty,slots[b]!==a)switch(slots[b].disconnect(machine),slots[b]=a,slots[b].connect(machine),b){case 0:return void(slot0=a);case 1:return void(slot1=a);case 2:return void(slot2=a);case 3:return void(slot3=a);case 4:return void(slotModules=a)}},this.getSlot=function(a){return slots[a]},this.getSlotForAddress=getSlotForAddress,this.read=function(a){switch(primarySlotConfig>>(a>>14<<1)&3){case 0:return slot0.read(a);case 1:return slot1.read(a);case 2:return slot2.read(a);case 3:return slot3.read(a)}},this.write=function(a,b){switch(primarySlotConfig>>(a>>14<<1)&3){case 0:return void slot0.write(a,b);case 1:return void slot1.write(a,b);case 2:return void slot2.write(a,b);case 3:return void slot3.write(a,b)}},this.writeWithBusMonitor=function(a,b){switch(writeMonitor&&writeMonitor(a,b),primarySlotConfig>>(a>>14<<1)&3){case 0:return void slot0.write(a,b);case 1:return void slot1.write(a,b);case 2:return void slot2.write(a,b);case 3:return void slot3.write(a,b)}},this.input=function(a){return devicesInputPorts[255&a](a)},this.output=function(a,b){return devicesOutputPorts[255&a](b,a)},this.setPrimarySlotConfig=function(a){ -primarySlotConfig=a},this.getPrimarySlotConfig=function(){return primarySlotConfig},this.cpuExtensionBegin=function(a){if(a.extNum<240)return getSlotForAddress(a.extPC).cpuExtensionBegin(a);var b=cpuExtensionHandlers[a.extNum];return b?b.cpuExtensionBegin(a):void 0},this.cpuExtensionFinish=function(a){if(a.extNum<240)return getSlotForAddress(a.extPC).cpuExtensionFinish(a);var b=cpuExtensionHandlers[a.extNum];return b?b.cpuExtensionFinish(a):void 0},this.setCpuExtensionHandler=function(a,b){cpuExtensionHandlers[a]=b},this.connectInputDevice=function(a,b){devicesInputPorts[a]=b},this.connectOutputDevice=function(a,b){devicesOutputPorts[a]=b},this.disconnectInputDevice=function(a,b){b&&devicesInputPorts[a]!==b||(devicesInputPorts[a]=deviceInputMissing)},this.disconnectOutputDevice=function(a,b){b&&devicesOutputPorts[a]!==b||(devicesOutputPorts[a]=deviceOutputMissing)},this.setWriteMonitor=function(a){(writeMonitor=a)&&(this.write=this.writeWithBusMonitor)};var slots,slot0,slot1,slot2,slot3,slotModules,primarySlotConfig=0,slotEmpty=wmsx.SlotEmpty.singleton,deviceInputMissing=wmsx.DeviceMissing.inputPort,deviceOutputMissing=wmsx.DeviceMissing.outputPort,devicesInputPorts,devicesOutputPorts,writeMonitor,cpuExtensionHandlers={};this.saveState=function(){return{p:primarySlotConfig,s0:slot0.saveState(),s1:slot1.saveState(),s2:slot2.saveState(),s3:slot3.saveState(),sM:slotModules.saveState()}},this.loadState=function(a){this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s0,slot0),0),this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s1,slot1),1),this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s2,slot2),2),this.insertSlot(wmsx.SlotCreator.recreateFromSaveState(a.s3,slot3),3),this.insertSlot(a.sM?wmsx.SlotCreator.recreateFromSaveState(a.sM,slotModules):slotEmpty,4),this.setPrimarySlotConfig(a.p)},init(),this.eval=function(str){return eval(str)}},wmsx.Machine=function(){"use strict";function init(){socketsCreate(),mainComponentsCreate(),computeBasicAutoRunCommandParameters()}function getSlot(a){"number"==typeof a&&(a=[a]);var b=a[0],c=a[1],d=bus.getSlot(b);return c>=0?d=d.isExpanded()?d.getSubSlot(c):null:d.isExpanded()&&(d=d.getSubSlot(0)),d}function getSlotDesc(a){var b="number"==typeof a?a:a[0];return b>3?void 0:b.toString()+(bus.getSlot(b).isExpanded()?"-"+(a[1]||0):"")}function insertSlot(a,b){"number"==typeof b&&(b=[b]);var c=!a||a===EMPTY_SLOT;if(!c||-1===e||(getSlot(b)||EMPTY_SLOT)!==EMPTY_SLOT){var d=b[0],e=b[1],f=bus.getSlot(d);if(e>=0){if(!f.isExpanded()){var g=f;f=2===d?new wmsx.SlotExpandedSpecial:4===d?new wmsx.SlotExpandedModules:new wmsx.SlotExpanded,bus.insertSlot(f,d),g!==EMPTY_SLOT&&e>0&&f.insertSubSlot(g,0)}f.insertSubSlot(a,e),c&&f.isAllEmpty()&&bus.insertSlot(a,d)}else f.isExpanded()&&-1!==e?(f.insertSubSlot(a,0),c&&f.isAllEmpty()&&bus.insertSlot(a,d)):bus.insertSlot(a,d)}}function setVideoStandard(a,b,c){!1!==c&&self.showOSD((videoStandardIsAuto?"AUTO: ":"FORCED: ")+a.desc,!!c),(b||videoStandard!==a)&&(videoStandard=a,vdp.setVideoStandard(videoStandard),videoClockUpdateSpeed())}function setVideoStandardAuto(a){videoStandardIsAuto=!0;var b=wmsx.VideoStandard.NTSC;videoStandardSoft?b=videoStandardSoft:bios&&(bios.setVideoStandardUseOriginal(),b=bios.originalVideoStandard),setVideoStandard(b,!0,a)}function setVideoStandardForced(a){videoStandardIsAuto=!1,bios&&bios.setVideoStandardForced(a),setVideoStandard(a,!1,!0)}function setVSynchMode(a,b){(vSynchMode!==a||b)&&(vSynchMode=a<0?a:a%2,vdp.setVSynchMode(vSynchMode),videoClockUpdateSpeed())}function vSynchModeToggle(){if(vSynchMode<0||-1===videoClockSocket.getVSynchNativeFrequency())return self.showOSD("VSync is disabled / unsupported",!0,!0);setVSynchMode(vSynchMode+1),self.showOSD("VSync: "+(1===vSynchMode?"Auto ("+(videoClockSocket.isVSynchActive()?"ON":"OFF")+")":0===vSynchMode?"OFF":"DISABLED"),!0),WMSX.userPreferences.current.vSynch=vSynchMode,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save()}function saveState(a){var b={cfg:wmsx.Configurator.saveState(),mn:self.machineName,mt:self.machineType,b:bus.saveState(),rc:rtc.saveState(),sf:syf.saveState(),pp:ppi.saveState(),ps:psg.saveState(),vd:vdp.saveState(a),c:cpu.saveState(),va:videoStandardIsAuto,vs:videoStandard.name,ctm:cpuTurboMode,vtm:vdpTurboMode,s:speedControl,br:basicAutoRunDone,bc:basicAutoRunCommand||"",vss:videoStandardSoft&&videoStandardSoft.name,dd:diskDriveSocket.getDrive().saveState(),ct:cassetteSocket.getDeck().saveState(),cs:controllersSocket.saveState()};return a&&(b.vy=vSynchMode,b.pw=self.powerIsOn,b.up=userPaused,b.upf=userPauseMoreFrames),b}function loadState(a){wmsx.Configurator.loadState(a,a.cfg),void 0!==a.vy&&setVSynchMode(a.vy,!0),void 0!==a.pw&&self.powerIsOn!==a.pw&&(a.pw?self.powerOn(!0):self.powerOff()),void 0!==a.up&&self.userPause(a.up),void 0!==a.upf&&(userPauseMoreFrames=a.upf),self.machineName=a.mn,self.machineType=a.mt,videoStandardIsAuto=a.va,setVideoStandard(wmsx.VideoStandard[a.vs]),videoStandardSoft=a.vss&&wmsx.VideoStandard[a.vss],speedControl=a.s||1,1===speedControl&&(speedControl=defaultSpeed),basicAutoRunDone=!!a.br,void 0!==a.bc&&(basicAutoRunCommand=a.bc),videoClockUpdateSpeed(),cpu.loadState(a.c),vdp.loadState(a.vd),psg.loadState(a.ps),ppi.loadState(a.pp),rtc.loadState(a.rc),syf.loadState(a.sf),bus.loadState(a.b),diskDriveSocket.getDrive().loadState(a.dd),cassetteSocket.getDeck().loadState(a.ct),a.cs&&controllersSocket.loadState(a.cs),machineTypeSocket.fireMachineTypeStateUpdate(),cartridgeSocket.fireCartridgesStateUpdate(),machineControlsSocket.firePowerAndUserPauseStateUpdate(),audioSocket.flushAllSignals(),diskDriveSocket.fireInterfacesChangeUpdate(),cpuTurboMode=void 0!==a.ctm?a.ctm:cpu.getCPUTurboMulti()>1?cpu.getCPUTurboMulti():0,vdpTurboMode=void 0!==a.vtm?a.vtm:vdp.getVDPTurboMulti()>1?vdp.getVDPTurboMulti():0,biosSocket.turboDriverTurboModesUpdate(),saveStateSocket.externalStateChange()}function videoClockUpdateSpeed(){var a=vdp.getDesiredVideoPulldown();videoClockSocket.setVSynch(1===vSynchMode);var b=a.frequency*(alternateSpeed||speedControl)|0;videoClockSocket.setFrequency(b,a.divider),audioSocket.setFps(b/a.divider),rtc.setFps(a.frequency/a.divider)}function mainComponentsCreate(){self.cpu=cpu=new wmsx.Z80,self.vdp=vdp=new wmsx.VDP(self,cpu),self.psg=psg=new wmsx.PSG(controllersSocket,!1),self.ppi=ppi=new wmsx.PPI(psg.getAudioChannel(),controllersSocket),self.rtc=rtc=new wmsx.RTC,self.syf=syf=new wmsx.SystemFlags,self.bus=bus=new wmsx.BUS(self,cpu),cpu.connectBus(bus),ppi.connectBus(bus),vdp.connectBus(bus),psg.setAudioSocket(audioSocket),psg.connectBus(bus),rtc.connectBus(bus),syf.connectBus(bus)}function socketsCreate(){machineTypeSocket=new wmsx.MachineTypeSocket(self),videoClockSocket=new VideoClockSocket,slotSocket=new SlotSocket,biosSocket=new BIOSSocket,extensionsSocket=new wmsx.ExtensionsSocket(self),cartridgeSocket=new CartridgeSocket,expansionSocket=new ExpansionSocket,controllersSocket=new ControllersSocket,saveStateSocket=new SaveStateSocket,cassetteSocket=new CassetteSocket,audioSocket=new AudioSocket,diskDriveSocket=new DiskDriveSocket,machineControlsSocket=new MachineControlsSocket}function computeBasicAutoRunCommandParameters(){basicAutoRunCommand=(WMSX.BASIC_ENTER?WMSX.BASIC_ENTER+"\r":"")+(WMSX.BASIC_TYPE||""),WMSX.BASIC_RUN?basicAutoRunCommand='\r\r\rRUN "'+WMSX.BASIC_RUN+'"\r'+basicAutoRunCommand:WMSX.BASIC_LOAD?basicAutoRunCommand='\r\r\rLOAD "'+WMSX.BASIC_LOAD+'"\r'+basicAutoRunCommand:WMSX.BASIC_BRUN?basicAutoRunCommand='\r\r\rBLOAD "'+WMSX.BASIC_BRUN+'",r\r'+basicAutoRunCommand:WMSX.BASIC_BLOAD&&(basicAutoRunCommand='\r\r\rBLOAD "'+WMSX.BASIC_BLOAD+'"\r'+basicAutoRunCommand)}function typeBasicAutoRunCommand(){diskDriveSocket.hasAnyMediaInserted()||cartridgeSocket.hasAnyMediaInserted()||cassetteSocket.typeAutoRunCommand(),basicAutoRunDone||(basicAutoRunCommand&&biosSocket.keyboardExtensionTypeString(basicAutoRunCommand), -basicAutoRunDone=!0,basicAutoRunCommand=void 0)}function controlStateChanged(a,b,c,d){if(!isLoading){if(a===controls.FAST_SPEED&&!c)return void(b&&alternateSpeed!==SPEED_FAST?(alternateSpeed=SPEED_FAST,videoClockUpdateSpeed(),self.showOSD("FAST FORWARD",!0)):b||alternateSpeed!==SPEED_FAST||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)));if(a===controls.FAST_SPEED&&c)return void(b&&alternateSpeed!==SPEED_SLOW?(alternateSpeed=SPEED_SLOW,videoClockUpdateSpeed(),self.showOSD("SLOW MOTION",!0)):b||alternateSpeed!==SPEED_SLOW||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)));if(b)switch(a){case controls.POWER:c?self.powerIsOn&&self.reset():self.powerIsOn?self.powerOff():self.userPowerOn(!1);break;case controls.POWER_OFF:self.powerIsOn&&self.powerOff();break;case controls.PAUSE:return self.userPause(!userPaused,c),void self.getVideoOutput().showOSD(userPaused?"PAUSE"+(c?" with AUDIO ON":""):"RESUME",!0);case controls.FRAME:return void(userPaused&&(userPauseMoreFrames=1));case controls.INC_SPEED:case controls.DEC_SPEED:case controls.NORMAL_SPEED:case controls.MIN_SPEED:var e=SPEEDS.indexOf(speedControl);return a===controls.INC_SPEED&&e0?--e:a===controls.MIN_SPEED?e=0:a===controls.NORMAL_SPEED&&(e=SPEEDS.indexOf(1)),speedControl=SPEEDS[e],self.showOSD("Speed: "+(100*speedControl|0)+"%",!0),void videoClockUpdateSpeed();case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:saveStateSocket.saveState(255&a);break;case controls.SAVE_STATE_FILE:saveStateSocket.saveStateFile();break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:saveStateSocket.loadState(255&a);break;case controls.TYPE_STRING:biosSocket.keyboardExtensionTypeString(d);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(c?wmsx.VideoStandard.PAL:wmsx.VideoStandard.NTSC):videoStandard==wmsx.VideoStandard.NTSC?c?setVideoStandardAuto(!0):setVideoStandardForced(wmsx.VideoStandard.PAL):c?setVideoStandardForced(wmsx.VideoStandard.NTSC):setVideoStandardAuto(!0);break;case controls.VSYNCH:vSynchModeToggle();break;case controls.CPU_TURBO_MODE:self.toggleCPUTurboMode(c);break;case controls.VDP_TURBO_MODE:self.toggleVDPTurboMode(c);break;case controls.DEBUG:var f=vdp.toggleDebugModes(c);wmsx.DeviceMissing.setDebugMode(f);break;case controls.SPRITE_MODE:vdp.toggleSpriteDebugModes(c);break;case controls.DEFAULTS:self.setDefaults(),self.showOSD("Default Settings",!0)}}}function VideoClockSocket(){this.connectClock=function(b){a=b},this.getVSynchNativeFrequency=function(){return a.getVSynchNativeFrequency()},this.setVSynch=function(b){a.setVSynch(b)},this.setFrequency=function(b,c){a.setFrequency(b,c)},this.isVSynchActive=function(){return a.isVSynchActive()};var a}function BIOSSocket(){this.insertBIOS=function(a,b){slotSocket.insertSlot(a,WMSX.BIOS_SLOT,b)},this.insertBIOSEXT=function(a,b){slotSocket.insertSlot(a,WMSX.BIOSEXT_SLOT,b)},this.keyboardExtensionTypeString=function(a){bios&&bios.getKeyboardExtension().typeString(a)},this.keyboardExtensionCancelTypeString=function(){bios&&bios.getKeyboardExtension().cancelTypeString()},this.turboDriverTurboModesUpdate=function(){bios&&bios.getTurboDriver().turboModesUpdate()},this.setMachineTurboModesStateListener=function(b){a=b,a.machineTurboModesStateUpdate()},this.fireMachineTurboModesStateUpdate=function(){a&&a.machineTurboModesStateUpdate()};var a}function ExpansionSocket(){this.insertExpansion=function(a,b,c){var d=b?WMSX.EXPANSION2_SLOT:WMSX.EXPANSION1_SLOT;a!==slotSocket.slotInserted(d)&&(slotSocket.insertSlot(a,d,c),cartridgeSocket.fireCartridgesStateUpdate(),self.showOSD("Expansion "+(1===b?"2":"1")+" (slot "+getSlotDesc(d)+"): "+(a?a.rom.source:"EMPTY"),!0))},this.expansionInserted=function(a){return slotSocket.slotInserted(a?WMSX.EXPANSION2_SLOT:WMSX.EXPANSION1_SLOT)}}function CartridgeSocket(){this.insertCartridge=function(a,b,c,d){var e=1===b?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT;slotSocket.insertSlot(a,e,c,!0),this.fireCartridgesStateUpdate(),d||self.showOSD("Cartridge "+(1===b?"2":"1")+": "+(a?a.rom.source:"EMPTY"),!0)},this.removeCartridge=function(a,b){var c=1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT;return null===slotSocket.slotInserted(c)?(self.showOSD("No Cartridge in Slot "+(1===a?"2":"1"),!0,!0),!1):(slotSocket.insertSlot(null,c,b,!0),this.fireCartridgesStateUpdate(),self.showOSD("Cartridge "+(1===a?"2":"1")+" removed",!0),!0)},this.cartridgeInserted=function(a){return slotSocket.slotInserted(1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT)},this.dataOperationNotSupportedMessage=function(a,b,c){var d=1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT,e=slotSocket.slotInserted(d);return null===e?(c||self.showOSD("No Cartridge in Slot "+(1===a?"2":"1"),!0,!0),!0):!e.getDataDesc()&&(c||self.showOSD("Data "+(b?"Saving":"Loading")+" not supported for Cartridge "+(1===a?"2":"1"),!0,!0),!0)},this.loadCartridgeData=function(a,b,c){var d=1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT,e=slotSocket.slotInserted(d);if(e&&e.loadData(wmsx.Util.leafFilename(b),c))return self.showOSD(e.getDataDesc()+" loaded in Cartridge "+(1===a?"2":"1"),!0),c},this.getCartridgeData=function(a){if(!this.dataOperationNotSupportedMessage(a,!0,!1)){return slotSocket.slotInserted(1===a?WMSX.CARTRIDGE2_SLOT:WMSX.CARTRIDGE1_SLOT).getDataToSave()}},this.fireCartridgesStateUpdate=function(){for(var a=0;a=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(wmsx.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){wmsx.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse32=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pauseAudio()},this.unpauseAudio=function(){a&&a.unpauseAudio()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}function CassetteSocket(){this.connectDeck=function(b){a=b},this.connectDriver=function(a){b=a}, -this.getDeck=function(){return a},this.getDriver=function(){return b},this.autoPowerCycle=function(a){b&&b.currentAutoRunCommand()&&(self.powerIsOn||a||self.userPowerOn(!0))},this.typeAutoRunCommand=function(){b&&b.typeCurrentAutoRunCommand()};var a,b}function DiskDriveSocket(){this.connectDrive=function(a){b=a},this.getDrive=function(){return b},this.autoPowerCycle=function(a){self.powerIsOn||a||self.userPowerOn(!1)},this.diskInterfaceConnected=function(a){c.add(a),this.fireInterfacesChangeUpdate()},this.diskInterfaceDisconnected=function(a){c.delete(a),this.fireInterfacesChangeUpdate()},this.hardDiskInterfaceConnected=function(a){d.add(a),this.fireInterfacesChangeUpdate()},this.hardDiskInterfaceDisconnected=function(a){d.delete(a),this.fireInterfacesChangeUpdate()},this.dos2ROMConnected=function(a){e.add(a)},this.dos2ROMDisconnected=function(a){e.delete(a)},this.hasDiskInterface=function(){return c.size>0},this.hasHardDiskInterface=function(){return d.size>0},this.hasDOS2=function(){return e.size>0||d.size>0},this.setInterfacesChangeListener=function(b){a=b,this.fireInterfacesChangeUpdate()},this.fireInterfacesChangeUpdate=function(){a&&a.diskInterfacesStateUpdate(this.hasDiskInterface(),this.hasHardDiskInterface())},this.hasAnyMediaInserted=function(){return this.getDrive().hasAnyMediaInserted()};var a,b,c=new Set,d=new Set,e=new Set}function ControllersSocket(){this.connectControls=function(b){a=b},this.readKeyboardPort=function(b){return a.readKeyboardPort(b)},this.readControllerPort=function(b){return a.readControllerPort(b)},this.writeControllerPin8Port=function(b,c){a.writeControllerPin8Port(b,c)},this.releaseControllers=function(){a.releaseControllers()},this.resetControllers=function(){a.resetControllers()},this.getBUSCycles=function(){return cpu.getBUSCycles()},this.saveState=function(){return a.saveState()},this.loadState=function(b){a.loadState(b)};var a}function MachineControlsSocket(){this.controlStateChanged=function(a,b,c,d){controlStateChanged(a,b,c,d)},this.addPowerAndUserPauseStateListener=function(b){a.indexOf(b)>=0||(a.push(b),this.firePowerAndUserPauseStateUpdate())},this.firePowerAndUserPauseStateUpdate=function(){for(var b=0;b1};case controls.VDP_TURBO_MODE:return b=vdp.getVDPTurboMulti(),{label:self.getVDPTurboModeDesc(),active:1!==b};case controls.SPRITE_MODE:return c=vdp.getSpriteDebugModeQuickDesc(),{label:c,active:"Normal"!==c};case controls.VSYNCH:return{label:vSynchMode<0?"DISABL":vSynchMode?"Auto":"OFF",active:0===vSynchMode}}return{label:"Unknown",active:!1}};var a=[]}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.saveState=function(c){if(self.powerIsOn&&a){var d=self.systemPause(!0);self.showOSD("Saving State "+c,!0);var e=saveState();e.v=b,a.persistState(c,e,function(a){a?self.showOSD("State "+c+" saved",!0):self.showOSD("State "+c+" save FAILED!",!0,!0),d||self.systemPause(!1)})}},this.loadState=function(b){if(a){var d=self.systemPause(!0);self.showOSD("Loading State "+b,!0),a.retrieveState(b,function(a){a?c[a.v]?(self.powerIsOn?self.reset(!0):self.powerOn(!0),loadState(a),self.showOSD("State "+b+" loaded",!0)):self.showOSD("State "+b+" load failed. State version incompatible!",!0,!0):self.showOSD("State "+b+" not found!",!0,!0),d||self.systemPause(!1)})}},this.saveStateFile=function(){if(self.powerIsOn&&a){var c=self.systemPause(!0);self.showOSD("Saving State File",!0);var d=saveState();d.v=b,a.saveStateFile(d),c||self.systemPause(!1)}},this.loadStateFile=function(b){if(!a)return!1;self.showOSD("Loading State File",!0);var d=a.loadStateFile(b);return d?(wmsx.Util.log("State file loaded"),c[d.v]?(self.powerIsOn?self.reset(!0):self.powerOn(!0),loadState(d),self.showOSD("State File loaded",!0)):self.showOSD("State File load failed. State version incompatible!",!0,!0),!0):(self.showOSD(null,!0),!1)},this.externalStateChange=function(){a.externalStateChange()};var a,b=WMSX.STATE_VERSION,c=WMSX.STATE_VERSIONS_ACCEPTED}var self=this;this.socketsConnected=function(){self.updateMachineType(),self.setCPUTurboMode(cpuTurboMode),self.setVDPTurboMode(vdpTurboMode),self.setDefaults()},this.updateMachineType=function(){this.machineName=WMSX.MACHINE,this.machineType=WMSX.MACHINES_CONFIG[this.machineName].TYPE||3,vdp.setMachineType(this.machineType),rtc.setMachineType(this.machineType),syf.setMachineType(this.machineType),cpuTurboMode=1===WMSX.CPU_TURBO_MODE?2:WMSX.CPU_TURBO_MODE,vdpTurboMode=WMSX.VDP_TURBO_MODE,biosSocket.turboDriverTurboModesUpdate(),bus.refreshConnect(),machineTypeSocket.fireMachineTypeStateUpdate()},this.preStart=function(){extensionsSocket.refreshConfigFromSlots()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),syf&&syf.powerOn(),rtc&&rtc.powerOn(),ppi.powerOn(),psg.powerOn(),vdp.powerOn(),cpu.powerOn(),this.reset(a),this.powerIsOn=!0,a||machineControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){cpu.powerOff(),vdp.powerOff(),psg.powerOff(),ppi.powerOff(),rtc&&rtc.powerOff(),syf&&syf.powerOff(),bus.powerOff(),controllersSocket.resetControllers(),this.powerIsOn=!1,userPaused?this.userPause(!1):machineControlsSocket.firePowerAndUserPauseStateUpdate()},this.reset=function(a){videoStandardSoft=null,videoStandardIsAuto&&setVideoStandardAuto(),controllersSocket.resetControllers(),syf&&syf.reset(),rtc&&rtc.reset(),psg.reset(),vdp.reset(),cpu.reset(),bus.reset(),audioSocket.flushAllSignals(),fastBootFrames>0&&(a?fastBootCountdown>0&&(alternateSpeed=null,videoClockUpdateSpeed()):(fastBootCountdown=fastBootFrames,alternateSpeed=SPEED_FAST,videoClockUpdateSpeed()))},this.userPowerOn=function(a){if(!isLoading){if(!bios)return void this.getVideoOutput().showOSD("Insert BIOS!",!0,!0);this.powerOn(),a&&typeBasicAutoRunCommand()}},this.videoClockPulse=function(){fastBootCountdown>0&&--fastBootCountdown<=0&&(alternateSpeed=null,videoClockUpdateSpeed()),rtc.videoClockPulse(),bios&&bios.getKeyboardExtension().keyboardExtensionClockPulse(),self.powerIsOn&&(userPaused&&userPauseMoreFrames--<=0||(vdp.videoClockPulse(),audioSocket.audioFinishFrame()))},this.getMachineTypeSocket=function(){return machineTypeSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getSlotSocket=function(){return slotSocket},this.getBIOSSocket=function(){return biosSocket},this.getExtensionsSocket=function(){return extensionsSocket},this.getExpansionSocket=function(){return expansionSocket},this.getCartridgeSocket=function(){return cartridgeSocket},this.getMachineControlsSocket=function(){return machineControlsSocket},this.getControllersSocket=function(){return controllersSocket},this.getVideoOutput=function(){return vdp.getVideoOutput()},this.getAudioSocket=function(){return audioSocket},this.getSavestateSocket=function(){return saveStateSocket},this.getCassetteSocket=function(){return cassetteSocket},this.getDiskDriveSocket=function(){return diskDriveSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.setVideoStandardSoft=function(a){videoStandardSoft=a,videoStandardIsAuto&&videoStandard!==a?setVideoStandard(a,!1,!0):videoStandardIsAuto||videoStandard===a||self.showOSD("Cannot change Video Standard. Its FORCED: "+videoStandard.desc,!0,!0)},this.setBIOS=function(a){bios=a===EMPTY_SLOT?null:a,videoStandardSoft=null,setVideoStandardAuto()},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1, -userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),machineControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.vSynchSetSupported=function(a){var b=WMSX.userPreferences.current.vSynch;setVSynchMode(-1!==WMSX.SCREEN_VSYNC_MODE&&a?WMSX.SCREEN_VSYNC_MODE>=0?WMSX.SCREEN_VSYNC_MODE:null!==b&&b>=0?b:1:-1,!0)},this.toggleCPUTurboMode=function(a){a?this.setCPUTurboMode(cpuTurboMode<0?8:0===cpuTurboMode?-1:cpuTurboMode<=1.5?0:cpuTurboMode<=2?1.5:(0|cpuTurboMode)-1):this.setCPUTurboMode(0===cpuTurboMode?1.5:cpuTurboMode<1?0:cpuTurboMode<1.5?1.5:1+(0|cpuTurboMode)),this.showCPUTurboModeMessage()},this.setCPUTurboMode=function(a){cpuTurboMode=a<0||a>8?-1:1===a?2:a,biosSocket.turboDriverTurboModesUpdate()},this.getCPUTurboMode=function(){return cpuTurboMode},this.showCPUTurboModeMessage=function(){self.showOSD("CPU Turbo: "+this.getCPUTurboModeDesc(),!0)},this.getCPUTurboModeDesc=function(){var a=cpuTurboMode<0?"OFF ":0===cpuTurboMode?"Auto ":"",b=cpu.getCPUTurboMulti();return a+=(1!==b?b+"x ":"")+"("+cpu.getCPUTurboFreqDesc()+")"},this.toggleVDPTurboMode=function(a){a?this.setVDPTurboMode(vdpTurboMode<0?9:2===vdpTurboMode?0:vdpTurboMode-1):this.setVDPTurboMode(vdpTurboMode+1),self.showOSD("VDP Engine Turbo: "+this.getVDPTurboModeDesc(),!0)},this.setVDPTurboMode=function(a){vdpTurboMode=a<0||a>9?-1:1===a?2:a,biosSocket.turboDriverTurboModesUpdate()},this.getVDPTurboMode=function(){return vdpTurboMode},this.getVDPTurboModeDesc=function(){var a=vdpTurboMode<0?"OFF ":0===vdpTurboMode?"Auto ":9===vdpTurboMode?"Instant":"",b=vdp.getVDPTurboMulti();return a+=b>1&&b<9?b+"x ":""},this.setDefaults=function(){setVideoStandardAuto(!1),vdp.setDefaults(),speedControl=defaultSpeed,alternateSpeed=null,videoClockUpdateSpeed()},this.saveState=saveState,this.loadState=loadState,this.machineName=null,this.machineType=0,this.powerIsOn=!1;var speedControl=1,alternateSpeed=!1,defaultSpeed=WMSX.SPEED>0?WMSX.SPEED/100:1,isLoading=!1,basicAutoRunDone=!1,basicAutoRunCommand,cpu,bus,ppi,vdp,psg,rtc,syf,userPaused=!1,userPauseMoreFrames=0,systemPaused=!1,machineTypeSocket,videoClockSocket,slotSocket,biosSocket,extensionsSocket,expansionSocket,cartridgeSocket,saveStateSocket,cassetteSocket,diskDriveSocket,machineControlsSocket,controllersSocket,audioSocket,bios,videoStandard,videoStandardSoft,videoStandardIsAuto=!1,vSynchMode,fastBootFrames=WMSX.FAST_BOOT<=0?0:WMSX.FAST_BOOT>1?WMSX.FAST_BOOT:WMSX.BOOT_KEYS_FRAMES>0?WMSX.BOOT_KEYS_FRAMES:WMSX.BOOT_DURATION_AUTO,fastBootCountdown=0,cpuTurboMode=0,vdpTurboMode=0,EMPTY_SLOT=wmsx.SlotEmpty.singleton,SPEEDS=[.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.25,1.5,2,3,5,10],SPEED_FAST=10,SPEED_SLOW=.3,controls=wmsx.MachineControls;this.eval=function(str){return eval(str)},init()},wmsx.Machine.BASE_CPU_CLOCK=3584160,wmsx.KeyboardKeys={D0:{m:[0,0],key:"D0",c_en:"0",cs_en:")",cs_ja:" "},D1:{m:[0,1],key:"D1",c_en:"1",cs_en:"!"},D2:{m:[0,2],key:"D2",c_en:"2",cs_en:"@",cs_ja:'"'},D3:{m:[0,3],key:"D3",c_en:"3",cs_en:"#"},D4:{m:[0,4],key:"D4",c_en:"4",cs_en:"$"},D5:{m:[0,5],key:"D5",c_en:"5",cs_en:"%"},D6:{m:[0,6],key:"D6",c_en:"6",cs_en:"^",cs_ja:"&"},D7:{m:[0,7],key:"D7",c_en:"7",cs_en:"&",cs_ja:"'"},D8:{m:[1,0],key:"D8",c_en:"8",cs_en:"*",cs_ja:"("},D9:{m:[1,1],key:"D9",c_en:"9",cs_en:"(",cs_ja:")"},MINUS:{m:[1,2],key:"MINUS",c_en:"-",cs_en:"_",cs_ja:"="},EQUAL:{m:[1,3],key:"EQUAL",c_en:"=",cs_en:"+",c_ja:"^",cs_ja:"~"},BACKSLASH:{m:[1,4],key:"BACKSLASH",c_en:"\\",cs_en:"|",c_ja:"¥",cs_ja:"|"},OPEN_BRACKET:{m:[1,5],key:"OPEN_BRACKET",c_en:"[",cs_en:"{",c_ja:"@",cs_ja:"`"},CLOSE_BRACKET:{m:[1,6],key:"CLOSE_BRACKET",c_en:"]",cs_en:"}",c_ja:"[",cs_ja:"{"},SEMICOLON:{m:[1,7],key:"SEMICOLON",c_en:";",cs_en:":",cs_ja:"+"},QUOTE:{m:[2,0],key:"QUOTE",c_en:"'",cs_en:'"',c_ja:":",cs_ja:"*"},BACKQUOTE:{m:[2,1],key:"BACKQUOTE",c_en:"`",cs_en:"~",c_ja:"]",cs_ja:"}"},COMMA:{m:[2,2],key:"COMMA",c_en:",",cs_en:"<"},PERIOD:{m:[2,3],key:"PERIOD",c_en:".",cs_en:">"},SLASH:{m:[2,4],key:"SLASH",c_en:"/",cs_en:"?"},DEAD:{m:[2,5],key:"DEAD",c_en:"à",cs_en:"á",c_ja:" ",cs_ja:"_",cns_en:"à",cns_ja:"_"},A:{m:[2,6],key:"A",c_en:"A"},B:{m:[2,7],key:"B",c_en:"B"},C:{m:[3,0],key:"C",c_en:"C"},D:{m:[3,1],key:"D",c_en:"D"},E:{m:[3,2],key:"E",c_en:"E"},F:{m:[3,3],key:"F",c_en:"F"},G:{m:[3,4],key:"G",c_en:"G"},H:{m:[3,5],key:"H",c_en:"H"},I:{m:[3,6],key:"I",c_en:"I"},J:{m:[3,7],key:"J",c_en:"J"},K:{m:[4,0],key:"K",c_en:"K"},L:{m:[4,1],key:"L",c_en:"L"},M:{m:[4,2],key:"M",c_en:"M"},N:{m:[4,3],key:"N",c_en:"N"},O:{m:[4,4],key:"O",c_en:"O"},P:{m:[4,5],key:"P",c_en:"P"},Q:{m:[4,6],key:"Q",c_en:"Q"},R:{m:[4,7],key:"R",c_en:"R"},S:{m:[5,0],key:"S",c_en:"S"},T:{m:[5,1],key:"T",c_en:"T"},U:{m:[5,2],key:"U",c_en:"U"},V:{m:[5,3],key:"V",c_en:"V"},W:{m:[5,4],key:"W",c_en:"W"},X:{m:[5,5],key:"X",c_en:"X"},Y:{m:[5,6],key:"Y",c_en:"Y"},Z:{m:[5,7],key:"Z",c_en:"Z"},SHIFT:{m:[6,0],key:"SHIFT",c_en:"SHF"},CONTROL:{m:[6,1],key:"CONTROL",c_en:"CTR"},CAPSLOCK:{m:[6,3],key:"CAPSLOCK",c_en:"CAP"},GRAPH:{m:[6,2],key:"GRAPH",c_en:"GRA"},CODE:{m:[6,4],key:"CODE",c_en:"COD",c_ja:"KANA",cs_ja:"KANA"},F1:{m:[6,5],key:"F1",c_en:"F1",cs_en:"F6"},F2:{m:[6,6],key:"F2",c_en:"F2",cs_en:"F7"},F3:{m:[6,7],key:"F3",c_en:"F3",cs_en:"F8"},F4:{m:[7,0],key:"F4",c_en:"F4",cs_en:"F9"},F5:{m:[7,1],key:"F5",c_en:"F5",cs_en:"F10"},ESCAPE:{m:[7,2],key:"ESCAPE",c_en:"ESC"},TAB:{m:[7,3],key:"TAB",c_en:"TAB"},STOP:{m:[7,4],key:"STOP",c_en:"STP"},BACKSPACE:{m:[7,5],key:"BACKSPACE",c_en:"BS"},SELECT:{m:[7,6],key:"SELECT",c_en:"SEL"},ENTER:{m:[7,7],key:"ENTER",c_en:"RET"},SPACE:{m:[8,0],key:"SPACE",c_en:"SPC"},HOME:{m:[8,1],key:"HOME",c_en:"HOM"},INSERT:{m:[8,2],key:"INSERT",c_en:"INS"},DELETE:{m:[8,3],key:"DELETE",c_en:"DEL"},LEFT:{m:[8,4],key:"LEFT",c_en:"LFT"},UP:{m:[8,5],key:"UP",c_en:"UP"},DOWN:{m:[8,6],key:"DOWN",c_en:"DWN"},RIGHT:{m:[8,7],key:"RIGHT",c_en:"RGH"},NUM_MULTIPLY:{m:[9,0],key:"NUM_MULTIPLY",c_en:"*"},NUM_PLUS:{m:[9,1],key:"NUM_PLUS",c_en:"+"},NUM_DIVIDE:{m:[9,2],key:"NUM_DIVIDE",c_en:"/"},NUM_0:{m:[9,3],key:"NUM_0",c_en:"0"},NUM_1:{m:[9,4],key:"NUM_1",c_en:"1"},NUM_2:{m:[9,5],key:"NUM_2",c_en:"2"},NUM_3:{m:[9,6],key:"NUM_3",c_en:"3"},NUM_4:{m:[9,7],key:"NUM_4",c_en:"4"},NUM_5:{m:[10,0],key:"NUM_5",c_en:"5"},NUM_6:{m:[10,1],key:"NUM_6",c_en:"6"},NUM_7:{m:[10,2],key:"NUM_7",c_en:"7"},NUM_8:{m:[10,3],key:"NUM_8",c_en:"8"},NUM_9:{m:[10,4],key:"NUM_9",c_en:"9"},NUM_MINUS:{m:[10,5],key:"NUM_MINUS",c_en:"-"},NUM_COMMA:{m:[10,6],key:"NUM_COMMA",c_en:","},NUM_PERIOD:{m:[10,7],key:"NUM_PERIOD",c_en:"."},YES:{m:[11,1],key:"YES",c_en:"YES",c_ja:"HAI",cs_ja:"HAI"},NO:{m:[11,3],key:"NO",c_en:"NO",c_ja:"IIE",cs_ja:"IIE"}},wmsx.JoystickButtons={J_UP:{button:"J_UP",mask:1,n:"UP"},J_DOWN:{button:"J_DOWN",mask:2,n:"DOWN"},J_LEFT:{button:"J_LEFT",mask:4,n:"LEFT"},J_RIGHT:{button:"J_RIGHT",mask:8,n:"RIGHT"},J_A:{button:"J_A",mask:16,n:"A"},J_B:{button:"J_B",mask:32,n:"B"},J_AB:{button:"J_AB",mask:48,n:"AB"},J_X:{button:"J_X",n:"X"},J_Y:{button:"J_Y",n:"Y"},J_L:{button:"J_L",n:"L"},J_R:{button:"J_R",n:"R"},J_BACK:{button:"J_BACK",n:"BACK"},J_START:{button:"J_START",n:"START"}},wmsx.MachineControls={POWER:51,POWER_OFF:53,DEBUG:101,TRACE:102,PAUSE:103,FRAME:105,FAST_SPEED:111,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,SPRITE_MODE:121,VIDEO_STANDARD:123,VSYNCH:124,CPU_TURBO_MODE:125,VDP_TURBO_MODE:126,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521, -LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201,TYPE_STRING:301},wmsx.Images={embedded:!1,count:5,urls:{logo:WMSX.IMAGES_PATH+"logo.png",sprites:WMSX.IMAGES_PATH+"sprites.png",loading:WMSX.IMAGES_PATH+"loading.gif",mouseCursor:WMSX.IMAGES_PATH+"mouse-cursor.png",logoMiniBrightBack:WMSX.IMAGES_PATH+"logo-mini-bright-back.png"}},WMSX.userPreferences={},WMSX.userPreferences.currentVersion=50,WMSX.userPreferences.compatibleVersions=new Set([50]),WMSX.userPreferences.defaults=function(){"use strict";var a=wmsx.KeyboardKeys,b=wmsx.JoystickButtons,c=wmsx.DOMKeys,d=wmsx.GamepadButtons;return{hostKeyboard:{en:void 0,ja:void 0},customHostKeyboards:{en:{},ja:{}},customHostKeys:{nextCode:1001,keys:[]},joysticks:[{buttons:{J_UP:[d.GB_UP],J_DOWN:[d.GB_DOWN],J_LEFT:[d.GB_LEFT],J_RIGHT:[d.GB_RIGHT],J_A:[d.GB_1,d.GB_3],J_B:[d.GB_2,d.GB_3],J_X:[],J_Y:[],J_L:[d.GB_L1,d.GB_L2],J_R:[d.GB_R1,d.GB_R2],J_BACK:[d.GB_BACK],J_START:[d.GB_START]},virtualButtonsKeys:{J_X:[],J_Y:[],J_L:[{wc:c.VK_F12.wc|c.SHIFT,n:["Shift","F12"]}],J_R:[c.VK_F12],J_BACK:[c.VK_ESCAPE],J_START:[{wc:c.VK_P.wc|c.ALT,n:["Alt","P"]}]},settings:{device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,deadzone:.3}},{buttons:{J_UP:[d.GB_UP],J_DOWN:[d.GB_DOWN],J_LEFT:[d.GB_LEFT],J_RIGHT:[d.GB_RIGHT],J_A:[d.GB_1,d.GB_3],J_B:[d.GB_2,d.GB_3],J_X:[],J_Y:[],J_L:[d.GB_L1,d.GB_L2],J_R:[d.GB_R1,d.GB_R2],J_BACK:[d.GB_BACK],J_START:[d.GB_START]},virtualButtonsKeys:{J_X:[],J_Y:[],J_L:[{wc:c.VK_F12.wc|c.SHIFT,n:["Shift","F12"]}],J_R:[c.VK_F12],J_BACK:[c.VK_ESCAPE],J_START:[{wc:c.VK_P.wc|c.ALT,n:["Alt","P"]}]},settings:{device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,deadzone:.3}}],joykeys:[{buttons:{J_UP:[c.VK_UP],J_DOWN:[c.VK_DOWN],J_LEFT:[c.VK_LEFT],J_RIGHT:[c.VK_RIGHT],J_A:[c.VK_SPACE,c.VK_LSHIFT,c.VK_INSERT],J_B:[c.VK_M,c.VK_LCONTROL,c.VK_DELETE]}},{buttons:{J_UP:[c.VK_T],J_DOWN:[c.VK_G],J_LEFT:[c.VK_F],J_RIGHT:[c.VK_H],J_A:[c.VK_A],J_B:[c.VK_Z]}}],touch:{directional:"JOYSTICK",directionalBig:!1,buttons:{T_A:b.J_A,T_B:b.J_B,T_C:b.J_AB,T_D:a.ESCAPE,T_E:a.SPACE,T_F:a.F1,T_G:a.ENTER,T_X:null,T_Y:null}},vSynch:1,crtFilter:-1,crtScanlines:0,hapticFeedback:!0,audioBufferBase:-1,netPlaySessionName:"",netPlayNick:""}},WMSX.userPreferences.load=function(){var a;try{a=JSON.parse(localStorage["wmsxprefs"+this.getEnvSuffix()]||"{}"),a.version&&delete a.version}catch(a){}if(!a||!WMSX.userPreferences.compatibleVersions.has(a.prefsVersion)){a={}}var b=WMSX.userPreferences.defaults();for(var c in b)void 0===a[c]&&(a[c]=b[c]);a.prefsVersion=WMSX.userPreferences.currentVersion,WMSX.userPreferences.current=a,wmsx.DOMKeys.initPreferences()},WMSX.userPreferences.save=function(){if(WMSX.userPreferences.isDirty)try{WMSX.userPreferences.current.wmsxVersion=WMSX.VERSION,localStorage["wmsxprefs"+this.getEnvSuffix()]=JSON.stringify(WMSX.userPreferences.current),delete WMSX.userPreferences.isDirty,wmsx.Util.log("Preferences saved!")}catch(a){}},WMSX.userPreferences.getEnvSuffix=function(){return void 0===this.envSuffix&&(this.envSuffix=WMSX.ENVIRONMENT?"_"+WMSX.ENVIRONMENT:""),this.envSuffix},WMSX.userPreferences.setDirty=function(){WMSX.userPreferences.isDirty=!0},WMSX.userROMFormats={init:function(){wmsx.SlotCreator.setUserROMFormats(this),this.userFormats=JSON.parse(localStorage.wmsxuserformats||"{}")},getForROM:function(a){return this.userFormats[a.info.h]},setForROM:function(a,b,c){a.info.h&&(c?delete this.userFormats[a.info.h]:this.userFormats[a.info.h]=b,localStorage.wmsxuserformats=JSON.stringify(this.userFormats))}},wmsx.Clock=function(clockPulse){"use strict";this.connect=function(a){a.connectClock(this)},this.go=function(){running||(useRequestAnimationFrame=vSynch&&cyclesPerSecond===this.getVSynchNativeFrequency(),running=!0,useRequestAnimationFrame?animationFrame=requestAnimationFrame(pulse):interval=setInterval(pulse,cycleTimeMs))},this.pause=function(){running=!1,animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),interval&&(clearInterval(interval),interval=null)},this.setFrequency=function(a,b){running?(this.pause(),internalSetFrequency(a,b),this.go()):internalSetFrequency(a,b)},this.setVSynch=function(a){running?(this.pause(),vSynch=a,this.go()):vSynch=a},this.getVSynchNativeFrequency=function(){return vSynchAltNativeFrequency||vSynchNativeFrequency},this.setVSynchAltNativeFrequency=function(a){vSynchAltNativeFrequency=a},this.isVSynchActive=function(){return useRequestAnimationFrame};var internalSetFrequency=function(a,b){cyclesPerSecond=a,cycleTimeMs=1e3/a,divider=b>=1?b:1,dividerCounter>divider&&(dividerCounter=divider)},pulse=function(){animationFrame=null,divider>1?--dividerCounter<=0&&(dividerCounter=divider,clockPulse()):clockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.detectHostNativeFPSAndCallback=function(a){function b(){vSynchNativeFrequency=-1,wmsx.Util.error("Could not detect video native frequency. VSync DISABLED!"),a&&a(vSynchNativeFrequency)}if(-1===WMSX.SCREEN_VSYNC_MODE)return wmsx.Util.warning("Video native VSync disabled in configuration"),void(a&&a(vSynchNativeFrequency));if(-1!==WMSX.SCREEN_FORCE_HOST_NATIVE_FPS)return wmsx.Util.warning("Host video frequency forced in configuration: "+WMSX.SCREEN_FORCE_HOST_NATIVE_FPS),void(a&&a(vSynchNativeFrequency));if(!window.requestAnimationFrame)return b();var c=0,d=0,e=0,f=0,g=0,h=0,i=function(){if(e>=12||f>=18||g>=14||h>=18)return vSynchNativeFrequency=e>=12?60:f>=18?50:g>=14?120:100,wmsx.Util.log("Video native frequency detected: "+vSynchNativeFrequency+"Hz"),void(a&&a(vSynchNativeFrequency));if(!(++c<=70))return b();var j=wmsx.Util.performanceNow(),k=1e3/(j-d);d=j,k>=47&&k<=53&&f++,k>=56.4&&k<=63.6&&e++,k>=112.8&&k<=127.2&&g++,k>=94&&k<=106&&h++,requestAnimationFrame(i)};i()},this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,divider=1,dividerCounter=1,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0,vSynchNativeFrequency=-1===WMSX.SCREEN_VSYNC_MODE?-1:WMSX.SCREEN_FORCE_HOST_NATIVE_FPS,vSynchAltNativeFrequency=void 0};wmsx.FileLoader=function(a){"use strict";function b(a,b,c,d,e){return z.loadAsDiskFromFiles(c,a,p.createTreeFromZip(b),d,e)}function c(a,b,c,d){return z.loadAsDiskFromFiles(b,null,a,c,d)}function d(a,b,c,d,f,g,h){if((b===P.DISK||b===P.AUTO)&&z.loadDiskStackFromFiles(c,a,d,f,h))return!0;if(b!==P.DISK)for(var i=0;i0&&(1===b.length?p.readFromFile(b[0],C,G,H,I,d):p.readFromFiles(b,C,G,H,I,d)),!1}}function i(a){ -if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),!J&&a.dataTransfer){var b=(a.shiftKey?L:0)|(a.ctrlKey?M:0)|(a.altKey?N:0)|(a.buttons&K?O:0);j(a.target,b),a.dataTransfer.dropEffect=!D||D.disabled?"none":"link",F&&clearTimeout(F),F=setTimeout(k,250)}}function j(a,b){if(a&&w.mediaChangeDisabledWarning())a=void 0;else for(;a&&!a.wmsxDropInfo;)a=a.parentElement;if(a){var c=a.wmsxDropInfo;c.subFiles&&b&N?c=c.subFiles:c.subAdd&&b&M&&(c=c.subAdd)}if(D!==c||E!==b){if(D!==c){if(D){D.element.classList.remove("wmsx-selected");var d=D.mainEle;d&&d.classList.remove("wmsx-selected")}D=c,D&&(D.element.classList.add("wmsx-selected"),(d=D.mainEle)&&d.classList.add("wmsx-selected"))}E=b;var e;D&&(e=b&L&&D.mesSec?D.mesSec:D.mes,D.files&&b&M&&(e+=" (do not expand ZIP contents)"),b&O&&(e+=" - no Reset")),v.setFileLoaderDragMessage(e)}}function k(){j(void 0,0),F=void 0}function l(a){if(a.returnValue=!1,a.preventDefault(),a.target.focus(),J||!D||D.disabled||!a.dataTransfer)return k();var b=D,c=E;k();var d=c&O,e=b.files||c&N,f=b.add||c&M,g=void 0!==b.port?b.port:c&L?-1:void 0,h=b.openType;!e||h!==P.DISK&&h!==P.AUTO||(h=f?P.FILES_AS_DISK:P.AUTO_AS_DISK);var i=a.dataTransfer&&a.dataTransfer.files,j=q.systemPause(!0),l=function(a){j||q.systemPause(!1)};if(i&&i.length>0)1===i.length?p.readFromFile(i[0],h,g,d,f,l):p.readFromFiles(i,h,g,d,f,l);else{var m=a.dataTransfer.getData("text");m&&m.length>0?p.readFromURL(m,h,g,d,f,l):l()}}function m(a){if(!a||!a.trim())return a;var b=a.lastIndexOf(".");return(b>0?a.substring(0,b):a).trim()}function n(a){wmsx.Util.message("Could not load file(s):\n\n"+a+"\n")}function o(){A=document.createElement("input"),A.id="wmsx-file-loader-input",A.type="file",A.multiple=!0,A.accept=Q.AUTO,A.style.display="none",A.addEventListener("change",h),B.appendChild(A)}var p=this;this.connect=function(a){q=a,r=q.getSlotSocket(),s=q.getBIOSSocket(),q.getExtensionsSocket().connectFileLoader(this),t=q.getExpansionSocket(),u=q.getSavestateSocket()},this.connectPeripherals=function(a,b,c,d,e){v=a,w=b,x=c,y=d,z=e},this.registerForDnD=function(a){a.addEventListener("dragover",i,!1),a.addEventListener("drop",l,!1)},this.registerForFileInputElement=function(a){B=a},this.openFileChooserDialog=function(a,b,c,d){A||o(),A.multiple=R[P[a]||P.AUTO]&&!(a===P.DISK&&2===c),A.accept=Q[P[a]||P.AUTO],C=a,G=c,H=b,I=d,A.click()},this.openURLChooserDialog=function(a,b,c,d){var e;try{e=localStorage&&localStorage[T]}catch(a){}var f=q.systemPause(!0);if(e=prompt("Load file from URL:",e||""),e=e&&e.toString().trim()){try{localStorage[T]=e}catch(a){}this.readFromURL(e,a,c,b,d,function(){f||q.systemPause(!1)})}else f||q.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){wmsx.Util.log("Reading file: "+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};p.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){n("File reading error: "+a.target.error.name+U),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new wmsx.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};p.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){n("URL reading error: "+a.error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){new wmsx.MultiFileReader(a,function(a){p.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=U),n("File reading error: "+b),f&&f(!1)},b===P.AUTO_AS_DISK||b===P.FILES_AS_DISK||b===P.ZIP_AS_DISK?-1:void 0).start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,e,f,g,h,i){var j,k;if(e===P.AUTO_AS_DISK||e===P.FILES_AS_DISK||e===P.ZIP_AS_DISK){try{if(e===P.FILES_AS_DISK){if(c([a],f,g,h))return}else if(j=wmsx.Util.checkContentIsZIP(a.content)){if(b(m(a.name),j,f,g,h))return}else if(e===P.ZIP_AS_DISK)k="Not a ZIP file!";else if(c([a],f,g,h))return}catch(a){a.wmsx&&(k=a.message)}n("Error loading "+S[e]+(k?": "+k:""))}else{if(j=wmsx.Util.checkContentIsZIP(a.content))try{if(d(wmsx.Util.getZIPFilesSorted(j),e,f,g,h,i,!0))return;if(e===P.AUTO&&b(m(a.name),j,f,g,h))return}catch(a){wmsx.Util.error(a)}else if(d([a],e,f,g,h,i,!1))return;n("No valid "+S[e]+" found.")}},this.loadFromFiles=function(a,b,e,f,g){if(a=wmsx.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.nameb.name?1:0}),b===P.AUTO_AS_DISK||b===P.FILES_AS_DISK||b===P.ZIP_AS_DISK){var h;try{if(c(a,e,f,g))return}catch(a){a.wmsx&&(h=a.message)}n("Error loading "+S[b]+(h?": "+h:""))}else{if(d(a,b,e,f,g,null,!1))return;n("No valid "+S[b]+" found.")}},this.loadFromContentAsSlot=function(a,b,c,d,e,f){var h=wmsx.Util.checkContentIsZIP(b);if(h)try{for(var i=wmsx.Util.getZIPFilesSorted(h),j=0;j0&&(this.keysByLegacyCode[a.c]=a))},function(a,b,c,d){a.VK_1={wc:1,d:"Digit1",c:49,n:"1"},a.VK_2={wc:2,d:"Digit2",c:50,n:"2"},a.VK_3={wc:3,d:"Digit3",c:51,n:"3"},a.VK_4={wc:4,d:"Digit4",c:52,n:"4"},a.VK_5={wc:5,d:"Digit5",c:53,n:"5"},a.VK_6={wc:6,d:"Digit6",c:54,n:"6"},a.VK_7={wc:7,d:"Digit7",c:55,n:"7"},a.VK_8={wc:8,d:"Digit8",c:56,n:"8"},a.VK_9={wc:9,d:"Digit9",c:57,n:"9"},a.VK_0={wc:10,d:"Digit0",c:48,n:"0"},a.VK_F1={wc:21,d:"F1",c:112,n:"F1"},a.VK_F2={wc:22,d:"F2",c:113,n:"F2"},a.VK_F3={wc:23,d:"F3",c:114,n:"F3"},a.VK_F4={wc:24,d:"F4",c:115,n:"F4"},a.VK_F5={wc:25,d:"F5",c:116,n:"F5"},a.VK_F6={wc:26,d:"F6",c:117,n:"F6"},a.VK_F7={wc:27,d:"F7",c:118,n:"F7"},a.VK_F8={wc:28,d:"F8",c:119,n:"F8"},a.VK_F9={wc:29,d:"F9",c:120,n:"F9"},a.VK_F10={wc:30,d:"F10",c:121,n:"F10"},a.VK_F11={wc:31,d:"F11",c:122,n:"F11"},a.VK_F12={wc:32,d:"F12",c:123,n:"F12"},a.VK_Q={wc:101,d:"KeyQ",c:81,n:"Q"},a.VK_W={wc:102,d:"KeyW",c:87,n:"W"},a.VK_E={wc:103,d:"KeyE",c:69,n:"E"},a.VK_R={wc:104,d:"KeyR",c:82,n:"R"},a.VK_T={wc:105,d:"KeyT",c:84,n:"T"},a.VK_Y={wc:106,d:"KeyY",c:89,n:"Y"},a.VK_U={wc:107,d:"KeyU",c:85,n:"U"},a.VK_I={wc:108,d:"KeyI",c:73,n:"I"},a.VK_O={wc:109,d:"KeyO",c:79,n:"O"},a.VK_P={wc:110,d:"KeyP",c:80,n:"P"},a.VK_A={wc:111,d:"KeyA",c:65,n:"A"},a.VK_S={wc:112,d:"KeyS",c:83,n:"S"},a.VK_D={wc:113,d:"KeyD",c:68,n:"D"},a.VK_F={wc:114,d:"KeyF",c:70,n:"F"},a.VK_G={wc:115,d:"KeyG",c:71,n:"G"},a.VK_H={wc:116,d:"KeyH",c:72,n:"H"},a.VK_J={wc:117,d:"KeyJ",c:74,n:"J"},a.VK_K={wc:118,d:"KeyK",c:75,n:"K"},a.VK_L={wc:119,d:"KeyL",c:76,n:"L"},a.VK_Z={wc:120,d:"KeyZ",c:90,n:"Z"},a.VK_X={wc:121,d:"KeyX",c:88,n:"X"},a.VK_C={wc:122,d:"KeyC",c:67,n:"C"},a.VK_V={wc:123,d:"KeyV",c:86,n:"V"},a.VK_B={wc:124,d:"KeyB",c:66,n:"B"},a.VK_N={wc:125,d:"KeyN",c:78,n:"N"},a.VK_M={wc:126,d:"KeyM",c:77,n:"M"},a.VK_ESCAPE={wc:201,d:"Escape",c:27,n:"Esc",fn:!0},a.VK_BACKSPACE={wc:202,d:"Backspace",c:8,n:"BackSpc",fn:!0},a.VK_TAB={wc:203,d:"Tab",c:9,n:"Tab",fn:!0},a.VK_ENTER={wc:204,d:"Enter",c:13,n:"Enter",fn:!0},a.VK_SPACE={wc:205,d:"Space",c:32,n:"Space",fn:!0},a.VK_BACKQUOTE={wc:221,d:"Backquote",c:192,n:"`"},a.VK_MINUS={wc:222,d:"Minus",c:189,n:"-"},a.VK_EQUALS={wc:223,d:"Equal",c:187,n:"="},a.VK_INT_YEN={wc:224,d:"IntlYen",c:-1,n:"Int ¥"},a.VK_OPEN_BRACKET={wc:225,d:"BracketLeft",c:219,n:"["},a.VK_CLOSE_BRACKET={wc:226,d:"BracketRight",c:221,n:"]"},a.VK_SEMICOLON={wc:227,d:"Semicolon",c:186,n:";"},a.VK_QUOTE={wc:228,d:"Quote",c:222,n:"'"},a.VK_BACKSLASH={wc:229,d:"Backslash",c:220,n:"\\"},a.VK_INT_BACKSLASH={wc:230,d:"IntlBackslash",c:226,n:"Int \\"},a.VK_COMMA={wc:231,d:"Comma",c:188,n:","},a.VK_PERIOD={wc:232,d:"Period",c:190,n:"."},a.VK_SLASH={wc:233,d:"Slash",c:191,n:"/"},a.VK_INT_RO={wc:234,d:"IntlRo",c:193,n:"Int ろ"},a.VK_INSERT={wc:251,d:"Insert",c:45,n:"Ins",fn:!0},a.VK_DELETE={wc:252,d:"Delete",c:46,n:"Del",fn:!0},a.VK_HOME={wc:253,d:"Home",c:36,n:"Home",fn:!0},a.VK_END={wc:254,d:"End",c:35,n:"End",fn:!0},a.VK_PAGE_UP={wc:255,d:"PageUp",c:33,n:"PgUp",fn:!0},a.VK_PAGE_DOWN={wc:256,d:"PageDown",c:34,n:"PgDown",fn:!0},a.VK_UP={wc:271,d:"ArrowUp",c:38,n:"Up",fn:!0},a.VK_DOWN={wc:272,d:"ArrowDown",c:40,n:"Down",fn:!0},a.VK_LEFT={wc:273,d:"ArrowLeft",c:37,n:"Left",fn:!0},a.VK_RIGHT={wc:274,d:"ArrowRight",c:39,n:"Right",fn:!0},a.VK_PRINT_SCREEN={wc:281,d:"PrintScreen",c:44,n:"PrtScr",fn:!0},a.VK_SCROLL_LOCK={wc:282,d:"ScrollLock",c:145,n:"ScrLck",fn:!0},a.VK_PAUSE={wc:283,d:"Pause",c:19,n:"Pause",fn:!0},a.VK_BREAK={wc:284,d:"",c:3,n:"Break",fn:!0},a.VK_CONTEXT={wc:285,d:"ContextMenu",c:93,n:"Context",fn:!0},a.VK_LSHIFT={wc:301,d:"ShiftLeft",c:16|b,n:"L-Shift",fn:!0},a.VK_LCONTROL={wc:302,d:"ControlLeft",c:17|b,n:"L-Control",fn:!0},a.VK_LALT={wc:303,d:"AltLeft",c:18|b,n:"L-Alt",fn:!0},a.VK_LMETA={wc:304,d:"MetaLeft",c:91|b,n:"L-Meta",fn:!0},a.VK_RSHIFT={wc:305,d:"ShiftRight",c:16|c,n:"R-Shift",fn:!0},a.VK_RCONTROL={wc:306,d:"ControlRight",c:17|c,n:"R-Control",fn:!0},a.VK_RALT={wc:307,d:"AltRight",c:18|c,n:"R-Alt",fn:!0},a.VK_RMETA={wc:308,d:"MetaRight",c:91|c,n:"R-Meta",fn:!0},a.VK_CAPS_LOCK={wc:309,d:"CapsLock",c:20,n:"CapsLock",fn:!0},a.VK_NON_CONVERT={wc:310,d:"NonConvert",c:29,n:"NonConvert",fn:!0},a.VK_CONVERT={wc:311,d:"Convert",c:28,n:"Convert",fn:!0},a.VK_KANA={wc:312,d:"KanaMode",c:-1,n:"Kana",fn:!0},a.VK_NUMLOCK={wc:401,d:"NumLock",c:144,n:"NumLock"},a.VK_NUM_COMMA={wc:402,d:"NumpadComma",c:110|d,n:"Num ,"},a.VK_NUM_DIVIDE={wc:403,d:"NumpadDivide",c:111|d,n:"Num /"},a.VK_NUM_MULTIPLY={wc:404,d:"NumpadMultiply",c:106|d,n:"Num *"},a.VK_NUM_MINUS={wc:405,d:"NumpadSubtract",c:109|d,n:"Num -"},a.VK_NUM_PLUS={wc:406,d:"NumpadAdd",c:107|d,n:"Num +"},a.VK_NUM_ENTER={wc:407,d:"NumpadEnter",c:13|d,n:"Num Enter",fn:!0},a.VK_NUM_PERIOD={wc:408,d:"NumpadDecimal",c:194|d,n:"Num .",fn:!0},a.VK_NUM_1={wc:421,d:"Numpad1",c:97|d,n:"Num 1",fn:!0},a.VK_NUM_2={wc:422,d:"Numpad2",c:98|d,n:"Num 2",fn:!0},a.VK_NUM_3={wc:423,d:"Numpad3",c:99|d,n:"Num 3",fn:!0},a.VK_NUM_4={wc:424,d:"Numpad4",c:100|d,n:"Num 4",fn:!0},a.VK_NUM_5={wc:425,d:"Numpad5",c:101|d,n:"Num 5",fn:!0},a.VK_NUM_6={wc:426,d:"Numpad6",c:102|d,n:"Num 6",fn:!0},a.VK_NUM_7={wc:427,d:"Numpad7",c:103|d,n:"Num 7",fn:!0},a.VK_NUM_8={wc:428,d:"Numpad8",c:104|d,n:"Num 8",fn:!0},a.VK_NUM_9={wc:429,d:"Numpad9",c:105|d,n:"Num 9",fn:!0},a.VK_NUM_0={wc:430,d:"Numpad0",c:96|d,n:"Num 0",fn:!0},a.VK_VOID={wc:-1,d:"",c:-1,n:"Unbound",fn:!0},a.VK_BR_QUOTE={wc:221,d:"Backquote",c:192,n:"'",a:"BR"},a.VK_BR_ACUTE={wc:225,d:"BracketLeft",c:219,n:"´",a:"BR"},a.VK_BR_OPEN_BRACKET={wc:226,d:"BracketRight",c:221,n:"[",a:"BR"},a.VK_BR_CEDILLA={wc:227,d:"Semicolon",c:186,n:"Ç",a:"BR"},a.VK_BR_TILDE={wc:228,d:"Quote",c:222,n:"~",a:"BR"},a.VK_BR_CLOSE_BRACKET={wc:229,d:"Backslash",c:220,n:"]",a:"BR"},a.VK_BR_SEMICOLON={wc:233,d:"Slash",c:191,n:";",a:"BR"},a.VK_BR_BACKSLASH={wc:230,d:"IntlBackslash",c:226,n:"\\",a:"BR"},a.VK_BR_SLASH={wc:234,d:"IntlRo",c:193,n:"/",a:"BR"},a.VK_JP_CIRCUMFLEX={wc:223,d:"Equal",c:187,n:"^",a:"JP"},a.VK_JP_YEN={wc:224,d:"IntlYen",c:-1,n:"¥",a:"JP"},a.VK_JP_ARROBA={wc:225,d:"BracketLeft",c:219,n:"@",a:"JP"},a.VK_JP_OPEN_BRACKET={wc:226,d:"BracketRight",c:221,n:"[",a:"JP"},a.VK_JP_COLLON={wc:228,d:"Quote",c:222,n:":",a:"JP"},a.VK_JP_CLOSE_BRACKET={wc:229,d:"Backslash",c:220,n:"]",a:"JP"},a.VK_JP_RO={wc:234,d:"IntlRo",c:193,n:"\\ ろ",a:"JP"},a.VK_JP_NON_CONVERT={wc:310,d:"NonConvert",c:29,n:"NonConvert",fn:!0},a.VK_ES_ORDINAL={wc:221,d:"Backquote",c:192,n:"º",a:"ES"},a.VK_ES_QUOTE={wc:222,d:"Minus",c:189,n:"'",a:"ES"},a.VK_ES_INV_EXCLA={wc:223,d:"Equal",c:187,n:"¡",a:"ES"},a.VK_ES_GRAVE={wc:225,d:"BracketLeft",c:219,n:"`",a:"ES"},a.VK_ES_PLUS={wc:226,d:"BracketRight",c:221,n:"+",a:"ES"},a.VK_ES_ENNE={wc:227,d:"Semicolon",c:186,n:"Ñ",a:"ES"},a.VK_ES_ACUTE={wc:228,d:"Quote",c:222,n:"´",a:"ES"},a.VK_ES_CEDILLA={wc:229, -d:"Backslash",c:220,n:"Ç",a:"ES"},a.VK_ES_LESSER={wc:230,d:"IntlBackslash",c:226,n:"<",a:"ES"},a.VK_ES_MINUS={wc:233,d:"Slash",c:191,n:"-",a:"ES"},a.VK_NL_ARROBA={wc:221,d:"Backquote",c:192,n:"@",a:"NL"},a.VK_NL_SLASH={wc:222,d:"Minus",c:189,n:"/",a:"NL"},a.VK_NL_ORDINAL={wc:223,d:"Equal",c:187,n:"°",a:"NL"},a.VK_NL_UMLAUT={wc:225,d:"BracketLeft",c:219,n:"¨",a:"NL"},a.VK_NL_STAR={wc:226,d:"BracketRight",c:221,n:"*",a:"NL"},a.VK_NL_PLUS={wc:227,d:"Semicolon",c:186,n:"+",a:"NL"},a.VK_NL_ACUTE={wc:228,d:"Quote",c:222,n:"´",a:"NL"},a.VK_NL_LESSER={wc:229,d:"Backslash",c:220,n:"<",a:"NL"},a.VK_NL_CLOSE_BRACKET={wc:230,d:"IntlBackslash",c:226,n:"]",a:"NL"},a.VK_NL_MINUS={wc:233,d:"Slash",c:191,n:"-",a:"NL"},a.VK_IT_BACKSLASH={wc:221,d:"Backquote",c:192,n:"\\",a:"IT"},a.VK_IT_QUOTE={wc:222,d:"Minus",c:189,n:"'",a:"IT"},a.VK_IT_GRAVE_I={wc:223,d:"Equal",c:187,n:"ì",a:"IT"},a.VK_IT_GRAVE_E={wc:225,d:"BracketLeft",c:219,n:"è",a:"IT"},a.VK_IT_PLUS={wc:226,d:"BracketRight",c:221,n:"+",a:"IT"},a.VK_IT_GRAVE_O={wc:227,d:"Semicolon",c:186,n:"ò",a:"IT"},a.VK_IT_GRAVE_A={wc:228,d:"Quote",c:222,n:"à",a:"IT"},a.VK_IT_GRAVE_U={wc:229,d:"Backslash",c:220,n:"ù",a:"IT"},a.VK_IT_LESSER={wc:230,d:"IntlBackslash",c:226,n:"<",a:"IT"},a.VK_IT_MINUS={wc:233,d:"Slash",c:191,n:"-",a:"IT"};for(var e in a)a.addKeyToIdentification(a[e])}(wmsx.DOMKeys,wmsx.DOMKeys.LOCLEFT,wmsx.DOMKeys.LOCRIGHT,wmsx.DOMKeys.LOCNUM),wmsx.DOMKeys.isModifierKey=function(a){var b=a.keyCode;return 16===b||17===b||18===b||91===b},wmsx.DOMKeys.codeNewForKeyboardEvent=function(a){var b=this.keysByCode[a.code]||this.keysByLegacyCode[a.keyCode|a.location<0){var d=a.keyCode,e=a.key;if(c&&c.fn)e=c.n;else{var f=e&&e.toUpperCase();switch(f&&"UNIDENTIFIED"!==f&&"UNDEFINED"!==f&&"UNKNOWN"!==f?"DEAD"===f&&(e="Dead#"+d):e=a.code||"#"+d,1===e.length?e=e.toUpperCase():e.length>12&&(e=e.substr(0,12)),a.location){case 1:e="L-"+e;break;case 2:e="R-"+e;break;case 3:e="Num "+e}}return c||(wmsx.Util.warning("New Host Key discovered:",a),b=WMSX.userPreferences.current.customHostKeys.nextCode++,c={wc:b,d:a.code||"",c:a.code?0:a.keyCode&this.IGNORE_ALL_MODIFIERS_MASK|a.location<0?A:WMSX.BOOT_DURATION_AUTO}function g(){var a=(wmsx.Util.userLanguage()||"en-US").toUpperCase();"nl"===a.substr(0,2)&&(a="en-US");for(var b=0;b=0?j.setKeyboard(a,!1):g()}var j=this;this.connect=function(a,b){o=a,o.addMachineTypeStateListener(j,!0),p=b},this.connectPeripherals=function(a){q=a},this.resetControllers=function(){this.releaseControllers(),B&&f()},this.machineTypeStateUpdate=function(){var a=o.getMachineLang();a!==w&&(w=a,i())},this.powerOn=function(){if(WMSX.BOOT_KEYS||WMSX.BOOT_KEYS_ONCE){for(var a=(WMSX.BOOT_KEYS||WMSX.BOOT_KEYS_ONCE).split(","),b=[],c=0;c0&&--C,F&&I){if(--G===H||0===G){var a=G>0,b=r.SPACE.m;d(b[0],b[1],a)}G<=0&&(G=F)}},this.readKeyboardPort=function(a){return C>0?y[a]&z[a]:y[a]},this.toggleKeyboardLayout=function(a){var b;b=a?n?t.length-1:t.indexOf(m)-1||0:n?0:t.indexOf(m)+1||0,b<0||b>=t.length?g():this.setKeyboard(t[b],!1),q.showOSD("Host Keyboard: "+this.getCurrentKeyboardDesc(),!0)},this.getCurrentKeyboardDesc=function(){return(n?"AUTO: ":"")+m},this.setKeyboard=function(a,b){m=a,n=b,k(),q&&q.keyboardSettingsStateUpdate();var c=b?void 0:a;WMSX.userPreferences.current.hostKeyboard[w]!==c&&(WMSX.userPreferences.current.hostKeyboard[w]=c,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())},this.setTurboFireClocks=function(a){F=a,H=F/2|0,G=0},this.releaseControllers=function(){for(var a in x)x[a]&&this.processMSXKey(a,!1);I=!1},this.getKeyMapping=function(a){return D[a]},this.clearKey=function(a){0!==D[a].length&&(v[m]||h(),D[a].length=0,l(),WMSX.userPreferences.setDirty())},this.customizeKey=function(a,b){if(E[b.wc]!==a){v[m]||h();for(var c in D){var d=D[c];if(0!==d.length)for(var e;(e=wmsx.Util.arrayFindIndex(d,function(a){return a.wc===b.wc}))>=0;)d.splice(e,1)}d=D[a],d.length>=M&&d.splice(0,d.length-(M-1)),d.push(b),l(),WMSX.userPreferences.setDirty()}},this.processKey=function(a,b){var e=E[a];if(!e){if(c.processKey(a,b))return;e=E[a&L]}if(e){if(a===K&&x.CONTROL){var f=r.CONTROL.m;d(f[0],f[1],!1)}this.processMSXKey(e,b)}},this.processMSXKey=function(a,b){if(F&&"SPACE"===a){if(I===b)return;b&&(G=H),I=b}if(x[a]!==b){x[a]=b;var c=r[a].m;d(c[0],c[1],b)}};var k=function(){var a=v[m]||u[m];for(var b in r)D[b]=a[b]?a[b].constructor===Array?a[b]:[a[b]]:[];l()},l=function(){E={};for(var a in D)if(0!==D[a].length)for(var b=0;b>8,(240&d)>>4,1&d)}},this.netClientApplyMatrixChanges=function(a){for(var b=0,c=a.length;b>8,(240&a[b])>>4,1&a[b])},this.saveState=function(){return{k:wmsx.Util.storeInt8BitArrayToStringBase64(y),kb:wmsx.Util.storeInt8BitArrayToStringBase64(z),bf:A,ba:B,bc:C}},this.loadState=function(a){wmsx.Util.restoreStringBase64ToInt8BitArray(a.k,y),wmsx.Util.restoreStringBase64ToInt8BitArray(a.kb,z),A=a.bf,B=a.ba,C=a.bc} -;var m,n,o,p,q,r=wmsx.KeyboardKeys,s=wmsx.DOMKeys,t=[],u={},v={},w=WMSX.MACHINES_CONFIG[WMSX.MACHINE]&&WMSX.MACHINES_CONFIG[WMSX.MACHINE].LANG||"en",x={},y=wmsx.Util.arrayFill(new Array(12),255),z=wmsx.Util.arrayFill(new Array(12),255),A=WMSX.BOOT_KEYS_FRAMES,B=!1,C=0,D={},E={},F=0,G=0,H=0,I=!1,J=new Array(100);J.length=0;var K=s.VK_RALT.wc,L=s.IGNORE_ALL_MODIFIERS_MASK,M=4,N={CTRL:"CONTROL",ESC:"ESCAPE",CAPS:"CAPSLOCK",KANA:"CODE",RETURN:"ENTER",RET:"ENTER",0:"D0",1:"D1",2:"D2",3:"D3",4:"D4",5:"D5",6:"D6",7:"D7",8:"D8",9:"D9"};i()},wmsx.GamepadJoysticksControls=function(a,b,c){"use strict";function d(){-2===w?p=q=null:-1===w&&(v=-1,n.controllersClockPulse(!0)),x=0===w,h(),e()}function e(){var a=p?J+" 1":null,c=q?J+" 2":null;b.updateJoystickConnections(x?c:a,x?a:c)}function f(a,c){e(),b.showStatusMessage("Joystick "+(a?"1":"2")+(c?" connected":" disconnected"))}function g(a,b,c){if(c&&0!==c.length){var d=a.settings.device;if(d>=0)return c[d]&&c[d].buttons.length>0?new m(d,a):null;for(var e=0,f=c.length;e0&&!(e===b.device||p&&p.index===e||q&&q.index===e))return new m(e,a)}}function h(){B.reset(),C.reset()}function i(a,b,d){if(d===E)return j(a);var e=b.buttonsState,f=e.J_A;for(var g in t){var h=d.buttons[g];if(h&&h.length>0){for(var i=!1,k=0;!i&&k=0&&a.getButtonDigital(c))return F.joystickButtonDetected(wmsx.GamepadButtons[b],(E===s?1:0)^x)}}function k(){D[0]=r=WMSX.userPreferences.current.joysticks[0],D[1]=s=WMSX.userPreferences.current.joysticks[1]}function l(){this.reset=function(){this.analogDirection=-1,this.buttonsState={},this.portValue=63,this.pin8Value=0},this.reset()}function m(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>i&&(i=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return"object"==typeof b?b.pressed||b.value>.5:b>.5},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if(isNaN(a)||(a<0?-a:a)=1&&(i-=1),8*i|0};var c,d=b.settings.xAxis,e=b.settings.yAxis,f=b.settings.xAxisSig,g=b.settings.yAxisSig,h=b.settings.deadzone,i=Number.MIN_VALUE}var n=this;this.connectPeripherals=function(a){o=a},this.powerOn=function(){(u=!!navigator.getGamepads)&&(k(),w>=-1&&d())},this.powerOff=function(){u=!1},this.releaseControllers=function(){h()},this.resetControllers=function(){this.releaseControllers(),e()},this.readControllerPort=function(c){return a.netController?b.netGetMergedPortValues()[c]:this.readLocalControllerPort(c)},this.readLocalControllerPort=function(a){var b=1===a^x?C:B;return b.pin8Value?63:z>A?16|b.portValue:b.portValue},this.writeControllerPin8Port=function(a,b){(1===a^x?C:B).pin8Value=b},this.toggleMode=function(c){if(!u)return void b.showErrorMessage("Joysticks unavailable (not supported by browser)");var d=(2!==a.netPlayMode||G?H:I)[c?1:0][w+2];this.setMode(d),b.showStatusMessage("Joysticks "+this.getModeDesc())},this.setMode=function(a){w=a,d()},this.getMode=function(){return w},this.getModeDesc=function(){switch(w){case-1:return"AUTO";case 0:return"AUTO (swapped)";default:return u?"DISABLED":"NOT SUPPORTED"}},this.getSwappedState=function(){return x},this.netClientAdaptToServerControlsModes=function(a){G=a.sw,-2!==w&&(-1!==w||G?0===w&&G&&this.setMode(-1):this.setMode(0))},this.setTurboFireClocks=function(a){y=a,A=y/2|0,z=0},this.controllersClockPulse=function(a){if(u&&-2!==w&&(++v>=K&&(v=0),p||q||0===v)){var b=navigator.getGamepads();y&&--z<=0&&(z=y),p?p.update(b)?p.hasMoved()&&i(p,B,r):(p=null,B.reset(),a||f(!0,!1)):0===v&&(p=g(r,s,b))&&!a&&f(!0,!0),q?q.update(b)?q.hasMoved()&&i(q,C,s):(q=null,C.reset(),a||f(!1,!1)):0===v&&(q=g(s,r,b))&&!a&&f(!1,!0)}},this.getMappingForControl=function(a,b){var c=D[b^x];return t[a].mask?c.buttons[a]:0!==c.buttons[a].length||0!==c.virtualButtonsKeys[a].length?{from:c.buttons[a],to:c.virtualButtonsKeys[a]}:[]},this.getMappingPopupText=function(a,b){var c=!t[a].mask;return{heading:c?"Virtual Button mapping:":"Button mapped to host buttons:",footer:c?"Press new button / key.
(right-click to clear)":"Press new button.
(right-click to clear)"}},this.customizeControl=function(a,b,c){var d;if(c.wc){if(c.wc&&t[a].mask)return;if(d=D[b^x].virtualButtonsKeys[a],wmsx.Util.arrayFind(d,function(a){return a.wc===c.wc}))return}else if(d=D[b^x].buttons[a],wmsx.Util.arrayFind(d,function(a){return a.b===c.b}))return;d.length>=M&&d.splice(0,d.length-(M-1)),d.push(c),h(),WMSX.userPreferences.setDirty()},this.clearControl=function(a,b){D[b^x].buttons[a].length=0,t[a].mask||(D[b^x].virtualButtonsKeys[a].length=0),h(),WMSX.userPreferences.setDirty()},this.startButtonDetection=function(a,b){E=D[a^x],F=b},this.stopButtonDetection=function(){E=F=null};var o,p,q,r,s,t=wmsx.JoystickButtons,u=!1,v=1,w=WMSX.JOYSTICKS_MODE-1,x=!1,y=0,z=0,A=0,B=new l,C=new l,D=[],E=null,F=null,G=!1,H=[[-1,0,-2],[0,-2,-1]],I=[[0,-2,-1],[-1,0,-2]],J=wmsx.ControllersHub.JOYSTICK,K=60,L=[15,14,6,7,5,13,9,11,10],M=4},wmsx.DOMJoykeysControls=function(a,b,c){"use strict";function d(){p=1===o||3===o,h(),g(),e()}function e(){q={},o>=0&&f(l.buttons,0),o>=2&&f(m.buttons,1)}function f(a,b){for(var c in a)for(var d=0;d=0?C+" 1":null,c=o>=2?C+" 2":null;b.updateJoykeysConnections(p?c:a,p?a:c)}function h(){s.reset(),t.reset()}function i(){y[0]=l=WMSX.userPreferences.current.joykeys[0],y[1]=m=WMSX.userPreferences.current.joykeys[1]}function j(){this.reset=function(){this.portValue=63,this.pin8Value=0},this.reset()}this.connectPeripherals=function(a){k=a},this.powerOn=function(){i(),o>=0&&d()},this.powerOff=function(){},this.releaseControllers=function(){h()},this.resetControllers=function(){this.releaseControllers(),g()},this.readControllerPort=function(c){return a.netController?b.netGetMergedPortValues()[c]:this.readLocalControllerPort(c)},this.readLocalControllerPort=function(a){var b=u[a^p];return b.pin8Value?63:w>x?16|b.portValue:b.portValue},this.writeControllerPin8Port=function(a,b){u[a^p].pin8Value=b},this.controllersClockPulse=function(){o>=0&&v&&--w<=0&&(w=v)},this.toggleMode=function(c){var d=(2!==a.netPlayMode||z?A:B)[c?1:0][o+1];this.setMode(d),b.showStatusMessage("Joykeys "+this.getModeDesc())},this.setMode=function(a){a>=0&&o<0&&(r={}),o=a,d()},this.getMode=function(){return o},this.getModeDesc=function(){switch(o){case 0:return"SINGLE";case 1:return"SINGLE (port 2)";case 2:return"DUAL";case 3:return"DUAL (swapped)";default:return"DISABLED"}},this.getSwappedState=function(){return p},this.netClientAdaptToServerControlsModes=function(a){z=a.sw,-1!==o&&(z?1===o?this.setMode(0):3===o&&this.setMode(2):0===o?this.setMode(1):2===o&&this.setMode(3))},this.setTurboFireClocks=function(a){v=a,x=v/2|0,w=0},this.processKey=function(a,b){if(o<0)return c.processKey(a,b);var d=q[a];if(!d)return c.processKey(a,b);if(r[a]===b)return void(b||c.processKey(a,b));r[a]=b;for(var e=0;e(right-click to clear)"}}, -this.customizeControl=function(a,b,c){if(!q[c.wc]||!wmsx.Util.arrayFind(q[c.wc],function(c){return c.b===a&&c.p===b})){var d=y[b^p].buttons[a];d.length>=D&&d.splice(0,d.length-(D-1)),d.push(c),h(),e(),WMSX.userPreferences.setDirty()}},this.clearControl=function(a,b){y[b^p].buttons[a].length=0,h(),e(),WMSX.userPreferences.setDirty()};var k,l,m,n=wmsx.JoystickButtons,o=WMSX.JOYKEYS_MODE,p=!1,q={},r={},s=new j,t=new j,u=[s,t],v=0,w=0,x=0,y=[],z=!1,A=[[0,1,2,3,-1],[3,-1,0,1,2]],B=[[1,3,0,-1,2],[2,1,-1,3,0]],C=wmsx.ControllersHub.JOYKEYS,D=4},wmsx.DOMMouseControls=function(a,b){"use strict";function c(a){C=void 0!==a?a:B<0?-1:B,z?q(y):p(x),n()}function d(a){return a===C?y.portValue:b.portValueAllReleased}function e(){if(G=!1,C<0)return w.showOSD("Mouse Pointer Locking only when MOUSE is ENABLED!",!0,!0);var a=t.requestPointerLock||t.mozRequestPointerLock||t.webkitRequestPointerLock;a&&a.apply(t)}function f(){G=!1;var a=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock;a&&a.apply(document)}function g(){x.portValue=-49&x.portValue|(3&~x.buttons)<<4}function h(){switch(x.readCycle){case 0:x.portValue=-16&x.portValue|x.readDX>>4&15;break;case 1:x.portValue=-16&x.portValue|15&x.readDX;break;case 2:x.portValue=-16&x.portValue|x.readDY>>4&15;break;case 3:x.portValue=-16&x.portValue|15&x.readDY;break;default:x.portValue=-16&x.portValue}}function i(){var a=Math.round(-x.dX);a>127?a=127:a<-127&&(a=-127),x.dX+=a,x.readDX=a;var b=Math.round(-x.dY);b>127?b=127:b<-127&&(b=-127),x.dY+=b,x.readDY=b}function j(a){if(!(C<0)){a.preventDefault();var b=0,c=0;F?(b=a.movementX||a.mozMovementX||a.webkitMovementX||0,c=a.movementY||a.mozMovementY||a.webkitMovementY||0):u&&(b=a.clientX-u.clientX,c=a.clientY-u.clientY),u=a,y.dX+=b/D,y.dY+=c/E,A=y}}function k(a){if(4&a.buttons&&(a.preventDefault(),s.togglePointerLock()),C>=0){if(G&&a.buttons)return 1&a.buttons&&!F&&e(),void(G=!1);y.buttons=3&a.buttons,z||g(),A=y}}function l(){var a=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement;F=a===t,w.mousePointerLocked(F),w.showOSD(F?"Mouse Pointer Locked":"Mouse Pointer Released",F)}function m(a,b){C=a,s.writeControllerPin8Port(C,b),n(),o("Mouse AUTO-ENABLED")}function n(){F&&C<0&&f(),b.updateMouseConnections(0===C?I:null,1===C?I:null),w.mouseActiveCursorStateUpdate(C>=0)}function o(a){b.showStatusMessage(a)}function p(a){return a.readCycle=-1,a.dX=0,a.dY=0,a.buttons=0,a.portValue=b.portValueAllReleased,a.pin8Value=0,a.lastPin8FlipBUSCycle=0,a.readDX=0,a.readDY=0,A=x,a}function q(a){return a.dX=0,a.dY=0,a.buttons=void 0,A=void 0,a}function r(a){return a===C?x.portValue:b.portValueAllReleased}var s=this;this.connect=function(a){v=a},this.connectPeripherals=function(a){w=a},this.powerOn=function(){c()},this.powerOff=function(){},this.releaseControllers=function(){C>=0&&(z?q(y):p(x))},this.resetControllers=function(){this.releaseControllers(),-1===B&&(C=-1),n()},this.screenFullscreenStateUpdate=function(a){G=a&&!F},this.toggleMode=function(a){var b;a?(b=B-1)<-2&&(b=1):(b=B+1)>1&&(b=-2),this.setMode(b),o("Mouse "+this.getModeDesc())},this.setMode=function(a){B=a,c()},this.setModeEffective=function(a){B=a.m,c(a.p)},this.getMode=function(){return B},this.getModeEffective=function(){return{m:B,p:C}},this.getModeDesc=function(){switch(B){case-1:return"AUTO";case 0:return"ENABLED";case 1:return"ENABLED (port 2)";default:return"DISABLED"}},this.netClientAdaptToServerControlsModes=function(a){this.setModeEffective(a.m)},this.readControllerPort=function(b){return a.netController?r(b):d(b)},this.writeControllerPin8Port=function(a,b){if(a===C){if(x.pin8Value^b){x.pin8Value=b;var c=v.getBUSCycles()-x.lastPin8FlipBUSCycle;x.lastPin8FlipBUSCycle+=c,c>J&&(x.readCycle=-1),++x.readCycle,0===x.readCycle&&i(),h()}}},this.portPin8Announced=function(a,b){1===b&&!H&&C<0&&0===a&&-1===B&&m(a,b)},this.togglePointerLock=function(){F?f():e()},this.setMouseInputElement=function(a){t=a,"onpointerlockchange"in document?document.addEventListener("pointerlockchange",l,!1):"onmozpointerlockchange"in document&&document.addEventListener("mozpointerlockchange",l,!1),t.addEventListener("mousemove",j),t.addEventListener("mousedown",k),t.addEventListener("mouseup",k)},this.setScreenPixelScale=function(a,b){D=a,E=b},this.getMappingForControl=function(a,b){return[{wc:999999,n:["Alt","CapsLock"]}]},this.getMappingPopupText=function(a,b){return{heading:"Lock / Unlock pointer:",footer:"or click Middle Button"}},this.customizeControl=function(a,b,c){},this.clearControl=function(a,b){},this.netGetMouseStateToSend=function(){return A},this.netClearMouseInfoToSend=function(){z?q(y):A=void 0},this.netServerGetMouseState=function(){return x},this.netServerReceiveClientMouseState=function(a){x.dX+=a.dX,x.dY+=a.dY,void 0!==a.buttons&&(x.buttons=a.buttons,g()),A=x},this.netClientReceiveServerMouseState=function(a){x=a},this.netSetClientMode=function(a){z=a,y=a?q({}):x};var t,u,v,w,x=p({}),y=x,z=!1,A=void 0,B=WMSX.MOUSE_MODE-1,C=-1,D=1,E=1,F=!1,G=!1,H=wmsx.Util.isMobileDevice(),I=wmsx.ControllersHub.MOUSE,J=wmsx.Z80.BASE_CLOCK/1e3*1.5|0},wmsx.DOMTouchControls=function(a,b,c,d){"use strict";function e(){C.classList.toggle("wmsx-poweroff",!U),C.classList.toggle("wmsx-paused",V)}function f(){J=-2===I?-1:-1===I?G&&H?0:-1:I,v(),u()}function g(a){if(wmsx.Util.blockEvent(a),E)return E.touchControlDetected("T_DIR",a)}function h(a){if(wmsx.Util.blockEvent(a),E)return E.touchControlDetected("T_DIR",a);if(null===P){void 0===A&&m();var b=a.changedTouches[0];P=b.identifier,k(b.pageX,b.pageY)}}function i(a){wmsx.Util.blockEvent(a),null!==P&&(P=null,l(-1))}function j(a){if(wmsx.Util.blockEvent(a),null!==P)for(var b=a.changedTouches,c=0;cR&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),l(c)}function l(a){if(Q!==a){if(O.wmsxMappingIsKeys){var d=Y[Q+1];d[0]&&c.processMSXKey(d[0],!1),d[1]&&c.processMSXKey(d[1],!1);var e=Y[a+1];e[0]&&c.processMSXKey(e[0],!0),e[1]&&c.processMSXKey(e[1],!0)}else T.portValue=-16&T.portValue|X[a+1];a>=0&&b.hapticFeedback(),Q=a}}function m(){var a=O.getBoundingClientRect();R=.14*(a.right-a.left)|0,A=((a.left+a.right)/2|0)+window.pageXOffset,B=((a.top+a.bottom)/2|0)+window.pageYOffset}function n(a){if(wmsx.Util.blockEvent(a),E)return E.touchControlDetected(a.target.wmsxControl,a);p(a.target.wmsxMapping,!0)}function o(a){wmsx.Util.blockEvent(a),p(a.target.wmsxMapping,!1)}function p(a,d){a&&(d&&b.hapticFeedback(),a.button?d?(T.portValue&=~a.mask,K&&16&a.mask&&(L=M+1)):T.portValue|=a.mask:a.key&&c.processMSXKey(a.key,d))}function q(a){wmsx.Util.blockEvent(a),b.hapticFeedback(),d.processControlState(U?F.PAUSE:F.POWER,!0)}function r(a){wmsx.Util.blockEvent(a),b.hapticFeedback(),d.processControlState(V?F.FRAME:F.FAST_SPEED,!0)}function s(a){wmsx.Util.blockEvent(a),V||(b.hapticFeedback(),d.processControlState(V?F.FRAME:F.FAST_SPEED,!1))}function t(){y.updateMappingFor("T_DIR");for(var a in S)y.updateMappingFor(a)}function u(){b.updateTouchControlsConnections(0===J?W:null,1===J?W:null)}function v(){T.reset(),A=B=void 0,P=null,l(-1)}function w(){D=WMSX.userPreferences.current.touch,N=!!D.directionalBig}function x(){this.reset=function(){this.portValue=63,this.pin8Value=0},this.reset()}var y=this;this.connect=function(a){a.addPowerAndUserPauseStateListener(this)},this.connectPeripherals=function(a){z=a},this.powerOn=function(){w(),f()},this.powerOff=function(){},this.releaseControllers=function(){v()},this.resetControllers=function(){this.releaseControllers(),u()},this.readControllerPort=function(c){return a.netController?b.netGetMergedPortValues()[c]:this.readLocalControllerPort(c)},this.readLocalControllerPort=function(a){return a===J?T.pin8Value?63:L>M?16|T.portValue:T.portValue:63}, -this.writeControllerPin8Port=function(a,b){a===J&&(T.pin8Value=b)},this.controllersClockPulse=function(){J>=0&&K&&--L<=0&&(L=K)},this.toggleMode=function(a,c){if(!G)return void b.showErrorMessage("Touch Controls unavailable. Not a touch device!");var d;c?(d=a?J<0?1:0===J?-2:I-1:I-1)<-2&&(d=1):(d=a?0===J?1:-2===I?0:I+1:I+1)>1&&(d=-2),this.setMode(d),b.showStatusMessage("Touch Controls "+this.getModeDesc())},this.setMode=function(a){I=a,f()},this.getMode=function(){return I},this.getModeDesc=function(){switch(I){case-1:return"AUTO";case 0:return"ENABLED";case 1:return"ENABLED (port 2)";default:return G?"DISABLED":"NOT SUPPORTED"}},this.getSwappedState=function(){return 1===J},this.netClientAdaptToServerControlsModes=function(a){-1!==J&&(0!==J||a.sw?1===J&&a.sw&&this.setMode(0):this.setMode(1))},this.toggleDirBig=function(){N=!N,D.directionalBig=N,WMSX.userPreferences.setDirty(),this.controllersSettingsStateUpdate()},this.isDirBig=function(){return N},this.getPortActive=function(){return J},this.setTurboFireClocks=function(a){K=a,M=K/2|0,L=0},this.getMappingForControl=function(a,b){return null},this.screenReadjustedUpdate=function(){this.releaseControllers()},this.setupTouchControlsIfNeeded=function(a){function b(a,b){var c=wmsx.DOMTouchControls.createButton("wmsx-touch-"+b);c.wmsxControl=b,c.addEventListener("touchstart",n),c.addEventListener("touchmove",wmsx.Util.blockEvent),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),c.addEventListener("mousedown",n),c.addEventListener("mouseup",o),S[b]=c,a.appendChild(c)}if(!(O||J<0)){C=document.createElement("div"),C.id="wmsx-touch-speed";var c=document.createElement("div");c.id="wmsx-touch-pause",c.addEventListener("touchstart",q),c.addEventListener("mousedown",q),C.appendChild(c);var d=document.createElement("div");d.id="wmsx-touch-fast",d.addEventListener("touchstart",r),d.addEventListener("touchend",s),d.addEventListener("mousedown",r),d.addEventListener("mouseup",s),C.appendChild(d),a.appendChild(C);var f=document.createElement("div");f.id="wmsx-touch-left",b(f,wmsx.TouchControls.buttonsLeftSide[0]),O=wmsx.DOMTouchControls.createDirectional(),O.addEventListener("touchstart",h),O.addEventListener("touchmove",j),O.addEventListener("touchend",i),O.addEventListener("touchcancel",i),O.addEventListener("mousedown",g),f.appendChild(O),b(f,wmsx.TouchControls.buttonsLeftSide[1]),a.appendChild(f),f=document.createElement("div"),f.id="wmsx-touch-right";var k=wmsx.TouchControls.buttonsRightSide;for(var l in k)b(f,k[l]);a.appendChild(f),e(),t()}},this.startTouchDetection=function(a){E=a},this.stopTouchDetection=function(){E=null},this.customizeControl=function(a,b){"T_DIR"===a?D.directional=b:D.buttons[a]=b,this.updateMappingFor(a),WMSX.userPreferences.setDirty()},this.updateMappingFor=function(a){if("T_DIR"===a)O.wmsxMappingIsKeys="KEYBOARD"===D.directional,wmsx.DOMTouchControls.styleDirectionalMapping(O,D.directional);else{var b=S[a],c=D.buttons[a];b.wmsxMapping=c,wmsx.DOMTouchControls.styleButtonMapping(b,c)}},this.controllersSettingsStateUpdate=function(){var a=!!b.getSettingsState().touchActive;document.documentElement.classList.toggle("wmsx-touch-active",a),document.documentElement.classList.toggle("wmsx-dir-big",N),z.touchControlsActiveUpdate(a,N)},this.machinePowerAndUserPauseStateUpdate=function(a,b){U=a,V=b,C&&e()};var z,A,B,C,D,E,F=wmsx.MachineControls,G=wmsx.Util.isTouchDevice(),H=wmsx.Util.isMobileDevice(),I=WMSX.TOUCH_MODE>=1?WMSX.TOUCH_MODE-1:G?-1:-2,J=-1,K=0,L=0,M=0,N=!1,O=null,P=null,Q=-1,R=0,S={},T=new x,U=!1,V=!1,W=wmsx.ControllersHub.TOUCH,X=[15,14,6,7,5,13,9,11,10],Y=[[],["UP"],["RIGHT","UP"],["RIGHT"],["RIGHT","DOWN"],["DOWN"],["LEFT","DOWN"],["LEFT"],["LEFT","UP"]];this.saveState=function(){return{p:D}},this.loadState=function(a){if(v(),a.p){delete a.p.directionalBig;for(var b in a.p)D[b]=a.p[b];for(var c in D.buttons){var d=D.buttons[c];d&&d.sn&&!d.c_en&&(d.c_en=d.sn)}O&&t()}}},wmsx.DOMTouchControls.createDirectional=function(a){function b(a){var b=document.createElement("div");b.classList.add("wmsx-touch-dir-"+a),c.appendChild(b);var d=document.createElement("div");d.classList.add("wmsx-arrow-"+a),c.appendChild(d)}var c=document.createElement("div");return a&&(c.id=a),c.classList.add("wmsx-touch-dir"),b("left"),b("right"),b("up"),b("down"),c},wmsx.DOMTouchControls.createButton=function(a){var b=document.createElement("div");return a&&(b.id=a),b.classList.add("wmsx-touch-button"),b},wmsx.DOMTouchControls.styleDirectionalMapping=function(a,b){a.classList.toggle("wmsx-touch-dir-key","KEYBOARD"===b),a.classList.toggle("wmsx-touch-dir-joy","KEYBOARD"!==b)},wmsx.DOMTouchControls.styleButtonMapping=function(a,b){if(a.innerHTML=b?b.n||b.c_en:"",b)if(b.button){a.classList.add("wmsx-touch-button-joy"),a.classList.remove("wmsx-touch-button-key","wmsx-touch-button-none");for(var c=["A","B","AB"],d=0;d=0?u%11:11+u;var b=u?60/v[u]|0:0;p.setTurboFireClocks(b),r.setTurboFireClocks(b),s.setTurboFireClocks(b),t.setTurboFireClocks(b),B.controllersSettingsStateUpdate(), -B.showOSD("Turbo Fire"+(u?" speed: "+this.getTurboFireSpeedDesc():": OFF"),!0)},this.getTurboFireSpeedDesc=function(){return u?u+"x":"OFF"},this.getControlReport=function(a){switch(a){case wmsx.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:var b=t.isDirBig();return{label:b?"ON":"OFF",active:b};case wmsx.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:x?"ON":"OFF",active:!!x};case wmsx.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!u}}return{label:"Unknown",active:!1}},this.setupTouchControlsIfNeeded=function(a){t.setupTouchControlsIfNeeded(a)},this.setKeyInputElement=function(a){a.addEventListener("keydown",this.keyDown),a.addEventListener("keyup",this.keyUp)},this.screenReadjustedUpdate=function(){t.screenReadjustedUpdate()},this.screenFullscreenStateUpdate=function(a){q.screenFullscreenStateUpdate(a)},this.keyDown=function(a){return h(a,!0)},this.keyUp=function(a){return h(a,!1)},this.setMouseInputElement=function(a){q.setMouseInputElement(a)},this.setScreenPixelScale=function(a,b){q.setScreenPixelScale(a,b)},this.updateMouseConnections=function(a,b){k[0]=a,k[1]=b,d()},this.updateJoystickConnections=function(a,b){l[0]=a,l[1]=b,d()},this.updateJoykeysConnections=function(a,b){m[0]=a,m[1]=b,d()},this.updateTouchControlsConnections=function(a,b){n[0]=a,n[1]=b,d()},this.showStatusMessage=function(a){var b=k[0]||l[0]||m[0]||n[0]||" - -  ",c=k[1]||l[1]||m[1]||n[1]||" - -  ";B.showOSD((a?a+".  ":"")+"Port 1:  "+b+",  Port 2:  "+c,!0)},this.showErrorMessage=function(a){B.showOSD(a,!0,!0)},this.getSettingsState=function(){return o.mouseModeDesc=q.getModeDesc(),o.joysticksModeDesc=r.getModeDesc(),o.joykeysModeDesc=s.getModeDesc(),o.touchPortSet=t.getPortActive(),o.touchActive=j[0]===t||j[1]===t,o.ports[0]=k[0]||l[0]||m[0]||n[0]||wmsx.ControllersHub.NONE,o.ports[1]=k[1]||l[1]||m[1]||n[1]||wmsx.ControllersHub.NONE,o.turboFireSpeedDesc=this.getTurboFireSpeedDesc(),o},this.getMappingForControl=function(a,b){return j[b]&&j[b].getMappingForControl(a,b)},this.getMappingPopupText=function(a,b){return j[b]&&j[b].getMappingPopupText(a,b)},this.mappingPopupVisibility=function(a,b,c){c&&j[b]===r?r.startButtonDetection(b,a):r.stopButtonDetection()},this.customizeControl=function(a,b,c){j[b].customizeControl(a,b,c)},this.clearControl=function(a,b){return j[b].clearControl(a,b)},this.hapticFeedback=function(){x&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!x||"touchstart"!==a.type&&"touchend"!==a.type&&"touchmove"!==a.type||navigator.vibrate(8)};var h=function(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=i.codeNewForKeyboardEvent(a);return s.processKey(c,b),!1};this.netGetInfoToSend=function(){var a=q.netGetMouseStateToSend();return a||A?{m:a,p:A}:void 0},this.netClearInfoToSend=function(){A=void 0,q.netClearMouseInfoToSend()},this.netServerGetFullInfo=function(){return{m:q.netServerGetMouseState(),p:C}},this.netGetMergedPortValues=function(){return C},this.netClientReceiveServerInfo=function(a){a.m&&q.netClientReceiveServerMouseState(a.m);var b=a.p;b&&(C[0]=b[0],C[1]=b[1])},this.netServerReceiveClientInfo=function(a,b){b.m&&q.netServerReceiveClientMouseState(b.m);var c=b.p;c&&(F=!0,a.controllersPortValues=c[0]!==z||c[1]!==z?c:void 0)},this.netServerClearClientsMergedInfo=function(){E[0]=z,E[1]=z,F=!1},this.netServerGetControlsModes=function(){return{m:q.getModeEffective(),sw:s.getSwappedState()||r.getSwappedState()||t.getSwappedState()}},this.netClientGetControlsModes=function(){return{k:s.getMode(),j:r.getMode(),m:q.getModeEffective(),t:t.getMode()}},this.netClientRestoreControlsModes=function(a){s.setMode(a.k),r.setMode(a.j),q.setModeEffective(a.m),t.setMode(a.t)},this.netClientAdaptToServerControlsModes=function(a){s.netClientAdaptToServerControlsModes(a),r.netClientAdaptToServerControlsModes(a),q.netClientAdaptToServerControlsModes(a),t.netClientAdaptToServerControlsModes(a)},this.saveState=function(){return{jk:y,t:t.saveState(),h:x}},this.loadState=function(a){void 0!==a.jk&&(y=a.jk,z=63|y,this.portValueAllReleased=z),a.t&&t.loadState(a.t),void 0!==a.h&&(x=a.h&&w)};var i=wmsx.DOMKeys,j=[null,null],k=[null,null],l=[null,null],m=[null,null],n=[null,null],o={ports:[null,null]},p=new wmsx.DOMKeyboard(this,a,b),q=new wmsx.DOMMouseControls(a,this),r=new wmsx.GamepadJoysticksControls(a,this,p),s=new wmsx.DOMJoykeysControls(a,this,p),t=new wmsx.DOMTouchControls(a,this,p,b),u=0,v=[0,2,2.4,3,4,5,6,7.5,10,12,15],w=!!navigator.vibrate,x=w&&!!WMSX.userPreferences.current.hapticFeedback,y=0!==WMSX.KEYBOARD_JAPAN_LAYOUT?64:0,z=63|y;this.portValueAllReleased=z;var A,B,C=[z,z],D=[z,z],E=[z,z],F=!1;wmsx.ControllersHub.hapticFeedback=this.hapticFeedback,wmsx.ControllersHub.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},wmsx.ControllersHub.MOUSE="MOUSE",wmsx.ControllersHub.JOYSTICK="JOYSTICK",wmsx.ControllersHub.JOYKEYS="JOYKEYS",wmsx.ControllersHub.TOUCH="TOUCH",wmsx.ControllersHub.JOY_ANY="JOY",wmsx.ControllersHub.NONE="NO DEVICE",wmsx.DOMMachineControls=function(a,b){"use strict";function c(b,c,e,f){if(2===a.netPlayMode&&(S.has(b)||T.has(b)))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);1===a.netPlayMode&&S.has(b)||n.push({c:b<<4|e<<1|c,d:f}),2!==a.netPlayMode&&d(b,c,e,f)}function d(a,b,c,d){g.controlStateChanged(a,b,c,d),R.has(a)&&h.quickOptionsControlsStateUpdate()}this.connect=function(a){g=a},this.connectPeripherals=function(a){h=a},this.powerOn=function(){e()},this.powerOff=function(){},this.processKey=function(a,d){var e=a&Q,f=k[e];return!f||m[a]?b.processKey(a,d):d===l[e]||(l[e]=d,c(f,d,e!==a),!0)},this.processControlState=c,this.getControlReport=function(a){return g.getControlReport(a)};var e=function(){window.onhelp=function(){return!1}},f=function(){var a=i;k[o]=j.POWER,k[o|a.ALT]=j.POWER,k[p]=j.FAST_SPEED,k[p|a.ALT]=j.FAST_SPEED,k[q|a.ALT]=j.INC_SPEED,k[r|a.ALT]=j.DEC_SPEED,k[s|a.ALT]=j.NORMAL_SPEED,k[t|a.ALT]=j.MIN_SPEED,m[q|a.ALT]=!0,m[r|a.ALT]=!0,m[s|a.ALT]=!0,m[t|a.ALT]=!0,k[u|a.ALT]=j.PAUSE,k[v|a.ALT]=j.FRAME,k[w|a.ALT]=j.FRAME,k[x|a.ALT]=j.DEBUG,k[y|a.ALT]=j.SPRITE_MODE,k[z|a.ALT]=j.VIDEO_STANDARD,k[A|a.ALT]=j.CPU_TURBO_MODE,k[B|a.ALT]=j.VDP_TURBO_MODE,k[C|a.CONTROL|a.ALT]=j.SAVE_STATE_0,k[D|a.CONTROL|a.ALT]=j.SAVE_STATE_0,k[E|a.CONTROL|a.ALT]=j.SAVE_STATE_1,k[F|a.CONTROL|a.ALT]=j.SAVE_STATE_2,k[G|a.CONTROL|a.ALT]=j.SAVE_STATE_3,k[H|a.CONTROL|a.ALT]=j.SAVE_STATE_4,k[I|a.CONTROL|a.ALT]=j.SAVE_STATE_5,k[J|a.CONTROL|a.ALT]=j.SAVE_STATE_6,k[K|a.CONTROL|a.ALT]=j.SAVE_STATE_7,k[L|a.CONTROL|a.ALT]=j.SAVE_STATE_8,k[M|a.CONTROL|a.ALT]=j.SAVE_STATE_9,k[N|a.CONTROL|a.ALT]=j.SAVE_STATE_10,k[O|a.CONTROL|a.ALT]=j.SAVE_STATE_11,k[P|a.CONTROL|a.ALT]=j.SAVE_STATE_12,k[C|a.ALT]=j.LOAD_STATE_0,k[D|a.ALT]=j.LOAD_STATE_0,k[E|a.ALT]=j.LOAD_STATE_1,k[F|a.ALT]=j.LOAD_STATE_2,k[G|a.ALT]=j.LOAD_STATE_3,k[H|a.ALT]=j.LOAD_STATE_4,k[I|a.ALT]=j.LOAD_STATE_5,k[J|a.ALT]=j.LOAD_STATE_6,k[K|a.ALT]=j.LOAD_STATE_7,k[L|a.ALT]=j.LOAD_STATE_8,k[M|a.ALT]=j.LOAD_STATE_9,k[N|a.ALT]=j.LOAD_STATE_10,k[O|a.ALT]=j.LOAD_STATE_11,k[P|a.ALT]=j.LOAD_STATE_12};this.netGetControlsToSend=function(){return n.length?n:void 0},this.netClearControlsToSend=function(){n.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b>4)||n.push(e),d(e.c>>4,1&e.c,2&e.c,e.d)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b>4,1&e.c,2&e.c,e.d)}};var g,h,i=wmsx.DOMKeys,j=wmsx.MachineControls,k={},l={},m={},n=new Array(100);n.length=0 -;var o=i.VK_F11.wc,p=i.VK_F12.wc,q=i.VK_UP.wc,r=i.VK_DOWN.wc,s=i.VK_RIGHT.wc,t=i.VK_LEFT.wc,u=i.VK_P.wc,v=i.VK_O.wc,w=i.VK_F.wc,x=i.VK_D.wc,y=i.VK_S.wc,z=i.VK_Q.wc,A=i.VK_T.wc,B=i.VK_Y.wc,C=i.VK_QUOTE.wc,D=i.VK_BACKQUOTE.wc,E=i.VK_1.wc,F=i.VK_2.wc,G=i.VK_3.wc,H=i.VK_4.wc,I=i.VK_5.wc,J=i.VK_6.wc,K=i.VK_7.wc,L=i.VK_8.wc,M=i.VK_9.wc,N=i.VK_0.wc,O=i.VK_MINUS.wc,P=i.VK_EQUALS.wc,Q=~i.SHIFT,R=new Set([j.VIDEO_STANDARD,j.CPU_TURBO_MODE,j.VDP_TURBO_MODE,j.SPRITE_MODE,j.VSYNCH]),S=new Set([j.SAVE_STATE_0,j.SAVE_STATE_1,j.SAVE_STATE_2,j.SAVE_STATE_3,j.SAVE_STATE_4,j.SAVE_STATE_5,j.SAVE_STATE_6,j.SAVE_STATE_7,j.SAVE_STATE_8,j.SAVE_STATE_9,j.SAVE_STATE_10,j.SAVE_STATE_11,j.SAVE_STATE_12,j.SAVE_STATE_FILE,j.LOAD_STATE_0,j.LOAD_STATE_1,j.LOAD_STATE_2,j.LOAD_STATE_3,j.LOAD_STATE_4,j.LOAD_STATE_5,j.LOAD_STATE_6,j.LOAD_STATE_7,j.LOAD_STATE_8,j.LOAD_STATE_9,j.LOAD_STATE_10,j.LOAD_STATE_11,j.LOAD_STATE_12,j.TRACE]),T=new Set([j.VSYNCH]);!function(){f()}()},wmsx.DOMVirtualKeyboard=function(a,b,c){"use strict";function d(a){a.addEventListener("touchstart",e),a.addEventListener("mousedown",e),a.addEventListener("touchend",f),a.addEventListener("mouseup",f)}function e(a){h(a);var c=a.target.wmsxKey;c&&(b.processMSXKey(c,!0),"SHIFT"===c&&g())}function f(a){h(a);var c=a.target.wmsxKey;c&&(b.processMSXKey(c,!1),"SHIFT"===c&&g())}function g(){var a=b.isShiftPressed();a!==k&&(k=a,j&&wmsx.VirtualKeyboard.updateKeysLabels(j,k,l))}function h(a){a.stopPropagation(),a.preventDefault()}var i=this;this.machineTypeStateUpdate=function(){var a=c.getMachineLang();a!==l&&(l=a,j&&wmsx.VirtualKeyboard.updateKeysLabels(j,k,l))};var j,k=!1,l="en";!function(){c.addMachineTypeStateListener(i),j=wmsx.VirtualKeyboard.create(a,d,k,l)}()},wmsx.ScreenGUI=wmsx.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:597,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:597,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},wmsx.ScreenGUI.html=function(){return'

Drive A

Drive B

Hard Drive

Cartridge 1

Cartridge 2

Cassette
Swipe up/down on the Screen
to hide the browser bars!
'},wmsx.ScreenGUI.css=function(){ -return"html.wmsx-full-screen-scroll-hack body { position: absolute; width: 100%; height: "+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #wmsx-screen-fs, #wmsx-screen-fs div, #wmsx-screen-fs canvas { outline: none; } #"+WMSX.SCREEN_ELEMENT_ID+" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.wmsx-full-screen #"+WMSX.SCREEN_ELEMENT_ID+" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646; /* one behind fsElement */ } html.wmsx-started #"+WMSX.SCREEN_ELEMENT_ID+" { visibility: visible; } #wmsx-screen-scroll-message { position: absolute; left: 0; right: 0; bottom: -50%; width: 0; height: 0; padding: 0; margin: 0 auto; font-size: 16px; line-height: 28px; color: hsl(0, 0%, 4%); white-space: nowrap; background: hsl(0, 0%, 92%); border-radius: 15px; box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; opacity: 0; z-index: -1; } html.wmsx-full-screen-scroll-hack #wmsx-screen-fs.wmsx-scroll-message #wmsx-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 10; transition: none; } #wmsx-screen-fs { position: relative; background: black; text-align: center; overflow: hidden; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.wmsx-full-screen #wmsx-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.wmsx-full-screen-scroll-hack #wmsx-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.wmsx-full-screen #wmsx-screen-fs-center { /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #wmsx-screen-canvas-outer { display: inline-block; position: relative; vertical-align: top; line-height: 1px; z-index: 3; } #wmsx-screen-canvas { display: block; } #wmsx-bar { position: relative; left: 0; right: 0; height: "+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible; /* for the Menu to show through */ box-sizing: content-box; z-index: 5; } #wmsx-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.wmsx-bar-auto-hide #wmsx-bar, html.wmsx-full-screen #wmsx-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.wmsx-bar-auto-hide #wmsx-bar.wmsx-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.wmsx-full-screen #wmsx-bar.wmsx-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #wmsx-bar.wmsx-narrow .wmsx-narrow-hidden { display: none; } .wmsx-bar-button { display: inline-block; width: 24px; height: 29px; margin: 0 1px; background-image: url("'+wmsx.Images.urls.sprites+'"); background-repeat: no-repeat; background-size: 568px 206px; cursor: pointer; } .wmsx-bar-button.wmsx-media-button { background-size: 284px 103px; } .wmsx-bar-button.wmsx-hidden { display: none; } /* Firefox-specific rules */ @-moz-document url-prefix() { .wmsx-bar-button { image-rendering: optimizequality; } } /* .wmsx-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #wmsx-bar-power { margin-left: 6px; } #wmsx-bar-media-icons { margin-left: 10px; } #wmsx-bar-settings, #wmsx-bar-full-screen, #wmsx-bar-scale-plus, #wmsx-bar-scale-minus { float: right; margin: 0; } #wmsx-bar-settings { margin-right: 5px; } #wmsx-bar-full-screen.wmsx-mobile { margin: 0 6px; } #wmsx-bar-scale-plus { width: 21px; } #wmsx-bar-scale-minus { width: 18px; } #wmsx-bar-text { float: right; width: 32px; } #wmsx-bar-text.wmsx-mobile { margin: 0 0 0 6px; } #wmsx-bar-keyboard { position: absolute; left: 0; right: 0; width: 37px; margin: 0 auto; } #wmsx-bar.wmsx-narrow #wmsx-bar-keyboard { position: static; float: right; } #wmsx-bar-logo { position: absolute; left: 0; right: 0; width: 52px; margin: 0 auto; } #wmsx-bar-turbo { position: absolute; left: 118px; right: 0; width: 47px; margin: 0 auto; padding: 7px 0 0 26px; color: hsl(0, 98%, 61%); font-weight: bold; font-size: 14px; line-height: 14px; text-shadow: 2px 2px 0 black; vertical-align: top; box-sizing: border-box; } #wmsx-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+"px; font-size: "+this.BAR_MENU_ITEM_FONT_SIZE+"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .wmsx-bar-menu-item, #wmsx-bar-menu-title { position: relative; display: none; width: "+this.BAR_MENU_WIDTH+"px; height: "+this.BAR_MENU_ITEM_HEIGHT+"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: "+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #wmsx-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .wmsx-bar-menu-item.wmsx-hover:not(.wmsx-bar-menu-item-disabled):not(.wmsx-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .wmsx-bar-menu-item-disabled { color: rgb(110, 110, 110); } .wmsx-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .wmsx-bar-menu-item-toggle { text-align: left; padding-left: 33px; } .wmsx-bar-menu-item-toggle::before, .wmsx-bar-menu-item-toggle::after { content: ""; position: absolute; width: 6px; height: 9px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+"px; left: 12px; background: rgb(82, 82, 82); box-shadow: black 1px 1px 1px; } .wmsx-bar-menu-item-toggle::after { top: "+((this.BAR_MENU_ITEM_HEIGHT-21)/2+10|0)+"px; } .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked { color: white; } .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op1::before, .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op3::before { background: rgb(254, 32, 30); } .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op2::after, .wmsx-bar-menu-item-toggle.wmsx-bar-menu-item-toggle-checked.wmsx-op3::after { background: rgb(254, 32, 30); } .wmsx-bar-menu-item-toggle.wmsx-no-op2::before { top: "+((this.BAR_MENU_ITEM_HEIGHT-21)/2+2|0)+'px; height: 16px; } .wmsx-bar-menu-item-toggle.wmsx-no-op2::after { display: none; } .wmsx-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; background: hsl(0, 0%, 16%); padding: 14px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 4; } .wmsx-select-dialog.wmsx-show { display: block; } .wmsx-select-dialog > .wmsx-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .wmsx-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .wmsx-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0; line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .wmsx-select-dialog > ul li.wmsx-visible { display: block; } .wmsx-select-dialog > ul li.wmsx-selected { color: white; background: hsl(358, 67%, 46%); } .wmsx-select-dialog > ul li.wmsx-droptarget { color: white; border-color: lightgray; } .wmsx-select-dialog > ul li.wmsx-toggle::after { content: ""; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .wmsx-select-dialog > ul li.wmsx-toggle-checked::after { background: rgb(254, 32, 30); } #wmsx-diskselect.wmsx-select-dialog li { padding-left: 23px; } #wmsx-diskselect.wmsx-select-dialog li.wmsx-toggle::after { background: hsl(0, 0%, 73%); } #wmsx-diskselect.wmsx-select-dialog li.wmsx-toggle-checked::after { background: rgb(230, 205, 31); } #wmsx-cartridge-format.wmsx-select-dialog > ul { width: 100%; height: 292px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #wmsx-cartridge-format.wmsx-select-dialog > ul li { width: 220px; margin: 7px 0 2px 0; } #wmsx-cartridge-format.wmsx-select-dialog > ul li:first-child { margin-top: 0; } #wmsx-cartridge-format ::-webkit-scrollbar { width: 12px; } #wmsx-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #wmsx-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #wmsx-cartridge-format ul.wmsx-quick-options-list { width: 220px; margin: 18px 0 0 30px; } #wmsx-cartridge-format ul.wmsx-quick-options-list li div { height: 24px; line-height: 24px; } #wmsx-cartridge-format .wmsx-control { width: 52px; line-height: 24px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #wmsx-cartridge-format.wmsx-select-dialog > ul { width: 304px; } } #wmsx-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #wmsx-logo.wmsx-show { display: block; } #wmsx-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #wmsx-screen-fs:not(.wmsx-logo-message-active) #wmsx-logo-center { max-width: 100%; max-height: 100%; } #wmsx-logo-image { position: absolute; top: 50%; left: 50%; width: 334px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } html.wmsx-full-screen #wmsx-logo-image { max-width: 67%; } #wmsx-screen-fs.wmsx-logo-message-active #wmsx-logo-image { top: 138px; max-width: initial; } #wmsx-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-unmute-message::before { content: ""; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url("'+wmsx.Images.urls.muteIcon+'"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #wmsx-unmute-message::after { content: "Audio is muted. Click to unmute"; } #wmsx-unmute-message.wmsx-show { display: inline-block; } #wmsx-logo-loading-icon, #wmsx-canvas-loading-icon { display: none; position: absolute; top: 62%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 12px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #wmsx-screen-fs.wmsx-logo-message-active #wmsx-logo-loading-icon { top: 190px; } #wmsx-logo-message { display: none; position: absolute; top: 224px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #wmsx-screen-fs.wmsx-logo-message-active #wmsx-logo-message { display: block; } #wmsx-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #wmsx-logo-message-ok.wmsx-higher { top: 74px; } #wmsx-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #wmsx-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 20px; height: 28px; padding: 0 10px; margin: 0; font-weight: bold; font-size: 15px; line-height: 28px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } #wmsx-copy-texarea { position: absolute; width: 50px; height: 0; bottom: 0; z-index: -10; opacity: 0; } #wmsx-paste-cover { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 340px; height: 136px; margin: auto; border-radius: 20px; background: rgba(0, 0, 0, 0.4); z-index: 1; } #wmsx-paste-cover.wmsx-show { display: block; } #wmsx-paste-box { position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 270px; height: 66px; margin: auto; background: rgba(255, 40, 40, 0.75); font-weight: bold; font-size: 26px; text-align: center; color: transparent; border: 2px dashed rgba(240, 240, 240, 0.70); box-sizing: initial; border-radius: 10px; text-shadow: 0 0 0 rgb(240, 240, 240); padding: 0; outline: none; } #wmsx-text-entry-dialog { display: none; position: absolute; top: 25px; left: 0; right: 0; width: 96%; max-width: 540px; height: 47%; max-height: 450px; margin: 0 auto; color: white; font-size: 19px; line-height: 23px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 4; } #wmsx-text-entry-dialog.wmsx-show { display: block; } #wmsx-text-entry-dialog-bar { position: absolute; height: 40px; width: 100%; line-height: 40px; background: inherit; overflow: hidden; } #wmsx-text-entry-dialog-bar::before { content: "Input Text"; } #wmsx-text-entry-dialog-ok, #wmsx-text-entry-dialog-cancel { display: inline-block; float: right; width: 70px; height: 22px; margin-right: 15px; border: 9px solid hsl(0, 0%, 16%); border-left: none; border-right: none; font-size: 14px; line-height: 22px; background: hsl(358, 67%, 46%); cursor: pointer; } #wmsx-text-entry-dialog-cancel { color: hsl(0, 0%, 90%); background: hsl(0, 0%, 30%); } #wmsx-text-entry-dialog-ok::before { content: "OK"; } #wmsx-text-entry-dialog-cancel::before { content: "CANCEL"; } #wmsx-text-entry-input { position: absolute; top: 15px; left: 15px; width: calc(100% - 30px); height: calc(100% - 30px); padding: 29px 6px 4px; font-size: 16px; border: none; border-radius: 0; background: hsl(0, 0%, 90%); box-sizing: border-box; resize: none; outline: none; -webkit-touch-callout: default; touch-callout: default; } .wmsx-arrow-up, .wmsx-arrow-down, .wmsx-arrow-left, .wmsx-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .wmsx-arrow-up { border-bottom-color: inherit; } .wmsx-arrow-down { border-top-color: inherit; } .wmsx-arrow-left { border-right-color: inherit; } .wmsx-arrow-right { border-left-color: inherit; } .wmsx-keyboard-key { position: absolute; height: 25px; padding: 5px 0 0; overflow: hidden; font-weight: normal; font-size: 10px; line-height: 10px; text-align: center; vertical-align: top; color: white; background: hsl(0, 0%, 66%); border: 3px solid hsl(0, 0%, 50%); border-top: 1px solid hsl(0, 0%, 54%); border-bottom: 5px solid hsl(0, 0%, 33%); border-radius: 3px 3px 0 0; box-shadow: 0 1px 0 1px rgb(0, 0, 0); box-sizing: border-box; cursor: pointer; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-keyboard-key.wmsx-keyboard-key-dark { background: hsl(0, 0%, 46%); border-color: hsl(0, 0%, 36%); border-top-color: hsl(0, 0%, 40%); border-bottom-color: hsl(0, 0%, 24%); } .wmsx-keyboard-key.wmsx-keyboard-key-unmapped { color: rgb(30, 30, 30); font-weight: bold; -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } .wmsx-keyboard-alpha, .wmsx-keyboard-num, .wmsx-keyboard-arrows { position: absolute; } .wmsx-keyboard-alpha > div, .wmsx-keyboard-num > div, .wmsx-keyboard-arrows > div { position: absolute; } .wmsx-keyboard-num { left: 416px; } .wmsx-keyboard-arrows { top: 104px; left: 417px; } .wmsx-keyboard-f1, .wmsx-keyboard-f2, .wmsx-keyboard-f3, .wmsx-keyboard-f4, .wmsx-keyboard-f5, .wmsx-keyboard-stop, .wmsx-keyboard-select, .wmsx-keyboard-home, .wmsx-keyboard-insert, .wmsx-keyboard-delete { height: 18px; padding-top: 2px; font-size: 9px; line-height: 9px; border-width: 1px 2px 4px; } .wmsx-keyboard-stop { margin-left: 10px; background: hsl(0, 70%, 54%); border-color: hsl(0, 70%, 36%); border-top-color: hsl(0, 70%, 40%); border-bottom-color: hsl(0, 70%, 28%); } .wmsx-keyboard-enter { border-radius: 2px 3px 0 0; border-top: none; box-shadow: none; overflow: visible; } .wmsx-keyboard-enter::after { content: ""; display: block; position: absolute; left: -10px; bottom: -7px; width: 20px; height: 2px; background: black; } .wmsx-keyboard-enter_x1 { border-radius: 2px 0 0 0; border-width: 1px; border-right: none; box-shadow: -1px 1px 0 0 black; } .wmsx-keyboard-enter_x2 { overflow: visible; padding: 0; border: none; border-radius: 0 3px 0 0; box-shadow: none; box-shadow: 1px 1px 0 0 black; } .wmsx-keyboard-enter_x2::after { content: ""; display: block; width: 30px; height: 50px; background: inherit; border: 3px solid hsl(0, 0%, 36%); border-top: 1px solid hsl(0, 0%, 40%); border-bottom: 5px solid hsl(0, 0%, 24%); border-radius: 0 3px 0 0; box-shadow: 1px 2px 0 0 black, 1px 0 0 0 black; box-sizing: border-box; } .wmsx-keyboard-capslock { margin-left: 16px; } .wmsx-keyboard-space { left: 103px; width: 217px; } .wmsx-keyboard-dead { left: 333px; width: 26px; } .wmsx-keyboard-shift2 { left: 360px; width: 41px; } .wmsx-keyboard-code { left: 321px; width: 46px; } .wmsx-keyboard-num .wmsx-keyboard-key { height: 23px; padding-top: 4px; } .wmsx-keyboard-arrows .wmsx-keyboard-key { font-size: 8px; line-height: 9px; background: rgb(70, 85, 180); border-width: 1px 2px 4px; border-radius: 2px 2px 0 0; border-color: hsl(232, 44%, 37%); border-top-color: hsl(232, 44%, 40%); border-bottom-color: hsl(232, 44%, 24%); } .wmsx-keyboard-left, .wmsx-keyboard-right { top: 6px; width: 26px; height: 33px; padding: 10px 0 0 6px; } .wmsx-keyboard-up, .wmsx-keyboard-down { left: 27px; width: 37px; height: 23px; padding: 5px 0 0 12px; } .wmsx-keyboard-down { top: 23px; padding-top: 7px; } .wmsx-keyboard-right { left: 65px; padding-left: 10px; } .wmsx-keyboard-up::after, .wmsx-keyboard-down::after, .wmsx-keyboard-left::after, .wmsx-keyboard-right::after { content: ""; display: block; border: 4px solid transparent; width: 6px; height: 6px; box-sizing: border-box; } .wmsx-keyboard-up::after { border-bottom: 5px solid white; border-top-width: 0; } .wmsx-keyboard-up.wmsx-keyboard-key-unmapped::after { border-bottom-color: black; } .wmsx-keyboard-down::after { border-top: 5px solid white; border-bottom-width: 0; } .wmsx-keyboard-down.wmsx-keyboard-key-unmapped::after { border-top-color: black; } .wmsx-keyboard-left::after { border-right: 5px solid white; border-left-width: 0; } .wmsx-keyboard-left.wmsx-keyboard-key-unmapped::after { border-right-color: black; } .wmsx-keyboard-right::after { border-left: 5px solid white; border-right-width: 0; } .wmsx-keyboard-right.wmsx-keyboard-key-unmapped::after { border-left-color: black; } .wmsx-keyboard-narrow .wmsx-keyboard-num { display: none; } .wmsx-keyboard-narrow .wmsx-keyboard-arrows { left: 336px; } .wmsx-keyboard-narrow .wmsx-keyboard-space { width: 155px; } .wmsx-keyboard-narrow .wmsx-keyboard-code { left: 259px; width: 39px; } .wmsx-keyboard-narrow .wmsx-keyboard-dead { left: 299px; top: 25px; } .wmsx-keyboard-narrow .wmsx-keyboard-shift2 { display: none; } .wmsx-keyboard-narrow .wmsx-keyboard-left, .wmsx-keyboard-narrow .wmsx-keyboard-right { top: 9px; width: 23px; height: 27px; padding: 7px 0 0 5px; border-bottom-width: 3px; } .wmsx-keyboard-narrow .wmsx-keyboard-up, .wmsx-keyboard-narrow .wmsx-keyboard-down { left: 24px; width: 26px; padding-left: 7px; border-bottom-width: 3px; } .wmsx-keyboard-narrow .wmsx-keyboard-right { left: 51px; padding-left: 8px; } #wmsx-virtual-keyboard { display: none; position: absolute; left: 50%; bottom: '+(this.BAR_HEIGHT+2)+'px; overflow: hidden; margin: 0 auto; padding: 5px 0 0 4px; width: 518px; height: 161px; background: hsl(0, 0%, 16%); box-sizing: border-box; transform: translateX(-50%); transform-origin: center bottom; transition: height 0.3s ease-in-out; text-align: left; z-index: 2; } html.wmsx-full-screen.wmsx-virtual-keyboard-active #wmsx-virtual-keyboard { display: block; } .wmsx-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .wmsx-quick-options-list li { margin-top: 9px; line-height: 1px; text-align: left; } .wmsx-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .wmsx-quick-options-list .wmsx-control { position: relative; float: right; width: 134px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .wmsx-quick-options-list .wmsx-control > button { position: absolute; top: 0; bottom: 0; width: 26px; height: 100%; background: rgb(70, 70, 70); border: none; outline: none; cursor: pointer; -webkit-appearance: none; } .wmsx-quick-options-list .wmsx-control > button::after { content: ""; position: absolute; top: 7px; border: 6px solid transparent; } .wmsx-quick-options-list .wmsx-control .wmsx-control-dec { left: 0; border-right: 1px solid black; } .wmsx-quick-options-list .wmsx-control .wmsx-control-dec::after { left: 2px; border-right-color: #c0c0c0; } .wmsx-quick-options-list .wmsx-control .wmsx-control-inc { right: 0; border-left: 1px solid black; } .wmsx-quick-options-list .wmsx-control .wmsx-control-inc::after { right: 2px; border-left-color: #c0c0c0; } .wmsx-quick-options-list .wmsx-control.wmsx-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .wmsx-quick-options-list .wmsx-control.wmsx-selected.wmsx-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #wmsx-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 270px; height: 351px; margin: auto; padding: 14px 15px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 3; } #wmsx-quick-options.wmsx-show { display: block; } #wmsx-quick-options::before { content: "Quick Options"; display: block; } #wmsx-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #wmsx-netplay.wmsx-show { display: block; } #wmsx-netplay::before { content: "Net Play!"; display: block; } #wmsx-netplay-status-box { position: relative; margin-top: 17px; } #wmsx-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #wmsx-netplay-status-box.wmsx-active #wmsx-netplay-status { padding: 0 16px 0 12px; } #wmsx-netplay-status-box.wmsx-active #wmsx-netplay-status::after { content: ""; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(254, 32, 30); } #wmsx-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #wmsx-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #wmsx-netplay-status-box.wmsx-active #wmsx-netplay-link { display: block; } .wmsx-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #wmsx-netplay-session-box { margin-top: 18px; } #wmsx-netplay-session-label, #wmsx-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #wmsx-netplay-session-label::before { content: "Session Name"; } #wmsx-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #wmsx-netplay-nick-label { margin-top: 10px; } #wmsx-netplay-nick-label::before { content: "User Nickname"; } .wmsx-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #wmsx-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #wmsx-netplay-session-box.wmsx-disabled div { color: rgb(130, 130, 130); } input#wmsx-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #wmsx-touch-config { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 294px; height: 269px; margin: auto; padding: 0 16px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: border-box; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 3; } #wmsx-screen-fs.wmsx-touch-config-active #wmsx-touch-config { display: block; } #wmsx-touch-config::after { content: "Tap Control to Setup"; position: absolute; display: block; top: 14px; left: 0; width: 100%; } #wmsx-touch-config::before { content: ""; display: block; margin-top: 46px; height: 68px; background: black; } #wmsx-touch-config-minus, #wmsx-touch-config-plus { position: absolute; top: 46px; width: 72px; height: 68px; cursor: pointer; } #wmsx-touch-config-minus { left: 19px; } #wmsx-touch-config-plus { right: 19px; } #wmsx-touch-config-minus::after, #wmsx-touch-config-plus::after { content: ""; position: absolute; top: 20px; border: 14px solid transparent; } #wmsx-touch-config-minus::after { left: 9px; border-right: 18px solid #c0c0c0; } #wmsx-touch-config-minus.wmsx-disabled::after { border-right-color: #404040; } #wmsx-touch-config-plus::after { right: 9px; border-left: 18px solid #c0c0c0; } #wmsx-touch-config-plus.wmsx-disabled::after { border-left-color: #404040; } #wmsx-touch-config-dir { display: none; position: absolute; top: 15px; left: 79px; transform: scale(.70); } #wmsx-touch-config-dir.wmsx-show { display: block; } #wmsx-touch-config-dir::before { display: none; } #wmsx-touch-config-button { display: none; position: absolute; top: 46px; right: 109px; text-shadow: none; } #wmsx-touch-config-button.wmsx-show { display: block; } #wmsx-touch-config .wmsx-quick-options-list { margin-top: 11px; } #wmsx-touch-config .wmsx-control { width: 110px; } #wmsx-touch-left, #wmsx-touch-right { display: none; position: absolute; z-index: 1; } #wmsx-touch-speed { display: none; } html.wmsx-full-screen.wmsx-touch-active #wmsx-touch-left, html.wmsx-full-screen.wmsx-touch-active #wmsx-touch-right, html.wmsx-full-screen.wmsx-touch-active #wmsx-touch-speed { display: block; } .wmsx-touch-dir { position: relative; width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; z-index: 2 } .wmsx-touch-dir::before { content: ""; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .wmsx-touch-dir-joy .wmsx-touch-dir-up, .wmsx-touch-dir-joy .wmsx-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .wmsx-touch-dir-joy .wmsx-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .wmsx-touch-dir-joy .wmsx-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .wmsx-touch-dir-joy .wmsx-touch-dir-left::before { content: ""; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .wmsx-touch-dir-joy .wmsx-touch-dir-left::after { content: ""; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow: inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .wmsx-touch-dir-key .wmsx-touch-dir-up, .wmsx-touch-dir-key .wmsx-touch-dir-left, .wmsx-touch-dir-key .wmsx-touch-dir-down, .wmsx-touch-dir-key .wmsx-touch-dir-right { position: absolute; background: rgb(70, 85, 180); border: 0 solid hsl(232, 44%, 37%); border-width: 1px 2px 4px; border-top-color: hsl(232, 44%, 40%); border-bottom-color: hsl(232, 44%, 24%); border-radius: 2px 2px 0 0; box-sizing: border-box; } .wmsx-touch-dir-key .wmsx-touch-dir-up, .wmsx-touch-dir-key .wmsx-touch-dir-down { left: 50px; width: 30px; } .wmsx-touch-dir-key .wmsx-touch-dir-up { top: 26px; height: 25px; border-bottom-width: 2px; } .wmsx-touch-dir-key .wmsx-touch-dir-down { bottom: 26px; height: 27px; } .wmsx-touch-dir-key .wmsx-touch-dir-left, .wmsx-touch-dir-key .wmsx-touch-dir-right { top: 47px; width: 25px; height: 36px; } .wmsx-touch-dir-key .wmsx-touch-dir-left { left: 24px; } .wmsx-touch-dir-key .wmsx-touch-dir-right { right: 24px; } .wmsx-touch-dir-key .wmsx-touch-dir-up::after { content: ""; position: absolute; top: 26px; left: -1px; width: 28px; height: 22px; background: hsl(0, 0%, 20%); } .wmsx-touch-dir .wmsx-arrow-up, .wmsx-touch-dir .wmsx-arrow-down, .wmsx-touch-dir .wmsx-arrow-left, .wmsx-touch-dir .wmsx-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .wmsx-touch-dir .wmsx-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .wmsx-touch-dir .wmsx-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .wmsx-touch-dir .wmsx-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .wmsx-touch-dir .wmsx-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .wmsx-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .wmsx-touch-button::before { content: ""; position: absolute; box-sizing: border-box; z-index: -1; } .wmsx-touch-button-joy::before, .wmsx-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #wmsx-screen-fs.wmsx-touch-config-active .wmsx-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .wmsx-touch-button-joy.wmsx-touch-button-joy-A::before { border: none; background: hsl(120, 76%, 31%); box-shadow: inset 0 2px hsl(120, 76%, 41%), 0 4px 0 1px hsl(120, 76%, 20%); } .wmsx-touch-button-joy.wmsx-touch-button-joy-B::before { border: none; background: hsl(0, 60%, 35%); box-shadow: inset 0 2px hsl(0, 60%, 48%), 0 4px 0 1px hsl(0, 60%, 23%); } .wmsx-touch-button-joy.wmsx-touch-button-joy-AB::before { border: none; background: hsl(240, 50%, 48%); box-shadow: inset 0 2px hsl(240, 50%, 60%), 0 4px 0 1px hsl(240, 50%, 31%); } .wmsx-touch-button-key { font-size: 16px; line-height: 69px; } .wmsx-touch-button-key::before { width: 48px; height: 46px; top: 13px; left: 12px; background: hsl(0, 0%, 44%); border: 4px solid hsl(0, 0%, 31%); border-top: 2px solid hsl(0, 0%, 54%); border-bottom: 6px solid hsl(0, 0%, 22%); border-radius: 3px 3px 1px 1px; } #wmsx-touch-T_A { z-index: 7 } #wmsx-touch-T_B { z-index: 6 } #wmsx-touch-T_C { z-index: 5 } #wmsx-touch-T_D { z-index: 4 } #wmsx-touch-T_E { z-index: 3 } #wmsx-touch-T_F { z-index: 2 } #wmsx-touch-T_G { z-index: 1 } #wmsx-touch-T_X { z-index: 1 } #wmsx-touch-T_Y { z-index: 1 } #wmsx-touch-pause, #wmsx-touch-fast { float: left; width: 46px; height: 48px; border-color: hsl(0, 0%, 70%); } #wmsx-touch-pause::after, #wmsx-touch-fast::before, #wmsx-touch-fast::after { content: ""; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #wmsx-touch-pause::after { margin-top: 16px; width: 14px; height: 16px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #wmsx-touch-fast::before, #wmsx-touch-fast::after { margin-top: 16px; width: 12px; height: 16px; border-width: 8px; border-left-width: 12px; border-left-color: inherit; border-right-width: 0; } #wmsx-touch-speed.wmsx-paused #wmsx-touch-pause::after, #wmsx-touch-speed.wmsx-poweroff #wmsx-touch-pause::after { margin-top: 14px; width: 17px; height: 20px; border-width: 10px; border-left-width: 17px; border-right-width: 0; } #wmsx-touch-speed.wmsx-paused #wmsx-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #wmsx-touch-speed.wmsx-poweroff #wmsx-touch-fast { display: none; } .wmsx-hd-first { float: left; } #wmsx-drop-area { position: absolute; display: none; bottom: 56px; width: 574px; height: 238px; margin: auto; padding: 0; font-size: 0; line-height: 0; color: hsl(0, 0%, 82%); background: black; text-align: left; transform-origin: left bottom; z-index: 99; } #wmsx-drop-area.wmsx-visible { display: block; } #wmsx-drop-area > div { position: relative; display: inline-block; width: 178px; height: 90px; margin: 10px 0 0 10px; padding: 0; font-size: 19px; line-height: 24px; text-shadow: 2px 2px black; text-align: center; background: hsl(0, 0%, 16%); vertical-align: bottom; box-sizing: border-box; } #wmsx-drop-area > div.wmsx-disabled { color: #616161; } #wmsx-drop-area > div:not(.wmsx-disabled).wmsx-selected { background: hsl(358, 67%, 38%); } #wmsx-drop-area-message { position: absolute; left: 0; right: 0; bottom: 2px; height: 34px; font-size: 16px; line-height: 34px; text-align: center; } #wmsx-drop-area i { display: inline-block; margin: 11px auto 7px; width: 41px; height: 36px; background: url("'+wmsx.Images.urls.sprites+'"); background-size: 568px 206px; vertical-align: bottom; } #wmsx-drop-drivea i { background-position: -334px -107px; } #wmsx-drop-drivea.wmsx-disabled i { background-position: -334px -156px; } #wmsx-drop-driveb i { background-position: -392px -107px; } #wmsx-drop-driveb.wmsx-disabled i { background-position: -392px -156px; } #wmsx-drop-driveh i { background-position: -508px -107px; } #wmsx-drop-driveh.wmsx-disabled i { background-position: -508px -156px; } #wmsx-drop-cart1 i { background-position: -159px -107px; } #wmsx-drop-cart2 i { background-position: -217px -107px; } #wmsx-drop-tape i { background-position: -275px -107px; } .wmsx-drop-add, .wmsx-drop-files { position: absolute; display: none; left: 0; top: 0; width: 50px; height: 34px; padding-top: 10px; font-size: 11px; line-height: 9px; text-shadow: 1px 1px 1px black; border: 3px solid transparent; box-sizing: border-box; white-space: nowrap; overflow: visible; } .wmsx-drop-files { left: unset; right: 0; } .wmsx-drop-add::after { content: "+ DISKS"; } .wmsx-drop-files::after { content: "+ FILES "; } #wmsx-drop-area > div:not(.wmsx-disabled).wmsx-selected .wmsx-drop-add, #wmsx-drop-area > div:not(.wmsx-disabled).wmsx-selected .wmsx-drop-files { display: block; } .wmsx-drop-add.wmsx-selected, .wmsx-drop-files.wmsx-selected { border-color: hsl(0, 0%, 82%); box-shadow: 0 0 0 1px rgba(0, 0, 0, .8); } @media only screen and (orientation: landscape) { /* Landscape */ #wmsx-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+"px); bottom: 50%; transform: translateY(50%); --touch-left-button-vert-margin: 10px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-left { left: calc(-6px - "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px); --touch-left-button-vert-margin: 20px; } #wmsx-touch-left .wmsx-touch-button { margin-left: 11px; } #wmsx-touch-T_X { margin-bottom: var(--touch-left-button-vert-margin); } #wmsx-touch-T_Y { margin-top: var(--touch-left-button-vert-margin); } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-left .wmsx-touch-dir { transform: scale(1.2); transform-origin: left center; } #wmsx-touch-right { right: calc(5px - "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px); bottom: 50%; transform: translateY(50%); } #wmsx-touch-speed { position: absolute; left: -106px; top: 8px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-speed { left: -130px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.wmsx-full-screen.wmsx-touch-active #wmsx-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH+"px; right: "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px; } } @media only screen and (orientation: landscape) and (max-height: 511px) { /* Medium/Large Landscape */ #wmsx-touch-left { --touch-left-button-vert-margin: 10px !important; } #wmsx-touch-T_F, #wmsx-touch-T_G { display: none; } #wmsx-touch-speed { top: 2px; } } @media only screen and (orientation: landscape) and (max-height: 410px) { /* Medium Landscape */ #wmsx-touch-left { --touch-left-button-vert-margin: -2px !important; } } @media only screen and (orientation: landscape) and (max-height: 359px) { /* Short Landscape */ #wmsx-touch-left { --touch-left-button-vert-margin: 6px !important; } #wmsx-touch-T_E { display: none; } #wmsx-touch-T_X { visibility: hidden; } #wmsx-touch-speed { top: 8px; } } @media only screen and (orientation: portrait) { /* Portrait */ #wmsx-touch-left { left: 2px; bottom: 182px; } html.wmsx-full-screen.wmsx-touch-active.wmsx-dir-big #wmsx-touch-left .wmsx-touch-dir { transform: scale(1.2); transform-origin: left center; } #wmsx-touch-right { right: 5px; bottom: 36px; width: 112px; height: 224px; } #wmsx-touch-speed { position: absolute; left: 19px; bottom: "+(this.BAR_HEIGHT+10)+"px; } .wmsx-touch-button { position: absolute; } #wmsx-touch-T_A { bottom: 75%; right: 50%; } #wmsx-touch-T_B { bottom: 100%; right: 0%; } #wmsx-touch-T_C { bottom: 50%; right: 100%; } #wmsx-touch-T_D { bottom: 25%; right: 50%; } #wmsx-touch-T_E { bottom: 50%; right: 0%; } #wmsx-touch-T_F { bottom: 0%; right: 100%; } #wmsx-touch-T_G { bottom: 0%; right: 0%; } #wmsx-touch-T_X { display: none; } #wmsx-touch-T_Y { left: 4px; bottom: -88px; } html.wmsx-full-screen.wmsx-virtual-keyboard-active #wmsx-touch-left, html.wmsx-full-screen.wmsx-virtual-keyboard-active #wmsx-touch-right { display: none; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) { /* Medium Portrait. Like iPhone 5 */ #wmsx-touch-right { bottom: -18px; } #wmsx-touch-T_F, #wmsx-touch-T_G { display: none; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) { /* Short Portrait. Like iPhone 4 */ #wmsx-touch-left { bottom: 98px; } #wmsx-touch-right { bottom: -74px; } #wmsx-touch-T_E, #wmsx-touch-T_X { display: none; } #wmsx-touch-T_D { bottom: 50%; right: 0%; } }" -},wmsx.VirtualKeyboard={create:function(a,b,c,d,e){"use strict";var f=document.createElement("div");f.style.position="absolute",a.appendChild(f);var g=[];for(var h in this.sections){var i=document.createElement("div");i.classList.add("wmsx-keyboard-"+h),f.appendChild(i);for(var j=this.sections[h],k=0,l=0;l=0&&s.classList.add("wmsx-keyboard-key-dark"),s.wmsxKeyID=q,s.wmsxKey=this.idToMSMKey[q]||q,m.appendChild(s),g.push(s),b&&b(s)}}}return this.updateKeysLabels(g,c,d,e),g},updateKeysLabels:function(a,b,c,d){var e,f,g;d?(e="cns_"+c,f="c_"+c,g="c_en"):(e=(b?"cs_":"c_")+c,f=b?"cs_en":"c_en",g="c_en");for(var h=a.length-1;h>=0;--h){var i=a[h];if(!this.blankKeys.has(i.wmsxKeyID)){var j=wmsx.KeyboardKeys[i.wmsxKey][e]||wmsx.KeyboardKeys[i.wmsxKey][f]||wmsx.KeyboardKeys[i.wmsxKey][g];j=this.finalLabels[j]||j,i.wmsxLabel!==j&&(i.wmsxLabel=j,i.innerHTML=j)}}},sections:{alpha:[["F1","F2","F3","F4","F5","STOP","SELECT","HOME","INSERT","DELETE"],["ESCAPE","D1","D2","D3","D4","D5","D6","D7","D8","D9","D0","MINUS","EQUAL","BACKSLASH","BACKSPACE"],["TAB","Q","W","E","R","T","Y","U","I","O","P","OPEN_BRACKET","CLOSE_BRACKET","ENTER_X1","ENTER_X2"],["CONTROL","A","S","D","F","G","H","J","K","L","SEMICOLON","QUOTE","BACKQUOTE","ENTER"],["SHIFT","Z","X","C","V","B","N","M","COMMA","PERIOD","SLASH","DEAD","SHIFT2"],["CAPSLOCK","GRAPH","SPACE","CODE"]],num:[["NUM_7","NUM_8","NUM_9","NUM_DIVIDE"],["NUM_4","NUM_5","NUM_6","NUM_MULTIPLY"],["NUM_1","NUM_2","NUM_3","NUM_MINUS"],["NUM_0","NUM_PERIOD","NUM_COMMA","NUM_PLUS"]],arrows:[["LEFT","UP","RIGHT","DOWN"]]},sectionRowHeight:{alpha:25,num:23,arrows:50},sectionKeyWidth:{alpha:26,num:22},keyWidth:{F1:39,F2:39,F3:39,F4:39,F5:39,STOP:39,SELECT:39,HOME:39,INSERT:39,DELETE:39,ESCAPE:29,BACKSPACE:28,TAB:41,CONTROL:48,SHIFT:61,SHIFT2:61,ENTER:36,ENTER_X1:13,ENTER_X2:30,SPACE:189,CAPSLOCK:38,DEAD:38,GRAPH:46,CODE:46},keySpace:{STOP:50,ENTER_X1:13,CAPSLOCK:55},dark:["wmsx-keyboard-escape","wmsx-keyboard-tab","wmsx-keyboard-control","wmsx-keyboard-shift","wmsx-keyboard-capslock","wmsx-keyboard-graph","wmsx-keyboard-backspace","wmsx-keyboard-enter","wmsx-keyboard-enter_x1","wmsx-keyboard-enter_x2","wmsx-keyboard-shift2","wmsx-keyboard-code","wmsx-keyboard-num_divide","wmsx-keyboard-num_multiply","wmsx-keyboard-num_minus","wmsx-keyboard-num_plus"],idToMSMKey:{ENTER_X1:"ENTER",ENTER_X2:"ENTER",SHIFT2:"SHIFT"},finalLabels:{STP:"STOP",HOM:"HOME",CTR:"CTRL",SHF:"SHIFT",CAP:"CAPS",SPC:"SPACE",GRA:"GRAPH",COD:"CODE"},blankKeys:new Set(["ENTER_X1","ENTER_X2","UP","DOWN","LEFT","RIGHT"]),byCSSKeys:new Set(["SHIFT2","SPACE","CODE","DEAD","UP","DOWN","LEFT","RIGHT"])},wmsx.Monitor=function(a){"use strict";function b(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(b/wmsx.Monitor.ASPECT_STEP)*wmsx.Monitor.ASPECT_STEP}function c(a){var b=a<.5?.5:a;return Math.round(b/wmsx.Monitor.SCALE_STEP)*wmsx.Monitor.SCALE_STEP}this.connect=function(a){d=a,d.connectMonitor(this)},this.newFrame=function(b,c,d){a.refresh(b,c,d)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDisplayMetrics=function(b,c){a.displayMetrics(b,c)},this.setPixelMetrics=function(b,c){a.displayPixelMetrics(b,c)},this.setDefaults=function(){a.crtPhosphorSetDefault(),a.crtScanlinesSetDefault(),a.crtFilterSetDefault(),a.aspectAndScaleSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtFilterToggle=function(b){a.crtFilterToggle(b)},this.crtScanlinesToggle=function(b){a.crtScanlinesToggle(b)},this.crtPhosphorToggle=function(b){a.crtPhosphorToggle(b)},this.fullscreenToggle=function(b){a.displayToggleFullscreen(b)},this.displayAspectDecrease=function(){this.displayScale(b(e-wmsx.Monitor.ASPECT_STEP),f),this.showOSD("Display Aspect: "+e.toFixed(2)+"x",!0)},this.displayAspectIncrease=function(){this.displayScale(b(e+wmsx.Monitor.ASPECT_STEP),f),this.showOSD("Display Aspect: "+e.toFixed(2)+"x",!0)},this.displayScaleDecrease=function(){this.displayScale(e,c(f-wmsx.Monitor.SCALE_STEP)),this.showOSD("Display Size: "+f.toFixed(2)+"x",!0)},this.displayScaleIncrease=function(){this.displayScale(e,c(f+wmsx.Monitor.SCALE_STEP)),this.showOSD("Display Size: "+f.toFixed(2)+"x",!0)},this.getScreenText=function(){return d.getScreenText()},this.displayScale=function(b,c){e=b,f=c,a.displayScale(e,f)};var d,e,f},wmsx.Monitor.SCALE_STEP=.05,wmsx.Monitor.ASPECT_STEP=.01,wmsx.CanvasDisplay=function(room,mainElement){"use strict";function init(){wmsx.Util.insertCSS(wmsx.ScreenGUI.css()),delete wmsx.ScreenGUI.css,setupMain(),setupBar(),setupFileLoaderDropTargets(),setupFullscreen(),monitor=new wmsx.Monitor(self)}function displayDefaultScale(){if(WMSX.SCREEN_DEFAULT_SCALE>0)return WMSX.SCREEN_DEFAULT_SCALE;var a=Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);return crtScanlines?a>=660?1:a>=420?.75:.5:a>=660?1.1:a>=540?.9:a>=420?.7:a>=320?.55:.5}function hideOSD(){osd.style.transition="all 0.15s linear",osd.style.top="-29px",osd.style.opacity=0,osdShowing=!1}function setVirtualKeyboard(a){if(virtualKeyboardMode!==a){if(a){if(!isTouchDevice)return self.showOSD("Virtual Keyboard unavailable. Not a touch device!",!0,!0);virtualKeyboardElement||setupVirtualKeyboard(),virtualKeyboardElement.classList.toggle("wmsx-keyboard-narrow",2==a)}showCursorAndBar(!0),document.documentElement.classList.toggle("wmsx-virtual-keyboard-active",!!a),virtualKeyboardMode=a,self.requestReadjust(!0)}}function releaseControllersOnLostFocus(){controllersSocket.releaseControllers()}function hideCursorAndBar(){hideCursor(),hideBar(),cursorHideFrameCountdown=-1}function showCursorAndBar(a){showCursor(),!a&&mousePointerLocked||showBar(),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES}function showCursor(){cursorShowing||(fsElement.style.cursor=cursorType,cursorShowing=!0)}function hideCursor(){cursorShowing&&(fsElement.style.cursor="none",cursorShowing=!1)}function fullscreenByAPIChanged(){var a=isFullscreen,b=isFullScreenByAPI();b||fullScreenAPIExitUserRequested||!isBrowserStandalone?setFullscreenState(b):self.requestReadjust(),a&&!b&&!fullScreenAPIExitUserRequested&&isMobileDevice&&(isBrowserStandalone?setEnterFullscreenByAPIOnFirstTouch():(machine.systemPause(!0),showLogoMessage("
Emulation suspended","RESUME",!0,function(){self.setFullscreen(!0),machine.systemPause(!1)}))),fullScreenAPIExitUserRequested=!1}function isFullScreenByAPI(){return!!document[fullScreenAPIQueryProp]}function enterFullScreenByAPI(){if(fullscreenAPIEnterMethod)try{fullscreenAPIEnterMethod.call(fsElement)}catch(a){}}function exitFullScreenByAPI(){if(fullScreenAPIExitMethod)try{fullScreenAPIExitUserRequested=!0,fullScreenAPIExitMethod.call(document)}catch(a){}}function updateScale(){var a=Math.round(targetWidth*scaleY*aspectX),b=Math.round(targetHeight*scaleY);canvas.style.width=a+"px",canvas.style.height=b+"px",updateBarWidth(a),signalIsOn||updateLogoScale(),settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position()}function updateBarWidth(a){var b=buttonsBarDesiredWidth>0?buttonsBarDesiredWidth:a;buttonsBar.style.width=-1===buttonsBarDesiredWidth?"100%":b+"px",buttonsBar.classList.toggle("wmsx-narrow",b=2;void 0!==canvasContext.imageSmoothingEnabled?canvasContext.imageSmoothingEnabled=a:(canvasContext.webkitImageSmoothingEnabled=a,canvasContext.mozImageSmoothingEnabled=a,canvasContext.msImageSmoothingEnabled=a)}}function suppressContextMenu(a){a.addEventListener("contextmenu",wmsx.Util.blockEvent)}function preventDrag(a){a.ondragstart=wmsx.Util.blockEvent}function setupMain(){switch(mainElement.innerHTML=wmsx.ScreenGUI.html(),mainElement.tabIndex=-1,delete wmsx.ScreenGUI.html,fsElement=document.getElementById("wmsx-screen-fs"),fsElementCenter=document.getElementById("wmsx-screen-fs-center"),canvasOuter=document.getElementById("wmsx-screen-canvas-outer"),canvas=document.getElementById("wmsx-screen-canvas"),canvasLoadingIcon=document.getElementById("wmsx-canvas-loading-icon"),osd=document.getElementById("wmsx-osd"),logo=document.getElementById("wmsx-logo"),logoCenter=document.getElementById("wmsx-logo-center"),logoImage=document.getElementById("wmsx-logo-image"),logoLoadingIcon=document.getElementById("wmsx-logo-loading-icon"),logoMessage=document.getElementById("wmsx-logo-message"),logoMessageText=document.getElementById("wmsx-logo-message-text"),logoMessageOK=document.getElementById("wmsx-logo-message-ok"),logoMessageOKText=document.getElementById("wmsx-logo-message-ok-text"),scrollMessage=document.getElementById("wmsx-screen-scroll-message"),unmuteMessage=document.getElementById("wmsx-unmute-message"),scanlinesImage=document.createElement("canvas"),scanlinesImage.width=1,scanlinesImage.height=wmsx.VDP.SIGNAL_MAX_HEIGHT_V9938,suppressContextMenu(mainElement),preventDrag(logoImage),preventDrag(logoLoadingIcon),preventDrag(canvasLoadingIcon),updateCanvasContentSize(),browserName){case"CHROME":case"EDGE":case"OPERA":canvasImageRenderingValue="pixelated";break;case"FIREFOX":canvasImageRenderingValue="-moz-crisp-edges";break;case"SAFARI":canvasImageRenderingValue="-webkit-optimize-contrast";break;default:canvasImageRenderingValue="pixelated"}setupMainEvents()}function updateScanlines(){var a=scanlinesImage.getContext("2d",{alpha:!0,antialias:!1});a.clearRect(0,0,1,scanlinesImage.height),a.fillStyle="black",a.globalAlpha=crtScanlines/10;for(var b=1,c=scanlinesImage.height;bTOUCH_EXT_SLOT2_TIME&&(b|=!0),barMenuItemActive&&barMenuItemFireActive(b,a.ctrlKey)}}function barMenuItemFireActive(a,b){var c=barMenuItemActive.wmsxMenuOption;barMenuItemSetActive(null),c&&!c.disabled&&(c.extension?extensionChangeDisabledWarning()||peripheralControls.processControlActivated(wmsx.PeripheralControls.EXTENSION_TOGGLE,b,a,c.extension):c.control&&(a=c.secSlot,closeAllOverlays(),peripheralControls.processControlActivated(c.control,b,a)))}function barMenuItemSetActive(a,b){a!==barMenuItemActive&&(barMenuItemActive&&barMenuItemActive.classList.remove("wmsx-hover"),a&&a.wmsxMenuOption?(barMenuItemActive=a,b&&controllersHub.hapticFeedback(),barMenuItemActive.classList.add("wmsx-hover")):barMenuItemActive=null,barMenuItemTouchActivation=b&&barMenuItemActive?wmsx.Util.performanceNow():void 0)}function barElementTapOrMouseDown(a,b,c){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES;var d=a.target;1===d.wmsxBarElementType?barButtonTapOrMousedown(d,a,b,c):2===d.wmsxBarElementType?barMenuItemTapOrMouseDown(d,a,c):hideBarMenu()}function barElementTouchMove(a){wmsx.Util.blockEvent(a);var b=a.changedTouches[0],c=b&&document.elementFromPoint(b.clientX,b.clientY);barButtonLongTouchTarget&&c!==barButtonLongTouchTarget&&barButtonLongTouchCancel(),2!==c.wmsxBarElementType&&c!==barButtonLongTouchTarget&&barMenuItemSetActive(null),1===c.wmsxBarElementType?barButtonHoverOver(c,a):2===c.wmsxBarElementType&&barMenuItemHoverOver(c,a)}function barElementTouchEndOrMouseUp(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,wmsx.Util.blockEvent(a),barButtonLongTouchCancel();var b=a.target;1===b.wmsxBarElementType?barButtonTouchEndOrMouseUp(a):2===b.wmsxBarElementType&&barMenuItemTouchEndOrMouseUp(a)}function createSettingsMenuOptions(){var a=[];return a.push({label:"Select Machine",clickModif:KEY_ALT_MASK,control:wmsx.PeripheralControls.SCREEN_OPEN_MACHINE_SELECT}),isMobileDevice?a.push({label:"Quick Options",clickModif:0,control:wmsx.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS}):(a.push({label:"Help & Settings",clickModif:0,control:wmsx.PeripheralControls.SCREEN_OPEN_SETTINGS}),a.push({label:"Quick Options",clickModif:KEY_CTRL_MASK,control:wmsx.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS})),isTouchDevice&&a.push({label:"Touch Setup",clickModif:KEY_CTRL_MASK|KEY_ALT_MASK,control:wmsx.PeripheralControls.SCREEN_OPEN_TOUCH_CONFIG,fullScreenOnly:!0}),isMobileDevice||a.push({label:"Defaults",clickModif:KEY_SHIFT_MASK,control:wmsx.PeripheralControls.SCREEN_DEFAULTS}),a}function defineSettingsMenuExtensions(){for(var a=settingsButton.wmsxMenu;a[0].extension;)a.shift();a[0].divider||a.unshift({label:"",divider:!0});for(var b=WMSX.EXTENSIONS_CONFIG,c=Object.keys(b).reverse(),d=0;dbuttonsBarInner.clientWidth?(barMenu.style.right=0,barMenu.style.left="auto",barMenu.style.transformOrigin="bottom right"):(d<0&&(d=0),barMenu.style.left=d+"px",barMenu.style.right="auto",barMenu.style.transformOrigin="bottom left"),showCursorAndBar(!0),barMenuActive=a,barMenu.style.display="inline-block",barMenu.wmsxTitle.focus()}}function refreshBarMenu(a){barMenu.wmsxTitle.innerHTML=a.wmsxTitle,barMenu.wmsxDefaultItem=null;for(var b,c=0,d=Math.min(a.length,BAR_MENU_MAX_ITEMS),e=wmsx.ScreenGUI.BAR_MENU_ITEM_HEIGHT+3,f=0;f=0&&!e[f].wmsxMenuOption);g>=0&&barMenuItemSetActive(e[f])}return wmsx.Util.blockEvent(a)}),buttonsBar.appendChild(barMenu)}function closePowerOnModals(){pasteDialog&&pasteDialog.hide(),textEntryDialog&&textEntryDialog.hide()}function closeAllOverlays(){hideBarMenu(),pasteDialog&&pasteDialog.hide(),textEntryDialog&&textEntryDialog.hide(),machineSelectDialog&&machineSelectDialog.hide(),diskSelectDialog&&diskSelectDialog.hide(),newHardDiskDialog&&newHardDiskDialog.hide(),saveStateDialog&&saveStateDialog.hide(),touchConfigDialog&&touchConfigDialog.hide(),quickOtionsDialog&&quickOtionsDialog.hide(),netPlayDialog&&netPlayDialog.hide(),cartFormatDialog&&cartFormatDialog.hide(),settingsDialog&&settingsDialog.hide()}function showLogoMessage(a,b,c,d){logoMessageActive||(closeAllOverlays(),d&&(afterMessageAction=d),logoMessageText.innerHTML=a,logoMessageOK.classList.toggle("wmsx-higher",!!c),logoMessageOKText.innerHTML=b||"OK",fsElement.classList.add("wmsx-logo-message-active"),logoMessageActive=!0,signalIsOn=!1,updateLogo())}function closeLogoMessage(a,b,c){if(c||controllersHub.hapticFeedbackOnTouch(a),!b&&(fsElement.classList.remove("wmsx-logo-message-active"),logoMessageActive=!1,afterMessageAction)){var d=afterMessageAction;afterMessageAction=null,d()}}function updateLogoScale(){if(logoMessageActive){var a=canvasOuter.clientWidth,b=Math.min(a/wmsx.ScreenGUI.LOGO_SCREEN_WIDTH,1);logoCenter.style.transform="translate(-50%, -50%) scale("+b.toFixed(4)+")"}else logoCenter.style.transform="translate(-50%, -50%)"}function setScrollMessage(a){fsElement.classList.toggle("wmsx-scroll-message",a),scrollMessageActive=a,a&&setTimeout(function(){setScrollMessage(!1)},5e3)}function readjustAll(a){if(readjustScreeSizeChanged(a)){if(isFullscreen){var b=readjustScreenSize.w>readjustScreenSize.h,c=virtualKeyboardMode&&updateKeyboardWidth(readjustScreenSize.w);buttonsBarDesiredWidth=b?virtualKeyboardMode?c.w:0:-1;var d=readjustScreenSize.h;b&&!virtualKeyboardMode||(d-=wmsx.ScreenGUI.BAR_HEIGHT+2),virtualKeyboardMode&&(d-=c.h+2),monitor.displayScale(aspectX,displayOptimalScaleY(readjustScreenSize.w,d))}else buttonsBarDesiredWidth=-1,monitor.displayScale(aspectX,scaleYBeforeUserFullscreen||displayDefaultScale());self.focus(),controllersHub.screenReadjustedUpdate()}readjustInterval&&wmsx.Util.performanceNow()-readjustRequestTime>=1e3&&(clearInterval(readjustInterval),readjustInterval=null)}function readjustScreeSizeChanged(a){var b=mainElement.parentElement.clientWidth,c=fsElementCenter.clientWidth,d=fsElementCenter.clientHeight;return!(!a&&readjustScreenSize.pw===b&&readjustScreenSize.w===c&&readjustScreenSize.h===d)&&(readjustScreenSize.pw=b,readjustScreenSize.w=c,readjustScreenSize.h=d,!0)}function displayOptimalScaleY(a,b){var c=b/targetHeight;return targetWidth*aspectX*c>a&&(c=a/(targetWidth*aspectX)),c}function setViewport(){if(isMobileDevice){if(void 0===viewPortOriginalContent&&(viewPortOriginalTag=document.querySelector("meta[name=viewport]"),viewPortOriginalContent=viewPortOriginalTag&&viewPortOriginalTag.content||null),viewportTag||(viewportTag=document.createElement("meta"),viewportTag.name="viewport",viewportTag.content="width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes",document.head.appendChild(viewportTag)),viewPortOriginalTag)try{document.head.removeChild(viewPortOriginalTag)}catch(a){}viewPortOriginalTag=null}}function restoreViewport(){if(isMobileDevice){if(!viewPortOriginalTag&&viewPortOriginalContent&&(viewPortOriginalTag=document.createElement("meta"),viewPortOriginalTag.name="viewport",viewPortOriginalTag.content=viewPortOriginalContent,document.head.appendChild(viewPortOriginalTag)),viewportTag)try{document.head.removeChild(viewportTag)}catch(a){}viewportTag=null}}function setPageVisibilityHandling(){function a(){logoMessageActive||(document.hidden?b=!machine.systemPause(!0):b&&machine.systemPause(!1))}var b;document.addEventListener("visibilitychange",a)}function extensionChangeDisabledWarning(){return!!WMSX.MEDIA_CHANGE_DISABLED&&(machine.showOSD("Extension change is disabled!",!0,!0),!0)}function setupFileLoaderDropTargets(){fileLoaderDropArea=document.getElementById("wmsx-drop-area"),fileLoaderDropAreaMessage=document.getElementById("wmsx-drop-area-message");var a,b,c,d;a=fsElement,c={element:a,openType:OPEN_TYPE.DISK,port:void 0,add:!0,mainEle:a,mes:"Add Disk(s) to Drive (auto-detect)",mesSec:"Add Disk(s) to Drive B Stack"},d={element:a,openType:OPEN_TYPE.DISK,port:void 0,files:!0,mainEle:a,mes:"Add Files to Drive (auto-detect)",mesSec:"Add Files to Disk in Drive B"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.AUTO,port:void 0,subAdd:c,subFiles:d,mes:"Auto detect media",mesSec:"Auto detect media (to Drive B / Cartridge 2)"},diskAButton.wmsxDropTarget=a=document.getElementById("wmsx-drop-drivea"),b=document.getElementById("wmsx-drop-drivea-add"),b.wmsxDropInfo=c={element:b,openType:OPEN_TYPE.DISK,port:0,add:!0,mainEle:a,mes:"Add Disk(s) to Drive A Stack"},b=document.getElementById("wmsx-drop-drivea-files"),b.wmsxDropInfo=d={element:b,openType:OPEN_TYPE.DISK,port:0,files:!0,mainEle:a,mes:"Add Files to Disk in Drive A"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.DISK,port:0,subAdd:c,subFiles:d,mes:"Load Disk(s) in Drive A"},diskBButton.wmsxDropTarget=a=document.getElementById("wmsx-drop-driveb"), -b=document.getElementById("wmsx-drop-driveb-add"),b.wmsxDropInfo=c={element:b,openType:OPEN_TYPE.DISK,port:1,add:!0,mainEle:a,mes:"Add Disk(s) to Drive B Stack"},b=document.getElementById("wmsx-drop-driveb-files"),b.wmsxDropInfo=d={element:b,openType:OPEN_TYPE.DISK,port:1,files:!0,mainEle:a,mes:"Add Files to Disk in Drive B"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.DISK,port:1,subAdd:c,subFiles:d,mes:"Load Disk(s) in Drive B"},diskHButton.wmsxDropTarget=a=document.getElementById("wmsx-drop-driveh"),b=document.getElementById("wmsx-drop-driveh-files"),b.wmsxDropInfo=d={element:b,openType:OPEN_TYPE.DISK,port:2,files:!0,mainEle:a,mes:"Add Files to Hard Disk"},a.wmsxDropInfo={element:a,openType:OPEN_TYPE.DISK,port:2,subFiles:d,mes:"Load Hard Disk"},a=document.getElementById("wmsx-drop-cart1"),a.wmsxDropInfo={element:a,openType:OPEN_TYPE.ROM,port:0,mes:"Load Cartride 1"},a=document.getElementById("wmsx-drop-cart2"),a.wmsxDropInfo={element:a,openType:OPEN_TYPE.ROM,port:1,mes:"Load Cartride 2"},a=document.getElementById("wmsx-drop-tape"),a.wmsxDropInfo={element:a,openType:OPEN_TYPE.TAPE,port:0,mes:"Load Cassette Tape"}}var self=this;this.connect=function(a){machine=a,monitor.connect(machine.getVideoOutput()),controllersSocket=machine.getControllersSocket(),cartridgeSocket=machine.getCartridgeSocket(),extensionsSocket=machine.getExtensionsSocket(),machineTypeSocket=machine.getMachineTypeSocket()},this.connectPeripherals=function(a,b,c,d,e,f,g,h){cartridgeSlot=a,fileLoader=b,fileLoader.registerForDnD(fsElement),fileLoader.registerForFileInputElement(fsElement),fileDownloader=c,fileDownloader.registerForDownloadElement(fsElement),machineControls=d,peripheralControls=e,controllersHub=f,controllersHub.setKeyInputElement(fsElement),controllersHub.setMouseInputElement(canvas),diskDrive=g,stateMedia=h},this.powerOn=function(){monitor.setDefaults(),updateLogo(),document.documentElement.classList.add("wmsx-started"),setPageVisibilityHandling(),this.focus(),WMSXFullScreenSetup.shouldStartInFullScreen()&&(setFullscreenState(!0),1===FULLSCREEN_MODE&&setEnterFullscreenByAPIOnFirstTouch())},this.powerOff=function(){document.documentElement.classList.remove("wmsx-started")},this.start=function(a){function b(){self.setFullscreen(!0),a()}!isMobileDevice||isBrowserStandalone||isFullscreen?a():wmsx.Util.isOfficialHomepage()?showLogoMessage("For "+(fullscreenAPIEnterMethod?"the best":"a full-screen")+' experience, use
the "Add to Home Screen" function
then launch from the Installed App',"NICE!",!1,b):showLogoMessage("For the best experience,
WebMSX will go full-screen","GO!",!0,b)},this.refresh=function(a,b,c){cursorHideFrameCountdown>0&&--cursorHideFrameCountdown<=0&&hideCursorAndBar(),signalIsOn||(signalIsOn=!0,updateLogo()),canvasContext||createCanvasContext(),canvasContext.drawImage(a,0,0,b,c,0,0,canvas.width,canvas.height),crtScanlines&&pixelHeight>1&&!debugMode&&canvasContext.drawImage(scanlinesImage,0,0,1,2*c,0,0,canvas.width,canvas.height)},this.videoSignalOff=function(){signalIsOn=!1,showCursorAndBar(),updateLogo()},this.mousePointerLocked=function(a){mousePointerLocked=a,mousePointerLocked?hideCursorAndBar():showCursorAndBar()},this.openHelp=function(){return self.openSettings("GENERAL"),!1},this.openAbout=function(){return self.openSettings("ABOUT"),!1},this.openSettings=function(a){closeAllOverlays(),settingsDialog||(settingsDialog=new wmsx.SettingsDialog(fsElementCenter,controllersHub,peripheralControls,machineTypeSocket)),settingsDialog.show(a)},this.openSaveStateDialog=function(a){closeAllOverlays(),saveStateDialog||(saveStateDialog=new wmsx.SaveStateDialog(fsElementCenter,machineControls,peripheralControls,stateMedia)),saveStateDialog.show(a)},this.openDiskSelectDialog=function(a,b,c){closeAllOverlays(),diskSelectDialog||(diskSelectDialog=new wmsx.DiskSelectDialog(fsElementCenter,diskDrive,peripheralControls,fileLoader)),diskSelectDialog.show(a,b,c)},this.openNewHardDiskDialog=function(a,b){closeAllOverlays(),newHardDiskDialog||(newHardDiskDialog=new wmsx.NewHardDiskDialog(fsElementCenter,peripheralControls)),newHardDiskDialog.show(a,b)},this.openMachineSelectDialog=function(){closeAllOverlays(),machineSelectDialog||(machineSelectDialog=new wmsx.MachineSelectDialog(fsElementCenter,machineTypeSocket,peripheralControls)),machineSelectDialog.show()},this.openTouchConfigDialog=function(){closeAllOverlays(),virtualKeyboardMode&&setVirtualKeyboard(0),touchConfigDialog||(touchConfigDialog=new wmsx.TouchConfigDialog(fsElement,canvasOuter,controllersHub,peripheralControls)),touchConfigDialog.show()},this.openQuickOptionsDialog=function(){closeAllOverlays(),virtualKeyboardMode&&setVirtualKeyboard(0),quickOtionsDialog||(quickOtionsDialog=new wmsx.QuickOptionsDialog(fsElementCenter,machineControls,peripheralControls)),quickOtionsDialog.show()},this.openNetPlayDialog=function(){closeAllOverlays(),netPlayDialog||(netPlayDialog=new wmsx.NetPlayDialog(room,fsElementCenter)),netPlayDialog.show()},this.openCartridgeFormatDialog=function(a,b){closeAllOverlays(),cartFormatDialog||(cartFormatDialog=new wmsx.CartridgeFormatDialog(this,fsElementCenter,machine,cartridgeSlot)),cartFormatDialog.show(a,b)},this.openLoadFileDialog=function(){return peripheralControls.processControlActivated(wmsx.PeripheralControls.AUTO_LOAD_FILE),!1},this.executeTextCopy=function(){if(!signalIsOn)return this.showOSD("Screen Text Copy only available when Power is ON!",!0,!0);if(!document.queryCommandSupported||!document.queryCommandSupported("copy"))return this.showOSD("Copy to Clipboard not supported by the browser!",!0,!0);var a=monitor.getScreenText();if(!a)return this.showOSD("Screen Text Copy not available in this Screen!",!0,!0);copyTextArea||setupCopyTextArea(),copyTextArea.innerHTML=a,copyTextArea.select(),document.execCommand("copy")?this.showOSD("Screen text copied to Clipboard",!0):this.showOSD("Copy to Clipboard not supported by the browser!",!0,!0),this.focus()},this.toggleTextPasteDialog=function(){return signalIsOn?(pasteDialog||(pasteDialog=new wmsx.PasteDialog(canvasOuter,this,machineControls)),pasteDialog.toggle(),!1):this.showOSD("Text Paste only available when Power is ON!",!0,!0)},this.toggleTextEntryDialog=function(){return signalIsOn?(virtualKeyboardMode&&setVirtualKeyboard(0),textEntryDialog||(textEntryDialog=new wmsx.TextEntryDialog(fsElementCenter,this,machineControls)),textEntryDialog.toggle(),!1):this.showOSD("Text Entry only available when Power is ON!",!0,!0)},this.toggleMenuByKey=function(){barMenuActive?hideBarMenu():(closeAllOverlays(),showBarMenu(barMenuSystem,!0))},this.toggleVirtualKeyboard=function(){setVirtualKeyboard((virtualKeyboardMode+1)%3)},this.getScreenCapture=function(){if(signalIsOn)return canvas.toDataURL("image/png")},this.saveScreenCapture=function(){var a=this.getScreenCapture();a&&fileDownloader.startDownloadURL("WMSX Screen.png",a,"WebMSX Screen Capture")},this.displayMetrics=function(a,b){targetWidth===a&&targetHeight===b||(targetWidth=a,targetHeight=b,updateCanvasContentSize(),isFullscreen?this.requestReadjust(!0):updateScale())},this.displayPixelMetrics=function(a,b){pixelWidth===a&&pixelHeight===b||(pixelWidth=a,pixelHeight=b,controllersHub&&controllersHub.setScreenPixelScale(pixelWidth*scaleY*aspectX,pixelHeight*scaleY))},this.displayScale=function(a,b){aspectX=a,scaleY=b,updateScale(),controllersHub&&controllersHub.setScreenPixelScale(pixelWidth*scaleY*aspectX,pixelHeight*scaleY)},this.getMonitor=function(){return monitor},this.showOSD=function(a,b,c){if(osdTimeout&&clearTimeout(osdTimeout),!a)return osd.style.transition="all 0.15s linear",osd.style.top="-29px",osd.style.opacity=0,void(osdShowing=!1);!b&&osdShowing||(osd.innerHTML=a,osd.style.color=c?"rgb(255, 60, 40)":"rgb(0, 255, 0)"),osd.style.transition="none",osd.style.top="12px",osd.style.opacity=1,osdShowing=!0;var d=canvasOuter.clientWidth-30,e=osd.clientWidth,f=e3&&(b=-2),setCRTFilter(b);var c=null===crtFilterEffective?"browser default":crtFilterEffective<1?"OFF":"level "+crtFilterEffective;this.showOSD("CRT Filter: "+(-1===crtFilter?"AUTO ("+c+")":c),!0),WMSX.userPreferences.current.crtFilter!==crtFilter&&(WMSX.userPreferences.current.crtFilter=crtFilter,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())},this.crtFilterSetDefault=function(){var a=WMSX.userPreferences.current.crtFilter;setCRTFilter(-3!==WMSX.SCREEN_FILTER_MODE?WMSX.SCREEN_FILTER_MODE:null!==a&&a>-3?a:-1)},this.crtScanlinesToggle=function(a){var b;if(a?(b=crtScanlines-1)<0&&(b=10):(b=crtScanlines+1)>10&&(b=0),!crtScanlines&&b){for(var c=[.5,.75,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5],d=0;d=c[d];)++d;monitor.displayScale(aspectX,c[d-1])}setCRTScanlines(b),this.showOSD("CRT Scanlines: "+(0===crtScanlines?"OFF":10*crtScanlines+"%"),!0),WMSX.userPreferences.current.crtScanlines!==crtScanlines&&(WMSX.userPreferences.current.crtScanlines=crtScanlines,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())},this.crtScanlinesSetDefault=function(){var a=WMSX.userPreferences.current.crtScanlines;setCRTScanlines(-1!==WMSX.SCREEN_CRT_SCANLINES?WMSX.SCREEN_CRT_SCANLINES:null!==a&&a>-1?a:0)},this.crtPhosphorToggle=function(a){var b;a?(b=crtPhosphor-1)<-1&&(b=1):(b=crtPhosphor+1)>1&&(b=-1),setCRTPhosphor(b);var c=1===crtPhosphorEffective?"ON":"OFF";this.showOSD("CRT Phosphor: "+(-1===crtPhosphor?"AUTO ("+c+")":c),!0)},this.crtPhosphorSetDefault=function(){setCRTPhosphor(WMSX.SCREEN_CRT_PHOSPHOR)},this.getControlReport=function(a){switch(a){case wmsx.PeripheralControls.SCREEN_CRT_FILTER:return{label:-2===crtFilter?"Browser":-1===crtFilter?"Auto":0===crtFilter?"OFF":"Level "+crtFilter,active:crtFilter>=0};case wmsx.PeripheralControls.SCREEN_CRT_SCANLINES:return{label:0===crtScanlines?"OFF":10*crtScanlines+"%",active:crtScanlines>0}}return{label:"Unknown",active:!1}},this.displayToggleFullscreen=function(a){-2!==FULLSCREEN_MODE&&(isFullscreen||isMobileDevice||(scaleYBeforeUserFullscreen=scaleY),this.setFullscreen(!isFullscreen,a))},this.setFullscreen=function(a,b){a?!b&&fullscreenAPIEnterMethod?enterFullScreenByAPI():setFullscreenState(!0):isFullScreenByAPI()?exitFullScreenByAPI():setFullscreenState(!1)},this.focus=function(){canvas.focus()},this.machinePowerAndUserPauseStateUpdate=function(a,b){powerButton.style.backgroundPosition=powerButton.wmsxBX+"px "+barButtonBackYOffsets[a?2:1]+"px",2===room.netPlayMode?(powerButton.wmsxMenu[5].disabled=powerButton.wmsxMenu[6].disabled=powerButton.wmsxMenu[8].disabled=powerButton.wmsxMenu[9].disabled=!0,powerButton.wmsxMenu[1].disabled=!a):(powerButton.wmsxMenu[5].disabled=powerButton.wmsxMenu[6].disabled=powerButton.wmsxMenu[8].disabled=!1,powerButton.wmsxMenu[1].disabled=powerButton.wmsxMenu[9].disabled=!a)},this.diskDrivesMediaStateUpdate=function(a){var b=2===a?diskHButton:1===a?diskBButton:diskAButton,c=diskDrive.getDriveStack(a);if(b.title=diskDrive.getCurrentDiskDesc(a),a<2?(b.wmsxMenu[8].label="Remove "+(c.length>1?"Stack":"Disk"),2===room.netPlayMode?b.wmsxMenu[0].disabled=b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=b.wmsxMenu[4].disabled=b.wmsxMenu[5].disabled=b.wmsxMenu[6].disabled=b.wmsxMenu[7].disabled=b.wmsxMenu[8].disabled=!0:(b.wmsxMenu[0].disabled=b.wmsxMenu[4].disabled=b.wmsxMenu[5].disabled=!1,b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=c.length>=wmsx.FileDiskDrive.MAX_STACK,b.wmsxMenu[6].disabled=c.length<=1,b.wmsxMenu[7].disabled=b.wmsxMenu[8].disabled=0===c.length)):2===room.netPlayMode?b.wmsxMenu[0].disabled=b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=b.wmsxMenu[4].disabled=b.wmsxMenu[5].disabled=b.wmsxMenu[6].disabled=!0:(b.wmsxMenu[0].disabled=b.wmsxMenu[1].disabled=b.wmsxMenu[2].disabled=b.wmsxMenu[3].disabled=b.wmsxMenu[4].disabled=!1,b.wmsxMenu[5].disabled=b.wmsxMenu[6].disabled=0===c.length),diskSelectDialog&&diskSelectDialog.diskDrivesMediaStateUpdate(a),c.length>1){var d=diskDrive.getCurrentDiskNum(a)+1;b.wmsxMenu.wmsxTitle=diskDrive.getDriveName(a)+"  ("+d+"/"+c.length+")"}else b.wmsxMenu.wmsxTitle=diskDrive.getDriveName(a)},this.diskDrivesMotorStateUpdate=function(a,b,c,d,e,f,g,h,i){diskAButton.style.backgroundPosition=diskAButton.wmsxBX+"px "+mediaButtonBackYOffsets[b?3:a?c?2:1:0]+"px",diskBButton.style.backgroundPosition=diskBButton.wmsxBX+"px "+mediaButtonBackYOffsets[e?3:d?f?2:1:0]+"px",diskHButton.style.backgroundPosition=diskHButton.wmsxBX+"px "+mediaButtonBackYOffsets[h?3:g?i?2:1:0]+"px"},this.diskInterfacesStateUpdate=function(a,b){peripheralControls.diskInterfacesStateUpdate(a,b),diskAButton.classList.toggle("wmsx-hidden",!a),diskAButton.wmsxDropTarget.classList.toggle("wmsx-disabled",!a),diskAButton.wmsxDropTarget.wmsxDropInfo.disabled=!a,diskAButton.wmsxMenu.wmsxHidden=!a,diskBButton.classList.toggle("wmsx-hidden",!a),diskBButton.wmsxDropTarget.classList.toggle("wmsx-disabled",!a),diskBButton.wmsxDropTarget.wmsxDropInfo.disabled=!a,diskBButton.wmsxMenu.wmsxHidden=!a,diskHButton.classList.toggle("wmsx-hidden",!b),diskHButton.wmsxDropTarget.classList.toggle("wmsx-disabled",!b),diskHButton.wmsxDropTarget.wmsxDropInfo.disabled=!b;var c=diskHButton.wmsxMenu;c.wmsxHidden=!b;var d=diskDrive.isHardDriveFirst();diskHButton.classList.toggle("wmsx-hd-first",!!d),diskHButton.wmsxDropTarget.classList.toggle("wmsx-hd-first",!!d);var e=d?1:4;barMenus[1]=1===e?c:null,barMenus[4]=4===e?c:null,c.wmsxMenuIndex=e},this.extensionsAndCartridgesStateUpdate=function(){var a=cartridgeSocket.cartridgeInserted(0),b=cartridgeSocket.cartridgeInserted(1);cartridge1Button.title="Cartridge 1"+(a?": "+(a.format.internal?a.format.desc:(a.rom.source||"")+" ["+a.format.name+"]"):""),cartridge2Button.title="Cartridge 2"+(b?": "+(b.format.internal?b.format.desc:(b.rom.source||"")+" ["+b.format.name+"]"):"");var c=a&&a.getDataDesc();cartridge1Button.wmsxMenu[2].label="Load "+(c||"Data")+" File",cartridge1Button.wmsxMenu[3].label="Save "+(c||"Data")+" File",2===room.netPlayMode?cartridge1Button.wmsxMenu[0].disabled=cartridge1Button.wmsxMenu[1].disabled=cartridge1Button.wmsxMenu[2].disabled=cartridge1Button.wmsxMenu[3].disabled=cartridge1Button.wmsxMenu[4].disabled=!0:(cartridge1Button.wmsxMenu[0].disabled=!1,cartridge1Button.wmsxMenu[2].disabled=cartridge1Button.wmsxMenu[3].disabled=!c,cartridge1Button.wmsxMenu[1].disabled=!a||a.format.internal,cartridge1Button.wmsxMenu[4].disabled=!a),c=b&&b.getDataDesc(),cartridge2Button.wmsxMenu[2].label="Load "+(c||"Data")+" File",cartridge2Button.wmsxMenu[3].label="Save "+(c||"Data")+" File",2===room.netPlayMode?cartridge2Button.wmsxMenu[0].disabled=cartridge2Button.wmsxMenu[1].disabled=cartridge2Button.wmsxMenu[2].disabled=cartridge2Button.wmsxMenu[3].disabled=cartridge2Button.wmsxMenu[4].disabled=!0:(cartridge2Button.wmsxMenu[0].disabled=!1,cartridge2Button.wmsxMenu[2].disabled=cartridge2Button.wmsxMenu[3].disabled=!c,cartridge2Button.wmsxMenu[1].disabled=!b||b.format.internal,cartridge2Button.wmsxMenu[4].disabled=!b),this.cartridgesModifiedStateUpdate(a,b),refreshSettingsMenuForExtensions()},this.cartridgesModifiedStateUpdate=function(a,b){cartridge1Button.style.backgroundPosition=cartridge1Button.wmsxBX+"px "+mediaButtonBackYOffsets[a?a.dataModified()?2:1:0]+"px",cartridge2Button.style.backgroundPosition=cartridge2Button.wmsxBX+"px "+mediaButtonBackYOffsets[b?b.dataModified()?2:1:0]+"px"},this.tapeStateUpdate=function(a,b,c){tapeButton.title="Cassette Tape"+(a?": "+a:""), -tapeButton.style.backgroundPosition=tapeButton.wmsxBX+"px "+mediaButtonBackYOffsets[b?3:a?c?2:1:0]+"px",2===room.netPlayMode?(tapeButton.wmsxMenu[0].disabled=tapeButton.wmsxMenu[1].disabled=tapeButton.wmsxMenu[2].disabled=tapeButton.wmsxMenu[4].disabled=tapeButton.wmsxMenu[5].disabled=!0,tapeButton.wmsxMenu[3].disabled=!a):(tapeButton.wmsxMenu[0].disabled=tapeButton.wmsxMenu[1].disabled=!1,tapeButton.wmsxMenu[2].disabled=tapeButton.wmsxMenu[3].disabled=tapeButton.wmsxMenu[4].disabled=tapeButton.wmsxMenu[5].disabled=!a)},this.machineTypeStateUpdate=function(){machineSelectDialog&&machineSelectDialog.machineTypeStateUpdate(),refreshSettingsMenuForMachineType()},this.keyboardSettingsStateUpdate=function(){settingsDialog&&settingsDialog.keyboardSettingsStateUpdate()},this.controllersSettingsStateUpdate=function(){settingsDialog&&settingsDialog.controllersSettingsStateUpdate(),touchConfigDialog&&touchConfigDialog.controllersSettingsStateUpdate()},this.mouseActiveCursorStateUpdate=function(a){cursorType=a?'url("'+wmsx.Images.urls.mouseCursor+'"), auto':"auto",fsElement.style.cursor=cursorShowing?cursorType:"none",showCursorAndBar()},this.touchControlsActiveUpdate=function(a,b){touchControlsActive===a&&touchControlsDirBig===b||(touchControlsActive=a,touchControlsDirBig=b,isFullscreen&&(touchControlsActive&&controllersHub.setupTouchControlsIfNeeded(fsElementCenter),this.requestReadjust(!0)))},this.roomNetPlayStatusChangeUpdate=function(a){netPlayDialog&&netPlayDialog.isVisible()||closeAllOverlays(),netPlayDialog&&netPlayDialog.roomNetPlayStatusChangeUpdate(a),netplayButton.classList.toggle("wmsx-hidden",room.netPlayMode<1)},this.quickOptionsControlsStateUpdate=function(){quickOtionsDialog&&quickOtionsDialog.quickOptionsControlsStateUpdate()},this.machineTurboModesStateUpdate=function(){quickOtionsDialog&&quickOtionsDialog.machineTurboModesStateUpdate();var a=machine.cpu.getCPUTurboMulti();turboButton.classList.toggle("wmsx-hidden",1===a),1!==a&&(turboButton.textContent=a+"x")},this.speakerUnlockStateUpdate=function(a){if(unmuteMessage.classList.toggle("wmsx-show",!a),!a){var b=canvasOuter.clientWidth-30,c=unmuteMessage.clientWidth,d=c
Help & Settings
GENERAL
MEDIA
KEYBOARD
PORTS
ABOUT
F11
Power
Shift
 + 
F11
Reset
Alt
 + 
T
CPU Turbo Mode
Alt
 + 
Y
VDP Turbo Mode
Alt
 + 
Q
NTSC/PAL
Alt
 + 
E
CRT Filters
Alt
 + 
R
CRT Scanlines
Alt
 + 
D
Debug Modes
Alt
 + 
S
Sprite Modes
+
Shift
Go back Modes
Alt
 + 
G
Capture Screen
Alt
 + 
0 - 9
Load State
Ctrl
 
Alt
 + 
0 - 9
Save State
Ctrl
 
Alt
 + 
F12
Save State File
F12
  /  
Shift
 + 
F12
Fast / Slow Speed
Shift
 
Alt
 + 
Arrows
Adjust Speed
Alt
 + 
P
Toggle Pause
Alt
 + 
O
 / 
F
Next Frame
Alt
 + 
Enter
Full Screen
Ctrl
 
Alt
 + 
Arrows
Screen Size / Width
Alt
 + 
Backspace
Defaults
Media Commands:
F6
Load Drive A / B
F7
Load Cartridge 1 / 2
F8
Load Hard Drive / Tape
Ctrl
 + 
F11
Open File (autodetect)
Modifiers for Media Commands:
+
Shift
Drive B / Slot 2 / Tape
+
Ctrl
Load Empty Media
+
Alt
Remove Media
+
Ctrl
 
Alt
Save Media File
Right-Drag / Ctrl-Click: No Auto-Reset
Drag & Drop Files or URLs:
+
Ctrl
  Load Image Files and Add Disks to Drive (A, B) Stack (up to 10 Disks)
+
Alt
  Add Files or ZIP Contents do Disk
+
Ctrl
Alt
Don't expand ZIP Contents
Ctrl
 
Alt
 + 
Home
Rewind Tape
Ctrl
 
Alt
 + 
Pg Up / Dn
Seek Tape
Alt
 + 
Pg Up / Dn
Select Disk (A, B)
Shift
 
Ctrl
 
Alt
 + 
F12
Auto-Run Cassette program at current Tape position
Alt
 + 
C
Copy Screen Text
Alt
 + 
H
Adjust Turbo Fire speed
Alt
 + 
V
Open Text Paste box
Alt
 + 
B
Open Text Input box
Alt
 + 
L
Toggle Host Keyboard Layout
MSX Language: English
  • AUTO
Alt
 + 
J
Alt
 + 
K
Alt
 + 
M
Alt
 + 
H
  • Toggle Joysticks mode
    AUTO
  • Toggle Joykeys mode
    DISABLED
  • Toggle Mouse mode
    AUTO
  • Adjust Turbo Fire speed
    OFF
PORT 1
NO DEVICE
A
B
X
Y
L
R
BACK
START
PORT 2
NO DEVICE
A
B
X
Y
L
R
BACK
START
WebMSX  -  version '+WMSX.VERSION+'
'+atob("Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==")+"
"+atob("PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd2VibXN4Lm9yZyI+aHR0cHM6Ly93ZWJtc3gub3JnPC9hPg==")+'
Control mapped to:
' -},wmsx.SettingsGUI.css=function(){ -return'#wmsx-modal * { outline: none; box-sizing: border-box; } #wmsx-modal { position: absolute; overflow: hidden; width: 600px; height: 0; opacity: 0; visibility: hidden; top: 22px; left: 29px; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: auto; z-index: 9; } #wmsx-modal.wmsx-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: 440px; visibility: visible; opacity: 1; } #wmsx-modal .wmsx-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #wmsx-modal .wmsx-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #wmsx-modal .wmsx-link:hover { outline: 1px solid; } .wmsx-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 43%); } .wmsx-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .wmsx-hotkey .wmsx-desc { display: inline-block; line-height: 21px; } .wmsx-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .wmsx-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .wmsx-footer { position: absolute; bottom: 13px; width: 543px; margin-top: 16px; text-align: center; } #wmsx-modal .wmsx-quick-options-list { margin: 1px 0 0; color: inherit; } #wmsx-modal .wmsx-quick-options-list > li { margin: 0; } #wmsx-modal .wmsx-quick-options-list > li > * { height: 25px; line-height: 25px; font-size: inherit; } #wmsx-modal .wmsx-control { width: 180px; font-weight: bold; background: rgb(243, 243, 243); border-radius: 3px; box-shadow: 1px 1px 1px rgba(0, 0, 0, .27) } #wmsx-modal .wmsx-control > button { background: white; border-color: hsl(0, 0%, 80%); } #wmsx-modal .wmsx-control > button::after { top: 6px; } #wmsx-modal .wmsx-control > button.wmsx-control-dec::after { left: 3px; border-right-color: hsl(0, 0%, 55%); } #wmsx-modal .wmsx-control > button.wmsx-control-inc::after { right: 3px; border-left-color: hsl(0, 0%, 55%); } #wmsx-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #wmsx-menu #wmsx-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #wmsx-menu #wmsx-back:hover { background: rgba(0, 0, 0, .12); } .wmsx-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .wmsx-back-arrow:before { content: ""; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .wmsx-back-arrow:after { content: ""; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #wmsx-menu .wmsx-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-menu .wmsx-items { position: relative; width: 80%; height: 39px; margin: 0 auto; font-weight: 600; } #wmsx-menu .wmsx-item { float: left; width: 20%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #wmsx-menu .wmsx-selected { color: hsl(358, 67%, 46%); } #wmsx-menu #wmsx-menu-selection { position: absolute; left: 0; bottom: 0; width: 20%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #wmsx-content { position: relative; left: 0; width: 3000px; height: 362px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #wmsx-general, #wmsx-inputs, #wmsx-media, #wmsx-ports, #wmsx-about { position: absolute; width: 600px; height: 100%; box-sizing: border-box; } #wmsx-general { padding-top: 13px; padding-left: 36px; } #wmsx-general .wmsx-left { float: left; width: 248px; } #wmsx-general .wmsx-left .wmsx-command { width: 105px; } #wmsx-general .wmsx-right { float: left; } #wmsx-general .wmsx-right .wmsx-command { width: 160px; } #wmsx-media { left: 600px; } #wmsx-media { padding-top: 8px; padding-left: 32px; } #wmsx-media .wmsx-top-left { float: left; width: 287px; } #wmsx-media .wmsx-top-right { float: left; height: 154px; } #wmsx-media .wmsx-middle-left { float: left; width: 287px; } #wmsx-media .wmsx-middle-right { float: left; margin-top: 54px; } #wmsx-media .wmsx-bottom-left { float: left; width: 298px; } #wmsx-media .wmsx-bottom-right { float: left; } #wmsx-media .wmsx-top-left .wmsx-command { width: 101px; } #wmsx-media .wmsx-top-right .wmsx-command { width: 96px; } #wmsx-media .wmsx-middle-right .wmsx-command { width: 84px; } #wmsx-media .wmsx-bottom-left .wmsx-command { width: 174px; } #wmsx-media .wmsx-bottom-right .wmsx-command { width: 131px; } #wmsx-media .wmsx-bottom .wmsx-command { width: 174px; } #wmsx-inputs { left: 1200px; padding: 12px 0 0 33px; } #wmsx-inputs .wmsx-left { float: left; width: 290px; } #wmsx-inputs .wmsx-command { width: 85px; } #wmsx-inputs .wmsx-bottom { margin-top: 18px; } #wmsx-inputs .wmsx-bottom .wmsx-hotkey { display: inline-block; width: 280px; margin-bottom: 2px; vertical-align: bottom; } #wmsx-inputs .wmsx-bottom .wmsx-right { display: inline-block; width: 251px; text-align: right; } #wmsx-inputs .wmsx-bottom .wmsx-heading { display: inline-block; width: 180px; margin-bottom: 2px; text-align: center; } #wmsx-inputs #wmsx-inputs-msx-lang { padding: 0 5px 5px 0; } #wmsx-inputs-keyboard-name { color: hsl(228, 90%, 40%); } #wmsx-keyboard { position: relative; top: 2px; width: 535px; height: 174px; padding: 12px 0 0 13px; margin-top: 5px; background: hsl(0, 0%, 25%); border-radius: 1px 1px 0 0; box-sizing: border-box; box-shadow: 0 1px 0 1px hsl(0, 0%, 20%), 0 3px 4px 1px hsl(0, 0%, 40%); } #wmsx-ports { left: 1800px; padding: 13px 0 0 27px; } #wmsx-ports .wmsx-left { float: left; width: 126px; padding-left: 32px; } #wmsx-ports .wmsx-command { width: 91px; } #wmsx-ports .wmsx-hotkey { height: 31px; } #wmsx-ports .wmsx-right { float: left; width: 375px; } #wmsx-ports .wmsx-right .wmsx-quick-options-list > li { margin: 0 0 6px; } #wmsx-ports .wmsx-bottom { width: 546px; text-align: center; clear: both; } #wmsx-ports .wmsx-bottom-left, #wmsx-ports .wmsx-bottom-right { display: inline-block; height: 162px; margin-top: 15px; vertical-align: top; text-align: center; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 32%); } #wmsx-ports .wmsx-device-title { margin-top: 11px; height: 12px; font-size: 12px; line-height: 12px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #wmsx-ports .wmsx-joystick-device .wmsx-joy, #wmsx-ports .wmsx-joykeys-device .wmsx-joy { display: block; } #wmsx-ports .wmsx-mouse-device .wmsx-mouse { display: block; } #wmsx-ports .wmsx-touch-device .wmsx-touch { display: block; } #wmsx-ports .wmsx-none-device .wmsx-none { display: block; } #wmsx-ports-joysticks-mode, #wmsx-ports .wmsx-joystick-device .wmsx-device-title { color: hsl(228, 90%, 40%) } #wmsx-ports-joykeys-mode, #wmsx-ports .wmsx-joykeys-device .wmsx-device-title { color: hsl(0, 90%, 43%); } #wmsx-ports-mouse-mode, #wmsx-ports .wmsx-mouse-device .wmsx-device-title { color: hsl(120, 100%, 30%); } #wmsx-ports-turbofire-speed { color: hsl(0, 0%, 30%); } #wmsx-ports .wmsx-touch-device, #wmsx-ports .wmsx-touch-device .wmsx-device-title { color: hsl(167, 100%, 31%); } #wmsx-ports .wmsx-joykeys-device .wmsx-virtual { opacity: 0.33; } #wmsx-ports .wmsx-joykeys-device .wmsx-joy-button.wmsx-virtual { background: hsl(0, 0%, 75%); box-shadow: 0 3px 0 0 hsl(0, 0%, 60%), 0 3px 0 1px hsl(0, 0%, 40%); } #wmsx-ports .wmsx-joykeys-device .wmsx-joy-hs.wmsx-virtual { display: none; } #wmsx-ports .wmsx-joy { display: none; position: relative; top: 14px; width: 252px; font-weight: bold; text-align: center; vertical-align: top; box-sizing: border-box; } #wmsx-ports-device1 .wmsx-joy { margin-right: 8px; } #wmsx-ports-device2 .wmsx-joy { margin-left: 8px; } .wmsx-joy-logo, .wmsx-mouse-logo { position: absolute; background: url("data:image/png;base64,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"); } .wmsx-joy .wmsx-joy-trig { position: absolute; top: -6px; width: 45px; height: 40px; background: hsl(0, 0%, 68%); border-radius: 5px; box-shadow: inset 1px 1px hsl(0, 0%, 90%), 0 2px 2px 2px hsl(0, 0%, 47%); } .wmsx-joy .wmsx-joy-L { left: 25px; border-top-left-radius: 16px; } .wmsx-joy .wmsx-joy-R { right: 25px; border-top-right-radius: 16px; } .wmsx-joy .wmsx-joy-middle { position: absolute; left: 2px; right: 2px; height: 85px; background: white; background: linear-gradient(hsl(0, 0%, 94%), white, white, hsl(0, 0%, 93%)); border-radius: 50px 50px 40px 40px; box-shadow: 0 5px 0 0 hsl(0, 0%, 78%), 0 1px 2px 1px hsl(0, 0%, 73%), 0 6px 4px 1px hsl(0, 0%, 40%); } .wmsx-joy-logo { top: 17px; left: 103px; width: 46px; height: 14px; } .wmsx-joy .wmsx-joy-outleft, .wmsx-joy .wmsx-joy-outright { position: absolute; width: 100px; height: 97px; background: white; border-radius: 100%; transform-origin: 50px 50px; transform: rotate(6deg); box-shadow: 0 5px 0 -1px hsl(0, 0%, 78%), 0 6px 0 -1px hsl(0, 0%, 78%), -1px 8px 2px -2px hsl(0, 0%, 48%), 0 9px 4px -2px hsl(0, 0%, 36%); } .wmsx-joy .wmsx-joy-outright { right: 0; transform: rotate(-6deg); box-shadow: 0 5px 0 -1px hsl(0, 0%, 78%), 0 6px 0 -1px hsl(0, 0%, 78%), 1px 8px 2px -2px hsl(0, 0%, 48%), 0 9px 4px -2px hsl(0, 0%, 36%); } .wmsx-joy .wmsx-joy-left, .wmsx-joy .wmsx-joy-right { position: absolute; top: 10px; width: 80px; height: 78px; background: hsl(0, 0%, 87%); border: 1px solid hsl(0, 0%, 76%); border-right: none; border-bottom: none; border-radius: 100%; box-sizing: border-box; } .wmsx-joy .wmsx-joy-left { left: 10px; } .wmsx-joy .wmsx-joy-left:before { content: ""; position: absolute; top: 9px; left: 10px; width: 58px; height: 58px; background: hsl(0, 0%, 77%); border-radius: 1000px; box-sizing: border-box; } .wmsx-joy .wmsx-joy-right { right: 10px; } .wmsx-joy .wmsx-joy-right:before { content: ""; position: absolute; top: 20px; right: 16px; width: 27px; height: 57px; background: hsl(0, 0%, 77%); border-radius: 1000px; box-sizing: border-box; transform: rotate(45deg); } .wmsx-joy .wmsx-joy-dir { position: absolute; color: hsl(0, 0%, 95%); background: hsl(0, 0%, 49%); border: 1px solid hsl(0, 0%, 64%); border-right-color: hsl(0, 0%, 42%); border-bottom-color: hsl(0, 0%, 35%); border-radius: 2px 2px 0 0; box-shadow: 0 3px 1px hsl(0, 0%, 40%), 0 3px 0 1px hsl(0, 0%, 15%); box-sizing: border-box; } .wmsx-joy .wmsx-joy-dirh { top: 28px; left: 16px; width: 46px; height: 14px; } .wmsx-joy .wmsx-joy-dirv { top: 12px; left: 32px; width: 14px; height: 45px; } .wmsx-joy .wmsx-joy-dir-center { position: absolute; top: 29px; left: 30px; width: 18px; height: 12px; background: hsl(0, 0%, 49%); } .wmsx-joy .wmsx-joy-dir-center:after { content: ""; position: absolute; top: 2px; left: 4px; height: 8px; width: 8px; border-radius: 1000px; box-shadow: inset 0 0 6px hsl(0, 0%, 36%), inset 1px 1px 2px -1px hsl(0, 0%, 36%), 1px 1px 0 hsl(0, 0%, 65%); } .wmsx-joy-button { position: relative; display: inline-block; top: -1px; min-width: 19px; height: 19px; margin: 0 1px; font-size: 12px; line-height: 14px; padding-top: 3px; color: hsl(0, 0%, 97%); background: hsl(0, 00%, 54%); border-radius: 100%; box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(0, 0%, 40%), 0 3px 0 1px hsl(0, 0%, 15%); box-sizing: border-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-joy-button.wmsx-square { top: -2px; min-width: 18px; height: 18px; font-size: 11px; border-radius: 1px 1px 0 0; padding: 2px 5px 0; box-shadow: inset 1px 1px hsl(0, 0%, 64%), inset -1px -1px hsl(0, 0%, 35%), 0 3px 0 0 hsl(0, 0%, 40%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-A { position: absolute; top: 46px; left: 29px; background: hsl(132, 90%, 41%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(127, 90%, 30%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-B { position: absolute; top: 26px; left: 49px; background: hsl(0, 94%, 63%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(0, 90%, 43%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-X { position: absolute; top: 26px; left: 9px; background: hsl(234, 80%, 66%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.1), 0 3px 0 0 hsl(234, 80%, 47%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-Y { position: absolute; top: 6px; left: 29px; background: hsl(58, 100%, 44%); box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.06), 0 3px 0 0 hsl(56, 100%, 33%), 0 3px 0 1px hsl(0, 0%, 15%); } .wmsx-joy .wmsx-joy-center .wmsx-joy-button { position: absolute; top: 43px; width: 18px; height: 09px; color: hsl(0, 0%, 58%); border-radius: 1000px; background: hsl(0, 0%, 82%); box-shadow: inset 0 1px 1px hsl(0, 0%, 70%), 0 2px 0 0 hsl(0, 0%, 62%), 0 2px 0 1px hsl(0, 0%, 30%); } .wmsx-joy .wmsx-joy-center .wmsx-joy-BACK { left: 103px; border-top-right-radius: 1px; border-bottom-right-radius: 1px; } .wmsx-joy .wmsx-joy-center .wmsx-joy-START { right: 103px; border-top-left-radius: 1px; border-bottom-left-radius: 1px; } .wmsx-joy-hs { position: absolute; border: 1px solid transparent; border-radius: 1000px; box-sizing: border-box; cursor: pointer; } .wmsx-joy-hs.wmsx-joy-hs-unmapped { color: rgb(30, 30, 30); -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } .wmsx-joy-hs-UP, .wmsx-joy-hs-DOWN, .wmsx-joy-hs-LEFT, .wmsx-joy-hs-RIGHT { width: 26px; height: 25px; padding-top: 6px; font-size: 10px; line-height: 10px; color: hsl(0, 0%, 95%); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-joy-hs-UP { top: 18px; left: 37px; padding-top: 7px; } .wmsx-joy-hs-DOWN { top: 51px; left: 37px; padding-top: 4px; } .wmsx-joy-hs-LEFT { top: 34px; left: 21px; } .wmsx-joy-hs-RIGHT { top: 34px; left: 53px; } .wmsx-joy-hs-A, .wmsx-joy-hs-B, .wmsx-joy-hs-X, .wmsx-joy-hs-Y { width: 21px; height: 23px; font-size: 12px; line-height: 18px; color: hsl(0, 0%, 99%); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wmsx-joy-hs-A { top: 57px; right: 39px; } .wmsx-joy-hs-B { top: 37px; right: 19px; } .wmsx-joy-hs-X { top: 37px; right: 59px; } .wmsx-joy-hs-Y { top: 17px; right: 39px; } .wmsx-joy-hs-L, .wmsx-joy-hs-R { width: 54px; height: 25px; top: -20px; color: hsl(0, 0%, 52%); font-size: 12px; line-height: 12px; border-radius: 0; } .wmsx-joy-hs-L { left: 21px; } .wmsx-joy-hs-R { right: 22px; } .wmsx-joy-hs-BACK, .wmsx-joy-hs-START { width: 26px; height: 29px; top: 39px; padding-top: 18px; font-size: 7px; font-weight: normal; line-height: 11px; color: hsl(0, 0%, 54%); border-radius: 0; } .wmsx-joy-hs-BACK { left: 99px; } .wmsx-joy-hs-START { right: 99px; } #wmsx-ports .wmsx-mouse { display: none; position: relative; width: 230px; } #wmsx-ports .wmsx-mouse-body { position: relative; top: 6px; left: -8px; overflow: visible; white-space: nowrap; width: 59px; height: 75px; margin: 14px auto; background: linear-gradient(166deg, white, white, white, white, hsl(0, 0%, 97%), hsl(0, 0%, 90%)); border: 1px solid hsl(0, 0%, 81%); border-right-color: hsl(0, 0%, 76%); border-radius: 10px 8px 25px 32px; box-sizing: border-box; transform: skew(-47deg, 30deg); box-shadow: /* inset 0px 0px 1px 0 hsl(0, 0%, 45% */ 3px 2px 0 -1px hsl(0, 0%, 70%) ,4px 3px 0 -1px hsl(0, 0%, 60%) /* line */ ,6px 4px 0 -2px hsl(0, 0%, 82%) /* line */ ,5px 0 0 -4px hsl(0, 0%, 70%) ,6px 0 0 -4px hsl(0, 0%, 70%) ,7px 1px 0 -4px hsl(0, 0%, 70%) ,8px 2px 0 -4px hsl(0, 0%, 70%) ,9px 3px 0 -4px hsl(0, 0%, 70%) ,10px 4px 0 -4px hsl(0, 0%, 70%) ,11px 5px 0 -4px hsl(0, 0%, 70%) ,12px 6px 0 -4px hsl(0, 0%, 70%) ,13px 7px 0 -4px hsl(0, 0%, 70%) ,14px 8px 0 -4px hsl(0, 0%, 70%) ,17px 8px 0 -6px hsl(0, 0%, 70%) ,18px 11px 0 -6px hsl(0, 0%, 70%) ,2px 6px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,4px 7px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,8px 9px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,10px 09px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,12px 10px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,14px 10px 0 -4px hsl(0, 0%, 70%) /* bottom correction */ ,19px 11px 4px -6px hsl(0, 0%, 3%) /* shadow */ ,13px 12px 4px -6px hsl(0, 0%, 3%) /* shadow */ ; } #wmsx-ports .wmsx-mouse-button1, #wmsx-ports .wmsx-mouse-button2 { position: absolute; height: 25px; background: transparent; border: 0 solid hsl(0, 0%, 70%); box-sizing: border-box; } #wmsx-ports .wmsx-mouse-button1 { width: 48%; border-right-width: 1px; } #wmsx-ports .wmsx-mouse-button2 { width: 101%; border-bottom-width: 1px; } .wmsx-mouse-logo { top: 29px; left: 14px; width: 24px; height: 7px; background-size: 100%; } #wmsx-ports .wmsx-none { display: none; width: 104px; height: 106px; margin: 12px 63px 0; border: 12px solid hsl(0, 0%, 72%); border-radius: 100%; box-sizing: border-box; } #wmsx-ports .wmsx-none:after { content: ""; display: block; position: relative; top: 50%; left: -6px; width: 92px; height: 12px; background: hsl(0, 0%, 72%); transform: translateY(-50%) rotate(-45deg); } #wmsx-ports .wmsx-touch { display: none; width: 68px; height: 107px; margin: 8px 81px 0; background: white; border: 1px solid hsl(0, 0%, 90%); border-radius: 8px; box-sizing: border-box; box-shadow: 0 0 0 1px hsl(0, 0%, 70%), 1px 1px 0 1px hsl(0, 0%, 40%), 2px 3px 4px hsl(0, 0%, 26%); } #wmsx-ports .wmsx-touch:before { content: ""; display: block; position: relative; width: 58px; height: 77px; margin: 13px auto 4px; background: hsl(0, 0%, 35%); } #wmsx-ports .wmsx-touch:after { content: ""; position: relative; display: block; width: 6px; height: 6px; left: 29px; border: 1px solid hsl(0, 0%, 60%); background: hsl(0, 0%, 95%); border-radius: 100%; } #wmsx-about { left: 2400px; font-size: 18px; } #wmsx-about #wmsx-logo-version { width: 380px; height: 212px; margin: 36px auto 24px; color: hsl(0, 0%, 98%); padding-top: 170px; box-sizing: border-box; text-align: center; background: black url("'+wmsx.Images.urls.logo+'") center 50px no-repeat; background-size: 334px 100px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #wmsx-about .wmsx-info { line-height: 30px; text-align: center; } #wmsx-about a { color: rgb(0, 40, 200); text-decoration: none; } #wmsx-about a:hover { text-decoration: underline; } #wmsx-about #wmsx-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } #wmsx-control-mapping-popup { display: none; position: fixed; padding: 4px 9px; font: normal 13px sans-serif; line-height: 19px; text-align: center; vertical-align: top; border-radius: 6px; border: 8px white solid; background: rgb(220, 220, 220); box-shadow: 0 3px 3px 2px rgba(0, 0, 0, .55); box-sizing: border-box; z-index: 10; } #wmsx-control-mapping-popup.wmsx-locked { border-color: hsl(60, 100%, 68%); } #wmsx-control-mapping-popup .wmsx-command { width: auto; line-height: 21px; margin: 10px 0; font-weight: bold; } #wmsx-control-mapping-popup:after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; width: 0; margin: 0 auto; border-width: 10px; border-style: solid; border-color: transparent white white transparent; box-shadow: 4px 4px 2px 0 rgba(0, 0, 0, .55); box-sizing: border-box; transform: translateY(16px) rotate(45deg); } #wmsx-control-mapping-popup.wmsx-locked:after { border-color: transparent hsl(60, 100%, 68%) hsl(60, 100%, 68%) transparent; } .wmsx-clear { clear: both; } .wmsx-divider { clear: both; height: 27px; } .wmsx-full-divider { clear: both; height: 21px; } #wmsx-general .wmsx-full-divider { clear: both; height: 18px; }' -},wmsx.ControlMappingPopup=function(){"use strict";function a(){j=document.getElementById("wmsx-control-mapping-popup"),k=document.getElementById("wmsx-control-mapping-popup-heading"),l=document.getElementById("wmsx-control-mapping-popup-mapping"),m=document.getElementById("wmsx-control-mapping-popup-footer"),j.tabIndex=-1,j.addEventListener("mousedown",b),j.addEventListener("keydown",c),j.addEventListener("keyup",d)}function b(a){wmsx.Util.blockEvent(a),3===a.which&&r.clearControlEditing()}function c(a){if(s){var b=o.codeNewForKeyboardEvent(a);if(n||b!==o.VK_ESCAPE.wc)return o.isModifierKey(a)?t=o.codeNewForKeyboardEvent(a):f(a),a.stopPropagation(),a.preventDefault(),!1}}function d(a){if(s){var b=o.codeNewForKeyboardEvent(a);return t===b&&f(a),a.stopPropagation(),a.preventDefault(),!1}}function e(){if(!r)return void(j.style.display="none");j.style.display="block",window.setTimeout(function(){j.focus()},0);var a=r.getMappingForControl(s,i)||[];l.innerHTML=h(a);var b=j.getBoundingClientRect(),c=p-b.width/2|0,d=q-b.height-u|0;j.style.top=d+"px",j.style.left=c+"px"}function f(a){var b=o.nameForKeyboardEvent(a);if(b){var c={wc:o.codeNewForKeyboardEvent(a),n:b};r.customizeControl(s,i,c),t=null,e()}}function g(a){r.customizeControl(s,i,a),e()}function h(a){if(a.constructor===String)return a;if(a.constructor===Object)return h(a.from)+"  =>  "+h(a.to);if(!a||0===a.length)return"- none -";for(var b="",c=0;c0&&(b+=" , ");var f=e.n&&e.n.constructor===Array?e.n:[e.n];d="";for(var g=0,i=f.length;g1?"wmsx-joy-button wmsx-square":"wmsx-joy-button";g>0&&(d+=g===i-1?" + ":" "),d+='
'+f[g]+"
"}}b+=d}return b}this.show=function(a,b,c,d,f,g,h,l){p=d,q=f,r=a,s=b,i=c,t=null,k.innerHTML=g,m.innerHTML=h,n=!!l,j.classList.toggle("wmsx-locked",n),e()},this.hide=function(){p=q=0,r=s=i=null,e()},this.joystickButtonDetected=function(a,b){b===i&&g(a)};var i,j,k,l,m,n,o=wmsx.DOMKeys,p=0,q=0,r=null,s=null,t=null,u=14;!function(){a()}()},wmsx.ControlMappingPopup.get=function(){"use strict";return wmsx.ControlMappingPopup.instance||(wmsx.ControlMappingPopup.instance=new wmsx.ControlMappingPopup),wmsx.ControlMappingPopup.instance},wmsx.ControlMappingPopup.instance=null,wmsx.KeyboardConfigurator=function(a,b,c){"use strict";function d(){n=document.getElementById("wmsx-inputs-msx-lang"),m=document.getElementById("wmsx-inputs-keyboard-name"),m.wmsxText=m.querySelector(":scope > span"),m.querySelector(":scope > button").wmsxDec=!0,wmsx.Util.onTapOrMouseDownWithBlock(m,function(b){"BUTTON"===b.target.tagName&&a.toggleKeyboardLayout(b.target.wmsxDec)}),b.addEventListener("mousedown",e,!0),k=document.getElementById("wmsx-keyboard"),l=wmsx.VirtualKeyboard.create(k,function(a){a.wmsxKey&&p.push(a),a.addEventListener("mouseenter",f),a.addEventListener("mouseleave",g)},!1,t,!0)}function e(a){var b=a.target.wmsxKey;b?r===b?1===a.which?s=!s:3===a.which&&o.clearKey(r):(q=a.target,r=q.wmsxKey,s=1===a.which):(s=!1,g()),j.refresh(),h()}function f(a){s||(a.target.wmsxKey?(q=a.target,r=q.wmsxKey,h()):g())}function g(){s||(q=r=null,h())}function h(){if(!r)return u.hide(),void b.focus();var a=q.getBoundingClientRect(),c=a.left+a.width/2,d=a.top;u.show(j,r,0,c,d,v,w,s)}function i(){for(var a=0;a span"),l.querySelector(":scope > button").wmsxDec=!0,m=document.getElementById("wmsx-ports-joykeys-mode"),m.wmsxControl=wmsx.PeripheralControls.JOYKEYS_TOGGLE_MODE,m.wmsxText=m.querySelector(":scope > span"),m.querySelector(":scope > button").wmsxDec=!0,k=document.getElementById("wmsx-ports-mouse-mode"),k.wmsxControl=wmsx.PeripheralControls.MOUSE_TOGGLE_MODE,k.wmsxText=k.querySelector(":scope > span"),k.querySelector(":scope > button").wmsxDec=!0,n=document.getElementById("wmsx-ports-turbofire-speed"),n.wmsxControl=wmsx.PeripheralControls.TURBO_FIRE_TOGGLE,n.wmsxText=n.querySelector(":scope > span"),n.querySelector(":scope > button").wmsxDec=!0,wmsx.Util.onTapOrMouseDownWithBlock(l,a),wmsx.Util.onTapOrMouseDownWithBlock(m,a),wmsx.Util.onTapOrMouseDownWithBlock(k,a),wmsx.Util.onTapOrMouseDownWithBlock(n,a);for(var c=1;c<=2;++c){var d=c-1;o[d]=document.getElementById("wmsx-ports-device"+c),p[d]=document.getElementById("wmsx-ports-device"+c+"-title");for(var f in wmsx.JoystickButtons){var g=document.getElementById("wmsx-joy"+c+"-"+wmsx.JoystickButtons[f].n);g&&(g.wmsxButton=f,g.wmsxPort=d,e(g),q.push(g))}o[d].addEventListener("mousedown",h);var i=document.getElementById("wmsx-mouse"+c);i.wmsxButton="MOUSE",i.wmsxPort=d,e(i)}}function e(a){a.addEventListener("mouseenter",f),a.addEventListener("mouseleave",g)}function f(a){a.target.wmsxButton?(r=a.target,s=r.wmsxButton,t=r.wmsxPort,i()):g()}function g(){r=s=t=null,i()}function h(b){s&&3===b.which&&a.clearControl(s,t),j.refresh(),i()}function i(){if(!s)return u.hide(),a.mappingPopupVisibility(u,t,!1),void c.focus();var b=r.getBoundingClientRect(),d=b.left+b.width/2,e=b.top,f=a.getMappingPopupText(s,t);u.show(j,s,t,d,e,f.heading,f.footer),a.mappingPopupVisibility(u,t,!0)}var j=this;this.controllersSettingsStateUpdate=function(){this.refresh()},this.refresh=function(){var b=a.getSettingsState();l.wmsxText.textContent=b.joysticksModeDesc,m.wmsxText.textContent=b.joykeysModeDesc,k.wmsxText.textContent=b.mouseModeDesc,n.wmsxText.textContent=b.turboFireSpeedDesc;for(var c=0;c<2;++c){var d=b.ports[c],e=o[c].classList;e.remove.apply(e,v),d.startsWith(wmsx.ControllersHub.MOUSE)?e.add("wmsx-mouse-device"):d.startsWith(wmsx.ControllersHub.JOY_ANY)?e.add(d.startsWith(wmsx.ControllersHub.JOYSTICK)?"wmsx-joystick-device":"wmsx-joykeys-device"):d.startsWith(wmsx.ControllersHub.TOUCH)?e.add("wmsx-touch-device"):e.add("wmsx-none-device"),p[c].innerHTML=d}for(var f=0;f=440+wmsx.ScreenGUI.BAR_HEIGHT&&(c-=wmsx.ScreenGUI.BAR_HEIGHT+3),m.style.top=((c-440)/2|0)+"px",m.style.left=((b-600)/2|0)+"px",!0)},this.keyboardSettingsStateUpdate=function(){q&&n&&n.keyboardSettingsStateUpdate()},this.controllersSettingsStateUpdate=function(){q&&o&&o.controllersSettingsStateUpdate()};var m,n,o,p="GENERAL",q=!1,r=wmsx.DOMKeys,s=r.VK_ESCAPE.wc},wmsx.PasteDialog=function(a,b,c){"use strict";var d=this;this.toggle=function(){e&&"visible"===e.style.visibility?this.hide():this.show()},this.show=function(){if(!e)return g(),void d.show();setTimeout(function(){e.classList.add("wmsx-show"),f.focus(),i=!0},0)},this.hide=function(){i&&(e.classList.remove("wmsx-show"),i=!1,b.focus())};var e,f,g=function(){e=document.createElement("div"),e.id="wmsx-paste-cover",a.appendChild(e),f=document.createElement("input"),f.id="wmsx-paste-box",f.value="📋 PASTE NOW",f.readOnly="readonly",f.innerHTML="PASTE NOW!",e.appendChild(f),h()},h=function(){wmsx.Util.onTapOrMouseDownWithBlock(e,function(){f.focus()}),e.addEventListener("keydown",function(a){a.stopPropagation();var b=j.codeNewForKeyboardEvent(a);if(b===l||b===m||b===n)return a.preventDefault(),void d.hide();k.indexOf(b)<0&&a.preventDefault()}),f.addEventListener("paste",function(a){if(i&&a.clipboardData&&a.clipboardData.getData){var b=a.clipboardData.getData("text/plain");b&&(d.hide(),c.processControlState(wmsx.MachineControls.TYPE_STRING,!0,!1,b))}})},i=!1,j=wmsx.DOMKeys,k=[j.VK_V.wc|j.CONTROL,j.VK_INSERT.wc|j.SHIFT,j.VK_NUM_0.wc|j.SHIFT],l=j.VK_ESCAPE.wc,m=j.VK_V.wc|j.ALT,n=j.VK_INSERT.wc|j.ALT},wmsx.TextEntryDialog=function(a,b,c){"use strict";function d(){g=document.createElement("div"),g.id="wmsx-text-entry-dialog",g.tabIndex=-1,i=document.createElement("textarea"),i.id="wmsx-text-entry-input",i.spellcheck=!1,i.autocorrect=!1,i.autocapitalize=!1,g.appendChild(i),h=document.createElement("div"),h.id="wmsx-text-entry-dialog-bar",g.appendChild(h),j=document.createElement("div"),j.id="wmsx-text-entry-dialog-ok",h.appendChild(j),k=document.createElement("div"),k.id="wmsx-text-entry-dialog-cancel",h.appendChild(k),a.appendChild(g),e()}function e(){wmsx.Util.onTapOrMouseDownWithBlock(g,function(a){a.target===j||a.target===k?(wmsx.ControllersHub.hapticFeedbackOnTouch(a),f.hide(a.target===j)):g.focus()}),g.addEventListener("keydown",function(a){a.stopPropagation();var b=m.codeNewForKeyboardEvent(a);b===p&&(a.preventDefault(),f.hide(!0)),b!==n&&b!==o||(a.preventDefault(),f.hide(!1))}),i.addEventListener("contextmenu",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(i,"touchstart touchmove touchend mousedown mousemove mouseup",function(a){a.stopPropagation()})}var f=this;this.toggle=function(){l?this.hide(!1):this.show()},this.show=function(){if(!g)return d(),setTimeout(f.show,0);g.classList.add("wmsx-show"),l=!0,i.focus()},this.hide=function(a){l&&(g.classList.remove("wmsx-show"),l=!1,WMSX.room.screen.focus(),a&&c.processControlState(wmsx.MachineControls.TYPE_STRING,!0,!1,i.value))};var g,h,i,j,k,l=!1,m=wmsx.DOMKeys,n=m.VK_ESCAPE.wc,o=m.VK_B.wc|m.ALT,p=m.VK_ENTER.wc|m.CONTROL},wmsx.SaveStateDialog=function(a,b,c,d){"use strict";function e(){l.textContent="Select Slot to "+(m?"Save":"Load");for(var a=m?"Save to ":"Load from ",b=0;b=0&&(c&&wmsx.ControllersHub.hapticFeedbackOnTouch(a),n=a.target.wmsxSlot,f(),c||setTimeout(b,120))}),j.addEventListener("keydown",function(c){var d=t.codeNewForKeyboardEvent(c);return d===u?a():v.indexOf(d)>=0?b():w[d]&&(n+=w[d],n<0?n=0:n>10&&(n=10),f()),wmsx.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);m=b,p=!0,e(),j.classList.add("wmsx-show"),j.focus(),wmsx.Util.scaleToFitParentHeight(j,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(p&&(j.classList.remove("wmsx-show"),p=!1,WMSX.room.screen.focus(),a)){var d=s[n],e=m?d.save:d.load;d.peripheral?c.processControlActivated(e):b.processControlState(e,!0)}};var j,k,l,m=!1,n=0,o=[],p=!1,q=wmsx.MachineControls,r=wmsx.PeripheralControls,s=[{d:"Slot 1",load:q.LOAD_STATE_1,save:q.SAVE_STATE_1},{d:"Slot 2",load:q.LOAD_STATE_2,save:q.SAVE_STATE_2},{d:"Slot 3",load:q.LOAD_STATE_3,save:q.SAVE_STATE_3},{d:"Slot 4",load:q.LOAD_STATE_4,save:q.SAVE_STATE_4},{d:"Slot 5",load:q.LOAD_STATE_5,save:q.SAVE_STATE_5},{ -d:"Slot 6",load:q.LOAD_STATE_6,save:q.SAVE_STATE_6},{d:"Slot 7",load:q.LOAD_STATE_7,save:q.SAVE_STATE_7},{d:"Slot 8",load:q.LOAD_STATE_8,save:q.SAVE_STATE_8},{d:"Slot 9",load:q.LOAD_STATE_9,save:q.SAVE_STATE_9},{d:"Slot 10",load:q.LOAD_STATE_10,save:q.SAVE_STATE_10},{d:"File",load:r.MACHINE_LOAD_STATE_FILE,save:r.MACHINE_SAVE_STATE_FILE,peripheral:!0}],t=wmsx.DOMKeys,u=t.VK_ESCAPE.wc,v=[t.VK_ENTER.wc,t.VK_SPACE.wc],w={};w[t.VK_UP.wc]=-1,w[t.VK_DOWN.wc]=1},wmsx.CartridgeFormatDialog=function(a,b,c,d){"use strict";function e(){r=0,k.reinsertROMContent(),s=wmsx.SlotCreator.getUserFormatOptionNames(k.rom);var a=wmsx.SlotCreator.getBestFormatOption(k.rom);a||(a=wmsx.SlotFormats.Normal),s.unshift(a.name);for(var b=0;ba.offsetTop?m.scrollTop=a.offsetTop:m.scrollTop+m.offsetHeight=0&&c(a.target.wmsxIndex)}),wmsx.Util.addEventsListener(m,"click",function(a){if(wmsx.Util.blockEvent(a),a.target.wmsxIndex>=0){var d=a.target.wmsxIndex===r;c(a.target.wmsxIndex),setTimeout(b,d?0:120)}}),wmsx.Util.onTapOrMouseDownWithBlock(n,function(a){w&&(wmsx.ControllersHub.hapticFeedbackOnTouch(a),v=!v,g())}),l.addEventListener("keydown",function(c){var d=y.codeNewForKeyboardEvent(c);return d===z?a():A.indexOf(d)>=0?b():B[d]&&(r+=B[d],r<0?r=0:r>=s.length&&(r=s.length-1),f()),wmsx.Util.blockEvent(c)})}var j=this;this.show=function(a,c){if(!l)return h(),setTimeout(function(){j.show(a,c)},0);o=a,p=c,(k=d.cartridgeInserted(o))&&(q=k.format.name,v=!!x.getForROM(k.rom),w=!!k.rom.info.h,u=!0,l.classList.add("wmsx-show"),e(),l.focus(),wmsx.Util.scaleToFitParentHeight(l,b,wmsx.ScreenGUI.BAR_HEIGHT))},this.hide=function(b){if(u){if(l.classList.remove("wmsx-show"),u=!1,WMSX.room.screen.focus(),b){var e=s[r],f=e===s[0],g=wmsx.SlotCreator.changeCartridgeFormat(k,wmsx.SlotFormats[e]);v&&x.setForROM(k.rom,e,f),d.insertCartridge(g,o,p||!c.powerIsOn,!0),a.showOSD("ROM Format: "+e+(f?" (Auto)":""),!0)}k=void 0}};var k,l,m,n,o=0,p=!1,q="",r=0,s=[],t=[],u=!1,v=!1,w=!1,x=WMSX.userROMFormats,y=wmsx.DOMKeys,z=y.VK_ESCAPE.wc,A=[y.VK_ENTER.wc,y.VK_SPACE.wc],B={};B[y.VK_UP.wc]=-1,B[y.VK_DOWN.wc]=1},wmsx.DiskSelectDialog=function(a,b,c,d){"use strict";function e(){m.textContent="Select Disk in Drive "+(1===v?"B:":"A:")+" "+b.getCurrentDiskNumDesc(v);var a=61+33*Math.max(p.length,4);l.style.height=a+"px";for(var c=0;c=p.length||(q=b)}function h(){l=document.createElement("div"),l.id="wmsx-diskselect",l.classList.add("wmsx-select-dialog"),l.style.height="270px",l.tabIndex=-1,m=document.createTextNode("Select Disk"),l.appendChild(m),n=document.createElement("div"),n.id="wmsx-diskselect-footer",n.classList.add("wmsx-footer"),n.innerHTML="(drag items to change order)",l.appendChild(n),o=document.createElement("ul");for(var b=wmsx.FileDiskDrive.MAX_STACK+1,c=0;c=0)b();else{var h=f&C;h===A?c.processKey(f,!0):B[h]&&(g(B[h]),e())}return wmsx.Util.blockEvent(d)}),wmsx.Util.onTapOrMouseUpWithBlock(o,function(a){var c=a.target.wmsxDiskNum;return void 0!==c&&(wmsx.ControllersHub.hapticFeedbackOnTouch(a),q=c,e(),setTimeout(b,120)),!1}),o.addEventListener("mousemove",function(a){a.stopPropagation()})}function j(){o.addEventListener("dragstart",function(a){return a.stopPropagation(),void 0!==a.target.wmsxDiskNum&&(r=a.target,a.dataTransfer.setData("text/html",a.target.innerHTML),d.setDragAndDropDisabled(!0),!1)}),o.addEventListener("dragend",function(a){return a.stopPropagation(),s&&s.classList.remove("wmsx-droptarget"),r=s=void 0,d.setDragAndDropDisabled(!1),!1}),l.addEventListener("drop",function(a){if(a.preventDefault(),!r)return!1;if(a.stopPropagation(),!s)return!1;var b=r.wmsxDiskNum,d=s.wmsxDiskNum;return void 0!==b&&void 0!==d&&d!==b&&(c.processControlActivated(wmsx.PeripheralControls.DISK_MOVE,w,!1,{d:v,f:b,t:d}),!1)}),o.addEventListener("dragenter",function(a){return!(!r||void 0===a.target.wmsxDiskNum)&&(s&&s!==a.target&&s.classList.remove("wmsx-droptarget"),s=a.target!==r?a.target:void 0,s&&s.classList.add("wmsx-droptarget"),!1)})}var k=this;this.show=function(b,c,d){if(!l)return h(),setTimeout(function(){k.show(b,c,d)},0);v=b,w=d,u=!0,f(),g(c),e(),l.classList.add("wmsx-show"),l.focus(),wmsx.Util.scaleToFitParentHeight(l,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){d.setDragAndDropDisabled(!1),u&&(l.classList.remove("wmsx-show"),u=!1,WMSX.room.screen.focus(),a&&q>=0&&c.processControlActivated(wmsx.PeripheralControls.DISK_INSERT,w,!1,{d:v,n:q,a:w}))},this.diskDrivesMediaStateUpdate=function(a){u&&a===v&&(f(),e())};var l,m,n,o,p,q,r,s,t=[],u=!1,v=0,w=!0,x=wmsx.DOMKeys,y=x.VK_ESCAPE.wc,z=[x.VK_ENTER.wc,x.VK_SPACE.wc],A=x.VK_F6.wc,B={};B[x.VK_UP.wc]=-1,B[x.VK_PAGE_UP.wc]=-1,B[x.VK_DOWN.wc]=1,B[x.VK_PAGE_DOWN.wc]=1;var C=x.IGNORE_ALL_MODIFIERS_MASK},wmsx.NewHardDiskDialog=function(a,b){"use strict";function c(){for(var a=0;a=0&&(wmsx.ControllersHub.hapticFeedbackOnTouch(a),j=a.target.wmsxOption,c(),setTimeout(b,120))}),g.addEventListener("keydown",function(d){var e=q.codeNewForKeyboardEvent(d);return e===r?a():s.indexOf(e)>=0?b():t[e]&&(j+=t[e],j<0?j=0:j>=k.length&&(j=k.length-1),c()),wmsx.Util.blockEvent(d)})}var f=this;this.show=function(b,e){if(!g)return d(),setTimeout(function(){f.show(m,e)},0);l=!0,m=b,n=e,c(),g.classList.add("wmsx-show"),g.focus(),wmsx.Util.scaleToFitParentHeight(g,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(l&&(g.classList.remove("wmsx-show"),l=!1,WMSX.room.screen.focus(),a)){var c=o[j];b.processControlActivated(wmsx.PeripheralControls.HARDDISK_NEW,m,!1,{m:c,b:n})}};var g,h,i,j=0,k=[],l=!1,m=!1,n=!1,o=wmsx.DiskImages.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES,p=wmsx.DiskImages.MEDIA_TYPE_INFO,q=(wmsx.MachineControls,wmsx.PeripheralControls,wmsx.DOMKeys),r=q.VK_ESCAPE.wc,s=[q.VK_ENTER.wc,q.VK_SPACE.wc],t={};t[q.VK_UP.wc]=-1,t[q.VK_DOWN.wc]=1},wmsx.MachineSelectDialog=function(a,b,c){"use strict";function d(){for(var a=0;a=0)b();else if(q[e]){var f=Object.keys(WMSX.MACHINES_CONFIG),g=f.indexOf(i)+q[e],h=f[g];h&&WMSX.MACHINES_CONFIG[h].DESC&&(i=h,d())}return wmsx.Util.blockEvent(c)})}var h=this;this.show=function(){if(!j)return e(),setTimeout(h.show,0);l.length||f(),m=!0,i=b.getMachine(),j.classList.add("wmsx-show"),j.focus(),d();var c=a.clientHeight-wmsx.ScreenGUI.BAR_HEIGHT-20,g=j.clientHeight,k=g=t.length-1)}function f(){var a=c.getSettingsState(),b=a.touchPortSet,e=a.touchActive;A[0].wmsxText.innerText=0===b?"Port 1":1===b?"Port 2":"OFF",A[0].classList.toggle("wmsx-selected",b>=0),A[0].classList.toggle("wmsx-inactive",!e);for(var f=1;f=t.length)return u=t.length-1;c.hapticFeedbackOnTouch(b);var d=t[u];"T_DIR"!==s&&(d=d&&(wmsx.JoystickButtons[d]||wmsx.KeyboardKeys[d])),C.customizeControl(s,d),e()}}function i(){wmsx.Util.onTapOrMouseDownWithBlock(m,function(a){a.target.wmsxControlItem?(d.processControlActivated(a.target.wmsxControlItem.control,!0,a.target.wmsxDec),c.hapticFeedbackOnTouch(a),f()):m.focus()}),m.addEventListener("keydown",function(a){var b=D.codeNewForKeyboardEvent(a);return E.indexOf(b)>=0?l.hide():F[b]&&h(F[b],a),wmsx.Util.blockEvent(a)}),wmsx.Util.addEventsListener(p,"touchstart mousedown",function(a){j(a,-1)}),wmsx.Util.addEventsListener(q,"touchstart mousedown",function(a){j(a,1)}),wmsx.Util.addEventsListener(p,"touchend mouseup",k),wmsx.Util.addEventsListener(q,"touchend mouseup",k)}function j(a,b){k(a),h(b,a),v=setTimeout(function(){w=setInterval(function(){h(b,a)},35)},415)}function k(a){wmsx.Util.blockEvent(a),v&&(clearTimeout(v),v=null),w&&(clearInterval(w),w=null)}var l=this;this.show=function(){if(!m)return g(),setTimeout(l.show,0);z=!0,a.classList.add("wmsx-touch-config-active"),m.focus(),s=t=null,u=-1,C.startTouchDetection(l),e(),f(),wmsx.Util.scaleToFitParentHeight(m,b,0)},this.hide=function(){z&&(C.stopTouchDetection(l),WMSX.userPreferences.save(),a.classList.remove("wmsx-touch-config-active"),z=!1,WMSX.room.screen.focus())},this.touchControlDetected=function(a,b){c.hapticFeedbackOnTouch(b),s=a;var d="T_DIR"===s;t=d?x:y;var f=d?B.directional:B.buttons[s],g=d?f:f&&(f.button||f.key);u=wmsx.Util.arrayFindIndex(t,function(a){return a===g}),e()},this.controllersSettingsStateUpdate=function(){z&&f()};var m,n,o,p,q,r,s,t,u,v,w,x,y,z=!1,A=[],B=WMSX.userPreferences.current.touch,C=c.getTouchControls(),D=wmsx.DOMKeys,E=[D.VK_ESCAPE.wc,D.VK_ENTER.wc,D.VK_SPACE.wc],F={};F[D.VK_LEFT.wc]=-1,F[D.VK_RIGHT.wc]=1},wmsx.QuickOptionsDialog=function(a,b,c){"use strict";function d(){for(var a=0;a=0&&g.hide(),wmsx.Util.blockEvent(a)})}var g=this;this.show=function(){if(!h)return e(),setTimeout(g.show,0);d(),j=!0,h.classList.add("wmsx-show"),h.focus(),wmsx.Util.scaleToFitParentHeight(h,a,wmsx.ScreenGUI.BAR_HEIGHT)},this.hide=function(){j&&(WMSX.userPreferences.save(),h.classList.remove("wmsx-show"),j=!1,WMSX.room.screen.focus())},this.quickOptionsControlsStateUpdate=function(){j&&d()},this.machineTurboModesStateUpdate=function(){j&&d()};var h,i,j=!1,k=[],l=wmsx.DOMKeys,m=[l.VK_ESCAPE.wc]},wmsx.NetPlayDialog=function(a,b){"use strict";function c(){switch(a.netPlayMode){case 0:o.textContent="STANDALONE",m.textContent="START",n.textContent="JOIN",m.disabled=!1,n.disabled=!1,r.disabled=!1,s.disabled=!1,k.classList.remove("wmsx-active"),l.classList.remove("wmsx-disabled"),r.setAttribute("placeholder","Enter a name");break;case 1:var b=a.getNetServer();o.textContent="HOSTING Session: "+b.getSessionID(),m.textContent="STOP",n.textContent="JOIN",m.disabled=!1,n.disabled=!0,r.disabled=!0,s.disabled=!0,k.classList.add("wmsx-active"),l.classList.add("wmsx-disabled"),r.setAttribute("placeholder","Automatic"),p.href=e();break;case 2:var c=a.getNetClient();o.textContent="JOINED Session: "+c.getSessionID(),m.textContent="START",n.textContent="LEAVE",m.disabled=!0,n.disabled=!1,r.disabled=!0,s.disabled=!0,k.classList.add("wmsx-active"),l.classList.remove("wmsx-disabled"),l.classList.add("wmsx-disabled"),r.setAttribute("placeholder","Enter a name"),p.href=e();break;case-1:case-2:o.textContent="Establishing connection...",r.disabled=!0,s.disabled=!0,k.classList.remove("wmsx-active"),l.classList.add("wmsx-disabled"),-1===a.netPlayMode?(m.textContent="CANCEL",n.textContent="JOIN",m.disabled=!1,n.disabled=!0,r.setAttribute("placeholder","Automatic")):(m.textContent="START",n.textContent="CANCEL",m.disabled=!0,n.disabled=!1,r.setAttribute("placeholder","Enter a name"))}}function d(){r.value=u.netPlaySessionName,s.value=u.netPlayNick}function e(){return wmsx.Util.browserCurrentURL()+"?JOIN="+a.netController.getSessionID()}function f(b){var c=b.target;if(!c.disabled){wmsx.ControllersHub.hapticFeedbackOnTouch(b);var d=!1,e=a.netPlayMode;if(c!==m||0!==e&&1!==e&&-1!==e?c!==n||0!==e&&2!==e&&-2!==e||(0===e?(a.getNetClient().joinSession(r.value,s.value),d=!0):a.getNetClient().leaveSession(!1,-2===e?"NetPlay connection aborted":void 0)):0===e?(a.getNetServer().startSession(r.value),d=!0):a.getNetServer().stopSession(!1,-1===e?"NetPlay connection aborted":void 0),d){var f=r.value.trim(),g=s.value.trim();u.netPlaySessionName===f&&u.netPlayNick===g||(u.netPlaySessionName=f,u.netPlayNick=g,WMSX.userPreferences.setDirty(),WMSX.userPreferences.save())}}}function g(){j=document.createElement("div"),j.id="wmsx-netplay",j.tabIndex=-1,k=document.createElement("div"),k.id="wmsx-netplay-status-box",j.appendChild(k),q=document.createElement("input"),q.id="wmsx-netplay-link-text",k.appendChild(q),o=document.createElement("div"),o.id="wmsx-netplay-status",o.textContent="STANDALONE",k.appendChild(o),p=document.createElement("a"),p.id="wmsx-netplay-link",p.textContent="🔗",p.setAttribute("title","Copy Join Session link to clipboard"),k.appendChild(p),l=document.createElement("div"),l.id="wmsx-netplay-session-box",j.appendChild(l);var a=document.createElement("div");a.id="wmsx-netplay-session-label",l.appendChild(a),m=document.createElement("button"),m.id="wmsx-netplay-start",m.wmsxCommand=!0,m.classList.add("wmsx-netplay-button"),m.textContent="START",l.appendChild(m),r=document.createElement("input"),r.id="wmsx-netplay-session-name",r.setAttribute("placeholder","Enter a name"),r.setAttribute("maxlength",12),r.spellcheck=!1,r.autocorrect=!1,r.autocapitalize=!1,l.appendChild(r),n=document.createElement("button"),n.id="wmsx-netplay-join",n.wmsxCommand=!0,n.classList.add("wmsx-netplay-button"),n.textContent="JOIN",l.appendChild(n);var c=document.createElement("div");c.id="wmsx-netplay-nick-label",l.appendChild(c),s=document.createElement("input"),s.id="wmsx-netplay-nick",s.setAttribute("placeholder","Automatic"),s.setAttribute("maxlength",12),s.spellcheck=!1,s.autocorrect=!1,s.autocapitalize=!1,l.appendChild(s),h(),b.appendChild(j)}function h(){function b(a){var b=a.target,c=b.value;return!c||c.match(/^[A-Za-z0-9]+[A-Za-z0-9_\-]*@?$/)?b.wmsxLastValidValue=c:b.value=b.wmsxLastValidValue||""}wmsx.Util.onTapOrMouseDownWithBlock(j,function(a){a.target.wmsxCommand?f(a):j.focus()}),j.addEventListener("keydown",function(a){var b=v.codeNewForKeyboardEvent(a);return w.indexOf(b)>=0&&i.hide(),wmsx.Util.blockEvent(a)}),r.addEventListener("input",b),s.addEventListener("input",b),wmsx.Util.addEventsListener(o,"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(r,"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(s,"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup",function(a){a.stopPropagation()}),j.ondragstart=wmsx.Util.blockEvent,k.addEventListener("contextmenu",function(a){a.stopPropagation()}),wmsx.Util.addEventsListener(p,"click",function(b){if(wmsx.Util.blockEvent(b),!document.queryCommandSupported||!document.queryCommandSupported("copy"))return a.showOSD("Copy to Clipboard not supported by the browser!",!0,!0);q.value=e(),q.focus(),q.select(),document.execCommand("copy"),j.focus()})}var i=this;this.show=function(){if(!j)return g(),setTimeout(i.show,0);c(),d(),t=!0,j.classList.add("wmsx-show"),j.focus(),wmsx.Util.scaleToFitParentWidth(j,b,12)},this.hide=function(){t&&(j.classList.remove("wmsx-show"),t=!1,a.screen.focus())},this.roomNetPlayStatusChangeUpdate=function(b){if(t&&c(),2===a.netPlayMode&&b<0&&t)return setTimeout(function(){i.hide()},2e3);0===a.netPlayMode&&b>0&&!t&&i.show()},this.isVisible=function(){return t};var j,k,l,m,n,o,p,q,r,s,t=!1,u=WMSX.userPreferences.current,v=wmsx.DOMKeys,w=[v.VK_ESCAPE.wc]},wmsx.WebAudioSpeaker=function(a){"use strict";function b(){return wmsx.Util.isMobileDevice()?"CHROME"!==wmsx.Util.browserInfo().name||wmsx.Util.isIOSDevice()?3:4:2}function c(){ -return"SAFARI"===wmsx.Util.browserInfo().name||wmsx.Util.isIOSDevice()?b():0}function d(){!o||m.state&&"suspended"!==m.state||(a.addEventListener("touchend",e,!0),a.addEventListener("mousedown",e,!0),a.addEventListener("keydown",e,!0),m.addEventListener("statechange",f),i.speakerUnlockStateUpdate(!1),wmsx.Util.log("Speaker Audio Context resume event registered"))}function e(){try{m.resume()}catch(a){return}var a=m.createBufferSource();a.buffer=m.createBuffer(1,1,22050),a.connect(m.destination),a.start(0),"running"===m.state&&f()}function f(){"running"===m.state&&(a.removeEventListener("touchend",e,!0),a.removeEventListener("mousedown",e,!0),a.removeEventListener("keydown",e,!0),m.removeEventListener("statechange",f),i.speakerUnlockStateUpdate(!0),wmsx.Util.log("Speaker Audio Context restablished!"))}function g(){if(o){p.length=q.length=r.length=s.length=t.length=l.length;for(var a=0;a=0;e-=1)b[e]=c[e]=0;if(0!==l.length)for(var f=l.length-1;f>=0;f-=1){var g=p[f],h=d*g+q[f]|0,i=l[f].retrieveSamples(h,v),j=i.buffer0,k=i.buffer1,m=i.bufferSize,n=i.start,o=n+q[f];if(g<1){for(var u=r[f],w=s[f],x=t[f],y=0;y=m&&(o-=m),b[y]+=u*(1-x),c[y]+=w*(1-x),u=j[0|o],w=k[0|o],b[y]+=u*x,c[y]+=w*x,x=o-(0|o);r[f]=u,s[f]=w,t[f]=x}else for(y=0;y=m&&(o-=m),b[y]+=j[0|o],c[y]+=k[0|o];o=0||(wmsx.Util.arrayAdd(l,a),g())},this.disconnectAudioSignal=function(a){l.indexOf(a)<0||(wmsx.Util.arrayRemoveAllElement(l,a),g())},this.powerOn=function(){j(),o&&(d(),this.unpauseAudio())},this.powerOff=function(){this.pauseAudio(),m&&m.close(),m=o=void 0},this.mute=function(){v=!0},this.unMute=function(){v=!1},this.pauseAudio=function(){o&&o.disconnect()},this.unpauseAudio=function(){o&&o.connect(m.destination)},this.toggleBufferBaseSize=function(a){if(!m)return i.showOSD("Audio is DISABLED",!0,!0);a?--u<-1&&(u=6):++u>6&&(u=-1),this.pauseAudio(),k(),this.unpauseAudio(),i.showOSD("Audio Buffer size: "+(-1===u?"Auto ("+n+")":0===u?"Browser ("+n+")":n),!0),WMSX.userPreferences.current.audioBufferBase=u,WMSX.userPreferences.setDirty()},this.getControlReport=function(a){return{label:-2===u?"OFF":-1===u?"Auto":0===u?"Browser":n,active:u>0}};var i,j=function(){if(-2===u||0===WMSX.AUDIO_MONITOR_BUFFER_SIZE)return void wmsx.Util.warning("Audio disabled in configuration");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error("WebAudio API not supported by the browser");m=new a,wmsx.Util.log("Speaker AudioContext created. Sample rate: "+m.sampleRate+(m.state?", "+m.state:"")),k()}catch(a){wmsx.Util.error("Could not create AudioContext. Audio DISABLED!\n"+a)}},k=function(){try{var a=-1===u?b():0===u?c():u,d=WMSX.AUDIO_MONITOR_BUFFER_SIZE>0?WMSX.AUDIO_MONITOR_BUFFER_SIZE:a>0?wmsx.Util.exp2(0|wmsx.Util.log2((m.sampleRate+14e3)/22050))*wmsx.Util.exp2(a-1)*256:0;d=d<256?256:d>16384?16384:d,o=m.createScriptProcessor(d,2,2),o.onaudioprocess=h,n=o.bufferSize,g(),wmsx.Util.log("Audio Processor buffer size: "+o.bufferSize)}catch(a){wmsx.Util.error("Could not create ScriptProcessorNode. Audio DISABLED!\n"+a)}},l=[];this.signals=l;var m,n,o,p=[],q=[],r=[],s=[],t=[],u=-3===WMSX.AUDIO_MONITOR_BUFFER_BASE?WMSX.userPreferences.current.audioBufferBase:WMSX.AUDIO_MONITOR_BUFFER_BASE,v=!1},wmsx.SaveStateMedia=function(a){"use strict";function b(a){wmsx.Util.error("Error accessing IndexedDB, falling back to LocalStorage:",a),h=void 0}this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(a){j=a},this.isSlotUsed=function(a){return void 0!==localStorage["wmsxsave"+a+o+"u"]||void 0!==localStorage["wmsxsave"+a+o]},this.persistState=function(a,b,d){var f=e(b);c("save"+a+o,f,d)},this.retrieveState=function(a,b){d("save"+a+o,function(a){b(a&&f(a))})},this.saveStateFile=function(a){var b=e(a);b&&j.startDownloadBinary("WMSX SaveState"+m,b,"State File")},this.loadStateFile=function(a){return f(a)},this.externalStateChange=function(){a.netController&&a.netController.processExternalStateChange()};var c=function(a,c,d){function e(){i.store(a,c,function(){localStorage["wmsx"+a+"u"]="Y",d(!0)},function(a){wmsx.Util.error(a),d(!1)})}g(function(){h?h.store(a,c,function(){localStorage["wmsx"+a+"u"]="Y",d(!0)},function(a){b(a),e()}):e()})},d=function(a,c){function e(){i.retrieve(a,function(a){c(a)},function(a){wmsx.Util.warning(a),c(void 0)})}g(function(){h?h.retrieve(a,function(a){a?c(a):e()},function(e){b(e),d(a,c)}):e()})},e=function(a){try{return k+JSON.stringify(a)}catch(a){wmsx.Util.error(a)}},f=function(a){try{var b;if((b="string"==typeof a?a.substr(0,k.length):wmsx.Util.int8BitArrayToByteString(a,0,k.length))!==k&&b!==l)return;var c;return(c="string"==typeof a?a.slice(k.length):wmsx.Util.int8BitArrayToByteString(a,k.length))&&JSON.parse(c)}catch(a){wmsx.Util.error(a)}},g=function(a){if(i)return a();i=new wmsx.LocalStoragePersistence,h=new wmsx.IndexedDBPersistence,h.open(n,a,function(){h=null,a()})};this.getIndexed=function(){return h};var h,i,j,k=String.fromCharCode(0,0)+"wmsx"+String.fromCharCode(0,0)+"state!",l="wmsxsavestate!",m=".wst",n=1,o=WMSX.ENVIRONMENT?"_"+WMSX.ENVIRONMENT:""},wmsx.LocalStoragePersistence=function(){"use strict";this.open=function(a,b,c){b()},this.store=function(a,b,c,d){try{localStorage["wmsx"+a]=b,c()}catch(a){d(a)}},this.retrieve=function(a,b,c){try{b(localStorage["wmsx"+a])}catch(a){c(a)}},this.clear=function(a,b){a()}},wmsx.IndexedDBPersistence=function(){"use strict";var a=this;this.open=function(b,c,d){function e(b){wmsx.Util.error("Error obtaining IndexedDB persistence, falling back to LocalStorage only"),a.db=null,d(b)}try{var f=indexedDB.open("WebMSX",b)}catch(a){e(a)}f.onupgradeneeded=function(a){try{var b=a.target.result;b.objectStoreNames.contains("WebMSX")||(wmsx.Util.log("Creating IndexedDB persistence..."),b.createObjectStore("MainStore"))}catch(a){e(a)}},f.onsuccess=function(b){a.db=b.target.result,wmsx.Util.log("Using IndexedDB persistence"),c(a.db)},f.onerror=e},this.store=function(a,b,c,d){try{var e=this.db.transaction("MainStore","readwrite");e.onerror=d;var f=e.objectStore("MainStore"),g=f.put(b,a);g.onsuccess=function(){c()},g.onerror=d}catch(a){d(a)}},this.retrieve=function(a,b,c){var d=this.db.transaction("MainStore");d.onerror=c;var e=d.objectStore("MainStore"),f=e.get(a);f.onsuccess=function(a){b(a.target.result)},f.onerror=c},this.clear=function(a,b){var c=indexedDB.deleteDatabase("WebMSX");c.onsuccess=a,c.onerror=b},this.db=void 0},wmsx.FileCartridgeSlot=function(a){"use strict";this.connect=function(a,d){b=a,c=d},this.connectPeripherals=function(a){d=a},this.insertCartridge=function(d,e,f,g){if(b.insertCartridge(d,e,f,g),d&&d.rom.info.e){var h=d.rom.info.e;h&&WMSX.EXTENSIONS_CONFIG[h]&&c.activateExtension(h,!0,0===e,!0,!0)}1===a.netPlayMode&&a.netController.addPeripheralOperationToSend({op:0,c:d.saveState(),p:e,a:f})},this.insertSerializedCartridge=function(a,c,d){var e=wmsx.SlotCreator.recreateFromSaveState(a,b.cartridgeInserted(c));this.insertCartridge(e,c,d)},this.loadCartridgeData=function(c,d,e){var f=b.loadCartridgeData(c,d,e);return f&&1===a.netPlayMode&&a.netController.addPeripheralOperationToSend({op:1,p:c,n:d,c:wmsx.Util.compressInt8BitArrayToStringBase64(e)}),f},this.loadSerializedCartridgeData=function(a,c,d){b.loadCartridgeData(a,c,wmsx.Util.uncompressStringBase64ToInt8BitArray(d))},this.cartridgeInserted=function(a){return b.cartridgeInserted(a)},this.removeCartridge=function(a,c){b.removeCartridge(a,c)},this.saveCartridgeDataFile=function(a){var c=b.getCartridgeData(a) -;d.startDownloadBinary(c.fileName,c.content,c.desc)};var b,c,d},wmsx.FileCassetteDeck=function(a){"use strict";function b(){k(),q.showOSD("Cassette Tape rewound."+n(),!0)}function c(){j(),q.showOSD("Cassette forwarded to Tape end",!0)}function d(){s="New Tape.cas",t=[],k(),q.showOSD("Cassette loaded with new blank Tape",!0),o()}function e(a){return a?wmsx.Util.leafFilenameNoExtension(a)+".cas":"New Tape.cas"}function f(a,b){b=b||0,-1===(u=wmsx.Util.arrayIndexOfSubArray(t,x,u+b,a))&&(-1===a?k():j())}function g(){return!t&&(q.showOSD("No Cassette Tape!",!0,!0),!0)}function h(){return u===t.length}function i(){return 0===u}function j(){u=t.length}function k(){u=0}function l(){for(;u%8;)t[u++]=0}function m(a){if(!t||t.lengthb&&(c.length=b),b-=c.length;var g=a.items.filter(function(a){return a.isDir});g.length>b&&(g.length=b),a.nextFreeEntry=2+g.length,e(a,c),a.nextFreeEntry=2,d(a,g),i(a),j(a)}function d(a,b){for(var d=0;dW?++Z:(e.content=wmsx.Util.arrayFill(new Array(g*N),0),e.parentDir=a,e.usedNames=new Set,e.nextFreeEntry=0,m(e),f(a,e),c(e),++Y)}}function e(a,b){for(var c=0;cW?++Z:(m(d),f(a,d),j(d),++Y)}}function f(a,b){for(var c=a.content,d=(a.availableEntries?a.availableEntries[a.nextFreeEntry]:a.nextFreeEntry)*H,e=q(b,a.usedNames),f=0;f<11;++f)c[d+f]=e.charCodeAt(f);var g=b.isDir?16:32;c[d+11]=g;var h=d+22,i=b.lastModified?new Date(b.lastModified):b.lastModifiedDate||$,j=s(i);c[h]=255&j,c[h+1]=j>>8;var k=t(i);c[h+2]=255&k,c[h+3]=k>>8,h=d+26,c[h]=255&b.clusterChain[0],c[h+1]=b.clusterChain[0]>>8,h=d+28;var l=b.isDir?0:b.content.length;c[h]=255&l,c[h+1]=l>>8&255,c[h+2]=l>>16&255,c[h+3]=l>>24&255,a.nextFreeEntry++}function g(a){for(var b=a.content,c=a.availableEntries=[],d=0,e=0,f=b.length;d=0;d-=H)c?0===b[d]&&(b[d]=229):0!==b[d]&&(c=!0)}function j(b){var c=b.content,d=b.continuousContentPosition;if(d)for(var e=0,f=c.length;e>8):(d=I*x+3*(b>>1),1&b?(a[d+1]=15&a[d+1]|(15&c)<<4,a[d+2]=(4080&c)>>4):(a[d]=255&c,a[d+1]=240&a[d+1]|(3840&c)>>8))}function l(b){var c;return R?(c=I*x+(b<<1),a[c]|a[c+1]<<8):(c=I*x+3*(b>>1),1&b?a[c+1]>>4|a[c+2]<<4:a[c]|(15&a[c+1])<<8)}function m(a){var b=o(a.content.length);if(a.clusterChain=new Array(b),0===b)a.clusterChain[0]=0;else{for(var c=0;c8||b.has(c)){var f,g=0;do{++g,f="~"+g,c=(d.substr(0,8-f.length)+f+" ").substr(0,8)+e}while(b.has(c))}return b.add(c),c}function r(a){return a.toUpperCase().replace(/[^a-z0-9!#$%&'\(\)\-@\^_`{}~]/gi,"_")}function s(a){return a?a.getHours()<<11|(a.getMinutes()<<5)+a.getSeconds()/2:0}function t(a){return a?(a.getFullYear()-1980&127)<<9|(a.getMonth()+1<<5)+a.getDate():0}var u=a[510]|a[511]<<8,v=(a[450],a[454]|a[455]<<8|a[456]<<16|a[457]<<24),w=0;43605===u&&1===v&&(w=this.BYTES_PER_SECTOR);var x=a[w+11]|a[w+12]<<8,y=a[w+13],z=a[w+14]|a[w+15]<<8,A=a[w+16],B=a[w+17]|a[w+18]<<8,C=a[w+19]|a[w+20]<<8,D=a[w+21],E=a[w+22]|a[w+23]<<8,F=a[w+32]|a[w+33]<<8|a[w+34]<<16|a[w+35]<<24,G=C||F,H=32,I=v+z,J=I+A*E,K=J*x,L=J+H*B/x,M=L*x,N=y*x,O=(G-(L-v))/y|0,P=a[I*x],Q=String.fromCharCode(a[w+54],a[w+55],a[w+56],a[w+57],a[w+58],a[w+59],a[w+60],a[w+61]),R="FAT16 "===Q||"FAT12 "!==Q&&O>=4080;if(!(D===P&&(240===D||D>=248)&&O>=64)){var S=this.MEDIA_TYPE_INFO[P];if(!S||S.size!==a.length){var T=new Error("Could not write files: Current Disk format not recognized (unformatted?)");throw T.wmsx=!0,T}var U=this.MEDIA_TYPE_DPB[P];x=(U[2]<<8)+U[1],y=U[5]+1,I=(U[8]<<8)+U[7],A=U[9],B=U[10],L=(U[12]<<8)+U[11],O=(U[14]<<8)+U[13]-1,E=U[15],J=(U[17]<<8)+U[16],N=y*x,R=!1}var V=function(){ -for(var a=O+2-1,b=-1,c=0,d=2;d<=a;++d){0===l(d)&&(++c,b<0&&(b=d))}return{first:b,quant:c,max:a}}(),W=V.quant,X=(V.max,V.first);if(0===W)throw T=new Error("Could not write files: Disk full"),T.wmsx=!0,T;var Y=0,Z=0,$=new Date;if(function(b){var c={name:"ROOT",lastModifiedDate:$,isDir:!0,items:b,content:a.slice(K,K+B*H),nextFreeEntry:0,continuousContentPosition:K,clusterChain:[0]};g(c),h(c);var f=c.availableEntries.length,k=c.items.filter(function(a){return!a.isDir});k.length>f&&(k.length=f),f-=k.length;var l=c.items.filter(function(a){return a.isDir});l.length>f&&(l.length=f),c.nextFreeEntry=l.length,e(c,k),c.nextFreeEntry=0,d(c,l),i(c),j(c)}(b),Z>0&&0===Y)throw T=new Error("No files could fit in available Disk space"),T.wmsx=!0,T;return this.mirrorFatCopies(A,I,E,x,a),Z>0?Y+" of "+(Y+Z)+" files":Y+(1===Y?" file":" files")},this.createNewDisk=function(a,b){var c=new Uint8Array(this.MEDIA_TYPE_INFO[a].size);return b||this.formatDisk(a,c),c},this.formatDisk=function(a,b){this.HARDDISK_MEDIA_TYPE_HEADER_INFO[a]?this.formatHardDisk(a,b):this.formatFloppyDisk(a,b)},this.formatFloppyDisk=function(a,b){for(var d=c.hasDOS2()||c.hasHardDiskInterface()?this.MEDIA_TYPE_BOOT_SECTOR_DOS2[a]:this.MEDIA_TYPE_BOOT_SECTOR_DOS1[a],e=0;e>8&255,b[g+2]=e>>16&255,b[g+3]=e>>24&255}}).start()},this.makeBootDisk=function(d){var e=[{url:"@DOS1Boot.zip"}];c.hasHardDiskInterface()&&e.push({url:"@NextorBoot.zip"}),new wmsx.MultiDownloader(e,function(c){c[1]&&b.writeFilesToImage(d,a.fileLoader.createTreeFromZip(wmsx.Util.checkContentIsZIP(c[1].content))),b.writeFilesToImage(d,a.fileLoader.createTreeFromZip(wmsx.Util.checkContentIsZIP(c[0].content)))}).start()},this.hardDiskMediaTypeNeededForFiles=function(a){for(var b,c=0,d=this.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES.length;c1.3*e)break}return b},this.estimatedTotalSizeOnDisk=function(a,b){for(var c=this.MEDIA_TYPE_INFO[b].clusterSize,d=0,e=0,f=a.length;e0)return g.length>h&&(g=g.slice(0,h)),loadStack(a,g,null,d,e),g}catch(a){wmsx.Util.error(a)}}function checkFileHasValidImages(a,b,c,d){if(!d){var e=wmsx.Util.checkContentIsZIP(a.content);if(e){try{var f=wmsx.Util.getZIPFilesSorted(e);for(var g in f){f[g].content=f[g].asUint8Array() -;var h=checkFileHasValidImages(f[g],b,c,!0);if(h)return h}}catch(a){wmsx.Util.error(a)}return null}}var i=wmsx.Util.checkContentIsGZIP(a.content);if(i)return checkFileHasValidImages({name:a.name,content:i},b,c,!0);var j=checkContentIsValidImages(a.content,b,c);if(j){var k=wmsx.Util.leafFilename(a.name);if(1===j)return[{name:k,content:a.content}];for(var l=new Array(j),m=a.content.length/j|0,n=0,o=0;n=240&&a[513]>=255)return 1;for(var d=0;d<32;++d)if(0!==a[d])return 0;return 1}var e=MEDIA_TYPE_VALID_SIZES[0];return a.length%e==0?a.length/e|0:0}function emptyStack(a){driveStack[a].length=0,curDisk[a]=-1,driveDiskChanged[a]=null}function loadStack(a,b,c,d,e,f){1===room.netPlayMode&&room.netController.addPeripheralOperationToSend({op:10,d:a,s:serializeStack(b),t:c,p:d,a:e}),e?(driveStack[a]=driveStack[a].concat(b),getCurrentDisk(a)||setCurrentDiskNum(a,0)):(driveStack[a]=b,setCurrentDiskNum(a,0)),stackLoadedMessage(a,c,b.length,e,f),fireMediaStateUpdate(a),driveStack[a].length>1?d||2===room.netPlayMode||self.openDiskSelectDialog(a,0,d):autoPower(d)}function autoPower(a){(diskDriveSocket.hasDiskInterface()&&getCurrentDisk(0)||diskDriveSocket.hasHardDiskInterface()&&getCurrentDisk(2))&&diskDriveSocket.autoPowerCycle(a)}function replaceCurrentDisk(a,b,c){c&&1===room.netPlayMode&&room.netController.addPeripheralOperationToSend({op:12,d:a,k:serializeDisk(b)}),driveStack[a][curDisk[a]]=b,driveDiskChanged[a]=!0,fireMediaStateUpdate(a)}function makeFileNameToSave(a){return a?wmsx.Util.leafFilenameNoExtension(a)+".dsk":"New Disk.dsk"}function motorOff(a,b){driveMotor[a]&&(driveMotorOffTimer[a]&&b&&(clearTimeout(driveMotorOffTimer[a]),driveMotorOffTimer[a]=null),driveMotorOffTimer[a]||(driveMotorOffTimer[a]=setTimeout(function(){driveMotorOffTimer[a]=null,driveMotor[a]=!1,fireMotorStateUpdate()},MOTOR_SPINDOWN_EXTRA_MILLIS[a])))}function setCurrentDiskNum(a,b){curDisk[a]=b,driveDiskChanged[a]=!0}function getCurrentDisk(a){return driveStack[a][curDisk[a]]}function fireMediaStateUpdate(a){screen.diskDrivesMediaStateUpdate(a),fireMotorStateUpdate()}function fireMotorStateUpdate(){var a=getCurrentDisk(0),b=getCurrentDisk(1),c=getCurrentDisk(2);screen.diskDrivesMotorStateUpdate(a,driveMotor[0],a&&a.modified,b,driveMotor[1],b&&b.modified,c,driveMotor[2],c&&c.modified)}function noDiskInsertedMessage(a){return!self.isDiskInserted(a)&&(screen.showOSD("No Disk in "+driveName[a],!0,!0),!0)}function maxStackReachedMessage(a){return driveStack[a].length>=MAX_STACK&&(screen.showOSD("Maximum Stack size in "+driveName[a]+" ("+driveStack[a].length+" disks)",!0,!0),!0)}function stackLoadedMessage(a,b,c,d,e){b=b||"Disk";var f=d?c+" "+b+(c>1?"s":"")+" added to "+driveName[a]:c>1?c+" Disks loaded in "+driveName[a]:currentDiskDesc(a);screen.showOSD(f+(e?" "+e:""),!0)}function diskInsertedMessage(a){noDiskInsertedMessage(a)||screen.showOSD(currentDiskDesc(a),!0)}function currentDiskDesc(a){var b=getCurrentDisk(a),c=currentDiskNumDesc(a);return driveName[a]+": "+(c?c+" ":"")+(b?b.name:"")}function currentDiskNumDesc(a){return driveStack[a].length>1?"("+(curDisk[a]+1)+"/"+driveStack[a].length+")":""}function serializeStack(a){for(var b=new Array(a.length),c=0;c=0)){f=!0;var g=diskDriveSocket.hasDiskInterface(),h=diskDriveSocket.hasHardDiskInterface();if(g)a=h?a<0?-a:self.isHardDriveFirst()?2:0:a<0?-a:0;else{if(!h)return;a=2}}var i=tryLoadDiskStackFromFiles(a,f,b,c,d,e);return i||(f&&0===a&&!d&&h?tryLoadDiskStackFromFiles(2,!0,b,c,d,e):void 0)},this.loadAsDiskFromFiles=function(a,b,c,d){if(!(a>=0)){var e=diskDriveSocket.hasDiskInterface(),f=diskDriveSocket.hasHardDiskInterface();if(e)a=f?a<0?-a:this.isHardDriveFirst()?2:0:a<0?-a:0;else{if(!f)return;a=2}}var g,h=getCurrentDisk(a);if(h)g=h.content;else{try{var i=2===a?images.hardDiskMediaTypeNeededForFiles(c):this.FORMAT_OPTIONS_MEDIA_TYPES[0]}catch(b){console.error(b),i=2===a?this.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES[1]:this.FORMAT_OPTIONS_MEDIA_TYPES[0]}g=images.createNewDisk(i)}try{var j=images.writeFilesToImage(g,c);if(!j)return}catch(a){throw console.error(a),a}if(h)return screen.showOSD(driveName[a]+": "+j+" added to disk",!0),h.content=g,h.modified=!0,replaceCurrentDisk(a,h,!0),this.getDriveStack(a);b=(b||"New "+this.MEDIA_TYPE_INFO[i].desc)+".dsk";var k=[{name:b,content:g,modified:!1}];return loadStack(a,k,null,d,!1,"("+j+" added to disk)"),k},this.loadSerializedStack=function(a,b,c,d,e){loadStack(a,deserializeStack(b,e?void 0:driveStack[a]),c,d,e)},this.replaceCurrentDiskSerialized=function(a,b){replaceCurrentDisk(a,deserializeDisk(b,getCurrentDisk(a)))},this.insertNewDisk=function(a,b,c,d){if(2===a||!maxStackReachedMessage(a)){b||(b=2===a?this.HARDDISK_FORMAT_OPTIONS_MEDIA_TYPES[0]:this.FORMAT_OPTIONS_MEDIA_TYPES[0]),1===room.netPlayMode&&room.netController.addPeripheralOperationToSend({op:11,d:a,m:b,b:c,u:d});var e=(this.MEDIA_TYPE_INFO[b],"New "+this.MEDIA_TYPE_INFO[b].desc+(c?" Boot":"")+" Disk.dsk"),f=images.createNewDisk(b,d),g=0===driveStack[a].length||2!==a;g&&driveStack[a].push({}),curDisk[a]=driveStack[a].length-1,replaceCurrentDisk(a,{name:e,content:f}),c&&images.makeBootDisk(f);var h=g&&driveStack[a].length>1;diskInsertedMessage(a),h&&2!==room.netPlayMode&&self.openDiskSelectDialog(a,0,!0)}},this.removeStack=function(a){if(!noDiskInsertedMessage(a)){var b=driveStack[a].length>1;emptyStack(a),screen.showOSD((b?"Disk Stack in ":"Disk in ")+driveName[a]+" removed",!0),fireMediaStateUpdate(a)}},this.insertDiskFromStack=function(a,b,c){setCurrentDiskNum(a,b),diskInsertedMessage(a),fireMediaStateUpdate(a),autoPower(c)},this.moveDiskInStack=function(a,b,c){var d=driveStack[a];if(!(b<0||c<0||b>d.length-1||c>d.length-1)){var e=d[curDisk[a]];d.splice(c,0,d.splice(b,1)[0]),e&&(curDisk[a]=d.indexOf(e)),fireMediaStateUpdate(a)}},this.saveDiskFile=function(a){if(!noDiskInsertedMessage(a))try{var b=getCurrentDisk(a);fileDownloader.startDownloadBinary(makeFileNameToSave(b.name),b.content.constructor===Uint8Array?b.content:new Uint8Array(b.content),driveName[a]+" Image file")&&(b.modified=!1,fireMotorStateUpdate())}catch(a){}},this.openDiskSelectDialog=function(a,b,c){ -noDiskInsertedMessage(a)||screen.openDiskSelectDialog(a,b,c)},this.openNewHardDiskDialog=function(a,b){screen.openNewHardDiskDialog(a,b)},this.getDriveStack=function(a){return driveStack[a]},this.getCurrentDiskNum=function(a){return curDisk[a]},this.getCurrentDiskDesc=function(a){return currentDiskDesc(a)},this.getCurrentDiskNumDesc=function(a){return currentDiskNumDesc(a)},this.getDriveName=function(a){return driveName[a]},this.diskHasChanged=function(a){return driveDiskChanged[a]?(driveDiskChanged[a]=!1,!0):driveDiskChanged[a]},this.getTotalSectorsAvailable=function(a){return this.isDiskInserted(a)?getCurrentDisk(a).content.length/BYTES_PER_SECTOR|0:null},this.isDiskInserted=function(a){return!!getCurrentDisk(a)},this.diskWriteProtected=function(a){return!1},this.readByte=function(a,b){if(!this.isDiskInserted(a))return null;var c=getCurrentDisk(a).content;return b>=c.length?null:c[b]},this.readDWord=function(a,b){if(!this.isDiskInserted(a))return null;var c=getCurrentDisk(a).content;return b+3>=c.length?null:c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24},this.readSectorsToSlot=function(a,b,c,d,e){if(!this.isDiskInserted(a))return!1;var f=getCurrentDisk(a).content,g=b*BYTES_PER_SECTOR,h=c*BYTES_PER_SECTOR;if(g>=f.length||g+h>f.length)return!1;for(var i=0;i=g.length||h+i>g.length)return!1;for(var j=0;j>4)||v.push(e),b(e.c>>4,e.c>>1&1,1&e.c,e.d)}},this.netClientApplyControlsChanges=function(a){for(var c=0,d=a.length;c>4,e.c>>1&1,1&e.c,e.d)}};var f,g,h,i,j,k,l,m,n,o,p,q,r=wmsx.PeripheralControls,s=!1,t=!1,u={},v=new Array(100);v.length=0;var w=wmsx.DOMKeys,x=~w.SHIFT,y=w.SHIFT,z=wmsx.FileLoader.OPEN_TYPE,A=w.VK_LEFT.wc,B=w.VK_UP.wc,C=w.VK_RIGHT.wc,D=w.VK_DOWN.wc,E=w.VK_CONTEXT.wc,F=w.VK_BACKSPACE.wc,G=w.VK_C.wc,H=w.VK_V.wc,I=w.VK_INSERT.wc,J=w.VK_B.wc,K=w.VK_G.wc,L=w.VK_F6.wc,M=w.VK_F7.wc,N=(w.VK_F8.wc, -w.VK_F8.wc),O=w.VK_F12.wc,P=w.VK_HOME.wc,Q=w.VK_END.wc,R=w.VK_PAGE_UP.wc,S=w.VK_PAGE_DOWN.wc,T=w.VK_HOME.wc,U=w.VK_END.wc,V=w.VK_PAGE_UP.wc,W=w.VK_PAGE_DOWN.wc,X=w.VK_L.wc,Y=w.VK_J.wc,Z=w.VK_K.wc,$=w.VK_M.wc,_=w.VK_CAPS_LOCK.wc,aa=w.VK_N.wc,ba=w.VK_H.wc,ca=w.VK_E.wc,da=w.VK_R.wc,ea=w.VK_U.wc,fa=w.VK_I.wc,ga=w.VK_ENTER.wc,ha=w.VK_F11.wc,ia=w.VK_F12.wc,ja=WMSX.SCREEN_RESIZE_DISABLED,ka=new Set([r.MACHINE_LOAD_STATE_FILE,r.MACHINE_SAVE_STATE_FILE,r.MACHINE_LOAD_STATE_MENU,r.MACHINE_SAVE_STATE_MENU,r.MACHINE_SELECT,r.SCREEN_OPEN_MACHINE_SELECT,r.EXTENSION_TOGGLE,r.DISK_LOAD_FILES,r.DISK_ADD_FILES,r.DISK_LOAD_URL,r.DISK_LOAD_FILES_AS_DISK,r.DISK_LOAD_ZIP_AS_DISK,r.DISK_SAVE_FILE,r.DISK_EMPTY,r.DISK_BOOT,r.DISK_SELECT,r.DISK_PREVIOUS,r.DISK_NEXT,r.HARDDISK_LOAD_FILE,r.HARDDISK_LOAD_URL,r.HARDDISK_LOAD_FILES_AS_DISK,r.HARDDISK_LOAD_ZIP_AS_DISK,r.HARDDISK_SAVE_FILE,r.HARDDISK_CHOOSE_EMPTY,r.HARDDISK_CHOOSE_BOOT,r.HARDDISK_NEW,r.CARTRIDGE_LOAD_FILE,r.CARTRIDGE_LOAD_URL,r.CARTRIDGE_LOAD_DATA_FILE,r.CARTRIDGE_SAVE_DATA_FILE,r.CARTRIDGE_CHOOSE_FORMAT,r.TAPE_LOAD_FILE,r.TAPE_LOAD_URL,r.TAPE_SAVE_FILE,r.AUTO_LOAD_FILE,r.AUTO_LOAD_URL]),la=new Set([r.DISK_MOVE,r.DISK_INSERT,r.DISK_REMOVE,r.HARDDISK_REMOVE,r.CARTRIDGE_REMOVE,r.TAPE_EMPTY,r.TAPE_REWIND,r.TAPE_TO_END,r.TAPE_SEEK_FWD,r.TAPE_SEEK_BACK,r.TAPE_REMOVE]),ma=new Set([r.SCREEN_ASPECT_PLUS,r.SCREEN_ASPECT_MINUS,r.SCREEN_SCALE_PLUS,r.SCREEN_SCALE_MINUS,r.SCREEN_FULLSCREEN,r.SCREEN_CRT_FILTER,r.SCREEN_CRT_SCANLINES,r.SCREEN_CRT_PHOSPHOR,r.SCREEN_TOGGLE_MENU,r.SCREEN_OPEN_HELP,r.SCREEN_OPEN_ABOUT,r.SCREEN_OPEN_SETTINGS,r.SCREEN_OPEN_QUICK_OPTIONS,r.SCREEN_OPEN_TOUCH_CONFIG,r.SCREEN_TOGGLE_VIRTUAL_KEYBOARD,r.SCREEN_DEFAULTS,r.SPEAKER_BUFFER_TOGGLE,r.MACHINE_POWER_TOGGLE,r.MACHINE_POWER_RESET,r.KEYBOARD_TOGGLE_HOST_LAYOUT,r.JOYSTICKS_TOGGLE_MODE,r.JOYKEYS_TOGGLE_MODE,r.TOUCH_TOGGLE_MODE,r.TOUCH_TOGGLE_DIR_BIG,r.TURBO_FIRE_TOGGLE,r.HAPTIC_FEEDBACK_TOGGLE_MODE,r.COPY_STRING,r.OPEN_PASTE_STRING,r.OPEN_ENTER_STRING,r.CAPTURE_SCREEN,r.SCREEN_OPEN_NETPLAY]);!function(){e()}()},wmsx.NetServer=function(a){"use strict";function b(){void 0===v&&(v=setInterval(p,3e4));var a={sessionControl:"createSession",sessionType:wmsx.NetServer.SESSION_TYPE_VERSION,wsOnly:D,queryVariables:["RTC_CONFIG","RTC_DATA_CHANNEL_CONFIG"]};u&&(a.sessionID=u),s.send(JSON.stringify(a))}function c(){r.stopSession(!0,v?"NetPlay Session stopped: Connection lost":"NetPlay: Connection error")}function d(a){var b=JSON.parse(a.data);if(b.wmsxUpdate){var c=E[a.clientNick];return void(c&&o(c,b.wmsxUpdate))}if(b.sessionControl)switch(b.sessionControl){case"sessionCreated":return void e(b);case"clientJoined":return void f(b);case"clientLeft":return void g(b);case"createError":return void r.stopSession(!0,"NetPlay: "+b.errorMessage)}else b.clientSDP&&h(b)}function e(b){try{G=JSON.parse(b.queriedVariables.RTC_CONFIG||"{}")}catch(a){}try{H=JSON.parse(b.queriedVariables.RTC_DATA_CHANNEL_CONFIG||"{}")}catch(a){}t=b.sessionID,x.netClearControlsToSend(),y.netClearMatrixChangesToSend(),z.netClearInfoToSend(),z.netServerClearClientsMergedInfo(),A.netClearControlsToSend(),F.length=0,a.enterNetServerMode(r),a.showOSD('NetPlay session "'+b.sessionID+'" started',!0),wmsx.Util.log('NetPlay session "'+b.sessionID+'" started')}function f(b){var c={nick:b.clientNick,justJoined:!0,wsOnly:D||!!b.wsOnly};if(E[c.nick]=c,a.showOSD('NetPlay client "'+c.nick+'" joined',!0),wmsx.Util.log('NetPlay client "'+c.nick+'" joined'),!c.wsOnly){var d=new RTCPeerConnection(G);c.rtcConnection=d,d.onicecandidate=function(a){a.candidate||(wmsx.Util.log("Server SDP for client "+c.nick+":",d.localDescription),s.send(JSON.stringify({toClientNick:c.nick,serverSDP:d.localDescription})))};var e=d.createDataChannel("dataChannel",H);c.dataChannel=e,e.onopen=function(a){i(c,a)},e.onclose=function(a){j(c,a)},e.onmessage=function(a){k(c,a)},d.createOffer().then(function(a){return d.setLocalDescription(a)}).catch(function(a){l(c,a)})}}function g(a){var b=E[a.clientNick];b&&n(b,!0,!1,'NetPlay client "'+b.nick+'" left')}function h(a){var b=E[a.fromClientNick];b&&(wmsx.Util.log("Client SDP from client "+b.nick+":",a.clientSDP),b.rtcConnection.setRemoteDescription(new RTCSessionDescription(a.clientSDP)).catch(l))}function i(a,b){wmsx.Util.log("Client "+a.nick+" dataChannel open"),a.dataChannelActive=!0}function j(a,b){wmsx.Util.error("NetPlay Client "+a.nick+" dataChannel closed"),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection lost')}function k(a,b){o(a,JSON.parse(b.data))}function l(a,b){wmsx.Util.error("NetPlay Client "+a.nick+" RTC error:",b),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection error')}function m(){for(var a in E)n(E[a],!1)}function n(b,c,d,e){c&&(a.showOSD(e||'NetPlay client "'+b.nick+'" left',!0,d),(d?wmsx.Util.error:wmsx.Util.log)(e||'NetPlay client "'+b.nick+'" left')),b.dataChannel&&(b.dataChannel.onopen=b.dataChannel.onclose=b.dataChannel.onmessage=void 0,b.dataChannel.close()),b.rtcConnection&&(b.rtcConnection.onicecandidate=void 0,b.rtcConnection.close()),delete E[b.nick]}function o(a,b){b.c&&x.netServerProcessControlsChanges(b.c),b.k&&y.netServerProcessMatrixChanges(b.k),b.pc&&A.netServerProcessControlsChanges(b.pc),b.ch&&z.netServerReceiveClientInfo(a,b.ch)}function p(){try{s.send('{ "sessionControl": "keep-alive" }')}catch(a){wmsx.Util.error("NetPlay error sending keep-alive"),r.stopSession(!0,"NetPlay Session stopped: connection error")}}function q(a,b){var c=b.length;if(c=0&&WMSXFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&h.machine.userPowerOn(!0)}function e(){h.mainVideoClock=new wmsx.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new wmsx.DOMPeripheralControls(h),h.machineControls=new wmsx.DOMMachineControls(h,h.peripheralControls),h.controllersHub=new wmsx.ControllersHub(h,h.machineControls),h.keyboard=h.controllersHub.getKeyboard(),h.fileDownloader=new wmsx.FileDownloader,h.stateMedia=new wmsx.SaveStateMedia(h),h.cartridgeSlot=new wmsx.FileCartridgeSlot(h),h.cassetteDeck=new wmsx.FileCassetteDeck(h),h.diskDrive=new wmsx.FileDiskDrive(h),h.fileLoader=new wmsx.FileLoader(h),h.screen=new wmsx.CanvasDisplay(h,a),h.speaker=new wmsx.WebAudioSpeaker(a),h.fileLoader.connectPeripherals(h.screen,h.peripheralControls,h.cartridgeSlot,h.cassetteDeck,h.diskDrive),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.cartridgeSlot,h.fileLoader,h.fileDownloader,h.machineControls,h.peripheralControls,h.controllersHub,h.diskDrive,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.machineControls.connectPeripherals(h.screen),h.controllersHub.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.cartridgeSlot.connectPeripherals(h.fileDownloader),h.cassetteDeck.connectPeripherals(h.screen,h.fileDownloader),h.diskDrive.connectPeripherals(h.screen,h.fileDownloader),h.peripheralControls.connectPeripherals(h.cartridgeSlot,h.machineControls,h.screen,h.speaker,h.controllersHub,h.fileLoader,h.cassetteDeck,h.diskDrive)}function g(){h.machine=new wmsx.Machine,h.mainVideoClock.connect(h.machine.getVideoClockSocket()),h.stateMedia.connect(h.machine.getSavestateSocket()),h.fileLoader.connect(h.machine),h.screen.connect(h.machine),h.speaker.connect(h.machine.getAudioSocket()),h.machineControls.connect(h.machine.getMachineControlsSocket()),h.controllersHub.connect(h.machine.getMachineTypeSocket(),h.machine.getMachineControlsSocket(),h.machine.getControllersSocket(),h.machine.getBIOSSocket()),h.cartridgeSlot.connect(h.machine.getCartridgeSocket(),h.machine.getExtensionsSocket()),h.cassetteDeck.connect(h.machine.getCassetteSocket()),h.diskDrive.connect(h.machine.getDiskDriveSocket()),h.peripheralControls.connect(h.machine.getMachineTypeSocket(),h.machine.getExtensionsSocket(),h.machine.getCartridgeSocket()),h.machine.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.controllersHub.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.machine.powerOff(),h.controllersHub.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.machine.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.machine.vSynchSetSupported(b>0),h.machine.preStart(),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.machine.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.machine.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.controllersHub.controllersClockPulse(),h.machine.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,this.mainVideoClock.setVSynchAltNativeFrequency(void 0),h.mainVideoClock.go(), -this.netPlayStateBeforeClientMode&&(this.machine.loadState(this.netPlayStateBeforeClientMode),this.controllersHub.netClientRestoreControlsModes(this.netPlayControlsModesBeforeClientMode),this.netPlayStateBeforeClientMode=this.netPlayControlsModesBeforeClientMode=void 0),a!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(a),this.controllersHub.roomNetPlayStatusChangeUpdate(a))},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,this.mainVideoClock.setVSynchAltNativeFrequency(void 0),h.mainVideoClock.go(),b!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(b),this.controllersHub.roomNetPlayStatusChangeUpdate(b))},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.machine.saveState(!0),this.netPlayControlsModesBeforeClientMode=this.controllersHub.netClientGetControlsModes(),b!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(b),this.controllersHub.roomNetPlayStatusChangeUpdate(b))},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&(this.screen.roomNetPlayStatusChangeUpdate(b),this.controllersHub.roomNetPlayStatusChangeUpdate(b))},this.getNetServer=function(){return this.netServer||(this.netServer=new wmsx.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new wmsx.NetClient(this)),this.netClient},this.mainVideoClock=null,this.machine=null,this.screen=null,this.speaker=null,this.machineControls=null,this.controllersHub=null,this.keyboard=null,this.fileDownloader=null,this.cartridgeSlot=null,this.cassetteDeck=null,this.diskDrive=null,this.stateMedia=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModesBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=wmsx.Util.performanceNow(),c=0;c=0){var f="SLOT"+d[0]+(d[1]||"")+"_FORMAT",g=c?WMSX[f]:null;delete WMSX[f],function(b,c,d){a[a.length]={url:b,onSuccess:function(a){WMSX.room.fileLoader.loadFromContentAsSlot(a.url,a.content,c,!0,d,!0)}}}(c||"@[Empty].rom",e,g)}}}}return a},mediaURLSpecs:function(){var a=wmsx.FileLoader.OPEN_TYPE;return[WMSX.AUTODETECT_URL&&{url:WMSX.AUTODETECT_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO,0,!0)}},WMSX.CARTRIDGE1_URL&&{url:WMSX.CARTRIDGE1_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,0,!0,!1,WMSX.CARTRIDGE1_FORMAT)}},WMSX.CARTRIDGE2_URL&&{url:WMSX.CARTRIDGE2_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,1,!0,!1,WMSX.CARTRIDGE2_FORMAT)}},WMSX.DISKA_URL&&{url:WMSX.DISKA_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.DISK,0,!0)}},!WMSX.DISKA_URL&&WMSX.DISKA_FILES_URL?{url:WMSX.DISKA_FILES_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO_AS_DISK,0,!0)}}:null,WMSX.DISKB_URL&&{url:WMSX.DISKB_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.DISK,1,!0)}},!WMSX.DISKB_URL&&WMSX.DISKB_FILES_URL?{url:WMSX.DISKB_FILES_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO_AS_DISK,1,!0)}}:null,WMSX.HARDDISK_URL&&{url:WMSX.HARDDISK_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.DISK,2,!0)}},!WMSX.HARDDISK_URL&&WMSX.HARDDISK_FILES_URL?{url:WMSX.HARDDISK_FILES_URL,onSuccess:function(b){ -WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO_AS_DISK,2,!0)}}:null,WMSX.TAPE_URL&&{url:WMSX.TAPE_URL,onSuccess:function(b){WMSX.room.fileLoader.loadFromContent(b.url,b.content,a.TAPE,0,!0)}}]},extensionsInitialURLSpecs:function(){return WMSX.room.machine.getExtensionsSocket().getInitialLoaderURLSpecs()},detectDefaultMachine:function(){var a=WMSX.MACHINES_CONFIG[WMSX.MACHINE]&&WMSX.MACHINES_CONFIG[WMSX.MACHINE].AUTO_TYPE||3,b=wmsx.Util.userLanguage(),c="A";0===b.indexOf("ja")&&(c="J");var d=""+WMSX.MACHINE+c;if(!WMSX.MACHINES_CONFIG[d])for(d in WMSX.MACHINES_CONFIG)if(WMSX.MACHINES_CONFIG[d].TYPE<=a)break;return wmsx.Util.log("Machine auto-detection: "+d),d},saveState:function(){return{mc:WMSX.MACHINES_CONFIG,ec:WMSX.EXTENSIONS_CONFIG,pc:WMSX.PRESETS_CONFIG}},loadState:function(a,b){b?(WMSX.MACHINES_CONFIG=b.mc,WMSX.EXTENSIONS_CONFIG=b.ec,WMSX.PRESETS_CONFIG=b.pc):this.adaptForOldState(a);for(var c=0;c=0||this.listeners.push(a)},listeners:[],originalConfig:{},parameters:{},abbreviations:{E:"ENVIRONMENT",ENV:"ENVIRONMENT",M:"MACHINE",P:"PRESETS",PRESET:"PRESETS",ROM:"CARTRIDGE1_URL",CART:"CARTRIDGE1_URL",CART1:"CARTRIDGE1_URL",CART2:"CARTRIDGE2_URL",ROM_FORMAT:"CARTRIDGE1_FORMAT",CART_FORMAT:"CARTRIDGE1_FORMAT",CART1_FORMAT:"CARTRIDGE1_FORMAT",CART2_FORMAT:"CARTRIDGE2_FORMAT",DISK:"DISKA_URL",DISK_FILES:"DISKA_FILES_URL",DISKA:"DISKA_URL",DISKB:"DISKB_URL",DISKA_FILES:"DISKA_FILES_URL",DISKB_FILES:"DISKB_FILES_URL",HARDDISK:"HARDDISK_URL",HARDDISK_FILES:"HARDDISK_FILES_URL",TAPE:"TAPE_URL",RAM_SIZE:"RAMNORMAL_SIZE",ANY:"AUTODETECT_URL",AUTO:"AUTODETECT_URL",AUTODETECT:"AUTODETECT_URL",STATE:"STATE_URL",SAVESTATE:"STATE_URL",JOIN:"NETPLAY_JOIN",NICK:"NETPLAY_NICK",JOYSTICKS:"JOYSTICKS_MODE",JOYKEYS:"JOYKEYS_MODE",MOUSE:"MOUSE_MODE",TURBO:"CPU_TURBO_MODE",CPU_TURBO:"CPU_TURBO_MODE",VDP_TURBO:"VDP_TURBO_MODE",VERSION:"VERSION_CHANGE_ATTEMPTED"}},WMSX.start=function(a){"use strict";if(!WMSX.screenElement&&(WMSX.screenElement=document.getElementById(WMSX.SCREEN_ELEMENT_ID),!WMSX.screenElement))throw new Error('WMSX cannot be started. HTML document is missing screen element with id "'+WMSX.SCREEN_ELEMENT_ID+'"');delete WMSX.start,delete WMSX.preLoadImagesAndStart,wmsx.Configurator.applyConfig(function(){WMSX.userPreferences.load(),void 0===a&&(a=WMSX.AUTO_POWER_ON_DELAY>=0),WMSX.room=new wmsx.Room(WMSX.screenElement,a),WMSX.room.powerOn(),wmsx.Util.log("version "+WMSX.VERSION+" started"),wmsx.ROMDatabase.uncompress();var b=WMSX.NETPLAY_JOIN;if(!b&&WMSX.STATE_URL)new wmsx.MultiDownloader([{url:WMSX.STATE_URL}],function(a){WMSX.room.start(function(){WMSX.room.fileLoader.loadFromContent(a[0].url,a[0].content,wmsx.FileLoader.OPEN_TYPE.STATE,0,!1)})}).start();else{var c=wmsx.Configurator.slotURLSpecs(),d=wmsx.Configurator.extensionsInitialURLSpecs(),e=b?[]:wmsx.Configurator.mediaURLSpecs();new wmsx.MultiDownloader(c.concat(e).concat(d),function(){WMSX.room.start(b?function(){WMSX.room.getNetClient().joinSession(b,WMSX.NETPLAY_NICK)}:void 0)},function(a){wmsx.Util.message(a.errorMessage)}).start()}}),WMSX.shutdown=function(){WMSX.room&&WMSX.room.powerOff(),wmsx.Util.log("shutdown")}},WMSX.preLoadImagesAndStart=function(){function a(a){WMSX.start&&WMSX.AUTO_START&&(a||b&&0===c)&&WMSX.start()}var b=!1,c=wmsx.Images.embedded?0:wmsx.Images.count;if(document.addEventListener("DOMContentLoaded",function(){b=!0,a(!1)}),c>0)for(var d in wmsx.Images.urls){var e=new Image;e.src=wmsx.Images.urls[d],e.onload=function(){c--,a(!1)}}window.addEventListener("load",function(){a(!0)})},window.applicationCache&&(window.applicationCache.status===window.applicationCache.UPDATEREADY?onUpdateReady():window.applicationCache.addEventListener("updateready",onUpdateReady)),WMSX.VERSION="5.3.4",WMSX.preLoadImagesAndStart(); \ No newline at end of file diff --git a/release/stable/5.3/standalone/index.html b/release/stable/5.3/standalone/index.html deleted file mode 100644 index 2d3bd2a8..00000000 --- a/release/stable/5.3/standalone/index.html +++ /dev/null @@ -1,714 +0,0 @@ - - - - - - - - - WebMSX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- The online MSX emulator - WebMSX -  -
-
-
- - - -
-
-
- -
- Use the media icons to load files -
-
- Drag & Drop or use the media icons to load files -
- - - - - - - - \ No newline at end of file diff --git a/release/stable/5.3/symbos/-FDWMSX.DRV b/release/stable/5.3/symbos/-FDWMSX.DRV deleted file mode 100644 index d6c14d8cfe269fd3654dc2d797348fa3ae0b6942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmWIcbulVnU}1m*R)+A@B;Vi&1veK35D;(>ND$xu|_-e((^!h9_(?|dH i=5IfrWn%&=Lt^3e_mUB)}rTCIA2wNFKNV diff --git a/release/stable/5.3/symbos/SymbOSWebMSX.dsk.zip b/release/stable/5.3/symbos/SymbOSWebMSX.dsk.zip deleted file mode 100644 index 0c491a0a5460a2e7861a3942973f81daf7322d45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680164 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%0Ap)t6Aq!$gx)HzWx;WNUL&Ud85xjC#%8-- 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