From 1de7031ff3865ac962443e9be2f7145a15421437 Mon Sep 17 00:00:00 2001 From: Aaron Turner Date: Thu, 21 Feb 2019 23:06:34 -0800 Subject: [PATCH] Optimization / Performance cleanup (#264) * Implemented all changes from #230 and #221 * Fixed off by one mentioned in #216 * Wrapped modulo in i32Portable as mentioned in #216 * issue #207, Allowed making closure builds for debugging, and then tried to match its inlining * Removed the legacy api * Updated the package-lock for the branch --- core/core.ts | 1 + core/cpu/cbOpcodes.ts | 1 + core/cpu/cpu.ts | 1 + core/cpu/instructions.ts | 8 + core/cycles.ts | 2 + core/execute.ts | 2 + core/graphics/backgroundWindow.ts | 27 +- core/graphics/colors.ts | 2 + core/graphics/graphics.ts | 2 + core/graphics/lcd.ts | 1 + core/graphics/palette.ts | 5 + core/graphics/priority.ts | 3 + core/graphics/sprites.ts | 1 + core/graphics/tiles.ts | 2 + core/index.ts | 20 - core/interrupts/interrupts.ts | 7 + core/joypad/joypad.ts | 2 + core/legacy.ts | 86 - core/memory/banking.ts | 3 + core/memory/dma.ts | 6 + core/memory/load.ts | 1 + core/memory/memory.ts | 1 + core/portable/portable.ts | 9 +- core/serial/serial.ts | 4 + core/sound/accumulator.ts | 2 + core/sound/registers.ts | 2 + core/sound/sound.ts | 3 + core/timers/timers.ts | 1 + demo/benchmark/loadrom.js | 5 +- .../graphics/backgroundMap/backgroundMap.js | 2 +- .../components/graphics/tileData/tileData.js | 2 +- dist/core/core.untouched.wasm | Bin 35238 -> 35495 bytes dist/core/core.untouched.wast | 1025 ++++--- lib/graphics/graphics.js | 6 +- lib/graphics/worker/imageData.js | 34 +- lib/wasmboy/wasmboy.js | 2 +- lib/wasmboy/worker/audio/onmessage.js | 4 +- lib/wasmboy/worker/graphics/onmessage.js | 4 +- lib/wasmboy/worker/memory/onmessage.js | 32 +- lib/wasmboy/worker/update.js | 4 +- lib/wasmboy/worker/wasmboy.worker.js | 4 +- package-lock.json | 2512 +++++++---------- package.json | 1 + rollup.getcore.js | 44 +- test/common-test.js | 2 +- 45 files changed, 1643 insertions(+), 2245 deletions(-) delete mode 100644 core/legacy.ts diff --git a/core/core.ts b/core/core.ts index e726de00..de1001f2 100644 --- a/core/core.ts +++ b/core/core.ts @@ -184,6 +184,7 @@ export function isGBC(): i32 { // Function to return an address to store into save state memory // this is to regulate our 20 slots // https://docs.google.com/spreadsheets/d/17xrEzJk5-sCB9J2mMJcVnzhbE-XH_NvczVSQH9OHvRk/edit?usp=sharing +// Inlined because closure compiler inlines export function getSaveStateMemoryOffset(offset: i32, saveStateSlot: i32): i32 { // 50 bytes per save state memory partiton sli32 return WASMBOY_STATE_LOCATION + offset + 50 * saveStateSlot; diff --git a/core/cpu/cbOpcodes.ts b/core/cpu/cbOpcodes.ts index bca0907a..a77d91c7 100644 --- a/core/cpu/cbOpcodes.ts +++ b/core/cpu/cbOpcodes.ts @@ -19,6 +19,7 @@ import { u8Portable, u16Portable } from '../portable/portable'; // Handle CB Opcodes // NOTE: Program stpes and cycles are standardized depending on the register type // NOTE: Doing some funny stuff to get around not having arrays or objects +// Inlined because closure compiler inlines. export function handleCbOpcode(cbOpcode: i32): i32 { let numberOfCycles: i32 = -1; let handledOpcode: boolean = false; diff --git a/core/cpu/cpu.ts b/core/cpu/cpu.ts index fb1db406..8dfcd75d 100644 --- a/core/cpu/cpu.ts +++ b/core/cpu/cpu.ts @@ -152,6 +152,7 @@ export class Cpu { } } +// Inlined because closure compiler does so export function initializeCpu(): void { // Reset all stateful Cpu variables // Cpu.GBCEnabled is done by core/initialize diff --git a/core/cpu/instructions.ts b/core/cpu/instructions.ts index dca299db..1c7a02f8 100644 --- a/core/cpu/instructions.ts +++ b/core/cpu/instructions.ts @@ -165,6 +165,7 @@ export function cpARegister(register: u8): void { setSubtractFlag(1); } +// Inlined because closure compiler inlines export function rotateRegisterLeft(register: u8): u8 { // RLC register 8-bit // Z 0 0 C @@ -188,6 +189,7 @@ export function rotateRegisterLeft(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function rotateRegisterRight(register: u8): u8 { // RLC register 8-bit // Z 0 0 C @@ -212,6 +214,7 @@ export function rotateRegisterRight(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function rotateRegisterLeftThroughCarry(register: u8): u8 { // RL register 8-bit // Z 0 0 C @@ -240,6 +243,7 @@ export function rotateRegisterLeftThroughCarry(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function rotateRegisterRightThroughCarry(register: u8): u8 { // RR register 8-bit // Z 0 0 C @@ -267,6 +271,7 @@ export function rotateRegisterRightThroughCarry(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function shiftLeftRegister(register: u8): u8 { // SLA register 8-bit // Z 0 0 C @@ -295,6 +300,7 @@ export function shiftLeftRegister(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function shiftRightArithmeticRegister(register: u8): u8 { // SRA register 8-bit // Z 0 0 C @@ -334,6 +340,7 @@ export function shiftRightArithmeticRegister(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function swapNibblesOnRegister(register: u8): u8 { // SWAP register 8-bit // Z 0 0 0 @@ -354,6 +361,7 @@ export function swapNibblesOnRegister(register: u8): u8 { return register; } +// Inlined because closure compiler inlines export function shiftRightLogicalRegister(register: u8): u8 { // SRA register 8-bit // Z 0 0 C diff --git a/core/cycles.ts b/core/cycles.ts index dc560ec7..4a4843d5 100644 --- a/core/cycles.ts +++ b/core/cycles.ts @@ -31,6 +31,7 @@ export function getCycles(): i32 { return Cycles.cycles; } +// Inlined because closure compiler inlines function trackCyclesRan(numberOfCycles: i32): void { Cycles.cycles += numberOfCycles; if (Cycles.cycles >= Cycles.cyclesPerCycleSet) { @@ -39,6 +40,7 @@ function trackCyclesRan(numberOfCycles: i32): void { } } +// Inlined because closure compiler inlines export function resetCycles(): void { Cycles.cyclesPerCycleSet = 2000000000; Cycles.cycleSets = 0; diff --git a/core/execute.ts b/core/execute.ts index 0d347d3c..0928a61b 100644 --- a/core/execute.ts +++ b/core/execute.ts @@ -36,6 +36,7 @@ export function getSteps(): i32 { return Execute.steps; } +// Inlined because closure compiler inlines function trackStepsRan(steps: i32): void { Execute.steps += steps; if (Execute.steps >= Execute.stepsPerStepSet) { @@ -44,6 +45,7 @@ function trackStepsRan(steps: i32): void { } } +// Inlined because closure compiler inlines export function resetSteps(): void { Execute.stepsPerStepSet = 2000000000; Execute.stepSets = 0; diff --git a/core/graphics/backgroundWindow.ts b/core/graphics/backgroundWindow.ts index 5e9bcdfe..fb76683e 100644 --- a/core/graphics/backgroundWindow.ts +++ b/core/graphics/backgroundWindow.ts @@ -18,8 +18,12 @@ import { TileCache, drawPixelsFromLineOfTile, getTileDataAddress } from './tiles import { eightBitLoadFromGBMemory } from '../memory/load'; import { Memory } from '../memory/memory'; import { hexLog, checkBitOnByte, setBitOnByte, resetBitOnByte } from '../helpers/index'; -import { u8Portable } from '../portable/portable'; +import { u8Portable, i32Portable } from '../portable/portable'; +// NOTE: i32Portable wraps modulo here as somehow it gets converted to a double: +// https://github.com/torch2424/wasmboy/issues/216 + +// Inlined because closure compiler inlines export function renderBackground(scanlineRegister: i32, tileDataMemoryLocation: i32, tileMapMemoryLocation: i32): void { // NOTE: Camera is reffering to what you can see inside the 160x144 viewport of the entire rendered 256x256 map. @@ -45,6 +49,7 @@ export function renderBackground(scanlineRegister: i32, tileDataMemoryLocation: drawBackgroundWindowScanline(scanlineRegister, tileDataMemoryLocation, tileMapMemoryLocation, pixelYPositionInMap, 0, scrollX); } +// Inlined because closure compiler inlines export function renderWindow(scanlineRegister: i32, tileDataMemoryLocation: i32, tileMapMemoryLocation: i32): void { // Get our windowX and windowY // let windowX: i32 = eightBitLoadFromGBMemory(Graphics.memoryLocationWindowX); @@ -67,7 +72,9 @@ export function renderWindow(scanlineRegister: i32, tileDataMemoryLocation: i32, let pixelYPositionInMap: i32 = scanlineRegister - windowY; // xOffset is simply a neagative window x - let xOffset: i32 = -1 * windowX; + // NOTE: This can become negative zero? + // https://github.com/torch2424/wasmboy/issues/216 + let xOffset: i32 = i32Portable(-1 * windowX); // Draw the Background scanline drawBackgroundWindowScanline(scanlineRegister, tileDataMemoryLocation, tileMapMemoryLocation, pixelYPositionInMap, windowX, xOffset); @@ -178,6 +185,7 @@ function drawBackgroundWindowScanline( } // Function to draw a pixel for the standard GB +// Inlined because closure compiler inlines function drawMonochromePixelFromTileId( xPixel: i32, yPixel: i32, @@ -203,7 +211,7 @@ function drawMonochromePixelFromTileId( // yPixel = 144. 144 % 8 = 0. // 0 Represents last line of pixels in a tile, 1 represents first. 1 2 3 4 5 6 7 0. // Because remember, we are counting lines on the display NOT including zero - let pixelYInTile: i32 = pixelYPositionInMap % 8; + let pixelYInTile: i32 = i32Portable(pixelYPositionInMap % 8); // Remember to represent a single line of 8 pixels on a tile, we need two bytes. // Therefore, we need to times our modulo by 2, to get the correct line of pixels on the tile. @@ -217,7 +225,7 @@ function drawMonochromePixelFromTileId( // Therefore, is pixelX was 2, then really is need to be 5 // So 2 - 7 = -5, * 1 = 5 // Or to simplify, 7 - 2 = 5 haha! - let pixelXInTile: i32 = pixelXPositionInMap % 8; + let pixelXInTile: i32 = i32Portable(pixelXPositionInMap % 8); pixelXInTile = 7 - pixelXInTile; // Now we can get the color for that pixel @@ -259,6 +267,7 @@ function drawMonochromePixelFromTileId( // Function to draw a pixel from a tile in C O L O R // See above for more context on some variables +// Inlined because closure compiler inlines function drawColorPixelFromTileId( xPixel: i32, yPixel: i32, @@ -284,7 +293,7 @@ function drawColorPixelFromTileId( let bgMapAttributes: i32 = loadFromVramBank(tileMapAddress, 1); // See above for explanation - let pixelYInTile: i32 = pixelYPositionInMap % 8; + let pixelYInTile: i32 = i32Portable(pixelYPositionInMap % 8); if (checkBitOnByte(6, bgMapAttributes)) { // We are mirroring the tile, therefore, we need to opposite byte // So if our pixel was 0 our of 8, it wild become 7 :) @@ -303,7 +312,7 @@ function drawColorPixelFromTileId( // Get our X pixel. Need to NOT reverse it if it was flipped. // See above, you have to reverse this normally - let pixelXInTile: i32 = pixelXPositionInMap % 8; + let pixelXInTile: i32 = i32Portable(pixelXPositionInMap % 8); if (!checkBitOnByte(5, bgMapAttributes)) { pixelXInTile = 7 - pixelXInTile; } @@ -348,6 +357,7 @@ function drawColorPixelFromTileId( } // Function to attempt to draw the tile from the tile cache +// Inlined because closure compiler inlines function drawLineOfTileFromTileCache( xPixel: i32, yPixel: i32, @@ -406,7 +416,7 @@ function drawLineOfTileFromTileCache( // Calculate when we should do the tileCache calculation again if (xPixel >= TileCache.nextXIndexToPerformCacheCheck) { TileCache.nextXIndexToPerformCacheCheck = xPixel + 8; - let xOffsetTileWidthRemainder: i32 = pixelXPositionInMap % 8; + let xOffsetTileWidthRemainder: i32 = i32Portable(pixelXPositionInMap % 8); if (xPixel < xOffsetTileWidthRemainder) { TileCache.nextXIndexToPerformCacheCheck += xOffsetTileWidthRemainder; } @@ -417,6 +427,7 @@ function drawLineOfTileFromTileCache( // Function to draw a line of a tile in Color // This is for tile rendering shortcuts +// Inlined because closure compiler inlines function drawLineOfTileFromTileId( xPixel: i32, yPixel: i32, @@ -427,7 +438,7 @@ function drawLineOfTileFromTileId( tileIdFromTileMap: i32 ): i32 { // Get the which line of the tile we are rendering - let tileLineY: i32 = pixelYPositionInMap % 8; + let tileLineY: i32 = i32Portable(pixelYPositionInMap % 8); // Now lets find our tileX start and end // This is for the case where i = 0, but scroll X was 3. diff --git a/core/graphics/colors.ts b/core/graphics/colors.ts index 10666f76..23c9cb6b 100644 --- a/core/graphics/colors.ts +++ b/core/graphics/colors.ts @@ -50,6 +50,7 @@ export class Colors { static obj1Black: i32 = WasmBoyGBColors.obj1Black; } +// Inlined because closure compiler inlines export function initializeColors(): void { setManualColorizationPalette(0); @@ -310,6 +311,7 @@ export function setManualColorizationPalette(colorizationId: i32): void { // By checksum of the title // https://forums.nesdev.com/viewtopic.php?f=20&t=10226 // TODO: torch2424 need to find how to get the "disambiguation" +// Inlined because closure compiler inlines export function setHashColorizationPalette(hash: i32): void { switch (hash) { case 0x88: diff --git a/core/graphics/graphics.ts b/core/graphics/graphics.ts index 0dafc625..6089e4f5 100644 --- a/core/graphics/graphics.ts +++ b/core/graphics/graphics.ts @@ -140,6 +140,7 @@ export function batchProcessGraphics(): void { } } +// Inlined because closure compiler inlines export function initializeGraphics(): void { // Reset Stateful Variables Graphics.currentCycles = 0; @@ -295,6 +296,7 @@ function _renderEntireFrame(): void { } // Function to get the start of a RGB pixel (R, G, B) +// Inlined because closure compiler inlines export function getRgbPixelStart(x: i32, y: i32): i32 { // Get the pixel number // let pixelNumber: i32 = (y * 160) + x; diff --git a/core/graphics/lcd.ts b/core/graphics/lcd.ts index 0fb19970..8ea00ffe 100644 --- a/core/graphics/lcd.ts +++ b/core/graphics/lcd.ts @@ -109,6 +109,7 @@ function resetLcd(shouldBlankScreen: boolean): void { } // Pass in the lcd status for performance +// Inlined because closure compiler inlines export function setLcdStatus(): void { // Check if the Lcd was disabled if (!Lcd.enabled) { diff --git a/core/graphics/palette.ts b/core/graphics/palette.ts index 59ad90bf..38578f75 100644 --- a/core/graphics/palette.ts +++ b/core/graphics/palette.ts @@ -19,6 +19,7 @@ export class Palette { static readonly memoryLocationSpritePaletteTwo: i32 = 0xff49; } +// Inlined because closure compiler inlines export function initializePalette(): void { if (Cpu.GBCEnabled) { // GBC Palettes @@ -38,6 +39,7 @@ export function initializePalette(): void { // Simple get pallete color or monochrome GB // shouldRepresentColorByColorId is good for debugging tile data for GBC games that don't have // monochromePalettes +// Inlined because closure compiler inlines export function getMonochromeColorFromPalette( colorId: i32, paletteMemoryLocation: i32, @@ -135,6 +137,7 @@ export function getColorizedGbHexColorFromPalette(colorId: i32, paletteMemoryLoc return hexColor; } +// Inlined because closure compiler inlines export function writeColorPaletteToMemory(offset: i32, value: i32): void { // FF68 // Bit 0-5 Index (00-3F) @@ -160,6 +163,7 @@ export function writeColorPaletteToMemory(offset: i32, value: i32): void { // Functions to Handle Write to pallete data registers // http://gbdev.gg8.se/wiki/articles/Video_Display#FF68_-_BCPS.2FBGPI_-_CGB_Mode_Only_-_Background_Palette_Index // Function to handle incrementing the pallete index if required +// Inlined because closure compiler inlines function incrementPaletteIndexIfSet(paletteIndex: i32, offset: i32): void { // Check ther auto increment box if (checkBitOnByte(7, paletteIndex)) { @@ -217,6 +221,7 @@ export function loadPaletteByteFromWasmMemory(paletteIndexByte: i32, isSprite: b } // Function to store a byte to our Gbc Palette memory +// Inlined because closure compiler inlines export function storePaletteByteInWasmMemory(paletteIndexByte: i32, value: i32, isSprite: boolean): void { // Clear the top two bits to just get the bottom palette Index let paletteIndex: i32 = paletteIndexByte & 0x3f; diff --git a/core/graphics/priority.ts b/core/graphics/priority.ts index f2ba40f4..5b172f8d 100644 --- a/core/graphics/priority.ts +++ b/core/graphics/priority.ts @@ -14,10 +14,12 @@ export function addPriorityforPixel(x: i32, y: i32, colorId: i32 = 0, hasGbcBgPr store(BG_PRIORITY_MAP_LOCATION + getPixelStart(x, y), bgPriorityByte); } +// Inlined because closure compiler inlines export function getPriorityforPixel(x: i32, y: i32): u8 { return load(BG_PRIORITY_MAP_LOCATION + getPixelStart(x, y)); } +// Inlined because closure compiler inlines export function clearPriorityMap(): void { for (let y: i32 = 0; y < 144; y++) { for (let x: i32 = 0; x < 160; x++) { @@ -26,6 +28,7 @@ export function clearPriorityMap(): void { } } +// Inlined because closure compiler inlines function getPixelStart(x: i32, y: i32): i32 { // Get the pixel number return y * 160 + x; diff --git a/core/graphics/sprites.ts b/core/graphics/sprites.ts index ea0877fb..82d37bc0 100644 --- a/core/graphics/sprites.ts +++ b/core/graphics/sprites.ts @@ -17,6 +17,7 @@ import { getPriorityforPixel } from './priority'; import { eightBitLoadFromGBMemory } from '../memory/load'; import { checkBitOnByte, setBitOnByte, resetBitOnByte, hexLog } from '../helpers/index'; +// Inlined because closure compiler inlines export function renderSprites(scanlineRegister: i32, useLargerSprites: boolean): void { // Need to loop through all 40 sprites to check their status // Going backwards since lower sprites draw over higher ones diff --git a/core/graphics/tiles.ts b/core/graphics/tiles.ts index 9ce24936..bb841174 100644 --- a/core/graphics/tiles.ts +++ b/core/graphics/tiles.ts @@ -23,6 +23,7 @@ export class TileCache { static nextXIndexToPerformCacheCheck: i32 = -1; } +// Inlined because closure compiler inlines export function resetTileCache(): void { TileCache.tileId = -1; TileCache.nextXIndexToPerformCacheCheck = -1; @@ -155,6 +156,7 @@ export function drawPixelsFromLineOfTile( return pixelsDrawn; } +// Inlined because closure compiler inlines export function getTilePixelStart(outputLineX: i32, outputLineY: i32, outputWidth: i32): i32 { // Finally Lets place a pixel in memory let pixelStart: i32 = outputLineY * outputWidth + outputLineX; diff --git a/core/index.ts b/core/index.ts index ad71752a..21899432 100644 --- a/core/index.ts +++ b/core/index.ts @@ -86,23 +86,3 @@ export { export { getLY, drawBackgroundMapToWasmMemory, drawTileDataToWasmMemory, drawOamToWasmMemory } from './debug/debug-graphics'; export { getDIV, getTIMA, getTMA, getTAC } from './debug/debug-timer'; export { updateDebugGBMemory } from './debug/debug-memory'; -export { - update, - emulationStep, - getAudioQueueIndex, - resetAudioQueue, - wasmMemorySize, - wasmBoyInternalStateLocation, - wasmBoyInternalStateSize, - gameBoyInternalMemoryLocation, - gameBoyInternalMemorySize, - videoOutputLocation, - frameInProgressVideoOutputLocation, - gameboyColorPaletteLocation, - gameboyColorPaletteSize, - backgroundMapLocation, - tileDataMap, - soundOutputLocation, - gameBytesLocation, - gameRamBanksLocation -} from './legacy'; diff --git a/core/interrupts/interrupts.ts b/core/interrupts/interrupts.ts index 57661743..ff3bc317 100644 --- a/core/interrupts/interrupts.ts +++ b/core/interrupts/interrupts.ts @@ -85,6 +85,7 @@ export class Interrupts { } } +// Inlined because closure compiler inlines export function initializeInterrupts(): void { // Values from BGB @@ -98,6 +99,7 @@ export function initializeInterrupts(): void { } // NOTE: Interrupts should be handled before reading an opcode +// Inlined because closure compiler inlines export function checkInterrupts(): i32 { // First check for our delay was enabled if (Interrupts.masterInterruptSwitchDelay) { @@ -227,26 +229,31 @@ export function setInterrupts(value: boolean): void { } } +// Inlined because closure compiler inlines export function requestVBlankInterrupt(): void { Interrupts.isVBlankInterruptRequested = true; _requestInterrupt(Interrupts.bitPositionVBlankInterrupt); } +// Inlined because closure compiler inlines export function requestLcdInterrupt(): void { Interrupts.isLcdInterruptRequested = true; _requestInterrupt(Interrupts.bitPositionLcdInterrupt); } +// Inlined because closure compiler inlines export function requestTimerInterrupt(): void { Interrupts.isTimerInterruptRequested = true; _requestInterrupt(Interrupts.bitPositionTimerInterrupt); } +// Inlined because closure compiler inlines export function requestJoypadInterrupt(): void { Interrupts.isJoypadInterruptRequested = true; _requestInterrupt(Interrupts.bitPositionJoypadInterrupt); } +// Inlined because closure compiler inlines export function requestSerialInterrupt(): void { Interrupts.isSerialInterruptRequested = true; _requestInterrupt(Interrupts.bitPositionSerialInterrupt); diff --git a/core/joypad/joypad.ts b/core/joypad/joypad.ts index 972fb3cd..9a4f41e2 100644 --- a/core/joypad/joypad.ts +++ b/core/joypad/joypad.ts @@ -61,6 +61,7 @@ export class Joypad { } } +// Inlined because closure compiler inlines export function getJoypadState(): i32 { // Get the joypad register let joypadRegister: i32 = Joypad.joypadRegisterFlipped; @@ -224,6 +225,7 @@ function _pressJoypadButton(buttonId: i32): void { } } +// Inlined because closure compiler inlines function _releaseJoypadButton(buttonId: i32): void { // Set our joypad state _setJoypadButtonStateFromButtonId(buttonId, false); diff --git a/core/legacy.ts b/core/legacy.ts deleted file mode 100644 index f5a7f699..00000000 --- a/core/legacy.ts +++ /dev/null @@ -1,86 +0,0 @@ -// These are legacy aliases for the original WasmBoy api - -/****************** - - Functions - -*******************/ - -export { executeFrame as update, executeStep as emulationStep } from './execute'; - -export { getNumberOfSamplesInAudioBuffer as getAudioQueueIndex, clearAudioBuffer as resetAudioQueue } from './sound/sound'; - -/****************** - - Memory Constants - -*******************/ -import { - WASMBOY_MEMORY_LOCATION, - WASMBOY_MEMORY_SIZE, - WASMBOY_WASM_PAGES, - ASSEMBLYSCRIPT_MEMORY_LOCATION, - ASSEMBLYSCRIPT_MEMORY_SIZE, - WASMBOY_STATE_LOCATION, - WASMBOY_STATE_SIZE, - GAMEBOY_INTERNAL_MEMORY_LOCATION, - GAMEBOY_INTERNAL_MEMORY_SIZE, - VIDEO_RAM_LOCATION, - VIDEO_RAM_SIZE, - WORK_RAM_LOCATION, - WORK_RAM_SIZE, - OTHER_GAMEBOY_INTERNAL_MEMORY_LOCATION, - OTHER_GAMEBOY_INTERNAL_MEMORY_SIZE, - GRAPHICS_OUTPUT_LOCATION, - GRAPHICS_OUTPUT_SIZE, - GBC_PALETTE_LOCATION, - GBC_PALETTE_SIZE, - BG_PRIORITY_MAP_LOCATION, - BG_PRIORITY_MAP_SIZE, - FRAME_LOCATION, - FRAME_SIZE, - BACKGROUND_MAP_LOCATION, - BACKGROUND_MAP_SIZE, - TILE_DATA_LOCATION, - TILE_DATA_SIZE, - OAM_TILES_LOCATION, - OAM_TILES_SIZE, - AUDIO_BUFFER_LOCATION, - AUDIO_BUFFER_SIZE, - CARTRIDGE_RAM_LOCATION, - CARTRIDGE_RAM_SIZE, - CARTRIDGE_ROM_LOCATION, - CARTRIDGE_ROM_SIZE -} from './constants'; - -// WasmBoy -export const wasmMemorySize: i32 = WASMBOY_MEMORY_SIZE; -export const wasmPages: i32 = WASMBOY_WASM_PAGES; -export const assemblyScriptMemoryBaseLocation: i32 = ASSEMBLYSCRIPT_MEMORY_LOCATION; -export const wasmBoyInternalStateLocation: i32 = WASMBOY_STATE_LOCATION; -export const wasmBoyInternalStateSize: i32 = WASMBOY_STATE_SIZE; - -// Gameboy -export const gameBoyInternalMemoryLocation: i32 = GAMEBOY_INTERNAL_MEMORY_LOCATION; -export const gameBoyInternalMemorySize: i32 = GAMEBOY_INTERNAL_MEMORY_SIZE; -export const gameBoyVramLocation: i32 = VIDEO_RAM_LOCATION; -export const gameBoyWramLocation: i32 = WORK_RAM_LOCATION; -export const gameBoyMemoryRegistersLocation: i32 = OTHER_GAMEBOY_INTERNAL_MEMORY_LOCATION; - -// Video output -export const videoOutputLocation: i32 = GRAPHICS_OUTPUT_LOCATION; -export const gameboyColorPaletteLocation: i32 = GBC_PALETTE_LOCATION; -export const gameboyColorPaletteSize: i32 = GBC_PALETTE_SIZE; -export const bgPriorityMapLocation: i32 = BG_PRIORITY_MAP_LOCATION; -export const frameInProgressVideoOutputLocation: i32 = FRAME_LOCATION; -export const backgroundMapLocation: i32 = BACKGROUND_MAP_LOCATION; -export const tileDataMap: i32 = TILE_DATA_LOCATION; -export const oamTiles: i32 = OAM_TILES_LOCATION; - -// Sound output -export const soundOutputLocation: i32 = AUDIO_BUFFER_LOCATION; - -// Game Cartridge -export const gameRamBanksLocation: i32 = CARTRIDGE_RAM_LOCATION; -// Passed in Game backup or ROM from the user -export const gameBytesLocation: i32 = CARTRIDGE_ROM_LOCATION; diff --git a/core/memory/banking.ts b/core/memory/banking.ts index 866673c2..51676b46 100644 --- a/core/memory/banking.ts +++ b/core/memory/banking.ts @@ -2,6 +2,7 @@ import { Memory } from './memory'; import { concatenateBytes, checkBitOnByte, splitLowByte, hexLog } from '../helpers/index'; +// Inlined because closure compiler inlines export function handleBanking(offset: i32, value: i32): void { // Is rom Only does not bank if (Memory.isRomOnly) { @@ -99,6 +100,7 @@ export function handleBanking(offset: i32, value: i32): void { } } +// Inlined because closure compiler inlines export function getRomBankAddress(gameboyOffset: i32): i32 { let currentRomBank: i32 = Memory.currentRomBank; if (!Memory.isMBC5 && currentRomBank === 0) { @@ -109,6 +111,7 @@ export function getRomBankAddress(gameboyOffset: i32): i32 { return (0x4000 * currentRomBank + (gameboyOffset - Memory.switchableCartridgeRomLocation)); } +// Inlined because closure compiler inlines export function getRamBankAddress(gameboyOffset: i32): i32 { // Adjust our gameboy offset relative to zero for the gameboy memory map return (0x2000 * Memory.currentRamBank + (gameboyOffset - Memory.cartridgeRamLocation)); diff --git a/core/memory/dma.ts b/core/memory/dma.ts index c14e6b18..842abb4b 100644 --- a/core/memory/dma.ts +++ b/core/memory/dma.ts @@ -4,6 +4,7 @@ import { eightBitLoadFromGBMemoryWithTraps, eightBitLoadFromGBMemory } from './l import { eightBitStoreIntoGBMemoryWithTraps, eightBitStoreIntoGBMemory } from './store'; import { concatenateBytes, checkBitOnByte, setBitOnByte, resetBitOnByte, hexLog } from '../helpers/index'; +// Inlined because closure compiler inlines export function initializeDma(): void { if (Cpu.GBCEnabled) { // GBC DMA @@ -22,6 +23,7 @@ export function initializeDma(): void { } } +// Inlined because closure compiler inlines export function startDmaTransfer(sourceAddressOffset: i32): void { let sourceAddress: i32 = sourceAddressOffset; sourceAddress = sourceAddress << 8; @@ -39,6 +41,7 @@ export function startDmaTransfer(sourceAddressOffset: i32): void { // https://gist.github.com/drhelius/3394856 // http://bgb.bircd.org/pandocs.htm +// Inlined because closure compiler inlines export function startHdmaTransfer(hdmaTriggerByteToBeWritten: i32): void { // Check if we are Gbc if (!Cpu.GBCEnabled) { @@ -86,6 +89,7 @@ export function startHdmaTransfer(hdmaTriggerByteToBeWritten: i32): void { } } +// Inlined because closure compiler inlines export function updateHblankHdma(): void { if (!Memory.isHblankHdmaActive) { return; @@ -150,6 +154,7 @@ function hdmaTransfer(hdmaSource: i32, hdmaDestination: i32, transferLength: i32 // Function to get our HDMA Source // Follows the poan docs +// Inlined because closure compiler inlines function getHdmaSourceFromMemory(): i32 { // Get our source for the HDMA let hdmaSourceHigh: i32 = eightBitLoadFromGBMemory(Memory.memoryLocationHdmaSourceHigh); @@ -166,6 +171,7 @@ function getHdmaSourceFromMemory(): i32 { // Function to get our HDMA Destination // Follows the poan docs +// Inlined because closure compiler inlines function getHdmaDestinationFromMemory(): i32 { let hdmaDestinationHigh: i32 = eightBitLoadFromGBMemory(Memory.memoryLocationHdmaDestinationHigh); let hdmaDestinationLow: i32 = eightBitLoadFromGBMemory(Memory.memoryLocationHdmaDestinationLow); diff --git a/core/memory/load.ts b/core/memory/load.ts index b6897f5a..2dc284d9 100644 --- a/core/memory/load.ts +++ b/core/memory/load.ts @@ -23,6 +23,7 @@ export function eightBitLoadFromGBMemoryWithTraps(offset: i32): i32 { } // TODO: Rename this to sixteenBitLoadFromGBMemoryWithTraps +// Inlined because closure compiler inlines export function sixteenBitLoadFromGBMemory(offset: i32): i32 { // Get our low byte let lowByte: i32 = 0; diff --git a/core/memory/memory.ts b/core/memory/memory.ts index 3f167318..79f556f7 100644 --- a/core/memory/memory.ts +++ b/core/memory/memory.ts @@ -130,6 +130,7 @@ export class Memory { } } +// Inlined because closure compiler inlines export function initializeCartridge(): void { // Reset stateful variables Memory.isRamBankingEnabled = false; diff --git a/core/portable/portable.ts b/core/portable/portable.ts index c4c04acd..c704fde3 100644 --- a/core/portable/portable.ts +++ b/core/portable/portable.ts @@ -13,14 +13,7 @@ export function u16Portable(param: u16): u16 { } export function i8Portable(param: i8): i8 { - // JS ints are all i32, therefore, get the sign bit, and then convert accordingly - // Example: https://blog.michaelyin.info/convert-8bit-byte-to-signed-int/ - let response: i32 = param; - if (checkBitOnByte(7, response)) { - response = (256 - param) * -1; - } - - return response; + return (param << 24) >> 24; } export function i32Portable(param: i32): i32 { diff --git a/core/serial/serial.ts b/core/serial/serial.ts index 53dca092..3a4ed63c 100644 --- a/core/serial/serial.ts +++ b/core/serial/serial.ts @@ -40,6 +40,7 @@ export class Serial { } // Function to initialize our serial values +// Inlined because closure compiler inlines export function initializeSerial(): void { Serial.currentCycles = 0x00; Serial.numberOfBitsTransferred = 0; @@ -57,6 +58,7 @@ export function initializeSerial(): void { // TODO: Finish serial // See minimal serial: https://github.com/binji/binjgb/commit/64dece05c4ef5a052c4b9b75eb3ddbbfc6677cbe +// Inlined because closure compiler inlines export function updateSerial(numberOfCycles: i32): void { // If we aren't starting our transfer, or transferring, // return @@ -97,6 +99,7 @@ export function updateSerial(numberOfCycles: i32): void { } } +// Inlined because closure compiler inlines function _checkFallingEdgeDetector(oldCycles: i32, newCycles: i32): boolean { // Get our mask let maskBit = _getFallingEdgeMaskBit(); @@ -113,6 +116,7 @@ function _checkFallingEdgeDetector(oldCycles: i32, newCycles: i32): boolean { // Function to get our current tima mask bit // used for our falling edge detector // See The docs linked above, or TCAGB for this bit mapping +// Inlined because closure compiler inlines function _getFallingEdgeMaskBit(): i32 { if (Serial.isClockSpeedFast) { return 2; diff --git a/core/sound/accumulator.ts b/core/sound/accumulator.ts index 25d95c14..2391f2c6 100644 --- a/core/sound/accumulator.ts +++ b/core/sound/accumulator.ts @@ -26,6 +26,7 @@ export class SoundAccumulator { static needToRemixSamples: boolean = false; } +// Inlined because closure compiler inlines export function initializeSoundAccumulator(): void { SoundAccumulator.channel1Sample = 15; SoundAccumulator.channel2Sample = 15; @@ -42,6 +43,7 @@ export function initializeSoundAccumulator(): void { SoundAccumulator.needToRemixSamples = false; } +// Inlined because closure compiler inlines export function accumulateSound(numberOfCycles: i32): void { // Check if any of the individual channels will update let channel1WillUpdate: boolean = Channel1.willChannelUpdate(numberOfCycles) || didChannelDacChange(Channel1.channelNumber); diff --git a/core/sound/registers.ts b/core/sound/registers.ts index f0284a6c..1585a64f 100644 --- a/core/sound/registers.ts +++ b/core/sound/registers.ts @@ -12,6 +12,7 @@ import { eightBitLoadFromGBMemory, eightBitStoreIntoGBMemory } from '../memory/i import { checkBitOnByte, setBitOnByte, resetBitOnByte, hexLog } from '../helpers/index'; // Function to check and handle writes to sound registers +// Inlined because closure compiler inlines export function SoundRegisterWriteTraps(offset: i32, value: i32): boolean { if (offset !== Sound.memoryLocationNR52 && !Sound.NR52IsSoundEnabled) { // Block all writes to any sound register EXCEPT NR52! @@ -123,6 +124,7 @@ export function SoundRegisterWriteTraps(offset: i32, value: i32): boolean { } // http://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware#Registers +// Inlined because closure compiler inlines export function SoundRegisterReadTraps(offset: i32): i32 { // TODO: OR All Registers diff --git a/core/sound/sound.ts b/core/sound/sound.ts index 31ba567b..48ea795a 100644 --- a/core/sound/sound.ts +++ b/core/sound/sound.ts @@ -146,6 +146,7 @@ export class Sound { // Initialize sound registers // From: https://emu-docs.org/Game%20Boy/gb_sound.txt +// Inlined because closure compiler inlines export function initializeSound(): void { // Reset Stateful variables Sound.currentCycles = 0; @@ -213,6 +214,7 @@ export function clearAudioBuffer(): void { Sound.audioQueueIndex = 0; } +// Inlined because closure compiler inlines function calculateSound(numberOfCycles: i32): void { // Update all of our channels // All samples will be returned as 0 to 30 @@ -286,6 +288,7 @@ function calculateSound(numberOfCycles: i32): void { } } +// Inlined because closure compiler inlines function updateFrameSequencer(numberOfCycles: i32): boolean { // APU runs at 4194304 / 512 // Or Cpu.clockSpeed / 512 diff --git a/core/timers/timers.ts b/core/timers/timers.ts index cae77077..8a844880 100644 --- a/core/timers/timers.ts +++ b/core/timers/timers.ts @@ -156,6 +156,7 @@ export class Timers { } } +// Inlined because closure compiler inlines export function initializeTimers(): void { // Reset stateful Variables Timers.currentCycles = 0; diff --git a/demo/benchmark/loadrom.js b/demo/benchmark/loadrom.js index 9e7e0ef8..20752103 100644 --- a/demo/benchmark/loadrom.js +++ b/demo/benchmark/loadrom.js @@ -69,9 +69,8 @@ export default class LoadROMSelector extends Component { // Clear Wasm memory // https://docs.google.com/spreadsheets/d/17xrEzJk5-sCB9J2mMJcVnzhbE-XH_NvczVSQH9OHvRk/edit?usp=sharing coreObjects.forEach(coreObject => { - for (let i = 0; i <= coreObject.core.byteMemory.length; i++) { - coreObject.core.byteMemory[i] = 0; - } + // Reset the byte memory to zero at all indexes + coreObject.core.byteMemory.fill(0); // Set the ROM in byte memory coreObject.core.byteMemory.set(ROMObject.ROM, coreObject.core.instance.exports.CARTRIDGE_ROM_LOCATION); diff --git a/demo/debugger/components/graphics/backgroundMap/backgroundMap.js b/demo/debugger/components/graphics/backgroundMap/backgroundMap.js index b31f40f9..6a7c56ba 100644 --- a/demo/debugger/components/graphics/backgroundMap/backgroundMap.js +++ b/demo/debugger/components/graphics/backgroundMap/backgroundMap.js @@ -13,7 +13,7 @@ const updateBackgroundMapTask = async (canvasElement, canvasContext, canvasImage await WasmBoy._runWasmExport('drawBackgroundMapToWasmMemory', [1]); // Get our background map location constant - const backgroundMapLocation = await WasmBoy._getWasmConstant('backgroundMapLocation'); + const backgroundMapLocation = await WasmBoy._getWasmConstant('BACKGROUND_MAP_LOCATION'); const backgroundMapMemory = await WasmBoy._getWasmMemorySection(backgroundMapLocation, backgroundMapLocation + 256 * 256 * 3); const imageDataArray = new Uint8ClampedArray(256 * 256 * 4); diff --git a/demo/debugger/components/graphics/tileData/tileData.js b/demo/debugger/components/graphics/tileData/tileData.js index 1969840a..a914e85e 100644 --- a/demo/debugger/components/graphics/tileData/tileData.js +++ b/demo/debugger/components/graphics/tileData/tileData.js @@ -16,7 +16,7 @@ const updateCanvasTask = async (canvasElement, canvasContext, canvasImageData) = const rgbColor = new Uint8ClampedArray(3); // Get our background map location constant - const tileDataMapLocation = await WasmBoy._getWasmConstant('tileDataMap'); + const tileDataMapLocation = await WasmBoy._getWasmConstant('TILE_DATA_LOCATION'); const tileDataMapMemory = await WasmBoy._getWasmMemorySection( tileDataMapLocation, tileDataMapLocation + tileDataYPixels * tileDataXPixels * 3 diff --git a/dist/core/core.untouched.wasm b/dist/core/core.untouched.wasm index bb01afd522c8f660b1f83219e109c59e5231959f..aae2baee7525da469a9416640937e9ea3e9b9af0 100644 GIT binary patch literal 35495 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 A>;M1& literal 35238 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 diff --git a/dist/core/core.untouched.wast b/dist/core/core.untouched.wast index 47a849a9..0f4da5bf 100644 --- a/dist/core/core.untouched.wast +++ b/dist/core/core.untouched.wast @@ -1,6 +1,6 @@ (module - (type $iiiiiiiiii_ (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32))) (type $_ (func)) + (type $iiiiiiiiii_ (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32))) (type $ii (func (param i32) (result i32))) (type $ii_ (func (param i32 i32))) (type $i_ (func (param i32))) @@ -65,7 +65,6 @@ (global $core/constants/WASMBOY_MEMORY_LOCATION i32 (i32.const 0)) (global $core/constants/WASMBOY_MEMORY_SIZE i32 (i32.const 9654400)) (global $core/constants/WASMBOY_WASM_PAGES i32 (i32.const 148)) - (global $core/core/hasStarted (mut i32) (i32.const 0)) (global $core/config/Config.enableBootRom (mut i32) (i32.const 0)) (global $core/config/Config.useGbcWhenAvailable (mut i32) (i32.const 1)) (global $core/config/Config.audioBatchProcessing (mut i32) (i32.const 0)) @@ -76,41 +75,6 @@ (global $core/config/Config.tileRendering (mut i32) (i32.const 0)) (global $core/config/Config.tileCaching (mut i32) (i32.const 0)) (global $core/config/Config.enableAudioDebugging (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.currentRomBank (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.isMBC5 (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.GBCEnabled (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.memoryLocationGBCVRAMBank (mut i32) (i32.const 65359)) - (global $core/memory/memory/Memory.currentRamBank (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.memoryLocationGBCWRAMBank (mut i32) (i32.const 65392)) - (global $core/cpu/cpu/Cpu.GBCDoubleSpeed (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerA (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerB (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerC (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerD (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerE (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerH (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerL (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.registerF (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.stackPointer (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.programCounter (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.currentCycles (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.isHaltNormal (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.isHaltNoJump (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.isHaltBug (mut i32) (i32.const 0)) - (global $core/cpu/cpu/Cpu.isStopped (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.isRamBankingEnabled (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.isMBC1RomModeEnabled (mut i32) (i32.const 1)) - (global $core/memory/memory/Memory.isRomOnly (mut i32) (i32.const 1)) - (global $core/memory/memory/Memory.isMBC1 (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.isMBC2 (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.isMBC3 (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.currentCycles (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.scanlineCycleCounter (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.scanlineRegister (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.scrollX (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.scrollY (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.windowX (mut i32) (i32.const 0)) - (global $core/graphics/graphics/Graphics.windowY (mut i32) (i32.const 0)) (global $core/graphics/colors/Colors.bgWhite (mut i32) (i32.const 0)) (global $core/graphics/colors/Colors.bgLightGrey (mut i32) (i32.const 0)) (global $core/graphics/colors/Colors.bgDarkGrey (mut i32) (i32.const 0)) @@ -123,6 +87,97 @@ (global $core/graphics/colors/Colors.obj1LightGrey (mut i32) (i32.const 0)) (global $core/graphics/colors/Colors.obj1DarkGrey (mut i32) (i32.const 0)) (global $core/graphics/colors/Colors.obj1Black (mut i32) (i32.const 0)) + (global $core/graphics/palette/Palette.memoryLocationBackgroundPaletteIndex (mut i32) (i32.const 65384)) + (global $core/graphics/palette/Palette.memoryLocationBackgroundPaletteData (mut i32) (i32.const 65385)) + (global $core/graphics/palette/Palette.memoryLocationSpritePaletteData (mut i32) (i32.const 65387)) + (global $core/graphics/tiles/TileCache.tileId (mut i32) (i32.const -1)) + (global $core/graphics/tiles/TileCache.nextXIndexToPerformCacheCheck (mut i32) (i32.const -1)) + (global $core/sound/channel1/Channel1.cycleCounter (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx0SweepPeriod (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx0Negate (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx0SweepShift (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx1Duty (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx1LengthLoad (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx2StartingVolume (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx2EnvelopeAddMode (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx2EnvelopePeriod (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx3FrequencyLSB (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx4LengthEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.NRx4FrequencyMSB (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.isEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.isDacEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.frequency (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.frequencyTimer (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.envelopeCounter (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.lengthCounter (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.volume (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.dutyCycle (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.waveFormPositionOnDuty (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.isSweepEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.sweepCounter (mut i32) (i32.const 0)) + (global $core/sound/channel1/Channel1.sweepShadowFrequency (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.cycleCounter (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx1Duty (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx1LengthLoad (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx2StartingVolume (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx2EnvelopeAddMode (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx2EnvelopePeriod (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx3FrequencyLSB (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx4LengthEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.NRx4FrequencyMSB (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.isEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.isDacEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.frequency (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.frequencyTimer (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.envelopeCounter (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.lengthCounter (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.volume (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.dutyCycle (mut i32) (i32.const 0)) + (global $core/sound/channel2/Channel2.waveFormPositionOnDuty (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.cycleCounter (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.NRx1LengthLoad (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.NRx2VolumeCode (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.NRx3FrequencyLSB (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.NRx4LengthEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.NRx4FrequencyMSB (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.isEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.isDacEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.frequency (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.frequencyTimer (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.lengthCounter (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.waveTablePosition (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.volumeCode (mut i32) (i32.const 0)) + (global $core/sound/channel3/Channel3.volumeCodeChanged (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.cycleCounter (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx1LengthLoad (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx2StartingVolume (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx2EnvelopeAddMode (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx2EnvelopePeriod (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx3ClockShift (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx3WidthMode (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx3DivisorCode (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.NRx4LengthEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.isEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.isDacEnabled (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.frequencyTimer (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.envelopeCounter (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.lengthCounter (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.volume (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.divisor (mut i32) (i32.const 0)) + (global $core/sound/channel4/Channel4.linearFeedbackShiftRegister (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.channel1Sample (mut i32) (i32.const 15)) + (global $core/sound/accumulator/SoundAccumulator.channel2Sample (mut i32) (i32.const 15)) + (global $core/sound/accumulator/SoundAccumulator.channel3Sample (mut i32) (i32.const 15)) + (global $core/sound/accumulator/SoundAccumulator.channel4Sample (mut i32) (i32.const 15)) + (global $core/sound/accumulator/SoundAccumulator.channel1DacEnabled (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.channel2DacEnabled (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.channel3DacEnabled (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.channel4DacEnabled (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.leftChannelSampleUnsignedByte (mut i32) (i32.const 127)) + (global $core/sound/accumulator/SoundAccumulator.rightChannelSampleUnsignedByte (mut i32) (i32.const 127)) + (global $core/sound/accumulator/SoundAccumulator.mixerVolumeChanged (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.mixerEnabledChanged (mut i32) (i32.const 0)) + (global $core/sound/accumulator/SoundAccumulator.needToRemixSamples (mut i32) (i32.const 0)) (global $core/sound/sound/Sound.currentCycles (mut i32) (i32.const 0)) (global $core/sound/sound/Sound.NR50LeftMixerVolume (mut i32) (i32.const 0)) (global $core/sound/sound/Sound.NR50RightMixerVolume (mut i32) (i32.const 0)) @@ -137,83 +192,54 @@ (global $core/sound/sound/Sound.NR52IsSoundEnabled (mut i32) (i32.const 1)) (global $core/sound/sound/Sound.frameSequenceCycleCounter (mut i32) (i32.const 0)) (global $core/sound/sound/Sound.downSampleCycleCounter (mut i32) (i32.const 0)) + (global $core/sound/sound/Sound.downSampleCycleMultiplier (mut i32) (i32.const 48000)) (global $core/sound/sound/Sound.frameSequencer (mut i32) (i32.const 0)) (global $core/sound/sound/Sound.audioQueueIndex (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.volumeCodeChanged (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.channel1Sample (mut i32) (i32.const 15)) - (global $core/sound/accumulator/SoundAccumulator.channel2Sample (mut i32) (i32.const 15)) - (global $core/sound/accumulator/SoundAccumulator.channel3Sample (mut i32) (i32.const 15)) - (global $core/sound/accumulator/SoundAccumulator.channel4Sample (mut i32) (i32.const 15)) - (global $core/sound/accumulator/SoundAccumulator.channel1DacEnabled (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.channel2DacEnabled (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.channel3DacEnabled (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.channel4DacEnabled (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.leftChannelSampleUnsignedByte (mut i32) (i32.const 127)) - (global $core/sound/accumulator/SoundAccumulator.rightChannelSampleUnsignedByte (mut i32) (i32.const 127)) - (global $core/sound/accumulator/SoundAccumulator.mixerVolumeChanged (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.mixerEnabledChanged (mut i32) (i32.const 0)) - (global $core/sound/accumulator/SoundAccumulator.needToRemixSamples (mut i32) (i32.const 0)) + (global $core/sound/sound/Sound.wasmBoyMemoryMaxBufferSize (mut i32) (i32.const 131072)) + (global $core/interrupts/interrupts/Interrupts.masterInterruptSwitch (mut i32) (i32.const 0)) + (global $core/interrupts/interrupts/Interrupts.masterInterruptSwitchDelay (mut i32) (i32.const 0)) + (global $core/interrupts/interrupts/Interrupts.interruptsEnabledValue (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isVBlankInterruptEnabled (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isLcdInterruptEnabled (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isTimerInterruptEnabled (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isSerialInterruptEnabled (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isJoypadInterruptEnabled (mut i32) (i32.const 0)) - (global $core/interrupts/interrupts/Interrupts.interruptsEnabledValue (mut i32) (i32.const 0)) + (global $core/interrupts/interrupts/Interrupts.interruptsRequestedValue (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isVBlankInterruptRequested (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isLcdInterruptRequested (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isTimerInterruptRequested (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isSerialInterruptRequested (mut i32) (i32.const 0)) (global $core/interrupts/interrupts/Interrupts.isJoypadInterruptRequested (mut i32) (i32.const 0)) - (global $core/interrupts/interrupts/Interrupts.interruptsRequestedValue (mut i32) (i32.const 0)) (global $core/timers/timers/Timers.currentCycles (mut i32) (i32.const 0)) (global $core/timers/timers/Timers.dividerRegister (mut i32) (i32.const 0)) (global $core/timers/timers/Timers.timerCounter (mut i32) (i32.const 0)) + (global $core/timers/timers/Timers.timerCounterOverflowDelay (mut i32) (i32.const 0)) + (global $core/timers/timers/Timers.timerCounterWasReset (mut i32) (i32.const 0)) (global $core/timers/timers/Timers.timerModulo (mut i32) (i32.const 0)) (global $core/timers/timers/Timers.timerEnabled (mut i32) (i32.const 0)) (global $core/timers/timers/Timers.timerInputClock (mut i32) (i32.const 0)) - (global $core/timers/timers/Timers.timerCounterOverflowDelay (mut i32) (i32.const 0)) - (global $core/timers/timers/Timers.timerCounterWasReset (mut i32) (i32.const 0)) (global $core/serial/serial/Serial.currentCycles (mut i32) (i32.const 0)) (global $core/serial/serial/Serial.numberOfBitsTransferred (mut i32) (i32.const 0)) (global $core/serial/serial/Serial.isShiftClockInternal (mut i32) (i32.const 0)) (global $core/serial/serial/Serial.isClockSpeedFast (mut i32) (i32.const 0)) (global $core/serial/serial/Serial.transferStartFlag (mut i32) (i32.const 0)) - (global $core/cycles/Cycles.cyclesPerCycleSet (mut i32) (i32.const 2000000000)) - (global $core/cycles/Cycles.cycleSets (mut i32) (i32.const 0)) - (global $core/cycles/Cycles.cycles (mut i32) (i32.const 0)) - (global $core/execute/Execute.stepsPerStepSet (mut i32) (i32.const 2000000000)) - (global $core/execute/Execute.stepSets (mut i32) (i32.const 0)) - (global $core/execute/Execute.steps (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.up (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.down (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.left (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.right (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.a (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.b (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.select (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.start (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.joypadRegisterFlipped (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.isDpadType (mut i32) (i32.const 0)) + (global $core/joypad/joypad/Joypad.isButtonType (mut i32) (i32.const 0)) + (global $core/debug/breakpoints/Breakpoints.programCounter (mut i32) (i32.const -1)) + (global $core/debug/breakpoints/Breakpoints.readGbMemory (mut i32) (i32.const -1)) + (global $core/debug/breakpoints/Breakpoints.writeGbMemory (mut i32) (i32.const -1)) + (global $core/debug/breakpoints/Breakpoints.reachedBreakpoint (mut i32) (i32.const 0)) (global $core/graphics/lcd/Lcd.currentLcdMode (mut i32) (i32.const 0)) - (global $core/interrupts/interrupts/Interrupts.masterInterruptSwitch (mut i32) (i32.const 0)) - (global $core/interrupts/interrupts/Interrupts.masterInterruptSwitchDelay (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.isEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.frequencyTimer (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.envelopeCounter (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.lengthCounter (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.volume (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.dutyCycle (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.waveFormPositionOnDuty (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.isSweepEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.sweepCounter (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.sweepShadowFrequency (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.isEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.frequencyTimer (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.envelopeCounter (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.lengthCounter (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.volume (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.dutyCycle (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.waveFormPositionOnDuty (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.isEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.frequencyTimer (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.lengthCounter (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.waveTablePosition (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.isEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.frequencyTimer (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.envelopeCounter (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.lengthCounter (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.volume (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.linearFeedbackShiftRegister (mut i32) (i32.const 0)) + (global $core/graphics/lcd/Lcd.coincidenceCompare (mut i32) (i32.const 0)) (global $core/graphics/lcd/Lcd.enabled (mut i32) (i32.const 1)) (global $core/graphics/lcd/Lcd.windowTileMapDisplaySelect (mut i32) (i32.const 0)) (global $core/graphics/lcd/Lcd.windowDisplayEnabled (mut i32) (i32.const 0)) @@ -222,102 +248,62 @@ (global $core/graphics/lcd/Lcd.tallSpriteSize (mut i32) (i32.const 0)) (global $core/graphics/lcd/Lcd.spriteDisplayEnable (mut i32) (i32.const 0)) (global $core/graphics/lcd/Lcd.bgDisplayEnabled (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.joypadRegisterFlipped (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.isDpadType (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.isButtonType (mut i32) (i32.const 0)) - (global $core/debug/breakpoints/Breakpoints.reachedBreakpoint (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.currentCycles (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.scanlineCycleCounter (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.scanlineRegister (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.scrollX (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.scrollY (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.windowX (mut i32) (i32.const 0)) + (global $core/graphics/graphics/Graphics.windowY (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.currentRomBank (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.currentRamBank (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.isRamBankingEnabled (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.isMBC1RomModeEnabled (mut i32) (i32.const 1)) + (global $core/memory/memory/Memory.isRomOnly (mut i32) (i32.const 1)) + (global $core/memory/memory/Memory.isMBC1 (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.isMBC2 (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.isMBC3 (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.isMBC5 (mut i32) (i32.const 0)) + (global $core/memory/memory/Memory.memoryLocationHdmaSourceHigh (mut i32) (i32.const 65361)) + (global $core/memory/memory/Memory.memoryLocationHdmaSourceLow (mut i32) (i32.const 65362)) + (global $core/memory/memory/Memory.memoryLocationHdmaDestinationHigh (mut i32) (i32.const 65363)) + (global $core/memory/memory/Memory.memoryLocationHdmaDestinationLow (mut i32) (i32.const 65364)) + (global $core/memory/memory/Memory.memoryLocationHdmaTrigger (mut i32) (i32.const 65365)) (global $core/memory/memory/Memory.DMACycles (mut i32) (i32.const 0)) - (global $core/graphics/tiles/TileCache.tileId (mut i32) (i32.const -1)) - (global $core/graphics/tiles/TileCache.nextXIndexToPerformCacheCheck (mut i32) (i32.const -1)) (global $core/memory/memory/Memory.isHblankHdmaActive (mut i32) (i32.const 0)) (global $core/memory/memory/Memory.hblankHdmaTransferLengthRemaining (mut i32) (i32.const 0)) (global $core/memory/memory/Memory.hblankHdmaSource (mut i32) (i32.const 0)) (global $core/memory/memory/Memory.hblankHdmaDestination (mut i32) (i32.const 0)) - (global $core/debug/breakpoints/Breakpoints.readGbMemory (mut i32) (i32.const -1)) - (global $core/sound/channel1/Channel1.NRx4LengthEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx4LengthEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.NRx4LengthEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx4LengthEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx0SweepPeriod (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx0SweepShift (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx0Negate (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx3FrequencyLSB (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx4FrequencyMSB (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.frequency (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx2EnvelopePeriod (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx2EnvelopeAddMode (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx2EnvelopePeriod (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx2EnvelopeAddMode (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx2EnvelopePeriod (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx2EnvelopeAddMode (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.cycleCounter (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.isDacEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.isDacEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.isDacEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.isDacEnabled (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.cycleCounter (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.cycleCounter (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.cycleCounter (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx1Duty (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.frequency (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx1Duty (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.frequency (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.volumeCode (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.divisor (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx3ClockShift (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx3WidthMode (mut i32) (i32.const 0)) - (global $core/sound/sound/Sound.downSampleCycleMultiplier (mut i32) (i32.const 48000)) - (global $core/sound/sound/Sound.wasmBoyMemoryMaxBufferSize (mut i32) (i32.const 131072)) - (global $core/joypad/joypad/Joypad.up (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.right (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.down (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.left (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.a (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.b (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.select (mut i32) (i32.const 0)) - (global $core/joypad/joypad/Joypad.start (mut i32) (i32.const 0)) - (global $core/debug/breakpoints/Breakpoints.writeGbMemory (mut i32) (i32.const -1)) - (global $core/sound/channel1/Channel1.NRx1LengthLoad (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx1LengthLoad (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.NRx1LengthLoad (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx1LengthLoad (mut i32) (i32.const 0)) - (global $core/sound/channel1/Channel1.NRx2StartingVolume (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx2StartingVolume (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.NRx2VolumeCode (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx2StartingVolume (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx3FrequencyLSB (mut i32) (i32.const 0)) - (global $core/sound/channel2/Channel2.NRx4FrequencyMSB (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.NRx3FrequencyLSB (mut i32) (i32.const 0)) - (global $core/sound/channel3/Channel3.NRx4FrequencyMSB (mut i32) (i32.const 0)) - (global $core/sound/channel4/Channel4.NRx3DivisorCode (mut i32) (i32.const 0)) - (global $core/graphics/lcd/Lcd.coincidenceCompare (mut i32) (i32.const 0)) - (global $core/memory/memory/Memory.memoryLocationHdmaTrigger (mut i32) (i32.const 65365)) - (global $core/memory/memory/Memory.memoryLocationHdmaSourceHigh (mut i32) (i32.const 65361)) - (global $core/memory/memory/Memory.memoryLocationHdmaSourceLow (mut i32) (i32.const 65362)) - (global $core/memory/memory/Memory.memoryLocationHdmaDestinationHigh (mut i32) (i32.const 65363)) - (global $core/memory/memory/Memory.memoryLocationHdmaDestinationLow (mut i32) (i32.const 65364)) - (global $core/graphics/palette/Palette.memoryLocationBackgroundPaletteIndex (mut i32) (i32.const 65384)) - (global $core/graphics/palette/Palette.memoryLocationSpritePaletteData (mut i32) (i32.const 65387)) - (global $core/graphics/palette/Palette.memoryLocationBackgroundPaletteData (mut i32) (i32.const 65385)) - (global $core/debug/breakpoints/Breakpoints.programCounter (mut i32) (i32.const -1)) + (global $core/memory/memory/Memory.memoryLocationGBCVRAMBank (mut i32) (i32.const 65359)) + (global $core/memory/memory/Memory.memoryLocationGBCWRAMBank (mut i32) (i32.const 65392)) + (global $core/cpu/cpu/Cpu.GBCEnabled (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.GBCDoubleSpeed (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerA (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerB (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerC (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerD (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerE (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerH (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerL (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.registerF (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.stackPointer (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.programCounter (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.currentCycles (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.isHaltNormal (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.isHaltNoJump (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.isHaltBug (mut i32) (i32.const 0)) + (global $core/cpu/cpu/Cpu.isStopped (mut i32) (i32.const 0)) + (global $core/cycles/Cycles.cyclesPerCycleSet (mut i32) (i32.const 2000000000)) + (global $core/cycles/Cycles.cycleSets (mut i32) (i32.const 0)) + (global $core/cycles/Cycles.cycles (mut i32) (i32.const 0)) + (global $core/execute/Execute.stepsPerStepSet (mut i32) (i32.const 2000000000)) + (global $core/execute/Execute.stepSets (mut i32) (i32.const 0)) + (global $core/execute/Execute.steps (mut i32) (i32.const 0)) (global $core/execute/Execute.RESPONSE_CONDITION_FRAME (mut i32) (i32.const 0)) (global $core/execute/Execute.RESPONSE_CONDITION_AUDIO (mut i32) (i32.const 1)) (global $core/execute/Execute.RESPONSE_CONDITION_BREAKPOINT (mut i32) (i32.const 2)) - (global $core/legacy/wasmMemorySize i32 (i32.const 9654400)) - (global $core/legacy/wasmBoyInternalStateLocation i32 (i32.const 1024)) - (global $core/legacy/wasmBoyInternalStateSize i32 (i32.const 1024)) - (global $core/legacy/gameBoyInternalMemoryLocation i32 (i32.const 2048)) - (global $core/legacy/gameBoyInternalMemorySize i32 (i32.const 65536)) - (global $core/legacy/videoOutputLocation i32 (i32.const 67584)) - (global $core/legacy/gameboyColorPaletteLocation i32 (i32.const 67584)) - (global $core/legacy/gameboyColorPaletteSize i32 (i32.const 128)) - (global $core/legacy/frameInProgressVideoOutputLocation i32 (i32.const 91264)) - (global $core/legacy/backgroundMapLocation i32 (i32.const 184448)) - (global $core/legacy/tileDataMap i32 (i32.const 381056)) - (global $core/legacy/soundOutputLocation i32 (i32.const 1068160)) - (global $core/legacy/gameRamBanksLocation i32 (i32.const 1199232)) - (global $core/legacy/gameBytesLocation i32 (i32.const 1330304)) - (global $~argc (mut i32) (i32.const 0)) + (global $core/core/hasStarted (mut i32) (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "table" (table $0)) (export "config" (func $core/core/config)) @@ -330,7 +316,7 @@ (export "getSteps" (func $core/execute/getSteps)) (export "executeMultipleFrames" (func $core/execute/executeMultipleFrames)) (export "executeFrame" (func $core/execute/executeFrame)) - (export "_setargc" (func $~setargc)) + (export "_setargc" (func $~lib/setargc)) (export "executeFrameAndCheckAudio" (func $core/execute/executeFrameAndCheckAudio|trampoline)) (export "executeUntilCondition" (func $core/execute/executeUntilCondition|trampoline)) (export "executeStep" (func $core/execute/executeStep)) @@ -413,26 +399,34 @@ (export "getTMA" (func $core/debug/debug-timer/getTMA)) (export "getTAC" (func $core/debug/debug-timer/getTAC)) (export "updateDebugGBMemory" (func $core/debug/debug-memory/updateDebugGBMemory)) - (export "update" (func $core/execute/executeFrame)) - (export "emulationStep" (func $core/execute/executeStep)) - (export "getAudioQueueIndex" (func $core/sound/sound/getNumberOfSamplesInAudioBuffer)) - (export "resetAudioQueue" (func $core/sound/sound/clearAudioBuffer)) - (export "wasmMemorySize" (global $core/legacy/wasmMemorySize)) - (export "wasmBoyInternalStateLocation" (global $core/legacy/wasmBoyInternalStateLocation)) - (export "wasmBoyInternalStateSize" (global $core/legacy/wasmBoyInternalStateSize)) - (export "gameBoyInternalMemoryLocation" (global $core/legacy/gameBoyInternalMemoryLocation)) - (export "gameBoyInternalMemorySize" (global $core/legacy/gameBoyInternalMemorySize)) - (export "videoOutputLocation" (global $core/legacy/videoOutputLocation)) - (export "frameInProgressVideoOutputLocation" (global $core/legacy/frameInProgressVideoOutputLocation)) - (export "gameboyColorPaletteLocation" (global $core/legacy/gameboyColorPaletteLocation)) - (export "gameboyColorPaletteSize" (global $core/legacy/gameboyColorPaletteSize)) - (export "backgroundMapLocation" (global $core/legacy/backgroundMapLocation)) - (export "tileDataMap" (global $core/legacy/tileDataMap)) - (export "soundOutputLocation" (global $core/legacy/soundOutputLocation)) - (export "gameBytesLocation" (global $core/legacy/gameBytesLocation)) - (export "gameRamBanksLocation" (global $core/legacy/gameRamBanksLocation)) (start $start) - (func $core/memory/memoryMap/getWasmBoyOffsetFromGameBoyOffset (; 0 ;) (type $ii) (param $0 i32) (result i32) + (func $start:core/graphics/colors (; 0 ;) (type $_) + i32.const 15921906 + global.set $core/graphics/colors/Colors.bgWhite + i32.const 10526880 + global.set $core/graphics/colors/Colors.bgLightGrey + i32.const 5789784 + global.set $core/graphics/colors/Colors.bgDarkGrey + i32.const 526344 + global.set $core/graphics/colors/Colors.bgBlack + i32.const 15921906 + global.set $core/graphics/colors/Colors.obj0White + i32.const 10526880 + global.set $core/graphics/colors/Colors.obj0LightGrey + i32.const 5789784 + global.set $core/graphics/colors/Colors.obj0DarkGrey + i32.const 526344 + global.set $core/graphics/colors/Colors.obj0Black + i32.const 15921906 + global.set $core/graphics/colors/Colors.obj1White + i32.const 10526880 + global.set $core/graphics/colors/Colors.obj1LightGrey + i32.const 5789784 + global.set $core/graphics/colors/Colors.obj1DarkGrey + i32.const 526344 + global.set $core/graphics/colors/Colors.obj1Black + ) + (func $core/memory/memoryMap/getWasmBoyOffsetFromGameBoyOffset (; 1 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $case14|0 block $case13|0 @@ -544,12 +538,12 @@ i32.const -6144 i32.add ) - (func $core/memory/load/eightBitLoadFromGBMemory (; 1 ;) (type $ii) (param $0 i32) (result i32) + (func $core/memory/load/eightBitLoadFromGBMemory (; 2 ;) (type $ii) (param $0 i32) (result i32) local.get $0 call $core/memory/memoryMap/getWasmBoyOffsetFromGameBoyOffset i32.load8_u ) - (func $core/cpu/cpu/initializeCpu (; 2 ;) (type $_) + (func $core/cpu/cpu/initializeCpu (; 3 ;) (type $_) i32.const 0 global.set $core/cpu/cpu/Cpu.GBCDoubleSpeed i32.const 0 @@ -623,7 +617,7 @@ i32.const 65534 global.set $core/cpu/cpu/Cpu.stackPointer ) - (func $core/memory/memory/initializeCartridge (; 3 ;) (type $_) + (func $core/memory/memory/initializeCartridge (; 4 ;) (type $_) (local $0 i32) (local $1 i32) i32.const 0 @@ -717,13 +711,13 @@ i32.const 0 global.set $core/memory/memory/Memory.currentRamBank ) - (func $core/memory/store/eightBitStoreIntoGBMemory (; 4 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/memory/store/eightBitStoreIntoGBMemory (; 5 ;) (type $ii_) (param $0 i32) (param $1 i32) local.get $0 call $core/memory/memoryMap/getWasmBoyOffsetFromGameBoyOffset local.get $1 i32.store8 ) - (func $core/memory/dma/initializeDma (; 5 ;) (type $_) + (func $core/memory/dma/initializeDma (; 6 ;) (type $_) i32.const 65361 i32.const 255 call $core/memory/store/eightBitStoreIntoGBMemory @@ -740,7 +734,7 @@ i32.const 255 call $core/memory/store/eightBitStoreIntoGBMemory ) - (func $core/graphics/colors/setManualColorizationPalette (; 6 ;) (type $i_) (param $0 i32) + (func $core/graphics/colors/setManualColorizationPalette (; 7 ;) (type $i_) (param $0 i32) (local $1 i32) block $break|0 block $case12|0 @@ -1108,7 +1102,7 @@ global.set $core/graphics/colors/Colors.obj1Black end ) - (func $core/graphics/colors/setHashColorizationPalette (; 7 ;) (type $i_) (param $0 i32) + (func $core/graphics/colors/setHashColorizationPalette (; 8 ;) (type $i_) (param $0 i32) (local $1 i32) block $break|0 block $case19|0 @@ -1517,7 +1511,7 @@ global.set $core/graphics/colors/Colors.obj1Black end ) - (func $core/graphics/colors/initializeColors (; 8 ;) (type $_) + (func $core/graphics/colors/initializeColors (; 9 ;) (type $_) (local $0 i32) (local $1 i32) i32.const 0 @@ -1547,7 +1541,7 @@ i32.and call $core/graphics/colors/setHashColorizationPalette ) - (func $core/graphics/graphics/initializeGraphics (; 9 ;) (type $_) + (func $core/graphics/graphics/initializeGraphics (; 10 ;) (type $_) i32.const 0 global.set $core/graphics/graphics/Graphics.currentCycles i32.const 0 @@ -1608,7 +1602,7 @@ call $core/memory/store/eightBitStoreIntoGBMemory call $core/graphics/colors/initializeColors ) - (func $core/graphics/palette/initializePalette (; 10 ;) (type $_) + (func $core/graphics/palette/initializePalette (; 11 ;) (type $_) global.get $core/cpu/cpu/Cpu.GBCEnabled if i32.const 65384 @@ -1638,7 +1632,7 @@ call $core/memory/store/eightBitStoreIntoGBMemory end ) - (func $core/sound/channel1/Channel1.initialize (; 11 ;) (type $_) + (func $core/sound/channel1/Channel1.initialize (; 12 ;) (type $_) i32.const 65296 i32.const 128 call $core/memory/store/eightBitStoreIntoGBMemory @@ -1655,7 +1649,7 @@ i32.const 191 call $core/memory/store/eightBitStoreIntoGBMemory ) - (func $core/sound/channel2/Channel2.initialize (; 12 ;) (type $_) + (func $core/sound/channel2/Channel2.initialize (; 13 ;) (type $_) i32.const 65301 i32.const 255 call $core/memory/store/eightBitStoreIntoGBMemory @@ -1672,7 +1666,7 @@ i32.const 184 call $core/memory/store/eightBitStoreIntoGBMemory ) - (func $core/sound/channel3/Channel3.initialize (; 13 ;) (type $_) + (func $core/sound/channel3/Channel3.initialize (; 14 ;) (type $_) i32.const 65306 i32.const 127 call $core/memory/store/eightBitStoreIntoGBMemory @@ -1691,7 +1685,7 @@ i32.const 1 global.set $core/sound/channel3/Channel3.volumeCodeChanged ) - (func $core/sound/channel4/Channel4.initialize (; 14 ;) (type $_) + (func $core/sound/channel4/Channel4.initialize (; 15 ;) (type $_) i32.const 65311 i32.const 255 call $core/memory/store/eightBitStoreIntoGBMemory @@ -1708,7 +1702,7 @@ i32.const 191 call $core/memory/store/eightBitStoreIntoGBMemory ) - (func $core/sound/accumulator/initializeSoundAccumulator (; 15 ;) (type $_) + (func $core/sound/accumulator/initializeSoundAccumulator (; 16 ;) (type $_) i32.const 15 global.set $core/sound/accumulator/SoundAccumulator.channel1Sample i32.const 15 @@ -1736,7 +1730,7 @@ i32.const 0 global.set $core/sound/accumulator/SoundAccumulator.needToRemixSamples ) - (func $core/sound/sound/initializeSound (; 16 ;) (type $_) + (func $core/sound/sound/initializeSound (; 17 ;) (type $_) i32.const 0 global.set $core/sound/sound/Sound.currentCycles i32.const 0 @@ -1784,7 +1778,7 @@ call $core/memory/store/eightBitStoreIntoGBMemory call $core/sound/accumulator/initializeSoundAccumulator ) - (func $core/interrupts/interrupts/Interrupts.updateInterruptEnabled (; 17 ;) (type $i_) (param $0 i32) + (func $core/interrupts/interrupts/Interrupts.updateInterruptEnabled (; 18 ;) (type $i_) (param $0 i32) local.get $0 i32.const 1 i32.and @@ -1818,7 +1812,7 @@ local.get $0 global.set $core/interrupts/interrupts/Interrupts.interruptsEnabledValue ) - (func $core/interrupts/interrupts/Interrupts.updateInterruptRequested (; 18 ;) (type $i_) (param $0 i32) + (func $core/interrupts/interrupts/Interrupts.updateInterruptRequested (; 19 ;) (type $i_) (param $0 i32) local.get $0 i32.const 1 i32.and @@ -1852,7 +1846,7 @@ local.get $0 global.set $core/interrupts/interrupts/Interrupts.interruptsRequestedValue ) - (func $core/timers/timers/initializeTimers (; 19 ;) (type $_) + (func $core/timers/timers/initializeTimers (; 20 ;) (type $_) i32.const 0 global.set $core/timers/timers/Timers.currentCycles i32.const 0 @@ -1889,7 +1883,7 @@ i32.const 248 global.set $core/timers/timers/Timers.timerInputClock ) - (func $core/serial/serial/initializeSerial (; 20 ;) (type $_) + (func $core/serial/serial/initializeSerial (; 21 ;) (type $_) i32.const 0 global.set $core/serial/serial/Serial.currentCycles i32.const 0 @@ -1917,7 +1911,7 @@ global.set $core/serial/serial/Serial.transferStartFlag end ) - (func $core/core/initialize (; 21 ;) (type $_) + (func $core/core/initialize (; 22 ;) (type $_) (local $0 i32) (local $1 i32) i32.const 323 @@ -2017,7 +2011,7 @@ i32.const 0 global.set $core/execute/Execute.steps ) - (func $core/core/config (; 22 ;) (type $iiiiiiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) + (func $core/core/config (; 23 ;) (type $iiiiiiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) local.get $0 i32.const 0 i32.gt_s @@ -2120,7 +2114,7 @@ end call $core/core/initialize ) - (func $core/core/hasCoreStarted (; 23 ;) (type $i) (result i32) + (func $core/core/hasCoreStarted (; 24 ;) (type $i) (result i32) global.get $core/core/hasStarted if i32.const 1 @@ -2128,7 +2122,7 @@ end i32.const 0 ) - (func $core/cpu/cpu/Cpu.saveState (; 24 ;) (type $_) + (func $core/cpu/cpu/Cpu.saveState (; 25 ;) (type $_) i32.const 1024 global.get $core/cpu/cpu/Cpu.registerA i32.store8 @@ -2203,7 +2197,7 @@ i32.store8 end ) - (func $core/memory/memory/Memory.saveState (; 25 ;) (type $_) + (func $core/memory/memory/Memory.saveState (; 26 ;) (type $_) i32.const 1224 global.get $core/memory/memory/Memory.currentRomBank i32.store16 @@ -2281,7 +2275,7 @@ i32.store8 end ) - (func $core/timers/timers/Timers.saveState (; 26 ;) (type $_) + (func $core/timers/timers/Timers.saveState (; 27 ;) (type $_) i32.const 1274 global.get $core/timers/timers/Timers.currentCycles i32.store @@ -2312,7 +2306,7 @@ global.get $core/timers/timers/Timers.timerCounter call $core/memory/store/eightBitStoreIntoGBMemory ) - (func $core/sound/channel1/Channel1.saveState (; 27 ;) (type $_) + (func $core/sound/channel1/Channel1.saveState (; 28 ;) (type $_) global.get $core/sound/channel1/Channel1.isEnabled if i32.const 1374 @@ -2358,7 +2352,7 @@ global.get $core/sound/channel1/Channel1.sweepShadowFrequency i32.store16 ) - (func $core/sound/channel2/Channel2.saveState (; 28 ;) (type $_) + (func $core/sound/channel2/Channel2.saveState (; 29 ;) (type $_) global.get $core/sound/channel2/Channel2.isEnabled if i32.const 1424 @@ -2388,7 +2382,7 @@ global.get $core/sound/channel2/Channel2.waveFormPositionOnDuty i32.store8 ) - (func $core/sound/channel4/Channel4.saveState (; 29 ;) (type $_) + (func $core/sound/channel4/Channel4.saveState (; 30 ;) (type $_) global.get $core/sound/channel4/Channel4.isEnabled if i32.const 1524 @@ -2415,7 +2409,7 @@ global.get $core/sound/channel4/Channel4.linearFeedbackShiftRegister i32.store16 ) - (func $core/core/saveState (; 30 ;) (type $_) + (func $core/core/saveState (; 31 ;) (type $_) call $core/cpu/cpu/Cpu.saveState i32.const 1074 global.get $core/graphics/graphics/Graphics.scanlineCycleCounter @@ -2482,7 +2476,7 @@ i32.const 0 global.set $core/core/hasStarted ) - (func $core/cpu/cpu/Cpu.loadState (; 31 ;) (type $_) + (func $core/cpu/cpu/Cpu.loadState (; 32 ;) (type $_) i32.const 1024 i32.load8_u global.set $core/cpu/cpu/Cpu.registerA @@ -2561,7 +2555,7 @@ end global.set $core/cpu/cpu/Cpu.isStopped ) - (func $core/graphics/lcd/resetLcd (; 32 ;) (type $i_) (param $0 i32) + (func $core/graphics/lcd/resetLcd (; 33 ;) (type $i_) (param $0 i32) (local $1 i32) i32.const 0 global.set $core/graphics/graphics/Graphics.scanlineCycleCounter @@ -2606,7 +2600,7 @@ end end ) - (func $core/graphics/lcd/Lcd.updateLcdControl (; 33 ;) (type $i_) (param $0 i32) + (func $core/graphics/lcd/Lcd.updateLcdControl (; 34 ;) (type $i_) (param $0 i32) (local $1 i32) global.get $core/graphics/lcd/Lcd.enabled local.set $1 @@ -2680,7 +2674,7 @@ call $core/graphics/lcd/resetLcd end ) - (func $core/interrupts/interrupts/Interrupts.loadState (; 34 ;) (type $_) + (func $core/interrupts/interrupts/Interrupts.loadState (; 35 ;) (type $_) block $__inlined_func$core/memory/load/loadBooleanDirectlyFromWasmMemory (result i32) i32.const 1 i32.const 1124 @@ -2710,7 +2704,7 @@ call $core/memory/load/eightBitLoadFromGBMemory call $core/interrupts/interrupts/Interrupts.updateInterruptRequested ) - (func $core/memory/memory/Memory.loadState (; 35 ;) (type $_) + (func $core/memory/memory/Memory.loadState (; 36 ;) (type $_) i32.const 1224 i32.load16_u global.set $core/memory/memory/Memory.currentRomBank @@ -2795,7 +2789,7 @@ end global.set $core/memory/memory/Memory.isMBC5 ) - (func $core/timers/timers/Timers.loadState (; 36 ;) (type $_) + (func $core/timers/timers/Timers.loadState (; 37 ;) (type $_) i32.const 1274 i32.load global.set $core/timers/timers/Timers.currentCycles @@ -2834,11 +2828,11 @@ call $core/memory/load/eightBitLoadFromGBMemory global.set $core/timers/timers/Timers.timerInputClock ) - (func $core/sound/sound/clearAudioBuffer (; 37 ;) (type $_) + (func $core/sound/sound/clearAudioBuffer (; 38 ;) (type $_) i32.const 0 global.set $core/sound/sound/Sound.audioQueueIndex ) - (func $core/sound/channel1/Channel1.loadState (; 38 ;) (type $_) + (func $core/sound/channel1/Channel1.loadState (; 39 ;) (type $_) block $__inlined_func$core/memory/load/loadBooleanDirectlyFromWasmMemory (result i32) i32.const 1 i32.const 1374 @@ -2886,7 +2880,7 @@ i32.load16_u global.set $core/sound/channel1/Channel1.sweepShadowFrequency ) - (func $core/sound/channel2/Channel2.loadState (; 39 ;) (type $_) + (func $core/sound/channel2/Channel2.loadState (; 40 ;) (type $_) block $__inlined_func$core/memory/load/loadBooleanDirectlyFromWasmMemory (result i32) i32.const 1 i32.const 1424 @@ -2917,7 +2911,7 @@ i32.load8_u global.set $core/sound/channel2/Channel2.waveFormPositionOnDuty ) - (func $core/sound/channel4/Channel4.loadState (; 40 ;) (type $_) + (func $core/sound/channel4/Channel4.loadState (; 41 ;) (type $_) block $__inlined_func$core/memory/load/loadBooleanDirectlyFromWasmMemory (result i32) i32.const 1 i32.const 1524 @@ -2945,7 +2939,7 @@ i32.load16_u global.set $core/sound/channel4/Channel4.linearFeedbackShiftRegister ) - (func $core/core/loadState (; 41 ;) (type $_) + (func $core/core/loadState (; 42 ;) (type $_) (local $0 i32) call $core/cpu/cpu/Cpu.loadState i32.const 1074 @@ -3030,7 +3024,7 @@ i32.const 0 global.set $core/execute/Execute.steps ) - (func $core/core/isGBC (; 42 ;) (type $i) (result i32) + (func $core/core/isGBC (; 43 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.GBCEnabled if i32.const 1 @@ -3038,16 +3032,16 @@ end i32.const 0 ) - (func $core/execute/getStepsPerStepSet (; 43 ;) (type $i) (result i32) + (func $core/execute/getStepsPerStepSet (; 44 ;) (type $i) (result i32) global.get $core/execute/Execute.stepsPerStepSet ) - (func $core/execute/getStepSets (; 44 ;) (type $i) (result i32) + (func $core/execute/getStepSets (; 45 ;) (type $i) (result i32) global.get $core/execute/Execute.stepSets ) - (func $core/execute/getSteps (; 45 ;) (type $i) (result i32) + (func $core/execute/getSteps (; 46 ;) (type $i) (result i32) global.get $core/execute/Execute.steps ) - (func $core/graphics/backgroundWindow/drawLineOfTileFromTileCache (; 46 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $core/graphics/backgroundWindow/drawLineOfTileFromTileCache (; 47 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -3244,7 +3238,7 @@ end local.get $8 ) - (func $core/graphics/tiles/getTileDataAddress (; 47 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/graphics/tiles/getTileDataAddress (; 48 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.const 34816 @@ -3276,7 +3270,7 @@ local.get $0 i32.add ) - (func $core/graphics/palette/getRgbColorFromPalette (; 48 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $core/graphics/palette/getRgbColorFromPalette (; 49 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 3 i32.shl @@ -3318,7 +3312,7 @@ i32.shl i32.or ) - (func $core/graphics/palette/getColorizedGbHexColorFromPalette (; 49 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/graphics/palette/getColorizedGbHexColorFromPalette (; 50 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $core/memory/load/eightBitLoadFromGBMemory local.get $0 @@ -3417,7 +3411,7 @@ end local.get $1 ) - (func $core/graphics/tiles/drawPixelsFromLineOfTile (; 50 ;) (type $FUNCSIG$iiiiiiiiiiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (result i32) + (func $core/graphics/tiles/drawPixelsFromLineOfTile (; 51 ;) (type $FUNCSIG$iiiiiiiiiiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (result i32) (local $13 i32) (local $14 i32) (local $15 i32) @@ -3656,7 +3650,7 @@ end local.get $13 ) - (func $core/graphics/backgroundWindow/drawLineOfTileFromTileId (; 51 ;) (type $iiiiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) + (func $core/graphics/backgroundWindow/drawLineOfTileFromTileId (; 52 ;) (type $iiiiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) (local $7 i32) (local $8 i32) (local $9 i32) @@ -3727,7 +3721,7 @@ i32.const -1 call $core/graphics/tiles/drawPixelsFromLineOfTile ) - (func $core/graphics/backgroundWindow/drawColorPixelFromTileId (; 52 ;) (type $iiiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) + (func $core/graphics/backgroundWindow/drawColorPixelFromTileId (; 53 ;) (type $iiiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) local.get $5 local.get $6 call $core/graphics/tiles/getTileDataAddress @@ -3888,7 +3882,7 @@ select i32.store8 ) - (func $core/graphics/backgroundWindow/drawMonochromePixelFromTileId (; 53 ;) (type $iiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $core/graphics/backgroundWindow/drawMonochromePixelFromTileId (; 54 ;) (type $iiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) local.get $4 local.get $5 call $core/graphics/tiles/getTileDataAddress @@ -3990,7 +3984,7 @@ i32.and i32.store8 ) - (func $core/graphics/backgroundWindow/drawBackgroundWindowScanline (; 54 ;) (type $iiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $core/graphics/backgroundWindow/drawBackgroundWindowScanline (; 55 ;) (type $iiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -4115,7 +4109,7 @@ end end ) - (func $core/graphics/backgroundWindow/renderBackground (; 55 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) + (func $core/graphics/backgroundWindow/renderBackground (; 56 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $core/graphics/graphics/Graphics.scrollX local.set $3 @@ -4139,7 +4133,7 @@ local.get $3 call $core/graphics/backgroundWindow/drawBackgroundWindowScanline ) - (func $core/graphics/backgroundWindow/renderWindow (; 56 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) + (func $core/graphics/backgroundWindow/renderWindow (; 57 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4169,7 +4163,7 @@ local.get $5 call $core/graphics/backgroundWindow/drawBackgroundWindowScanline ) - (func $core/graphics/sprites/renderSprites (; 57 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/graphics/sprites/renderSprites (; 58 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4583,7 +4577,7 @@ unreachable end ) - (func $core/graphics/graphics/_drawScanline (; 58 ;) (type $i_) (param $0 i32) + (func $core/graphics/graphics/_drawScanline (; 59 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) i32.const 34816 @@ -4627,7 +4621,7 @@ call $core/graphics/sprites/renderSprites end ) - (func $core/graphics/graphics/_renderEntireFrame (; 59 ;) (type $_) + (func $core/graphics/graphics/_renderEntireFrame (; 60 ;) (type $_) (local $0 i32) block $break|0 loop $repeat|0 @@ -4649,7 +4643,7 @@ unreachable end ) - (func $core/graphics/priority/clearPriorityMap (; 60 ;) (type $_) + (func $core/graphics/priority/clearPriorityMap (; 61 ;) (type $_) (local $0 i32) (local $1 i32) loop $repeat|0 @@ -4689,7 +4683,7 @@ end end ) - (func $core/interrupts/interrupts/_requestInterrupt (; 61 ;) (type $i_) (param $0 i32) + (func $core/interrupts/interrupts/_requestInterrupt (; 62 ;) (type $i_) (param $0 i32) (local $1 i32) i32.const 65295 call $core/memory/load/eightBitLoadFromGBMemory @@ -4703,13 +4697,13 @@ local.get $1 call $core/memory/store/eightBitStoreIntoGBMemory ) - (func $core/interrupts/interrupts/requestLcdInterrupt (; 62 ;) (type $_) + (func $core/interrupts/interrupts/requestLcdInterrupt (; 63 ;) (type $_) i32.const 1 global.set $core/interrupts/interrupts/Interrupts.isLcdInterruptRequested i32.const 1 call $core/interrupts/interrupts/_requestInterrupt ) - (func $core/sound/channel1/Channel1.setFrequency (; 63 ;) (type $i_) (param $0 i32) + (func $core/sound/channel1/Channel1.setFrequency (; 64 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) i32.const 65300 @@ -4742,7 +4736,7 @@ i32.or global.set $core/sound/channel1/Channel1.frequency ) - (func $core/sound/channel1/calculateSweepAndCheckOverflow (; 64 ;) (type $_) + (func $core/sound/channel1/calculateSweepAndCheckOverflow (; 65 ;) (type $_) (local $0 i32) (local $1 i32) global.get $core/sound/channel1/Channel1.sweepShadowFrequency @@ -4797,7 +4791,7 @@ global.set $core/sound/channel1/Channel1.isEnabled end ) - (func $core/sound/channel1/Channel1.updateSweep (; 65 ;) (type $_) + (func $core/sound/channel1/Channel1.updateSweep (; 66 ;) (type $_) global.get $core/sound/channel1/Channel1.sweepCounter i32.const 1 i32.sub @@ -4819,7 +4813,7 @@ end end ) - (func $core/sound/channel1/Channel1.updateEnvelope (; 66 ;) (type $_) + (func $core/sound/channel1/Channel1.updateEnvelope (; 67 ;) (type $_) (local $0 i32) global.get $core/sound/channel1/Channel1.envelopeCounter i32.const 1 @@ -4865,7 +4859,7 @@ end end ) - (func $core/sound/channel2/Channel2.updateEnvelope (; 67 ;) (type $_) + (func $core/sound/channel2/Channel2.updateEnvelope (; 68 ;) (type $_) (local $0 i32) global.get $core/sound/channel2/Channel2.envelopeCounter i32.const 1 @@ -4911,7 +4905,7 @@ end end ) - (func $core/sound/channel4/Channel4.updateEnvelope (; 68 ;) (type $_) + (func $core/sound/channel4/Channel4.updateEnvelope (; 69 ;) (type $_) (local $0 i32) global.get $core/sound/channel4/Channel4.envelopeCounter i32.const 1 @@ -4957,7 +4951,7 @@ end end ) - (func $core/sound/sound/updateFrameSequencer (; 69 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/sound/updateFrameSequencer (; 70 ;) (type $ii) (param $0 i32) (result i32) global.get $core/sound/sound/Sound.frameSequenceCycleCounter local.get $0 i32.add @@ -5359,7 +5353,7 @@ end i32.const 0 ) - (func $core/sound/accumulator/didChannelDacChange (; 70 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/accumulator/didChannelDacChange (; 71 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $break|0 block $case3|0 @@ -5434,7 +5428,7 @@ end i32.const 0 ) - (func $core/sound/duty/isDutyCycleClockPositiveOrNegativeForWaveform (; 71 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/sound/duty/isDutyCycleClockPositiveOrNegativeForWaveform (; 72 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) block $case3|0 block $case2|0 block $case1|0 @@ -5487,7 +5481,7 @@ i32.const 0 i32.ne ) - (func $core/sound/channel1/Channel1.getSample (; 72 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/channel1/Channel1.getSample (; 73 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) global.get $core/sound/channel1/Channel1.frequencyTimer local.get $0 @@ -5558,7 +5552,7 @@ i32.const 15 i32.add ) - (func $core/sound/channel2/Channel2.getSample (; 73 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/channel2/Channel2.getSample (; 74 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) global.get $core/sound/channel2/Channel2.frequencyTimer local.get $0 @@ -5629,7 +5623,7 @@ i32.const 15 i32.add ) - (func $core/sound/channel3/Channel3.getSample (; 74 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/channel3/Channel3.getSample (; 75 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) global.get $core/sound/channel3/Channel3.frequencyTimer @@ -5781,7 +5775,7 @@ i32.const 15 i32.add ) - (func $core/sound/channel4/Channel4.getSample (; 75 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/channel4/Channel4.getSample (; 76 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) global.get $core/sound/channel4/Channel4.frequencyTimer local.get $0 @@ -5870,7 +5864,7 @@ i32.const 15 i32.add ) - (func $core/sound/sound/getSampleAsUnsignedByte (; 76 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/sound/sound/getSampleAsUnsignedByte (; 77 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 60 i32.eq @@ -5896,7 +5890,7 @@ i32.const 47244 i32.div_s ) - (func $core/sound/sound/mixChannelSamples (; 77 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $core/sound/sound/mixChannelSamples (; 78 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) i32.const 0 global.set $core/sound/accumulator/SoundAccumulator.mixerVolumeChanged @@ -5987,7 +5981,7 @@ i32.shl i32.or ) - (func $core/sound/accumulator/accumulateSound (; 78 ;) (type $i_) (param $0 i32) + (func $core/sound/accumulator/accumulateSound (; 79 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6228,7 +6222,7 @@ end end ) - (func $core/sound/sound/calculateSound (; 79 ;) (type $i_) (param $0 i32) + (func $core/sound/sound/calculateSound (; 80 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6441,7 +6435,7 @@ end end ) - (func $core/sound/sound/updateSound (; 80 ;) (type $i_) (param $0 i32) + (func $core/sound/sound/updateSound (; 81 ;) (type $i_) (param $0 i32) (local $1 i32) local.get $0 call $core/sound/sound/updateFrameSequencer @@ -6459,7 +6453,7 @@ call $core/sound/sound/calculateSound end ) - (func $core/sound/sound/batchProcessAudio (; 81 ;) (type $_) + (func $core/sound/sound/batchProcessAudio (; 82 ;) (type $_) global.get $core/sound/sound/Sound.currentCycles global.get $core/cpu/cpu/Cpu.GBCDoubleSpeed if (result i32) @@ -6501,7 +6495,7 @@ end end ) - (func $core/sound/registers/SoundRegisterReadTraps (; 82 ;) (type $ii) (param $0 i32) (result i32) + (func $core/sound/registers/SoundRegisterReadTraps (; 83 ;) (type $ii) (param $0 i32) (result i32) local.get $0 i32.const 65318 i32.eq @@ -6518,7 +6512,7 @@ end i32.const -1 ) - (func $core/joypad/joypad/getJoypadState (; 83 ;) (type $i) (result i32) + (func $core/joypad/joypad/getJoypadState (; 84 ;) (type $i) (result i32) (local $0 i32) global.get $core/joypad/joypad/Joypad.joypadRegisterFlipped local.set $0 @@ -6605,7 +6599,7 @@ i32.const 240 i32.or ) - (func $core/memory/readTraps/checkReadTraps (; 84 ;) (type $ii) (param $0 i32) (result i32) + (func $core/memory/readTraps/checkReadTraps (; 85 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 32768 @@ -6781,7 +6775,7 @@ end i32.const -1 ) - (func $core/memory/load/eightBitLoadFromGBMemoryWithTraps (; 85 ;) (type $ii) (param $0 i32) (result i32) + (func $core/memory/load/eightBitLoadFromGBMemoryWithTraps (; 86 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) global.get $core/debug/breakpoints/Breakpoints.readGbMemory local.get $0 @@ -6804,7 +6798,7 @@ i32.const 255 i32.and ) - (func $core/memory/banking/handleBanking (; 86 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/memory/banking/handleBanking (; 87 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) global.get $core/memory/memory/Memory.isRomOnly if @@ -6986,7 +6980,7 @@ end end ) - (func $core/sound/channel1/Channel1.updateNRx2 (; 87 ;) (type $i_) (param $0 i32) + (func $core/sound/channel1/Channel1.updateNRx2 (; 88 ;) (type $i_) (param $0 i32) local.get $0 i32.const 4 i32.shr_s @@ -7010,7 +7004,7 @@ i32.gt_s global.set $core/sound/channel1/Channel1.isDacEnabled ) - (func $core/sound/channel2/Channel2.updateNRx2 (; 88 ;) (type $i_) (param $0 i32) + (func $core/sound/channel2/Channel2.updateNRx2 (; 89 ;) (type $i_) (param $0 i32) local.get $0 i32.const 4 i32.shr_s @@ -7034,7 +7028,7 @@ i32.gt_s global.set $core/sound/channel2/Channel2.isDacEnabled ) - (func $core/sound/channel4/Channel4.updateNRx2 (; 89 ;) (type $i_) (param $0 i32) + (func $core/sound/channel4/Channel4.updateNRx2 (; 90 ;) (type $i_) (param $0 i32) local.get $0 i32.const 4 i32.shr_s @@ -7058,7 +7052,7 @@ i32.gt_s global.set $core/sound/channel4/Channel4.isDacEnabled ) - (func $core/sound/channel4/Channel4.updateNRx3 (; 90 ;) (type $i_) (param $0 i32) + (func $core/sound/channel4/Channel4.updateNRx3 (; 91 ;) (type $i_) (param $0 i32) (local $1 i32) local.get $0 i32.const 4 @@ -7122,7 +7116,7 @@ global.set $core/sound/channel4/Channel4.divisor end ) - (func $core/sound/channel1/Channel1.trigger (; 91 ;) (type $_) + (func $core/sound/channel1/Channel1.trigger (; 92 ;) (type $_) (local $0 i32) i32.const 1 global.set $core/sound/channel1/Channel1.isEnabled @@ -7185,7 +7179,7 @@ global.set $core/sound/channel1/Channel1.isEnabled end ) - (func $core/sound/channel2/Channel2.trigger (; 92 ;) (type $_) + (func $core/sound/channel2/Channel2.trigger (; 93 ;) (type $_) i32.const 1 global.set $core/sound/channel2/Channel2.isEnabled global.get $core/sound/channel2/Channel2.lengthCounter @@ -7218,7 +7212,7 @@ global.set $core/sound/channel2/Channel2.isEnabled end ) - (func $core/sound/channel3/Channel3.trigger (; 93 ;) (type $_) + (func $core/sound/channel3/Channel3.trigger (; 94 ;) (type $_) i32.const 1 global.set $core/sound/channel3/Channel3.isEnabled global.get $core/sound/channel3/Channel3.lengthCounter @@ -7249,7 +7243,7 @@ global.set $core/sound/channel3/Channel3.isEnabled end ) - (func $core/sound/channel4/Channel4.trigger (; 94 ;) (type $_) + (func $core/sound/channel4/Channel4.trigger (; 95 ;) (type $_) (local $0 i32) i32.const 1 global.set $core/sound/channel4/Channel4.isEnabled @@ -7282,7 +7276,7 @@ global.set $core/sound/channel4/Channel4.isEnabled end ) - (func $core/sound/sound/Sound.updateNR51 (; 95 ;) (type $i_) (param $0 i32) + (func $core/sound/sound/Sound.updateNR51 (; 96 ;) (type $i_) (param $0 i32) local.get $0 i32.const 128 i32.and @@ -7332,7 +7326,7 @@ i32.ne global.set $core/sound/sound/Sound.NR51IsChannel1EnabledOnRightOutput ) - (func $core/sound/registers/SoundRegisterWriteTraps (; 96 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/sound/registers/SoundRegisterWriteTraps (; 97 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.const 65318 @@ -7657,7 +7651,7 @@ end i32.const 1 ) - (func $core/memory/dma/startDmaTransfer (; 97 ;) (type $i_) (param $0 i32) + (func $core/memory/dma/startDmaTransfer (; 98 ;) (type $i_) (param $0 i32) (local $1 i32) local.get $0 i32.const 8 @@ -7689,7 +7683,7 @@ i32.const 644 global.set $core/memory/memory/Memory.DMACycles ) - (func $core/memory/dma/getHdmaSourceFromMemory (; 98 ;) (type $i) (result i32) + (func $core/memory/dma/getHdmaSourceFromMemory (; 99 ;) (type $i) (result i32) (local $0 i32) global.get $core/memory/memory/Memory.memoryLocationHdmaSourceHigh call $core/memory/load/eightBitLoadFromGBMemory @@ -7707,7 +7701,7 @@ i32.const 65520 i32.and ) - (func $core/memory/dma/getHdmaDestinationFromMemory (; 99 ;) (type $i) (result i32) + (func $core/memory/dma/getHdmaDestinationFromMemory (; 100 ;) (type $i) (result i32) (local $0 i32) global.get $core/memory/memory/Memory.memoryLocationHdmaDestinationHigh call $core/memory/load/eightBitLoadFromGBMemory @@ -7727,7 +7721,7 @@ i32.const 32768 i32.add ) - (func $core/memory/dma/startHdmaTransfer (; 100 ;) (type $i_) (param $0 i32) + (func $core/memory/dma/startHdmaTransfer (; 101 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7795,7 +7789,7 @@ call $core/memory/store/eightBitStoreIntoGBMemory end ) - (func $core/graphics/palette/writeColorPaletteToMemory (; 101 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/graphics/palette/writeColorPaletteToMemory (; 102 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7851,7 +7845,7 @@ end end ) - (func $core/timers/timers/_getTimerCounterMaskBit (; 102 ;) (type $ii) (param $0 i32) (result i32) + (func $core/timers/timers/_getTimerCounterMaskBit (; 103 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $break|0 block $case3|0 @@ -7888,7 +7882,7 @@ end i32.const 0 ) - (func $core/timers/timers/_checkDividerRegisterFallingEdgeDetector (; 103 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/timers/timers/_checkDividerRegisterFallingEdgeDetector (; 104 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 1 global.get $core/timers/timers/Timers.timerInputClock @@ -7916,7 +7910,7 @@ end i32.const 0 ) - (func $core/timers/timers/updateTimers (; 104 ;) (type $i_) (param $0 i32) + (func $core/timers/timers/updateTimers (; 105 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) loop $continue|0 @@ -7986,13 +7980,13 @@ end end ) - (func $core/timers/timers/batchProcessTimers (; 105 ;) (type $_) + (func $core/timers/timers/batchProcessTimers (; 106 ;) (type $_) global.get $core/timers/timers/Timers.currentCycles call $core/timers/timers/updateTimers i32.const 0 global.set $core/timers/timers/Timers.currentCycles ) - (func $core/timers/timers/Timers.updateDividerRegister (; 106 ;) (type $FUNCSIG$v) + (func $core/timers/timers/Timers.updateDividerRegister (; 107 ;) (type $FUNCSIG$v) (local $0 i32) global.get $core/timers/timers/Timers.dividerRegister local.set $0 @@ -8025,7 +8019,7 @@ end end ) - (func $core/timers/timers/Timers.updateTimerControl (; 107 ;) (type $i_) (param $0 i32) + (func $core/timers/timers/Timers.updateTimerControl (; 108 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) global.get $core/timers/timers/Timers.timerEnabled @@ -8094,7 +8088,7 @@ local.get $2 global.set $core/timers/timers/Timers.timerInputClock ) - (func $core/memory/writeTraps/checkWriteTraps (; 108 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/memory/writeTraps/checkWriteTraps (; 109 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $folding-inner1 block $folding-inner0 @@ -8516,7 +8510,7 @@ end i32.const 1 ) - (func $core/memory/store/eightBitStoreIntoGBMemoryWithTraps (; 109 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/memory/store/eightBitStoreIntoGBMemoryWithTraps (; 110 ;) (type $ii_) (param $0 i32) (param $1 i32) global.get $core/debug/breakpoints/Breakpoints.writeGbMemory local.get $0 i32.eq @@ -8533,7 +8527,7 @@ call $core/memory/store/eightBitStoreIntoGBMemory end ) - (func $core/memory/dma/hdmaTransfer (; 110 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) + (func $core/memory/dma/hdmaTransfer (; 111 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8588,7 +8582,7 @@ i32.add global.set $core/memory/memory/Memory.DMACycles ) - (func $core/memory/dma/updateHblankHdma (; 111 ;) (type $_) + (func $core/memory/dma/updateHblankHdma (; 112 ;) (type $_) (local $0 i32) global.get $core/memory/memory/Memory.isHblankHdmaActive i32.eqz @@ -8639,7 +8633,7 @@ call $core/memory/store/eightBitStoreIntoGBMemory end ) - (func $core/graphics/lcd/checkCoincidence (; 112 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/graphics/lcd/checkCoincidence (; 113 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) global.get $core/graphics/lcd/Lcd.coincidenceCompare @@ -8682,7 +8676,7 @@ end local.get $1 ) - (func $core/graphics/lcd/setLcdStatus (; 113 ;) (type $_) + (func $core/graphics/lcd/setLcdStatus (; 114 ;) (type $_) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8825,7 +8819,7 @@ end end ) - (func $core/graphics/graphics/updateGraphics (; 114 ;) (type $i_) (param $0 i32) + (func $core/graphics/graphics/updateGraphics (; 115 ;) (type $i_) (param $0 i32) global.get $core/graphics/lcd/Lcd.enabled if global.get $core/graphics/graphics/Graphics.scanlineCycleCounter @@ -8924,7 +8918,7 @@ end call $core/graphics/lcd/setLcdStatus ) - (func $core/graphics/graphics/batchProcessGraphics (; 115 ;) (type $_) + (func $core/graphics/graphics/batchProcessGraphics (; 116 ;) (type $_) global.get $core/graphics/graphics/Graphics.currentCycles block $__inlined_func$core/graphics/graphics/Graphics.MAX_CYCLES_PER_SCANLINE (result i32) global.get $core/cpu/cpu/Cpu.GBCDoubleSpeed @@ -9022,7 +9016,7 @@ end end ) - (func $core/serial/serial/_checkFallingEdgeDetector (; 116 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/serial/serial/_checkFallingEdgeDetector (; 117 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 1 global.get $core/serial/serial/Serial.isClockSpeedFast @@ -9054,7 +9048,7 @@ end i32.const 0 ) - (func $core/serial/serial/updateSerial (; 117 ;) (type $i_) (param $0 i32) + (func $core/serial/serial/updateSerial (; 118 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) global.get $core/serial/serial/Serial.transferStartFlag @@ -9127,7 +9121,7 @@ end end ) - (func $core/cycles/syncCycles (; 118 ;) (type $i_) (param $0 i32) + (func $core/cycles/syncCycles (; 119 ;) (type $i_) (param $0 i32) global.get $core/memory/memory/Memory.DMACycles i32.const 0 i32.gt_s @@ -9199,13 +9193,13 @@ global.set $core/cycles/Cycles.cycles end ) - (func $core/cpu/opcodes/getDataByteOne (; 119 ;) (type $i) (result i32) + (func $core/cpu/opcodes/getDataByteOne (; 120 ;) (type $i) (result i32) i32.const 4 call $core/cycles/syncCycles global.get $core/cpu/cpu/Cpu.programCounter call $core/memory/load/eightBitLoadFromGBMemory ) - (func $core/cpu/opcodes/getConcatenatedDataByte (; 120 ;) (type $i) (result i32) + (func $core/cpu/opcodes/getConcatenatedDataByte (; 121 ;) (type $i) (result i32) (local $0 i32) i32.const 4 call $core/cycles/syncCycles @@ -9226,14 +9220,14 @@ i32.shl i32.or ) - (func $core/cpu/opcodes/eightBitStoreSyncCycles (; 121 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/cpu/opcodes/eightBitStoreSyncCycles (; 122 ;) (type $ii_) (param $0 i32) (param $1 i32) i32.const 4 call $core/cycles/syncCycles local.get $0 local.get $1 call $core/memory/store/eightBitStoreIntoGBMemoryWithTraps ) - (func $core/cpu/flags/setFlagBit (; 122 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/cpu/flags/setFlagBit (; 123 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 1 local.get $0 @@ -9261,13 +9255,13 @@ end global.get $core/cpu/cpu/Cpu.registerF ) - (func $core/cpu/flags/setHalfCarryFlag (; 123 ;) (type $i_) (param $0 i32) + (func $core/cpu/flags/setHalfCarryFlag (; 124 ;) (type $i_) (param $0 i32) i32.const 5 local.get $0 call $core/cpu/flags/setFlagBit drop ) - (func $core/cpu/flags/checkAndSetEightBitHalfCarryFlag (; 124 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/cpu/flags/checkAndSetEightBitHalfCarryFlag (; 125 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.const 0 @@ -9313,25 +9307,25 @@ end end ) - (func $core/cpu/flags/setZeroFlag (; 125 ;) (type $i_) (param $0 i32) + (func $core/cpu/flags/setZeroFlag (; 126 ;) (type $i_) (param $0 i32) i32.const 7 local.get $0 call $core/cpu/flags/setFlagBit drop ) - (func $core/cpu/flags/setSubtractFlag (; 126 ;) (type $i_) (param $0 i32) + (func $core/cpu/flags/setSubtractFlag (; 127 ;) (type $i_) (param $0 i32) i32.const 6 local.get $0 call $core/cpu/flags/setFlagBit drop ) - (func $core/cpu/flags/setCarryFlag (; 127 ;) (type $i_) (param $0 i32) + (func $core/cpu/flags/setCarryFlag (; 128 ;) (type $i_) (param $0 i32) i32.const 4 local.get $0 call $core/cpu/flags/setFlagBit drop ) - (func $core/memory/store/sixteenBitStoreIntoGBMemoryWithTraps (; 128 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/memory/store/sixteenBitStoreIntoGBMemoryWithTraps (; 129 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -9364,14 +9358,14 @@ call $core/memory/store/eightBitStoreIntoGBMemory end ) - (func $core/cpu/opcodes/sixteenBitStoreSyncCycles (; 129 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/cpu/opcodes/sixteenBitStoreSyncCycles (; 130 ;) (type $ii_) (param $0 i32) (param $1 i32) i32.const 8 call $core/cycles/syncCycles local.get $0 local.get $1 call $core/memory/store/sixteenBitStoreIntoGBMemoryWithTraps ) - (func $core/cpu/flags/checkAndSetSixteenBitFlagsAddOverflow (; 130 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) + (func $core/cpu/flags/checkAndSetSixteenBitFlagsAddOverflow (; 131 ;) (type $iii_) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 if local.get $1 @@ -9438,13 +9432,13 @@ end end ) - (func $core/cpu/opcodes/eightBitLoadSyncCycles (; 131 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/eightBitLoadSyncCycles (; 132 ;) (type $ii) (param $0 i32) (result i32) i32.const 4 call $core/cycles/syncCycles local.get $0 call $core/memory/load/eightBitLoadFromGBMemoryWithTraps ) - (func $core/cpu/opcodes/handleOpcode0x (; 132 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode0x (; 133 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner4 block $folding-inner3 @@ -9795,53 +9789,7 @@ global.set $core/cpu/cpu/Cpu.registerC i32.const 8 ) - (func $core/portable/portable/i8Portable (; 133 ;) (type $ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $1 - i32.const 128 - i32.and - if - i32.const 256 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.sub - i32.const -1 - i32.mul - local.set $1 - end - local.get $1 - ) - (func $core/cpu/instructions/relativeJump (; 134 ;) (type $i_) (param $0 i32) - (local $1 i32) - local.get $0 - call $core/portable/portable/i8Portable - local.set $1 - global.get $core/cpu/cpu/Cpu.programCounter - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.const 65535 - i32.and - global.set $core/cpu/cpu/Cpu.programCounter - global.get $core/cpu/cpu/Cpu.programCounter - i32.const 1 - i32.add - i32.const 65535 - i32.and - global.set $core/cpu/cpu/Cpu.programCounter - ) - (func $core/cpu/opcodes/handleOpcode1x (; 135 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode1x (; 134 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner3 block $folding-inner2 @@ -10039,7 +9987,23 @@ br $folding-inner1 end call $core/cpu/opcodes/getDataByteOne - call $core/cpu/instructions/relativeJump + local.set $0 + global.get $core/cpu/cpu/Cpu.programCounter + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.const 65535 + i32.and + global.set $core/cpu/cpu/Cpu.programCounter + global.get $core/cpu/cpu/Cpu.programCounter + i32.const 1 + i32.add + i32.const 65535 + i32.and + global.set $core/cpu/cpu/Cpu.programCounter i32.const 8 return end @@ -10230,7 +10194,7 @@ global.set $core/cpu/cpu/Cpu.registerE i32.const 8 ) - (func $core/cpu/opcodes/handleOpcode2x (; 136 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode2x (; 135 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner1 block $folding-inner0 @@ -10264,17 +10228,27 @@ i32.shr_u i32.const 1 i32.and + i32.eqz if + call $core/cpu/opcodes/getDataByteOne + local.set $0 global.get $core/cpu/cpu/Cpu.programCounter - i32.const 1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.add i32.const 65535 i32.and global.set $core/cpu/cpu/Cpu.programCounter - else - call $core/cpu/opcodes/getDataByteOne - call $core/cpu/instructions/relativeJump end + global.get $core/cpu/cpu/Cpu.programCounter + i32.const 1 + i32.add + i32.const 65535 + i32.and + global.set $core/cpu/cpu/Cpu.programCounter i32.const 8 return end @@ -10405,6 +10379,7 @@ i32.const 6 i32.const 0 global.get $core/cpu/cpu/Cpu.registerF + local.tee $0 i32.const 5 i32.shr_u i32.const 1 @@ -10412,12 +10387,11 @@ i32.const 0 i32.gt_u select - local.set $1 - local.get $1 + local.tee $1 i32.const 96 i32.or local.get $1 - global.get $core/cpu/cpu/Cpu.registerF + local.get $0 i32.const 4 i32.shr_u i32.const 1 @@ -10426,7 +10400,7 @@ i32.gt_u select local.set $1 - global.get $core/cpu/cpu/Cpu.registerF + local.get $0 i32.const 6 i32.shr_u i32.const 1 @@ -10451,7 +10425,8 @@ i32.const 9 i32.gt_u select - local.tee $1 + local.set $1 + local.get $1 i32.const 96 i32.or local.get $1 @@ -10498,15 +10473,24 @@ i32.gt_u if call $core/cpu/opcodes/getDataByteOne - call $core/cpu/instructions/relativeJump - else + local.set $0 global.get $core/cpu/cpu/Cpu.programCounter - i32.const 1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.add i32.const 65535 i32.and global.set $core/cpu/cpu/Cpu.programCounter end + global.get $core/cpu/cpu/Cpu.programCounter + i32.const 1 + i32.add + i32.const 65535 + i32.and + global.set $core/cpu/cpu/Cpu.programCounter i32.const 8 return end @@ -10674,7 +10658,7 @@ end i32.const 4 ) - (func $core/cpu/opcodes/handleOpcode3x (; 137 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode3x (; 136 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner3 block $folding-inner2 @@ -10710,17 +10694,27 @@ i32.shr_u i32.const 1 i32.and + i32.eqz if + call $core/cpu/opcodes/getDataByteOne + local.set $0 global.get $core/cpu/cpu/Cpu.programCounter - i32.const 1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.add i32.const 65535 i32.and global.set $core/cpu/cpu/Cpu.programCounter - else - call $core/cpu/opcodes/getDataByteOne - call $core/cpu/instructions/relativeJump end + global.get $core/cpu/cpu/Cpu.programCounter + i32.const 1 + i32.add + i32.const 65535 + i32.and + global.set $core/cpu/cpu/Cpu.programCounter i32.const 8 return end @@ -10853,15 +10847,24 @@ i32.eq if call $core/cpu/opcodes/getDataByteOne - call $core/cpu/instructions/relativeJump - else + local.set $0 global.get $core/cpu/cpu/Cpu.programCounter - i32.const 1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.add i32.const 65535 i32.and global.set $core/cpu/cpu/Cpu.programCounter end + global.get $core/cpu/cpu/Cpu.programCounter + i32.const 1 + i32.add + i32.const 65535 + i32.and + global.set $core/cpu/cpu/Cpu.programCounter i32.const 8 return end @@ -11027,7 +11030,7 @@ end i32.const 4 ) - (func $core/cpu/opcodes/handleOpcode4x (; 138 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode4x (; 137 ;) (type $ii) (param $0 i32) (result i32) block $folding-inner0 block $break|0 block $case15|0 @@ -11145,7 +11148,7 @@ end i32.const 4 ) - (func $core/cpu/opcodes/handleOpcode5x (; 139 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode5x (; 138 ;) (type $ii) (param $0 i32) (result i32) block $folding-inner0 block $break|0 block $case15|0 @@ -11260,7 +11263,7 @@ end i32.const 4 ) - (func $core/cpu/opcodes/handleOpcode6x (; 140 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode6x (; 139 ;) (type $ii) (param $0 i32) (result i32) block $folding-inner0 block $break|0 block $case15|0 @@ -11375,7 +11378,7 @@ end i32.const 4 ) - (func $core/cpu/opcodes/handleOpcode7x (; 141 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode7x (; 140 ;) (type $ii) (param $0 i32) (result i32) block $folding-inner0 block $break|0 block $case14|0 @@ -11570,7 +11573,7 @@ end i32.const 4 ) - (func $core/cpu/flags/checkAndSetEightBitCarryFlag (; 142 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/cpu/flags/checkAndSetEightBitCarryFlag (; 141 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.const 0 @@ -11614,7 +11617,7 @@ end end ) - (func $core/cpu/instructions/addARegister (; 143 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/addARegister (; 142 ;) (type $i_) (param $0 i32) (local $1 i32) global.get $core/cpu/cpu/Cpu.registerA local.get $0 @@ -11642,7 +11645,7 @@ i32.const 0 call $core/cpu/flags/setSubtractFlag ) - (func $core/cpu/instructions/addAThroughCarryRegister (; 144 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/addAThroughCarryRegister (; 143 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) global.get $core/cpu/cpu/Cpu.registerA @@ -11707,7 +11710,7 @@ i32.const 0 call $core/cpu/flags/setSubtractFlag ) - (func $core/cpu/opcodes/handleOpcode8x (; 145 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode8x (; 144 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner0 block $break|0 @@ -11823,7 +11826,7 @@ end i32.const 4 ) - (func $core/cpu/instructions/subARegister (; 146 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/subARegister (; 145 ;) (type $i_) (param $0 i32) (local $1 i32) global.get $core/cpu/cpu/Cpu.registerA local.get $0 @@ -11853,7 +11856,7 @@ i32.const 1 call $core/cpu/flags/setSubtractFlag ) - (func $core/cpu/instructions/subAThroughCarryRegister (; 147 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/subAThroughCarryRegister (; 146 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) global.get $core/cpu/cpu/Cpu.registerA @@ -11918,7 +11921,7 @@ i32.const 1 call $core/cpu/flags/setSubtractFlag ) - (func $core/cpu/opcodes/handleOpcode9x (; 148 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcode9x (; 147 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner0 block $break|0 @@ -12034,7 +12037,7 @@ end i32.const 4 ) - (func $core/cpu/instructions/andARegister (; 149 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/andARegister (; 148 ;) (type $i_) (param $0 i32) global.get $core/cpu/cpu/Cpu.registerA local.get $0 i32.and @@ -12054,7 +12057,7 @@ i32.const 0 call $core/cpu/flags/setCarryFlag ) - (func $core/cpu/instructions/xorARegister (; 150 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/xorARegister (; 149 ;) (type $i_) (param $0 i32) global.get $core/cpu/cpu/Cpu.registerA local.get $0 i32.xor @@ -12076,7 +12079,7 @@ i32.const 0 call $core/cpu/flags/setCarryFlag ) - (func $core/cpu/opcodes/handleOpcodeAx (; 151 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcodeAx (; 150 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner0 block $break|0 @@ -12192,7 +12195,7 @@ end i32.const 4 ) - (func $core/cpu/instructions/orARegister (; 152 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/orARegister (; 151 ;) (type $i_) (param $0 i32) global.get $core/cpu/cpu/Cpu.registerA local.get $0 i32.or @@ -12214,7 +12217,7 @@ i32.const 0 call $core/cpu/flags/setCarryFlag ) - (func $core/cpu/instructions/cpARegister (; 153 ;) (type $i_) (param $0 i32) + (func $core/cpu/instructions/cpARegister (; 152 ;) (type $i_) (param $0 i32) (local $1 i32) global.get $core/cpu/cpu/Cpu.registerA local.get $0 @@ -12240,7 +12243,7 @@ i32.const 1 call $core/cpu/flags/setSubtractFlag ) - (func $core/cpu/opcodes/handleOpcodeBx (; 154 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcodeBx (; 153 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $folding-inner0 block $break|0 @@ -12356,7 +12359,7 @@ end i32.const 4 ) - (func $core/memory/load/sixteenBitLoadFromGBMemory (; 155 ;) (type $ii) (param $0 i32) (result i32) + (func $core/memory/load/sixteenBitLoadFromGBMemory (; 154 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $core/memory/readTraps/checkReadTraps @@ -12391,13 +12394,13 @@ i32.shl i32.or ) - (func $core/cpu/opcodes/sixteenBitLoadSyncCycles (; 156 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/sixteenBitLoadSyncCycles (; 155 ;) (type $ii) (param $0 i32) (result i32) i32.const 8 call $core/cycles/syncCycles local.get $0 call $core/memory/load/sixteenBitLoadFromGBMemory ) - (func $core/cpu/instructions/rotateRegisterLeft (; 157 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/rotateRegisterLeft (; 156 ;) (type $ii) (param $0 i32) (result i32) local.get $0 i32.const 128 i32.and @@ -12435,7 +12438,7 @@ call $core/cpu/flags/setHalfCarryFlag local.get $0 ) - (func $core/cpu/instructions/rotateRegisterRight (; 158 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/rotateRegisterRight (; 157 ;) (type $ii) (param $0 i32) (result i32) local.get $0 i32.const 1 i32.and @@ -12473,7 +12476,7 @@ call $core/cpu/flags/setHalfCarryFlag local.get $0 ) - (func $core/cpu/instructions/rotateRegisterLeftThroughCarry (; 159 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/rotateRegisterLeftThroughCarry (; 158 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 0 @@ -12518,7 +12521,7 @@ call $core/cpu/flags/setHalfCarryFlag local.get $0 ) - (func $core/cpu/instructions/rotateRegisterRightThroughCarry (; 160 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/rotateRegisterRightThroughCarry (; 159 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 0 @@ -12565,7 +12568,7 @@ call $core/cpu/flags/setHalfCarryFlag local.get $0 ) - (func $core/cpu/instructions/shiftLeftRegister (; 161 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/shiftLeftRegister (; 160 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 0 @@ -12604,7 +12607,7 @@ call $core/cpu/flags/setHalfCarryFlag local.get $0 ) - (func $core/cpu/instructions/shiftRightArithmeticRegister (; 162 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/shiftRightArithmeticRegister (; 161 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 1 @@ -12658,7 +12661,7 @@ end local.get $0 ) - (func $core/cpu/instructions/swapNibblesOnRegister (; 163 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/swapNibblesOnRegister (; 162 ;) (type $ii) (param $0 i32) (result i32) local.get $0 i32.const 15 i32.and @@ -12686,7 +12689,7 @@ call $core/cpu/flags/setCarryFlag local.get $0 ) - (func $core/cpu/instructions/shiftRightLogicalRegister (; 164 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/instructions/shiftRightLogicalRegister (; 163 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 0 @@ -12724,7 +12727,7 @@ end local.get $0 ) - (func $core/cpu/instructions/testBitOnRegister (; 165 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/cpu/instructions/testBitOnRegister (; 164 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) i32.const 1 local.get $0 i32.shl @@ -12745,7 +12748,7 @@ call $core/cpu/flags/setHalfCarryFlag local.get $1 ) - (func $core/cpu/cbOpcodes/handleCbOpcode (; 166 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/cbOpcodes/handleCbOpcode (; 165 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13321,7 +13324,7 @@ local.get $2 select ) - (func $core/cpu/opcodes/handleOpcodeCx (; 167 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcodeCx (; 166 ;) (type $ii) (param $0 i32) (result i32) block $folding-inner5 block $folding-inner4 block $folding-inner3 @@ -13578,7 +13581,7 @@ global.set $core/cpu/cpu/Cpu.programCounter i32.const 12 ) - (func $core/cpu/opcodes/handleOpcodeDx (; 168 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcodeDx (; 167 ;) (type $ii) (param $0 i32) (result i32) block $folding-inner4 block $folding-inner3 block $folding-inner2 @@ -13820,7 +13823,8 @@ global.set $core/cpu/cpu/Cpu.programCounter i32.const 12 ) - (func $core/cpu/opcodes/handleOpcodeEx (; 169 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcodeEx (; 168 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) block $folding-inner0 block $break|0 block $case10|0 @@ -13834,10 +13838,11 @@ block $case2|0 block $case1|0 local.get $0 + local.tee $1 i32.const 224 i32.ne if - local.get $0 + local.get $1 i32.const 225 i32.sub br_table $case1|0 $case2|0 $break|0 $break|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $break|0 $break|0 $break|0 $case9|0 $case10|0 $break|0 @@ -13855,20 +13860,20 @@ call $core/cpu/opcodes/sixteenBitLoadSyncCycles i32.const 65535 i32.and - local.set $0 + local.set $1 global.get $core/cpu/cpu/Cpu.stackPointer i32.const 2 i32.add i32.const 65535 i32.and global.set $core/cpu/cpu/Cpu.stackPointer - local.get $0 + local.get $1 i32.const 65280 i32.and i32.const 8 i32.shr_s global.set $core/cpu/cpu/Cpu.registerH - local.get $0 + local.get $1 i32.const 255 i32.and global.set $core/cpu/cpu/Cpu.registerL @@ -13922,18 +13927,17 @@ return end call $core/cpu/opcodes/getDataByteOne - call $core/portable/portable/i8Portable i32.const 24 i32.shl i32.const 24 i32.shr_s - local.set $0 + local.set $1 global.get $core/cpu/cpu/Cpu.stackPointer - local.get $0 + local.get $1 i32.const 1 call $core/cpu/flags/checkAndSetSixteenBitFlagsAddOverflow global.get $core/cpu/cpu/Cpu.stackPointer - local.get $0 + local.get $1 i32.add i32.const 65535 i32.and @@ -14007,7 +14011,8 @@ global.set $core/cpu/cpu/Cpu.programCounter i32.const 4 ) - (func $core/cpu/opcodes/handleOpcodeFx (; 170 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/handleOpcodeFx (; 169 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $break|0 @@ -14118,18 +14123,17 @@ return end call $core/cpu/opcodes/getDataByteOne - call $core/portable/portable/i8Portable - local.set $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.set $1 i32.const 0 call $core/cpu/flags/setZeroFlag i32.const 0 call $core/cpu/flags/setSubtractFlag global.get $core/cpu/cpu/Cpu.stackPointer - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $1 local.tee $0 i32.const 1 call $core/cpu/flags/checkAndSetSixteenBitFlagsAddOverflow @@ -14219,7 +14223,7 @@ end i32.const 4 ) - (func $core/cpu/opcodes/executeOpcode (; 171 ;) (type $ii) (param $0 i32) (result i32) + (func $core/cpu/opcodes/executeOpcode (; 170 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) global.get $core/cpu/cpu/Cpu.programCounter i32.const 1 @@ -14333,7 +14337,7 @@ local.get $0 call $core/cpu/opcodes/handleOpcodeFx ) - (func $core/interrupts/interrupts/_handleInterrupt (; 172 ;) (type $i_) (param $0 i32) + (func $core/interrupts/interrupts/_handleInterrupt (; 171 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) i32.const 0 @@ -14430,7 +14434,7 @@ global.set $core/cpu/cpu/Cpu.programCounter end ) - (func $core/interrupts/interrupts/checkInterrupts (; 173 ;) (type $i) (result i32) + (func $core/interrupts/interrupts/checkInterrupts (; 172 ;) (type $i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14568,7 +14572,7 @@ end i32.const 0 ) - (func $core/execute/executeStep (; 174 ;) (type $i) (result i32) + (func $core/execute/executeStep (; 173 ;) (type $i) (result i32) (local $0 i32) (local $1 i32) i32.const 1 @@ -14666,10 +14670,10 @@ end local.get $0 ) - (func $core/sound/sound/getNumberOfSamplesInAudioBuffer (; 175 ;) (type $i) (result i32) + (func $core/sound/sound/getNumberOfSamplesInAudioBuffer (; 174 ;) (type $i) (result i32) global.get $core/sound/sound/Sound.audioQueueIndex ) - (func $core/execute/executeUntilCondition (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $core/execute/executeUntilCondition (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14788,11 +14792,11 @@ global.set $core/cpu/cpu/Cpu.programCounter i32.const -1 ) - (func $core/execute/executeFrame (; 177 ;) (type $i) (result i32) + (func $core/execute/executeFrame (; 176 ;) (type $i) (result i32) i32.const -1 call $core/execute/executeUntilCondition ) - (func $core/execute/executeMultipleFrames (; 178 ;) (type $ii) (param $0 i32) (result i32) + (func $core/execute/executeMultipleFrames (; 177 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14828,16 +14832,16 @@ end i32.const 0 ) - (func $core/cycles/getCyclesPerCycleSet (; 179 ;) (type $i) (result i32) + (func $core/cycles/getCyclesPerCycleSet (; 178 ;) (type $i) (result i32) global.get $core/cycles/Cycles.cyclesPerCycleSet ) - (func $core/cycles/getCycleSets (; 180 ;) (type $i) (result i32) + (func $core/cycles/getCycleSets (; 179 ;) (type $i) (result i32) global.get $core/cycles/Cycles.cycleSets ) - (func $core/cycles/getCycles (; 181 ;) (type $i) (result i32) + (func $core/cycles/getCycles (; 180 ;) (type $i) (result i32) global.get $core/cycles/Cycles.cycles ) - (func $core/joypad/joypad/_getJoypadButtonStateFromButtonId (; 182 ;) (type $ii) (param $0 i32) (result i32) + (func $core/joypad/joypad/_getJoypadButtonStateFromButtonId (; 181 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) block $case8|0 block $case7|0 @@ -14888,7 +14892,7 @@ end i32.const 0 ) - (func $core/joypad/joypad/_setJoypadButtonStateFromButtonId (; 183 ;) (type $ii_) (param $0 i32) (param $1 i32) + (func $core/joypad/joypad/_setJoypadButtonStateFromButtonId (; 182 ;) (type $ii_) (param $0 i32) (param $1 i32) (local $2 i32) block $break|0 block $case7|0 @@ -14961,7 +14965,7 @@ global.set $core/joypad/joypad/Joypad.start end ) - (func $core/joypad/joypad/_pressJoypadButton (; 184 ;) (type $i_) (param $0 i32) + (func $core/joypad/joypad/_pressJoypadButton (; 183 ;) (type $i_) (param $0 i32) (local $1 i32) i32.const 0 global.set $core/cpu/cpu/Cpu.isStopped @@ -15007,12 +15011,12 @@ end end ) - (func $core/joypad/joypad/_releaseJoypadButton (; 185 ;) (type $i_) (param $0 i32) + (func $core/joypad/joypad/_releaseJoypadButton (; 184 ;) (type $i_) (param $0 i32) local.get $0 i32.const 0 call $core/joypad/joypad/_setJoypadButtonStateFromButtonId ) - (func $core/joypad/joypad/setJoypadState (; 186 ;) (type $iiiiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) + (func $core/joypad/joypad/setJoypadState (; 185 ;) (type $iiiiiiii_) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) local.get $0 i32.const 0 i32.gt_s @@ -15094,68 +15098,70 @@ call $core/joypad/joypad/_releaseJoypadButton end ) - (func $core/debug/breakpoints/setProgramCounterBreakpoint (; 187 ;) (type $i_) (param $0 i32) + (func $core/debug/breakpoints/setProgramCounterBreakpoint (; 186 ;) (type $i_) (param $0 i32) local.get $0 global.set $core/debug/breakpoints/Breakpoints.programCounter ) - (func $core/debug/breakpoints/resetProgramCounterBreakpoint (; 188 ;) (type $_) + (func $core/debug/breakpoints/resetProgramCounterBreakpoint (; 187 ;) (type $_) i32.const -1 global.set $core/debug/breakpoints/Breakpoints.programCounter ) - (func $core/debug/breakpoints/setReadGbMemoryBreakpoint (; 189 ;) (type $i_) (param $0 i32) + (func $core/debug/breakpoints/setReadGbMemoryBreakpoint (; 188 ;) (type $i_) (param $0 i32) local.get $0 global.set $core/debug/breakpoints/Breakpoints.readGbMemory ) - (func $core/debug/breakpoints/resetReadGbMemoryBreakpoint (; 190 ;) (type $_) + (func $core/debug/breakpoints/resetReadGbMemoryBreakpoint (; 189 ;) (type $_) i32.const -1 global.set $core/debug/breakpoints/Breakpoints.readGbMemory ) - (func $core/debug/breakpoints/setWriteGbMemoryBreakpoint (; 191 ;) (type $i_) (param $0 i32) + (func $core/debug/breakpoints/setWriteGbMemoryBreakpoint (; 190 ;) (type $i_) (param $0 i32) local.get $0 global.set $core/debug/breakpoints/Breakpoints.writeGbMemory ) - (func $core/debug/breakpoints/resetWriteGbMemoryBreakpoint (; 192 ;) (type $_) + (func $core/debug/breakpoints/resetWriteGbMemoryBreakpoint (; 191 ;) (type $_) i32.const -1 global.set $core/debug/breakpoints/Breakpoints.writeGbMemory ) - (func $core/debug/debug-cpu/getRegisterA (; 193 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterA (; 192 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerA ) - (func $core/debug/debug-cpu/getRegisterB (; 194 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterB (; 193 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerB ) - (func $core/debug/debug-cpu/getRegisterC (; 195 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterC (; 194 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerC ) - (func $core/debug/debug-cpu/getRegisterD (; 196 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterD (; 195 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerD ) - (func $core/debug/debug-cpu/getRegisterE (; 197 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterE (; 196 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerE ) - (func $core/debug/debug-cpu/getRegisterH (; 198 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterH (; 197 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerH ) - (func $core/debug/debug-cpu/getRegisterL (; 199 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterL (; 198 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerL ) - (func $core/debug/debug-cpu/getRegisterF (; 200 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getRegisterF (; 199 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.registerF ) - (func $core/debug/debug-cpu/getProgramCounter (; 201 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getProgramCounter (; 200 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.programCounter ) - (func $core/debug/debug-cpu/getStackPointer (; 202 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getStackPointer (; 201 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.stackPointer ) - (func $core/debug/debug-cpu/getOpcodeAtProgramCounter (; 203 ;) (type $i) (result i32) + (func $core/debug/debug-cpu/getOpcodeAtProgramCounter (; 202 ;) (type $i) (result i32) global.get $core/cpu/cpu/Cpu.programCounter call $core/memory/load/eightBitLoadFromGBMemory + i32.const 255 + i32.and ) - (func $core/debug/debug-graphics/getLY (; 204 ;) (type $i) (result i32) + (func $core/debug/debug-graphics/getLY (; 203 ;) (type $i) (result i32) global.get $core/graphics/graphics/Graphics.scanlineRegister ) - (func $core/debug/debug-graphics/drawBackgroundMapToWasmMemory (; 205 ;) (type $i_) (param $0 i32) + (func $core/debug/debug-graphics/drawBackgroundMapToWasmMemory (; 204 ;) (type $i_) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15402,7 +15408,7 @@ end end ) - (func $core/debug/debug-graphics/drawTileDataToWasmMemory (; 206 ;) (type $_) + (func $core/debug/debug-graphics/drawTileDataToWasmMemory (; 205 ;) (type $_) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15675,7 +15681,7 @@ end end ) - (func $core/debug/debug-graphics/drawOamToWasmMemory (; 207 ;) (type $_) + (func $core/debug/debug-graphics/drawOamToWasmMemory (; 206 ;) (type $_) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15836,16 +15842,16 @@ end end ) - (func $core/debug/debug-timer/getDIV (; 208 ;) (type $i) (result i32) + (func $core/debug/debug-timer/getDIV (; 207 ;) (type $i) (result i32) global.get $core/timers/timers/Timers.dividerRegister ) - (func $core/debug/debug-timer/getTIMA (; 209 ;) (type $i) (result i32) + (func $core/debug/debug-timer/getTIMA (; 208 ;) (type $i) (result i32) global.get $core/timers/timers/Timers.timerCounter ) - (func $core/debug/debug-timer/getTMA (; 210 ;) (type $i) (result i32) + (func $core/debug/debug-timer/getTMA (; 209 ;) (type $i) (result i32) global.get $core/timers/timers/Timers.timerModulo ) - (func $core/debug/debug-timer/getTAC (; 211 ;) (type $i) (result i32) + (func $core/debug/debug-timer/getTAC (; 210 ;) (type $i) (result i32) (local $0 i32) global.get $core/timers/timers/Timers.timerInputClock local.set $0 @@ -15858,7 +15864,7 @@ end local.get $0 ) - (func $core/debug/debug-memory/updateDebugGBMemory (; 212 ;) (type $_) + (func $core/debug/debug-memory/updateDebugGBMemory (; 211 ;) (type $_) (local $0 i32) loop $repeat|0 block $break|0 @@ -15882,7 +15888,8 @@ i32.const 0 global.set $core/debug/breakpoints/Breakpoints.reachedBreakpoint ) - (func $start (; 213 ;) (type $_) + (func $start (; 212 ;) (type $_) + call $start:core/graphics/colors current_memory i32.const 148 i32.lt_s @@ -15893,39 +15900,15 @@ grow_memory drop end - i32.const 15921906 - global.set $core/graphics/colors/Colors.bgWhite - i32.const 10526880 - global.set $core/graphics/colors/Colors.bgLightGrey - i32.const 5789784 - global.set $core/graphics/colors/Colors.bgDarkGrey - i32.const 526344 - global.set $core/graphics/colors/Colors.bgBlack - i32.const 15921906 - global.set $core/graphics/colors/Colors.obj0White - i32.const 10526880 - global.set $core/graphics/colors/Colors.obj0LightGrey - i32.const 5789784 - global.set $core/graphics/colors/Colors.obj0DarkGrey - i32.const 526344 - global.set $core/graphics/colors/Colors.obj0Black - i32.const 15921906 - global.set $core/graphics/colors/Colors.obj1White - i32.const 10526880 - global.set $core/graphics/colors/Colors.obj1LightGrey - i32.const 5789784 - global.set $core/graphics/colors/Colors.obj1DarkGrey - i32.const 526344 - global.set $core/graphics/colors/Colors.obj1Black ) - (func $null (; 214 ;) (type $_) + (func $null (; 213 ;) (type $_) nop ) - (func $core/execute/executeFrameAndCheckAudio|trampoline (; 215 ;) (type $ii) (param $0 i32) (result i32) + (func $core/execute/executeFrameAndCheckAudio|trampoline (; 214 ;) (type $ii) (param $0 i32) (result i32) block $1of1 block $0of1 block $outOfRange - global.get $~argc + global.get $~lib/argc br_table $0of1 $1of1 $outOfRange end unreachable @@ -15936,16 +15919,16 @@ local.get $0 call $core/execute/executeUntilCondition ) - (func $~setargc (; 216 ;) (type $i_) (param $0 i32) + (func $~lib/setargc (; 215 ;) (type $i_) (param $0 i32) local.get $0 - global.set $~argc + global.set $~lib/argc ) - (func $core/execute/executeUntilCondition|trampoline (; 217 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $core/execute/executeUntilCondition|trampoline (; 216 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) block $2of2 block $1of2 block $0of2 block $outOfRange - global.get $~argc + global.get $~lib/argc br_table $0of2 $1of2 $2of2 $outOfRange end unreachable diff --git a/lib/graphics/graphics.js b/lib/graphics/graphics.js index f7b17a02..c55d881d 100644 --- a/lib/graphics/graphics.js +++ b/lib/graphics/graphics.js @@ -25,7 +25,7 @@ class WasmBoyGraphicsService { this.updateGraphicsCallback = updateGraphicsCallback; // Initialiuze our cached wasm constants - // WASMBOY_CURRENT_FRAME_OUTPUT_LOCATION = this.wasmInstance.exports.frameInProgressVideoOutputLocation.valueOf(); + // WASMBOY_CURRENT_FRAME_OUTPUT_LOCATION = this.wasmInstance.exports.frameInProgressGRAPHICS_OUTPUT_LOCATION.valueOf(); // Reset our frame queue and render promises this.frameQueue = []; @@ -100,9 +100,7 @@ class WasmBoyGraphicsService { } // Add our new imageData - for (let i = 0; i < this.imageDataArray.length; i++) { - this.canvasImageData.data[i] = this.imageDataArray[i]; - } + this.canvasImageData.data.set(this.imageDataArray); this.canvasContext.clearRect(0, 0, GAMEBOY_CAMERA_WIDTH, GAMEBOY_CAMERA_HEIGHT); this.canvasContext.putImageData(this.canvasImageData, 0, 0); diff --git a/lib/graphics/worker/imageData.js b/lib/graphics/worker/imageData.js index d5655c8f..a616db9a 100644 --- a/lib/graphics/worker/imageData.js +++ b/lib/graphics/worker/imageData.js @@ -1,34 +1,34 @@ import { GAMEBOY_CAMERA_WIDTH, GAMEBOY_CAMERA_HEIGHT } from '../constants'; +// Thanks MaxGraey for the optimization! + // Exporting this function, as we can use it in the benchmarker -export const getImageDataFromGraphicsFrameBuffer = wasmByteMemory => { +export function getImageDataFromGraphicsFrameBuffer(wasmByteMemory) { // Draw the pixels // 160x144 + // Split off our image Data + // Even though it is not cheap to create buffers, + // We need to create this everytime, as it will be transferred back to the + // main thread, thus removing this worker / access to this buffer. const imageDataArray = new Uint8ClampedArray(GAMEBOY_CAMERA_HEIGHT * GAMEBOY_CAMERA_WIDTH * 4); - const rgbColor = new Uint8ClampedArray(3); - for (let y = 0; y < GAMEBOY_CAMERA_HEIGHT; y++) { - for (let x = 0; x < GAMEBOY_CAMERA_WIDTH; x++) { + for (let y = 0; y < GAMEBOY_CAMERA_HEIGHT; ++y) { + let stride1 = y * (GAMEBOY_CAMERA_WIDTH * 3); + let stride2 = y * (GAMEBOY_CAMERA_WIDTH * 4); + for (let x = 0; x < GAMEBOY_CAMERA_WIDTH; ++x) { // Each color has an R G B component - let pixelStart = (y * 160 + x) * 3; + const pixelStart = stride1 + x * 3; - for (let color = 0; color < 3; color++) { - rgbColor[color] = wasmByteMemory[pixelStart + color]; - } + const imageDataIndex = stride2 + (x << 2); - // Doing graphics using second answer on: - // https://stackoverflow.com/questions/4899799/whats-the-best-way-to-set-a-single-pixel-in-an-html5-canvas - // Image Data mapping - const imageDataIndex = (x + y * GAMEBOY_CAMERA_WIDTH) * 4; + imageDataArray[imageDataIndex + 0] = wasmByteMemory[pixelStart + 0]; + imageDataArray[imageDataIndex + 1] = wasmByteMemory[pixelStart + 1]; + imageDataArray[imageDataIndex + 2] = wasmByteMemory[pixelStart + 2]; - imageDataArray[imageDataIndex] = rgbColor[0]; - imageDataArray[imageDataIndex + 1] = rgbColor[1]; - imageDataArray[imageDataIndex + 2] = rgbColor[2]; // Alpha, no transparency imageDataArray[imageDataIndex + 3] = 255; } } - return imageDataArray; -}; +} diff --git a/lib/wasmboy/wasmboy.js b/lib/wasmboy/wasmboy.js index 46f999a2..22449c26 100644 --- a/lib/wasmboy/wasmboy.js +++ b/lib/wasmboy/wasmboy.js @@ -314,7 +314,7 @@ class WasmBoyLibService { WasmBoyAudio.setSpeed(speed); - await this.worker.postMessage({ + await this.worker.postMessageIgnoreResponse({ type: WORKER_MESSAGE_TYPE.SET_SPEED, speed }); diff --git a/lib/wasmboy/worker/audio/onmessage.js b/lib/wasmboy/worker/audio/onmessage.js index c499b310..8a47d342 100644 --- a/lib/wasmboy/worker/audio/onmessage.js +++ b/lib/wasmboy/worker/audio/onmessage.js @@ -10,7 +10,7 @@ export function audioWorkerOnMessage(libWorker, event) { switch (eventData.message.type) { case WORKER_MESSAGE_TYPE.GET_CONSTANTS: { - libWorker.WASMBOY_SOUND_OUTPUT_LOCATION = libWorker.wasmInstance.exports.soundOutputLocation.valueOf(); + libWorker.WASMBOY_SOUND_OUTPUT_LOCATION = libWorker.wasmInstance.exports.AUDIO_BUFFER_LOCATION.valueOf(); libWorker.WASMBOY_CHANNEL_1_OUTPUT_LOCATION = libWorker.wasmInstance.exports.CHANNEL_1_BUFFER_LOCATION.valueOf(); libWorker.WASMBOY_CHANNEL_2_OUTPUT_LOCATION = libWorker.wasmInstance.exports.CHANNEL_2_BUFFER_LOCATION.valueOf(); libWorker.WASMBOY_CHANNEL_3_OUTPUT_LOCATION = libWorker.wasmInstance.exports.CHANNEL_3_BUFFER_LOCATION.valueOf(); @@ -21,7 +21,7 @@ export function audioWorkerOnMessage(libWorker, event) { getSmartWorkerMessage( { type: WORKER_MESSAGE_TYPE.GET_CONSTANTS_DONE, - WASMBOY_SOUND_OUTPUT_LOCATION: libWorker.wasmInstance.exports.soundOutputLocation.valueOf() + WASMBOY_SOUND_OUTPUT_LOCATION: libWorker.wasmInstance.exports.AUDIO_BUFFER_LOCATION.valueOf() }, eventData.messageId ) diff --git a/lib/wasmboy/worker/graphics/onmessage.js b/lib/wasmboy/worker/graphics/onmessage.js index a75b3bf2..47da44d0 100644 --- a/lib/wasmboy/worker/graphics/onmessage.js +++ b/lib/wasmboy/worker/graphics/onmessage.js @@ -11,14 +11,14 @@ export function graphicsWorkerOnMessage(libWorker, event) { switch (eventData.message.type) { case WORKER_MESSAGE_TYPE.GET_CONSTANTS: { - libWorker.WASMBOY_CURRENT_FRAME_OUTPUT_LOCATION = libWorker.wasmInstance.exports.frameInProgressVideoOutputLocation.valueOf(); + libWorker.WASMBOY_CURRENT_FRAME_OUTPUT_LOCATION = libWorker.wasmInstance.exports.FRAME_LOCATION.valueOf(); libWorker.WASMBOY_CURRENT_FRAME_SIZE = libWorker.wasmInstance.exports.FRAME_SIZE.valueOf(); // Forward to our lib worker libWorker.graphicsWorkerPort.postMessage( getSmartWorkerMessage( { type: WORKER_MESSAGE_TYPE.GET_CONSTANTS_DONE, - WASMBOY_CURRENT_FRAME_OUTPUT_LOCATION: libWorker.wasmInstance.exports.frameInProgressVideoOutputLocation.valueOf() + WASMBOY_CURRENT_FRAME_OUTPUT_LOCATION: libWorker.wasmInstance.exports.FRAME_LOCATION.valueOf() }, eventData.messageId ) diff --git a/lib/wasmboy/worker/memory/onmessage.js b/lib/wasmboy/worker/memory/onmessage.js index 25f2945b..010b46cb 100644 --- a/lib/wasmboy/worker/memory/onmessage.js +++ b/lib/wasmboy/worker/memory/onmessage.js @@ -40,28 +40,28 @@ export function memoryWorkerOnMessage(libWorker, event) { } case WORKER_MESSAGE_TYPE.GET_CONSTANTS: { - libWorker.WASMBOY_GAME_BYTES_LOCATION = libWorker.wasmInstance.exports.gameBytesLocation.valueOf(); - (libWorker.WASMBOY_GAME_RAM_BANKS_LOCATION = libWorker.wasmInstance.exports.gameRamBanksLocation.valueOf()), - (libWorker.WASMBOY_INTERNAL_STATE_SIZE = libWorker.wasmInstance.exports.wasmBoyInternalStateSize.valueOf()), - (libWorker.WASMBOY_INTERNAL_STATE_LOCATION = libWorker.wasmInstance.exports.wasmBoyInternalStateLocation.valueOf()), - (libWorker.WASMBOY_INTERNAL_MEMORY_SIZE = libWorker.wasmInstance.exports.gameBoyInternalMemorySize.valueOf()), - (libWorker.WASMBOY_INTERNAL_MEMORY_LOCATION = libWorker.wasmInstance.exports.gameBoyInternalMemoryLocation.valueOf()), - (libWorker.WASMBOY_PALETTE_MEMORY_SIZE = libWorker.wasmInstance.exports.gameboyColorPaletteSize.valueOf()), - (libWorker.WASMBOY_PALETTE_MEMORY_LOCATION = libWorker.wasmInstance.exports.gameboyColorPaletteLocation.valueOf()); + libWorker.WASMBOY_GAME_BYTES_LOCATION = libWorker.wasmInstance.exports.CARTRIDGE_ROM_LOCATION.valueOf(); + (libWorker.WASMBOY_GAME_RAM_BANKS_LOCATION = libWorker.wasmInstance.exports.CARTRIDGE_RAM_LOCATION.valueOf()), + (libWorker.WASMBOY_INTERNAL_STATE_SIZE = libWorker.wasmInstance.exports.WASMBOY_STATE_SIZE.valueOf()), + (libWorker.WASMBOY_INTERNAL_STATE_LOCATION = libWorker.wasmInstance.exports.WASMBOY_STATE_LOCATION.valueOf()), + (libWorker.WASMBOY_INTERNAL_MEMORY_SIZE = libWorker.wasmInstance.exports.GAMEBOY_INTERNAL_MEMORY_SIZE.valueOf()), + (libWorker.WASMBOY_INTERNAL_MEMORY_LOCATION = libWorker.wasmInstance.exports.GAMEBOY_INTERNAL_MEMORY_LOCATION.valueOf()), + (libWorker.WASMBOY_PALETTE_MEMORY_SIZE = libWorker.wasmInstance.exports.GBC_PALETTE_SIZE.valueOf()), + (libWorker.WASMBOY_PALETTE_MEMORY_LOCATION = libWorker.wasmInstance.exports.GBC_PALETTE_LOCATION.valueOf()); // Forward to our lib worker libWorker.memoryWorkerPort.postMessage( getSmartWorkerMessage( { type: WORKER_MESSAGE_TYPE.GET_CONSTANTS_DONE, - WASMBOY_GAME_BYTES_LOCATION: libWorker.wasmInstance.exports.gameBytesLocation.valueOf(), - WASMBOY_GAME_RAM_BANKS_LOCATION: libWorker.wasmInstance.exports.gameRamBanksLocation.valueOf(), - WASMBOY_INTERNAL_STATE_SIZE: libWorker.wasmInstance.exports.wasmBoyInternalStateSize.valueOf(), - WASMBOY_INTERNAL_STATE_LOCATION: libWorker.wasmInstance.exports.wasmBoyInternalStateLocation.valueOf(), - WASMBOY_INTERNAL_MEMORY_SIZE: libWorker.wasmInstance.exports.gameBoyInternalMemorySize.valueOf(), - WASMBOY_INTERNAL_MEMORY_LOCATION: libWorker.wasmInstance.exports.gameBoyInternalMemoryLocation.valueOf(), - WASMBOY_PALETTE_MEMORY_SIZE: libWorker.wasmInstance.exports.gameboyColorPaletteSize.valueOf(), - WASMBOY_PALETTE_MEMORY_LOCATION: libWorker.wasmInstance.exports.gameboyColorPaletteLocation.valueOf() + WASMBOY_GAME_BYTES_LOCATION: libWorker.wasmInstance.exports.CARTRIDGE_ROM_LOCATION.valueOf(), + WASMBOY_GAME_RAM_BANKS_LOCATION: libWorker.wasmInstance.exports.CARTRIDGE_RAM_LOCATION.valueOf(), + WASMBOY_INTERNAL_STATE_SIZE: libWorker.wasmInstance.exports.WASMBOY_STATE_SIZE.valueOf(), + WASMBOY_INTERNAL_STATE_LOCATION: libWorker.wasmInstance.exports.WASMBOY_STATE_LOCATION.valueOf(), + WASMBOY_INTERNAL_MEMORY_SIZE: libWorker.wasmInstance.exports.GAMEBOY_INTERNAL_MEMORY_SIZE.valueOf(), + WASMBOY_INTERNAL_MEMORY_LOCATION: libWorker.wasmInstance.exports.GAMEBOY_INTERNAL_MEMORY_LOCATION.valueOf(), + WASMBOY_PALETTE_MEMORY_SIZE: libWorker.wasmInstance.exports.GBC_PALETTE_SIZE.valueOf(), + WASMBOY_PALETTE_MEMORY_LOCATION: libWorker.wasmInstance.exports.GBC_PALETTE_LOCATION.valueOf() }, eventData.messageId ) diff --git a/lib/wasmboy/worker/update.js b/lib/wasmboy/worker/update.js index c2c0dec9..e7ac5bd1 100644 --- a/lib/wasmboy/worker/update.js +++ b/lib/wasmboy/worker/update.js @@ -196,7 +196,7 @@ function executeAndCheckAudio(libWorker, resolve) { // Do some audio magic if (response === 1) { // Get our audioQueueIndex - const audioQueueIndex = libWorker.wasmInstance.exports.getAudioQueueIndex(); + const audioQueueIndex = libWorker.wasmInstance.exports.getNumberOfSamplesInAudioBuffer(); // Check if we are sending too much audio const isTooMuchLatency = libWorker.currentAudioLatencyInSeconds > MAX_AUDIO_LATENCY; @@ -276,5 +276,5 @@ function sendAudio(libWorker, audioQueueIndex) { } libWorker.audioWorkerPort.postMessage(getSmartWorkerMessage(message), messageTransferrables); - libWorker.wasmInstance.exports.resetAudioQueue(); + libWorker.wasmInstance.exports.clearAudioBuffer(); } diff --git a/lib/wasmboy/worker/wasmboy.worker.js b/lib/wasmboy/worker/wasmboy.worker.js index a5965d6f..7ae1e8fa 100644 --- a/lib/wasmboy/worker/wasmboy.worker.js +++ b/lib/wasmboy/worker/wasmboy.worker.js @@ -145,7 +145,7 @@ libWorker = { case WORKER_MESSAGE_TYPE.RESET_AUDIO_QUEUE: { // Reset the audio queue index to stop weird pauses when trying to load a game - libWorker.wasmInstance.exports.resetAudioQueue(); + libWorker.wasmInstance.exports.clearAudioBuffer(); postMessage(getSmartWorkerMessage(undefined, eventData.messageId)); return; } @@ -283,7 +283,7 @@ libWorker = { libWorker.frameSkipCounter = 0; libWorker.currentAudioLatencyInSeconds = 0; - libWorker.wasmInstance.exports.resetAudioQueue(); + libWorker.wasmInstance.exports.clearAudioBuffer(); return; } diff --git a/package-lock.json b/package-lock.json index b735b604..1e59d5c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,36 +26,36 @@ } }, "@babel/core": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", - "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.3.tgz", + "integrity": "sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", + "@babel/generator": "^7.3.3", "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.2.2", + "@babel/parser": "^7.3.3", "@babel/template": "^7.2.2", "@babel/traverse": "^7.2.2", - "@babel/types": "^7.2.2", + "@babel/types": "^7.3.3", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" } }, "@babel/generator": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz", - "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz", + "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", "dev": true, "requires": { - "@babel/types": "^7.3.2", + "@babel/types": "^7.3.3", "jsesc": "^2.5.1", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" } @@ -211,15 +211,15 @@ } }, "@babel/parser": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz", - "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz", + "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==", "dev": true }, "@babel/plugin-proposal-class-properties": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz", - "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.3.tgz", + "integrity": "sha512-XO9eeU1/UwGPM8L+TjnQCykuVcXqaO5J1bkRPIygqZ/A2L1xVMJ9aZXrY31c0U4H2/LHKL4lbFQLsxktSrc/Ng==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.3.0", @@ -313,13 +313,13 @@ } }, "@babel/types": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz", - "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", + "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } }, @@ -489,9 +489,9 @@ "dev": true }, "@types/node": { - "version": "10.12.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.24.tgz", - "integrity": "sha512-GWWbvt+z9G5otRBW8rssOFgRY87J9N/qbhqfjMZ+gUuL6zoL+Hm6gP/8qQBG4jjimqdaNLCehcVapZ/Fs2WjCQ==", + "version": "11.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.4.tgz", + "integrity": "sha512-Zl8dGvAcEmadgs1tmSPcvwzO1YRsz38bVJQvH1RvRqSR9/5n61Q1ktcDL0ht3FXWR+ZpVmXVwN1LuH4Ax23NsA==", "dev": true }, "accepts": { @@ -529,9 +529,9 @@ "dev": true }, "ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", "dev": true }, "alphanum-sort": { @@ -593,297 +593,6 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } } }, "aproba": { @@ -902,13 +611,10 @@ } }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "arr-flatten": { "version": "1.1.0", @@ -974,9 +680,9 @@ "dev": true }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { @@ -995,12 +701,12 @@ } }, "assemblyscript": { - "version": "github:AssemblyScript/assemblyscript#e623786b426b4649a192b6c47b44ea41acd7d9b8", + "version": "github:AssemblyScript/assemblyscript#f318d6838399ccf6460c14efd1cf98ca5c92c1b9", "from": "github:AssemblyScript/assemblyscript", "dev": true, "requires": { "@protobufjs/utf8": "^1.1.0", - "binaryen": "67.0.0-nightly.20190207", + "binaryen": "68.0.0-nightly.20190220", "glob": "^7.1.3", "long": "^4.0.0" } @@ -1765,18 +1471,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -1814,9 +1508,9 @@ "dev": true }, "binaryen": { - "version": "67.0.0-nightly.20190207", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-67.0.0-nightly.20190207.tgz", - "integrity": "sha512-ljJUoPRASK7OsqLzHPBiDW/Vg3QPvVNSKECfyvL2ZoKvYHcK9Z/2Ebo5JfyFAyiAud5RHdTJ2tq7FJo8SSyTXg==", + "version": "68.0.0-nightly.20190220", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-68.0.0-nightly.20190220.tgz", + "integrity": "sha512-NsxXRfk+DsNju2+6OfD+UAkkahesa+Wd09bYlS+6WjxqvYokygSonjaZsvD7YQoIRfz4YLsHXx6SfoDu8uxYPA==", "dev": true }, "bluebird": { @@ -1940,14 +1634,32 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "browser-detect": { @@ -2047,14 +1759,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "cacheable-request": { @@ -2146,15 +1850,15 @@ } }, "caniuse-db": { - "version": "1.0.30000935", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000935.tgz", - "integrity": "sha512-HFqvW9MZZcWD02F3J2GV2ggQyIXiDr7DRPlOWSKVIihu8J1dtsYFqtMjmFqiYamfOmY4NHyn7xFaWAHBtFWgjQ==", + "version": "1.0.30000938", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000938.tgz", + "integrity": "sha512-1lbcoAGPQFUYOdY7sxpsl8ZDBfn5cyn80XuYnZwk7N4Qp7Behw7uxZCH5jjH2qWTV2WM6hgjvDVpP/uV3M/l9g==", "dev": true }, "caniuse-lite": { - "version": "1.0.30000935", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000935.tgz", - "integrity": "sha512-1Y2uJ5y56qDt3jsDTdBHL1OqiImzjoQcBG6Yl3Qizq8mcc2SgCFpi+ZwLLqkztYnk9l87IYqRlNBnPSOTbFkXQ==", + "version": "1.0.30000938", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000938.tgz", + "integrity": "sha512-ekW8NQ3/FvokviDxhdKLZZAx7PptXNwxKgXtnR5y+PR3hckwuP3yJ1Ir+4/c97dsHNqtAyfKUGdw8P4EYzBNgw==", "dev": true }, "capture-stack-trace": { @@ -2253,104 +1957,6 @@ "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0", "upath": "^1.0.5" - }, - "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "chota": { @@ -2400,12 +2006,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -2688,12 +2288,12 @@ "dev": true }, "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz", + "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==", "dev": true, "requires": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.38.0 < 2" } }, "compression": { @@ -2904,9 +2504,9 @@ "dev": true }, "core-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", - "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", "dev": true }, "core-util-is": { @@ -2916,14 +2516,15 @@ "dev": true }, "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.1.0.tgz", + "integrity": "sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==", "dev": true, "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", "js-yaml": "^3.9.0", + "lodash.get": "^4.4.2", "parse-json": "^4.0.0" } }, @@ -3203,36 +2804,14 @@ "dev": true }, "default-gateway": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", - "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-3.1.0.tgz", + "integrity": "sha512-MRhxv1cqdpKZh93zMFBkXcZfr2QFasrDlxjGa+M22Hv9EBmdWCccFe03KqSnkPLpYXlFhrR152kDX99S//3/Xw==", "dev": true, "requires": { - "execa": "^0.10.0", + "execa": "^1.0.0", + "idb-connector": "^1.1.8", "ip-regex": "^2.1.0" - }, - "dependencies": { - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } } }, "defer-to-connect": { @@ -3288,18 +2867,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -3528,9 +3095,9 @@ "dev": true }, "estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", + "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", "dev": true }, "esutils": { @@ -3585,21 +3152,53 @@ } }, "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "express": { @@ -3702,12 +3301,68 @@ } }, "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, "extsprintf": { @@ -3752,12 +3407,6 @@ "escape-string-regexp": "^1.0.5" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, "filename-reserved-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", @@ -3786,16 +3435,26 @@ } }, "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "finalhandler": { @@ -3921,28 +3580,22 @@ } }, "follow-redirects": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", - "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", "dev": true, "requires": { - "debug": "=3.1.0" + "debug": "^3.2.6" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -3952,15 +3605,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -4673,23 +4317,25 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "global-dirs": { @@ -4702,9 +4348,9 @@ } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, "globby": { @@ -4857,14 +4503,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -4877,26 +4515,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -4961,9 +4579,9 @@ "dev": true }, "http-cache-semantics": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", - "integrity": "sha512-laeSTWIkuFa6lUgZAt+ic9RwOSEwbi9VDQNcCvMFO4sZiDc2Ha8DaZVCJnfpLLQCcS8rvCnIWYmz0POLxt7Dew==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==", "dev": true }, "http-deceiver": { @@ -5002,395 +4620,618 @@ } }, "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "dev": true, "requires": { - "http-proxy": "^1.16.2", + "http-proxy": "^1.17.0", "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", + "dev": true, + "requires": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + } + }, + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "idb": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/idb/-/idb-2.1.3.tgz", + "integrity": "sha512-1He6QAuavrD38HCiJasi4lEEK87Y22ldFuM+ZHkp433n4Fd5jXjWKutClYFp8w4mgx3zgrjnWxL8dpjMzcQ+WQ==" + }, + "idb-connector": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/idb-connector/-/idb-connector-1.1.8.tgz", + "integrity": "sha512-x+NIYJYmBnmFSbALM0GniG6idlEx3z+wnWqe+nKn948+sjY3TRzMmdG2ZqcBrlV/AsOTl3CidCIgdqRnxL1jiA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^1.2.0", + "node-pre-gyp": "^0.11.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, + "optional": true, "requires": { "ms": "2.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "minipass": "^2.2.1" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "glob": { + "version": "7.1.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.11.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "minimist": { + "version": "1.2.0", + "bundled": true, "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "optional": true } } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "string_decoder": { + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "safe-buffer": "~5.1.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ansi-regex": "^2.0.0" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } + "optional": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "tar": { + "version": "4.4.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "wide-align": { + "version": "1.1.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "string-width": "^1.0.2 || 2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, "dev": true } } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "humanize-url": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", - "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", - "dev": true, - "requires": { - "normalize-url": "^1.0.0", - "strip-url-auth": "^1.0.0" - } - }, - "husky": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "dependencies": { - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "idb": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/idb/-/idb-2.1.3.tgz", - "integrity": "sha512-1He6QAuavrD38HCiJasi4lEEK87Y22ldFuM+ZHkp433n4Fd5jXjWKutClYFp8w4mgx3zgrjnWxL8dpjMzcQ+WQ==" - }, "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", @@ -5573,13 +5414,21 @@ } }, "internal-ip": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", - "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.1.0.tgz", + "integrity": "sha512-vMbCq5+5xM6cQ5Zpzw2fPirS3uOAabk0ep+plu8P659c7XuvaVN3G//utF0AWboZIKKL5YDpti7PO51m/wfomw==", "dev": true, "requires": { - "default-gateway": "^2.6.0", - "ipaddr.js": "^1.5.2" + "default-gateway": "^3.1.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + } } }, "invariant": { @@ -5628,6 +5477,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-arrayish": { @@ -5673,6 +5533,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-date-object": { @@ -5706,21 +5577,6 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5728,9 +5584,9 @@ "dev": true }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { @@ -5740,12 +5596,12 @@ "dev": true }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { @@ -5771,12 +5627,23 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-obj": { @@ -5839,28 +5706,8 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -5958,13 +5805,10 @@ "dev": true }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isstream": { "version": "0.1.2", @@ -6100,13 +5944,10 @@ "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true }, "latest-version": { "version": "3.1.0", @@ -6391,6 +6232,12 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -6567,12 +6414,6 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, "maxmin": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", @@ -6666,24 +6507,24 @@ "dev": true }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "microseconds": { @@ -6699,18 +6540,18 @@ "dev": true }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "~1.38.0" } }, "mimic-fn": { @@ -6985,26 +6826,6 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "negotiator": { @@ -7019,6 +6840,13 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.2.tgz", + "integrity": "sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA==", + "dev": true, + "optional": true + }, "node-forge": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", @@ -7266,13 +7094,22 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", "dev": true }, "object-visit": { @@ -7282,24 +7119,6 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" } }, "object.pick": { @@ -7309,14 +7128,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "obuf": { @@ -7335,9 +7146,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -7548,18 +7359,6 @@ "readable-stream": "^2.1.5" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -9238,12 +9037,6 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, "prettier": { "version": "1.16.4", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", @@ -9410,13 +9203,14 @@ "dev": true }, "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "dev": true, "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, "proxy-addr": { @@ -9540,31 +9334,6 @@ "performance-now": "^2.1.0" } }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -9606,6 +9375,12 @@ "strip-json-comments": "~2.0.1" } }, + "react-is": { + "version": "16.8.3", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.3.tgz", + "integrity": "sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA==", + "dev": true + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -9713,297 +9488,6 @@ "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } } }, "recursive-readdir-sync": { @@ -10081,15 +9565,6 @@ "private": "^0.1.6" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -10344,6 +9819,14 @@ "magic-string": "^0.25.1", "resolve": "^1.8.1", "rollup-pluginutils": "^2.3.3" + }, + "dependencies": { + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + } } }, "rollup-plugin-copy-glob": { @@ -10371,31 +9854,6 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } } } }, @@ -10559,13 +10017,13 @@ } }, "rollup-pluginutils": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", - "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz", + "integrity": "sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw==", "dev": true, "requires": { - "estree-walker": "^0.5.2", - "micromatch": "^2.3.11" + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" } }, "run-async": { @@ -10979,18 +10437,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -11001,6 +10447,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "sockjs": { @@ -11645,6 +11102,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-readable-stream": { @@ -11673,17 +11141,6 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } } }, "tough-cookie": { @@ -11775,9 +11232,9 @@ "dev": true }, "typescript": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3.tgz", - "integrity": "sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A==", + "version": "3.3.3333", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", + "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", "dev": true }, "uglify-es": { @@ -11957,12 +11414,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -12273,12 +11724,12 @@ } }, "webpack-dev-middleware": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", - "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.0.tgz", + "integrity": "sha512-oeXA3m+5gbYbDBGo4SvKpAHJJEGMoekUbHgo1RK7CP1sz7/WOSeu/dWJtSTk+rzDCLkPwQhGocgIq6lQqOyOwg==", "dev": true, "requires": { - "memory-fs": "~0.4.1", + "memory-fs": "^0.4.1", "mime": "^2.3.1", "range-parser": "^1.0.3", "webpack-log": "^2.0.0" @@ -12293,9 +11744,9 @@ } }, "webpack-dev-server": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", - "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.2.0.tgz", + "integrity": "sha512-CUGPLQsUBVKa/qkZl1MMo8krm30bsOHAP8jtn78gUICpT+sR3esN4Zb0TSBzOEEQJF0zHNEbwx5GHInkqcmlsA==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -12303,13 +11754,13 @@ "chokidar": "^2.0.0", "compression": "^1.5.2", "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", + "debug": "^4.1.1", "del": "^3.0.0", "express": "^4.16.2", "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", + "http-proxy-middleware": "^0.19.1", "import-local": "^2.0.0", - "internal-ip": "^3.0.1", + "internal-ip": "^4.0.0", "ip": "^1.1.5", "killable": "^1.0.0", "loglevel": "^1.4.1", @@ -12323,22 +11774,13 @@ "sockjs-client": "1.3.0", "spdy": "^4.0.0", "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", + "supports-color": "^6.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "3.4.0", + "webpack-dev-middleware": "^3.5.1", "webpack-log": "^2.0.0", "yargs": "12.0.2" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -12351,9 +11793,9 @@ } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" diff --git a/package.json b/package.json index 5ef577f0..69e6f8c5 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "lib:build:ts": "npx rollup -c --environment PROD,TS", "lib:build:ts:esnext": "npx rollup -c --environment PROD,TS,ES_NEXT", "lib:build:ts:getcoreclosure": "npx rollup -c --environment PROD,TS,GET_CORE_CLOSURE", + "lib:build:ts:getcoreclosure:closuredebug": "npx rollup -c --environment PROD,TS,GET_CORE_CLOSURE,CLOSURE_DEBUG", "lib:deploy": "npx run-s core:build lib:build:wasm lib:build:ts lib:deploy:np", "lib:deploy:np": "npx np", "test": "npm run test:accuracy", diff --git a/rollup.getcore.js b/rollup.getcore.js index a55a160f..7649d704 100644 --- a/rollup.getcore.js +++ b/rollup.getcore.js @@ -38,7 +38,17 @@ if (!process.env.ES_NEXT) { } if (process.env.GET_CORE_CLOSURE) { - plugins = [...plugins, compiler()]; + let closureCompilerOptions = {}; + + if (process.env.CLOSURE_DEBUG) { + console.log('Yoooo'); + closureCompilerOptions = { + ...closureCompilerOptions, + debug: true + }; + } + + plugins = [...plugins, compiler(closureCompilerOptions)]; } plugins = [...plugins, bundleSize()]; @@ -46,6 +56,22 @@ plugins = [...plugins, bundleSize()]; // Array of bundles to make const bundleMap = []; +const addDotIdentifiers = output => { + if (process.env.ES_NEXT) { + output += '.esnext'; + } + + if (process.env.GET_CORE_CLOSURE) { + output += '.closure'; + + if (process.env.CLOSURE_DEBUG) { + output += '.closuredebug'; + } + } + + return output; +}; + if (process.env.WASM) { let bundleMapObject = { name: 'WasmBoyWasmCore', @@ -53,13 +79,7 @@ if (process.env.WASM) { output: 'dist/core/getWasmBoyWasmCore' }; - if (process.env.ES_NEXT) { - bundleMapObject.output += '.esnext'; - } - - if (process.env.GET_CORE_CLOSURE) { - bundleMapObject.output += '.closure'; - } + bundleMapObject.output = addDotIdentifiers(bundleMapObject.output); bundleMap.push(bundleMapObject); } @@ -71,13 +91,7 @@ if (process.env.TS) { output: 'dist/core/getWasmBoyTsCore' }; - if (process.env.ES_NEXT) { - bundleMapObject.output = 'dist/core/getWasmBoyTsCore.esnext'; - } - - if (process.env.GET_CORE_CLOSURE) { - bundleMapObject.output += '.closure'; - } + bundleMapObject.output = addDotIdentifiers(bundleMapObject.output); bundleMap.push(bundleMapObject); } diff --git a/test/common-test.js b/test/common-test.js index c385bc89..a04b8888 100644 --- a/test/common-test.js +++ b/test/common-test.js @@ -16,7 +16,7 @@ const GAMEBOY_CAMERA_HEIGHT = 144; // Function to get our RGB image data array from our frame const getImageDataFromFrame = async () => { // Get our output frame - const frameInProgressVideoOutputLocation = await WasmBoy._getWasmConstant('frameInProgressVideoOutputLocation'); + const frameInProgressVideoOutputLocation = await WasmBoy._getWasmConstant('FRAME_LOCATION'); const frameInProgressMemory = await WasmBoy._getWasmMemorySection( frameInProgressVideoOutputLocation, frameInProgressVideoOutputLocation + GAMEBOY_CAMERA_HEIGHT * GAMEBOY_CAMERA_WIDTH * 3 + 1