UNPKG

@konsumer/nuked

Version:

Yamaha OPL2/3 FM synth chip emulator

312 lines (308 loc) 54.6 kB
var __toBinary = /* @__PURE__ */ (() => { var table = new Uint8Array(128); for (var i = 0; i < 64; i++) table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i; return (base64) => { var n = base64.length, bytes = new Uint8Array((n - (base64[n - 1] == "=") - (base64[n - 2] == "=")) * 3 / 4 | 0); for (var i2 = 0, j = 0; i2 < n; ) { var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)]; var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)]; bytes[j++] = c0 << 2 | c1 >> 4; bytes[j++] = c1 << 4 | c2 >> 2; bytes[j++] = c2 << 6 | c3; } return bytes; }; })(); // src/nuked.wasm var nuked_default = __toBinary("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AQAAAAEAAAAEAO0AAp8BAAAAAQAAAAQA7QIBnwEAAAABAAAABADtAAGfAQAAAAEAAAAEAO0CAJ8BAAAAAQAAAAQA7QABnwEAAAABAAAABADtAgCfAQAAAAEAAAAEAO0AAZ8AAAAAAAAAAAEAAAABAAAABADtAAGfAAAAAAAAAAABAAAAAQAAAAQA7QIAnwEAAAABAAAABADtAAWfAQAAAAEAAAAEAO0AAp8BAAAAAQAAAAQA7QACnwAAAAAAAAAAAQAAAAEAAAAEAO0CAZ8BAAAAAQAAAAQA7QADnwAAAAAAAAAAAQAAAAEAAAAEAO0CAZ8BAAAAAQAAAAQA7QAEnwEAAAABAAAABADtAgGfAQAAAAEAAAAEAO0AAp8AAAAAAAAAAAEAAAABAAAABADtAAafAAAAAAAAAAABAAAAAQAAAAQA7QAAnwEAAAABAAAABADtAgCfAQAAAAEAAAAEAO0AAZ8BAAAAAQAAAAQA7QIAnwEAAAABAAAABADtAAGfAQAAAAEAAAAEAO0CAJ8BAAAAAQAAAAQA7QABnwEAAAABAAAABADtAgCfAQAAAAEAAAAEAO0AAZ8BAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QICnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIDnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIDnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIDnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIGnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIDnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QICnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QICnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIAnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QICnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA7QIFnwAAAAAAAAAA/////wAAAAABAAAAAQAAAAQA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ZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3BhdGhfcmVtb3ZlX2RpcmVjdG9yeQBfX3dhc2lfcGF0aF9jcmVhdGVfZGlyZWN0b3J5AF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9wYXRoX2NyZWF0ZV9kaXJlY3RvcnkAZHVtbXkAaG93AGFyZ3YAZGV2AF9fd2FzaV9zb2NrX3JlY3YAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3NvY2tfcmVjdgB1AHRpbWVvdXQAZGVzdAB1bnNpZ25lZCBzaG9ydABfX3dhc2lfc29ja19hY2NlcHQAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3NvY2tfYWNjZXB0AHVuc2lnbmVkIGludABfX3dhc2lfcHJvY19leGl0AF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9wcm9jX2V4aXQAX0V4aXQAbWVtc2V0AG9mZnNldAByZXQAX193YXNpX2ZkX3ByZXN0YXRfZ2V0AF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9mZF9wcmVzdGF0X2dldABfX3dhc2lfcGF0aF9maWxlc3RhdF9nZXQAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3BhdGhfZmlsZXN0YXRfZ2V0AF9fd2FzaV9mZF9maWxlc3RhdF9nZXQAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX2ZpbGVzdGF0X2dldABfX3dhc2lfZmRfZmRzdGF0X2dldABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfZmRzdGF0X2dldABfX3dhc2lfYXJnc19nZXQAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2FyZ3NfZ2V0AF9fd2FzaV9hcmdzX3NpemVzX2dldABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfYXJnc19zaXplc19nZXQAX193YXNpX2Vudmlyb25fc2l6ZXNfZ2V0AF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9lbnZpcm9uX3NpemVzX2dldABfX3dhc2lfY2xvY2tfcmVzX2dldABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfY2xvY2tfcmVzX2dldABfX3dhc2lfZW52aXJvbl9nZXQAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2Vudmlyb25fZ2V0AF9fd2FzaV9yYW5kb21fZ2V0AF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9yYW5kb21fZ2V0AF9fd2FzaV9jbG9ja190aW1lX2dldABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfY2xvY2tfdGltZV9nZXQAX193YXNpX3N1YnNjcmlwdGlvbl91X3VfdABfX3dhc2lfcHJlc3RhdF91X3QAX193YXNpX3N1YnNjcmlwdGlvbl91X3QAX193YXNpX2xpbmtjb3VudF90AF9fd2FzaV9ldmVudF90AF9fd2FzaV9wcmVzdGF0X3QAX193YXNpX2ZpbGVzdGF0X3QAX193YXNpX2Zkc3RhdF90AF9fd2FzaV9yaWdodHNfdABfX3dhc2lfZXZlbnRyd2ZsYWdzX3QAX193YXNpX2ZzdGZsYWdzX3QAX193YXNpX2xvb2t1cGZsYWdzX3QAX193YXNpX3JvZmxhZ3NfdABfX3dhc2lfb2ZsYWdzX3QAX193YXNpX3N1YmNsb2NrZmxhZ3NfdABfX3dhc2lfc2lmbGFnc190AF9fd2FzaV9yaWZsYWdzX3QAX193YXNpX3NkZmxhZ3NfdABfX3dhc2lfZmRmbGFnc190AHVpbnRwdHJfdABfX3dhc2lfcHJlc3RhdF9kaXJfdABfX3dhc2lfdGltZXN0YW1wX3QAX193YXNpX2Vycm5vX3QAX193YXNpX3N1YnNjcmlwdGlvbl90AF9fd2FzaV9zdWJzY3JpcHRpb25fY2xvY2tfdABfX3dhc2lfZmlsZXNpemVfdABfX3dhc2lfc2l6ZV90AF9fd2FzaV9ldmVudF9mZF9yZWFkd3JpdGVfdABfX3dhc2lfc3Vic2NyaXB0aW9uX2ZkX3JlYWR3cml0ZV90AF9fd2FzaV9ldmVudHR5cGVfdABfX3dhc2lfZmlsZXR5cGVfdABfX3dhc2lfZGlyY29va2llX3QAX193YXNpX2lub2RlX3QAX193YXNpX2V4aXRjb2RlX3QAX193YXNpX3doZW5jZV90AF9fd2FzaV9kZXZpY2VfdABfX3dhc2lfYWR2aWNlX3QAX193YXNpX2Nsb2NraWRfdABfX3dhc2lfZmRfdABfX3dhc2lfY2lvdmVjX3QAX193YXNpX2lvdmVjX3QAX193YXNpX2ZpbGVkZWx0YV90AF9fd2FzaV91c2VyZGF0YV90AHVpbnQ4X3QAdWludDE2X3QAdWludDY0X3QAdWludDMyX3QAaW92cwBzdGF0dXMAX193YXNpX2ZkX2Zkc3RhdF9zZXRfcmlnaHRzAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9mZF9mZHN0YXRfc2V0X3JpZ2h0cwBfX3dhc21fY2FsbF9kdG9ycwBuc3Vic2NyaXB0aW9ucwBkaXJmbGFncwBvZmxhZ3MAZmRmbGFncwBmc3RfZmxhZ3MAX193YXNpX2ZkX2Zkc3RhdF9zZXRfZmxhZ3MAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX2Zkc3RhdF9zZXRfZmxhZ3MAZnNfZmxhZ3MAc2lfZmxhZ3MAcmlfZmxhZ3MAb2xkX2ZsYWdzAG5ieXRlcwBfX3dhc2lfcGF0aF9maWxlc3RhdF9zZXRfdGltZXMAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3BhdGhfZmlsZXN0YXRfc2V0X3RpbWVzAF9fd2FzaV9mZF9maWxlc3RhdF9zZXRfdGltZXMAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX2ZpbGVzdGF0X3NldF90aW1lcwBmaWxlX2Rlc2NyaXB0b3IAZXJyb3IAX193YXNpX2ZkX3JlYWRkaXIAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX3JlYWRkaXIAX193YXNpX2ZkX3JlbnVtYmVyAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9mZF9yZW51bWJlcgB1bnNpZ25lZCBjaGFyAHRvAGlubwBfX3dhc2lfc29ja19zaHV0ZG93bgBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfc29ja19zaHV0ZG93bgBlbnZpcm9uAHByZWNpc2lvbgBpbgBfX3dhc2lfcGF0aF9vcGVuAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9wYXRoX29wZW4Ac3RybGVuAGlvdnNfbGVuAG5ld19wYXRoX2xlbgBvbGRfcGF0aF9sZW4AYnVmX2xlbgBwcl9uYW1lX2xlbgBzaV9kYXRhX2xlbgByaV9kYXRhX2xlbgBtdGltAGN0aW0AYXRpbQBfX3dhc2lfZmRfdGVsbABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfdGVsbABydmFsAG5saW5rAF9fd2FzaV9wYXRoX3N5bWxpbmsAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3BhdGhfc3ltbGluawBfX3dhc2lfcGF0aF9yZWFkbGluawBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfcGF0aF9yZWFkbGluawBfX3dhc2lfcGF0aF9saW5rAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9wYXRoX2xpbmsAX193YXNpX2ZkX3NlZWsAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX3NlZWsAY2xvY2sAd2FzaXNkazovL3YyNS4wL2J1aWxkL3N5c3Jvb3Qvd2FzaS1saWJjLXdhc20zMi13YXNpAG5ld19wYXRoAG9sZF9wYXRoAHVuc2lnbmVkIGxvbmcgbG9uZwB1bnNpZ25lZCBsb25nAGZzX3JpZ2h0c19pbmhlcml0aW5nAHRhZwBhcmd2X2J1ZgBlbnZpcm9uX2J1ZgBfX3dhc2lfcG9sbF9vbmVvZmYAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX3BvbGxfb25lb2ZmAF9fd2FzaV9mZF9maWxlc3RhdF9zZXRfc2l6ZQBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfZmlsZXN0YXRfc2V0X3NpemUAX193YXNpX2ZkX3B3cml0ZQBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfcHdyaXRlAGZkX3JlYWR3cml0ZQBfX3dhc2lfZmRfd3JpdGUAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX3dyaXRlAF9fd2FzaV9mZF9hbGxvY2F0ZQBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfYWxsb2NhdGUAX193YXNpX2ZkX2Nsb3NlAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9mZF9jbG9zZQBfX3dhc2lfZmRfYWR2aXNlAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9mZF9hZHZpc2UAZnNfcmlnaHRzX2Jhc2UAZnNfZmlsZXR5cGUAX193YXNpX3BhdGhfcmVuYW1lAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9wYXRoX3JlbmFtZQBfX3dhc2lfZmRfcHJlc3RhdF9kaXJfbmFtZQBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfcHJlc3RhdF9kaXJfbmFtZQBfX3dhc2lfcGF0aF91bmxpbmtfZmlsZQBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfcGF0aF91bmxpbmtfZmlsZQBjb29raWUAY29kZQB3aGVuY2UAYWR2aWNlAHdvcmQAX193YXNpX3NvY2tfc2VuZABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfc29ja19zZW5kAF9fd2FzaV9zY2hlZF95aWVsZABpZABuZXdfZmQAb2xkX2ZkAF9fd2FzaV9mZF9wcmVhZABfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfcHJlYWQAX193YXNpX2ZkX3JlYWQAX19pbXBvcnRlZF93YXNpX3NuYXBzaG90X3ByZXZpZXcxX2ZkX3JlYWQAX193YXNpX2ZkX2RhdGFzeW5jAF9faW1wb3J0ZWRfd2FzaV9zbmFwc2hvdF9wcmV2aWV3MV9mZF9kYXRhc3luYwBfX3dhc2lfZmRfc3luYwBfX2ltcG9ydGVkX3dhc2lfc25hcHNob3RfcHJldmlldzFfZmRfc3luYwBsaWJjLXRvcC1oYWxmL211c2wvc3JjL2V4aXQvZXhpdC5jAGxpYmMtYm90dG9tLWhhbGYvY2xvdWRsaWJjL3NyYy9saWJjL3N0ZGxpYi9fRXhpdC5jAGxpYmMtdG9wLWhhbGYvbXVzbC9zcmMvc3RyaW5nL21lbXNldC5jAGxpYmMtdG9wLWhhbGYvbXVzbC9zcmMvc3RyaW5nL3N0cmxlbi5jAGxpYmMtYm90dG9tLWhhbGYvc291cmNlcy9fX3dhc2lsaWJjX3JlYWwuYwB1c2VyZGF0YQBzaV9kYXRhAHJpX2RhdGEAdTY0AGM2NAB1MzIAYzMyAHJldHB0cjEAcmV0cHRyMABjbGFuZyB2ZXJzaW9uIDE5LjEuNS13YXNpLXNkayAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGFiNGI1YTJkYjU4Mjk1OGFmMWVlMzA4YTc5MGNmZGI0MmJkMjQ3MjApAADRCAsuZGVidWdfbGluZaQAAAAEAJ4AAAABAQH7Dg0AAQEBAQAAAAEAAAF3YXNpc2RrOi8vdjI1LjAvYnVpbGQvc3lzcm9vdC9pbnN0YWxsL3NoYXJlL3dhc2ktc3lzcm9vdC9pbmNsdWRlL3dhc20zMi13YXNpL2JpdHMAbGliYy10b3AtaGFsZi9tdXNsL3NyYy9zdHJpbmcAAGFsbHR5cGVzLmgAAQAAbWVtc2V0LmMAAgAAAKQAAAAEAJ4AAAABAQH7Dg0AAQEBAQAAAAEAAAF3YXNpc2RrOi8vdjI1LjAvYnVpbGQvc3lzcm9vdC9pbnN0YWxsL3NoYXJlL3dhc2ktc3lzcm9vdC9pbmNsdWRlL3dhc20zMi13YXNpL2JpdHMAbGliYy10b3AtaGFsZi9tdXNsL3NyYy9zdHJpbmcAAGFsbHR5cGVzLmgAAQAAc3RybGVuLmMAAgAAAGUBAAAEAF8BAAABAQH7Dg0AAQEBAQAAAAEAAAF3YXNpc2RrOi8vdjI1LjAvYnVpbGQvc3lzcm9vdC9pbnN0YWxsL3NoYXJlL3dhc2ktc3lzcm9vdC9pbmNsdWRlL3dhc20zMi13YXNpL2JpdHMAbGliYy1ib3R0b20taGFsZi9zb3VyY2VzAHdhc2lzZGs6Ly92MjUuMC9idWlsZC9zeXNyb290L2luc3RhbGwvc2hhcmUvd2FzaS1zeXNyb290L2luY2x1ZGUvd2FzbTMyLXdhc2kAd2FzaXNkazovL3YyNS4wL2J1aWxkL3N5c3Jvb3QvaW5zdGFsbC9zaGFyZS93YXNpLXN5c3Jvb3QvaW5jbHVkZS93YXNtMzItd2FzaS93YXNpAABhbGx0eXBlcy5oAAEAAF9fd2FzaWxpYmNfcmVhbC5jAAIAAF9faGVhZGVyX3N0cmluZy5oAAMAAGFwaS5oAAQAAAALAQAABAAFAQAAAQEB+w4NAAEBAQEAAAABAAABbGliYy1ib3R0b20taGFsZi9jbG91ZGxpYmMvc3JjL2xpYmMvc3RkbGliAHdhc2lzZGs6Ly92MjUuMC9idWlsZC9zeXNyb290L2luc3RhbGwvc2hhcmUvd2FzaS1zeXNyb290L2luY2x1ZGUvd2FzbTMyLXdhc2kvd2FzaQB3YXNpc2RrOi8vdjI1LjAvYnVpbGQvc3lzcm9vdC9pbnN0YWxsL3NoYXJlL3dhc2ktc3lzcm9vdC9pbmNsdWRlL3dhc20zMi13YXNpL2JpdHMAAF9FeGl0LmMAAQAAYXBpLmgAAgAAYWxsdHlwZXMuaAADAAAAeQAAAAQAcwAAAAEBAfsODQABAQEBAAAAAQAAAWxpYmMtdG9wLWhhbGYvbXVzbC9zcmMvZXhpdABsaWJjLXRvcC1oYWxmL211c2wvc3JjL2luY2x1ZGUvLi4vLi4vaW5jbHVkZQAAZXhpdC5jAAEAAHN0ZGxpYi5oAAIAAAAAngMNLmRlYnVnX3Jhbmdlc/7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v///wAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAP7////+////AAAAAAAAAAAAjgEJcHJvZHVjZXJzAghsYW5ndWFnZQEDQzExAAxwcm9jZXNzZWQtYnkBBWNsYW5nXzE5LjEuNS13YXNpLXNkayAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGFiNGI1YTJkYjU4Mjk1OGFmMWVlMzA4YTc5MGNmZGI0MmJkMjQ3MjApAGcPdGFyZ2V0X2ZlYXR1cmVzBisPbXV0YWJsZS1nbG9iYWxzKwtidWxrLW1lbW9yeSsIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZSsPYnVsay1tZW1vcnktb3B0"); // src/audio.worker.js var audio_worker_default = "var wasmBytes = new Uint8Array([WASMBYTES])\n\nclass NukedOpl3Processor extends AudioWorkletProcessor {\n constructor(...args) {\n super(...args)\n\n this.i = 0\n\n WebAssembly.instantiate(wasmBytes, {}).then(({ instance }) => {\n this.wasm = instance.exports\n this.wasm.reset(sampleRate)\n this.port.postMessage({ type: 'wasm-ready' })\n })\n\n this.port.onmessage = ({ data: { type, ...args } }) => {\n if (type === 'queue') {\n this.queuedSoundData = args.queue\n this.sendTime(this.queuedSoundData)\n this.port.postMessage({ type: 'queue' })\n this.wasm.reset(sampleRate)\n this.stop()\n } else if (type === 'stop') {\n this.stop()\n } else if (type === 'play') {\n this.play()\n } else if (type === 'pause') {\n this.pause()\n } else if (type === 'seek') {\n this.seek(args.time)\n }\n }\n }\n\n process(inputs, outputs, parameters) {\n if (!this.wasm) {\n return true\n }\n\n const bufferSize = outputs[0][0].length\n\n if (this.queuedSoundData) {\n this.soundData = this.queuedSoundData\n this.queuedSoundData = null\n this.dataIndex = 0\n this.samplePosition = 0\n this.wasm.reset(sampleRate)\n }\n\n // every 20 data-frames output info about time\n if (this.i++ % 20 === 0) {\n this.sendTime(this.soundData)\n }\n\n if (!this.soundData || this.softStop > 0) {\n for (var sample = 0; sample < bufferSize; sample++) {\n outputs[0][0][sample] = outputs[0][1][sample] = 0\n }\n return true\n }\n\n const rateFactor = this.soundData.cmdRate / sampleRate\n\n const v = new DataView(this.wasm.memory.buffer)\n const ptr = this.wasm.buf_ptr()\n\n if (this.afterSeek) {\n this.samplePosition = bufferSize * Math.floor(this.samplePosition / bufferSize)\n this.afterSeek = false\n }\n\n for (var sample = 0; sample < bufferSize; sample++) {\n while (this.dataIndex < this.soundData.commands.length && this.soundData.commands[this.dataIndex].t <= this.samplePosition * rateFactor) {\n const command = this.soundData.commands[this.dataIndex++]\n this.wasm.write(command.r, command.v)\n }\n if (this.dataIndex == this.soundData.commands.length) {\n this.stop()\n } else {\n this.samplePosition++\n }\n this.wasm.render()\n outputs[0][0][sample] = v.getInt16(ptr, true) / 32768\n outputs[0][1][sample] = v.getInt16(ptr + 2, true) / 32768\n }\n\n return true\n }\n\n sendTime(soundData) {\n const current = (this.samplePosition || 0) / (sampleRate ?? 1)\n const total = !soundData?.commands || soundData.commands.length == 0 ? 0 : soundData.commands[soundData.commands.length - 1].t / soundData.cmdRate\n this.port.postMessage({ type: 'time', total, current })\n }\n\n pause() {\n this.softStop = this.softStop ? 0 : 1\n }\n\n stop() {\n this.dataIndex = 0\n this.samplePosition = 0\n this.softStop = 1\n }\n\n play() {\n this.softStop = 0\n }\n\n seek(time) {\n if (!this.soundData?.commands) {\n return\n }\n const adjTime = time * this.soundData.cmdRate\n this.wasm.reset(sampleRate)\n this.dataIndex = 0\n var registerData = []\n while (this.dataIndex < this.soundData.commands.length && this.soundData.commands[this.dataIndex].t < adjTime) {\n const command = this.soundData.commands[this.dataIndex++]\n registerData[command.r] = command.v\n }\n if (registerData[0x105]) {\n this.wasm.write(0x105, registerData[0x105])\n }\n for (const r in registerData) {\n this.wasm.write(r, registerData[r])\n }\n if (this.dataIndex < this.soundData.commands.length) {\n this.samplePosition = time * sampleRate\n this.afterSeek = true\n } else {\n this.stop()\n }\n }\n}\n\nregisterProcessor('nuked-opl3-processor', NukedOpl3Processor)\n"; // src/interface.js var workletJS = audio_worker_default.replace("WASMBYTES", nuked_default.join(",")); var debug = false ? console.debug : () => { }; function soundLoad(soundData) { if (soundData.dualOpl2Mode) { soundData.commands = soundData.commands.map((c) => { if ( // Command writes into a relevant register... (c.r & 255) >= 192 && (c.r & 255) <= 200 && // ...that has all channel bits off // (which means it's likely just plain OPL2 data as expected) (c.v & 240) == 0 ) c.v |= c.r < 256 ? 16 : 32; return c; }); soundData.commands.unshift({ t: 0, r: 261, v: 1 }); } return soundData; } function imf(imfData, imfRate = 560) { var soundData = { commands: [], cmdRate: imfRate }; var arr = new Uint8Array(imfData); var time = 0; var length = arr[0] | arr[1] << 8; var extraSearch = arr[2] | arr[3] << 8; var startOffset = 2; if (length == 0) { length = arr.byteLength; startOffset = extraSearch == 0 ? 0 : 2; } for (var i = startOffset; i < length; i += 4) { soundData.commands.push({ t: time, r: arr[i], v: arr[i + 1] }); time += arr[i + 2] | arr[i + 3] << 8; } return soundLoad(soundData); } function raw(rawData) { const pitFreq = 14318180 / 12; var soundData = { commands: [], cmdRate: pitFreq }; var arr = new Uint8Array(rawData); const get16 = (i2) => arr[i2] | arr[i2 + 1] << 8; const get32 = (i2) => arr[i2] | arr[i2 + 1] << 8 | arr[i2 + 2] << 16 | arr[i2 + 3] << 24; if (get32(0) != 1096237394 && get32(4) != 1096040772) { console.error("Not a RAW file: Bad file identifier!"); return soundLoad(soundData); } var time = 0; var clock = get16(8); var regOffset = 0; for (var i = 10; i < arr.byteLength; i += 2) { const r = arr[i + 1]; const v = arr[i]; if (r == 0) { time += v * clock; continue; } else if (r == 2) { if (v == 0) { i += 2; clock = get16(i); } else if (v == 1) { regOffset = 0; } else if (v == 2) { regOffset = 256; } continue; } else { soundData.commands.push({ t: time, r: r | regOffset, v }); } } return soundLoad(soundData); } function dro(droData) { var soundData = { commands: [], cmdRate: 1e3, dualOpl2Mode: false }; var arr = new Uint8Array(droData); const get16 = (i2) => arr[i2] | arr[i2 + 1] << 8; const get32 = (i2) => arr[i2] | arr[i2 + 1] << 8 | arr[i2 + 2] << 16 | arr[i2 + 3] << 24; if (get32(0) != 1095909956 && get32(4) != 1280331607) { console.error("Not a DRO file: Bad file identifier!"); return soundLoad(soundData); } const version = get16(8).toString(16) + "." + get16(10).toString(16); debug("DRO file version:", version == "0.1" ? 1 : +version); if (version < 2) { const hardware = arr[20]; switch (hardware) { case 0: debug("Chip type: OPL2"); break; case 1: debug("Chip type: OPL3"); break; case 2: debug("Chip type: Dual OPL2"); soundData.dualOpl2Mode = true; break; default: debug("Unknown chip type!"); return soundLoad(soundData); } const dataOffset = get32(20) - hardware == 0 ? 24 : 21; var time = 0; var regOffset = 0; for (var i = dataOffset; i < arr.byteLength; i++) { const r = arr[i]; switch (r) { // Delay D case 0: time += arr[i + 1] + 1; i++; break; // Delay Dl, Dh case 1: time += (arr[i + 1] | arr[i + 2] << 8) + 1; i += 2; break; // Set low chip / p0 case 2: regOffset = 0; break; // Set high chip / p1 case 3: regOffset = 256; break; // Register escape: [E], R, V case 4: soundData.commands.push({ t: time, r: arr[i + 1] | regOffset, v: arr[i + 2] }); i += 2; break; // R, V default: soundData.commands.push({ t: time, r: r | regOffset, v: arr[i + 1] }); i++; break; } } return soundLoad(soundData); } else if (version == 2) { const hardware = arr[20]; switch (hardware) { case 0: debug("Chip type: OPL2"); break; case 1: debug("Chip type: Dual OPL2"); soundData.dualOpl2Mode = true; break; case 2: debug("Chip type: OPL3"); break; default: debug("Unknown chip type!"); return soundLoad(soundData); } const format = arr[21]; if (format != 0) { console.error("Only interleaved mode is supported!"); return soundLoad(soundData); } const compression = arr[22]; if (compression != 0) { console.error("Only uncompressed data is supported!"); return soundLoad(soundData); } const shortDelayCode = arr[23]; const longDelayCode = arr[24]; const codemapLength = arr[25]; var codes = []; for (var i = 0; i < codemapLength; i++) codes[i] = arr[26 + i]; var time = 0; for (var i = 26 + codemapLength; i < arr.byteLength; i++) { const r = arr[i]; switch (r) { // Delay D case shortDelayCode: time += arr[i + 1] + 1; i++; break; // 256x delay D case longDelayCode: time += arr[i + 1] + 1 << 8; i++; break; // R, V default: const rc = r & 128 ? 256 | codes[r & 127] : codes[r]; soundData.commands.push({ t: time, r: rc, v: arr[i + 1] }); i++; break; } } return soundLoad(soundData); } else { console.error("DRO version", +version, "playback not supported!"); return soundLoad(soundData); } } function vgm(vgmData, loopRepeat) { var soundData = { commands: [], cmdRate: 44100, dualOpl2Mode: false }; var arr = new Uint8Array(vgmData); const get32 = (i2) => arr[i2] | arr[i2 + 1] << 8 | arr[i2 + 2] << 16 | arr[i2 + 3] << 24; if (get32(0) != 544040790) { console.error("Not a VGM file: Bad file identifier!"); return soundLoad(soundData); } const version = get32(8).toString(16); const dataOffset = version < 150 ? 64 : 52 + get32(52); debug("VGM file version:", +(version / 100).toFixed(2), "data offset:", dataOffset); var loopOffset = get32(28); if (loopOffset) loopOffset += 28; const loopCount = get32(32); if (loopCount) debug("Loop present:", loopCount, "@", loopOffset); const clockOpl2 = get32(80) & 1073741823; const clockOpl3 = get32(92) & 1073741823; if (clockOpl2 == 3579545) debug("OPL2 detected:", clockOpl2, "Hz", "(standard clock rate)"); else if (clockOpl2) debug("OPL2 detected:", clockOpl2, "Hz"); if (clockOpl3 == 14318180) debug("OPL3 detected:", clockOpl3, "Hz", "(standard clock rate)"); else if (clockOpl3) debug("OPL3 detected:", clockOpl3, "Hz"); const dualOpl2 = get32(80) & 1073741824; const dualOpl3 = get32(92) & 1073741824; if (dualOpl2) { debug("Dual OPL2 mode!"); soundData.dualOpl2Mode = true; } if (dualOpl3) { console.error("Dual OPL3 mode not supported!"); return soundLoad(soundData); } if (clockOpl2 && clockOpl3) { console.error("Combined OPL2 and OPL3 playback not supported!"); return soundLoad(soundData); } var time = 0; for (var loop = 0; loop < (loopCount ? 1 + (loopRepeat ?? 1) : 1); loop++) { var start = loop == 0 ? dataOffset : loopOffset; for (var i = start; i < arr.byteLength; i++) { if (arr[i] >= 112 && arr[i] <= 127) { time += arr[i] & 15; } else switch (arr[i]) { case 90: soundData.commands.push({ t: time, r: arr[i + 1], v: arr[i + 2] }); i += 2; break; case 91: soundData.commands.push({ t: time, r: arr[i + 1], v: arr[i + 2] }); i += 2; break; case 94: soundData.commands.push({ t: time, r: arr[i + 1], v: arr[i + 2] }); i += 2; break; case 170: // YM3812#2 R, V // Stored in YMF262 p1. Only allowed because the OPL2 + OPL3 combination is forbidden! // case fall-through! case 95: soundData.commands.push({ t: time, r: 256 | arr[i + 1], v: arr[i + 2] }); i += 2; break; case 97: time += arr[i + 1] | arr[i + 2] << 8; i += 2; break; case 98: time += 735; break; case 99: time += 882; break; case 102: i = arr.byteLength; break; default: console.warn("Unknown command", arr[i].toString(16), "at offset", i);