Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

EmulatorJS Dark Mode LogoEmulatorJS Light Mode Logo

Self-hosted JavaScript emulation for various systems.

License: GPLv3WebsiteUsage DocsConfiguratorLive DemoContributors

Join our Discord server:

Discord Badge


Getting Started

Supported Systems

EmulatorJS supports a wide variety of legacy consoles and arcade machines. For the complete list of supported cores, please visit our Cores Documentation.

Versioning Guide

We use a specific versioning system to help you choose the right build for your needs:

  1. Stable - The most current release. Both code and cores are tested before release. Updated when new versions are released on GitHub. This is the default version on the Demo.
  2. Latest - Contains the latest code but uses stable cores. Updated whenever the main branch is updated. This version will often be more broken than nightly
  3. Nightly - Contains the latest code and the latest cores. Cores are updated daily. This version is not recommended for production use as it is the main development branch.

CDN Integration

EmulatorJS provides a public CDN at https://cdn.emulatorjs.org/. You can access any version by setting the data path and loader.js accordingly.

// Example ConfigurationconstEJS_pathToData='https://cdn.emulatorjs.org/<version>/data/';// Replace <version> with: stable, latest, nightly, etc.

Development

To run the project locally for development:

  1. Open a terminal in the root directory.
  2. Install dependencies:
    npm i
  3. Start the server/minification:
    npm run start
  4. Open http://localhost:8080/ to view the demo.

Note: Minify your script files before deploying to a production server to optimize load times and bandwidth. See Minification Docs.


Community & Support

3rd Party Integrations

EmulatorJS is built as a library/plugin, not a standalone website (therefore, no Docker container). For projects that utilize EmulatorJS, check out our 3rd Party Integration List.

Issues & Reporting

If you encounter an issue, please open an Issue on GitHub. Include as many details as possible, including your browser console logs.

When reporting bugs, please specify the version you are using (Stable/Latest/Nightly).

Support the Project

This project is free and ad-free. The demo page may show occasional ads to help with hosting costs, but you can support development directly via Patreon.


Star History

Star History Chart