Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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" + '
GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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" + ' GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, '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); } })(); })(); GitHub - Ramaerel/RetroHub: An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works · GitHub
Skip to content

Repository files navigation

RetroHub Badge_License

Formerly EJS Library *A game library and rom management tool using EmulatorJS


This site allows users to run and manage their ROMs, using EmulatorJS and the RetroAchievements website.

Disclaimer

I will no longer be working on this project; this final update was purely me learning how to program better for my new project

Features

Modern Game Library Interface

Grid and list views for your ROM collection Search and filter by console type Game cards with cover art and metadata

Powerful ROM Management

Bulk upload capability for ROMs Automatic console detection based on file extension Support for various ROM formats including ZIP files

RetroAchievements Integration

Automatic game metadata and images from RetroAchievements Game info including developer, publisher, release date Cover art, screenshots, and title screens

Profile System

Netflix-style profile switching for family sharing Custom avatars for each profile Independent save states per profile

Advanced Save State System

Multiple save slots per game Screenshot preview of each save state Seamless saving/loading during gameplay

BIOS Management

Upload and manage BIOS files for various systems Visual indication of installed BIOS files System-specific BIOS requirements reference

Cloud Save Support

Server-side save state management Persistent game progress across sessions Backup protection for your progress

Installation

Requires a PHP-enabled web server (XAMPP, WAMP, or similar) Copy all files to your web server's document root Ensure proper permissions for cache and save directories Access the site via your web browser

RetroAchievements Setup

(This is for direct access. If using a Proxy, I have one set up already and linked in :) Go to Settings → RetroAchievements Enable RetroAchievements integration Choose between direct API access (requires your own API key) or proxy mode If using direct access, enter your RetroAchievements API key from your account's control panel Save settings and enjoy enhanced game metadata and images

BIOS Requirements

Some systems require BIOS files to function correctly. Upload your BIOS files through the BIOS management page. Common requirements include:

PlayStation: SCPH5500.bin, SCPH5501.bin, SCPH5502.bin Game Boy Advance: gba_bios.bin Nintendo DS: bios7.bin, bios9.bin, firmware.bin Sega CD: bios_CD_U.bin, bios_CD_J.bin, bios_CD_E.bin

Support

This project is no longer actively maintained. For similar functionality with professional support, please visit Temporus. License RetroHub is released under the GPL license.

Screenshots

Library (Main Page)

Library

Upload ROMs

Upload_ROMs

Upload BIOS

Upload_BIOs

Settings (Profile Management)

Settings

Game Screen

Game_1Game_2

Credits

EmulatorJS - Emulation core
RetroAchievements - Game metadata and images

About

An addition to ethan's EmulatorJS, which is a basic games library that reads the contents of a roms folder for its library (?) as requested. Not the prettiest, but it works

Resources

Stars

76 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages