Files
miles-web/projects/omniemu.html
T
miles d73ac305eb Add project highlights section and update project stats
- Introduced a new "Project Highlights" section in index.html with detailed stats for FEDL and OmniEmu 2.0.
- Implemented a grid layout for other projects with highlight cards.
- Enhanced project pages (decompilations, fedl, geode-mod, issue-tracker, moon-gaming, music-app, noto, nova, omniemu, rhythm-game) to display GitHub stats (stars, forks, issues, language).
- Updated styles in style.css for the new stats bar, including animations and responsive design adjustments.
- Changed the site logo from "miles.dev" to "milesallen.site" in the navigation.
2026-07-25 16:32:15 -05:00

225 lines
12 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OmniEmu 2.0 | Miles Wolf Allen</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="mesh-bg"></div>
<div class="grid-overlay"></div>
<div class="noise"></div>
<div class="bg-grid"></div>
<div class="bg-glow bg-glow-1"></div>
<div class="bg-glow bg-glow-2"></div>
<div class="container">
<nav>
<a href="../index.html" class="nav-logo"><span class="logo-dot"></span> miles.dev</a>
<div class="nav-links">
<a href="../index.html#about">About</a>
<a href="../index.html#skills">Skills</a>
<a href="../index.html#projects">Projects</a>
<a href="../index.html#contact">Contact</a>
</div>
</nav>
<section class="project-hero">
<div class="breadcrumb">
<a href="../index.html">Home</a>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
<span>OmniEmu 2.0</span>
</div>
<h1>OmniEmu 2.0</h1>
<p class="tagline">All your games. One place. A cross-platform emulator manager, game launcher, and ROM library for Windows, macOS, and Linux.</p>
<div class="project-meta-bar">
<a href="https://github.com/mileswolfallen2/OmniEmu2.0" class="meta-chip primary" target="_blank">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0020 4.77 5.07 5.07 0 0019.91 1S18.73.65 16 2.48a13.38 13.38 0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 005 4.77a5.44 5.44 0 00-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 009 18.13V22"/></svg>
View on GitHub
</a>
<a href="https://om.fedl.site" class="meta-chip" target="_blank">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/></svg>
Website
</a>
<span class="meta-chip" style="border-color: var(--green); color: var(--green);">Active Development</span>
<span class="meta-chip">TypeScript</span>
<span class="meta-chip">MIT License</span>
<span class="meta-chip">v0.3.2</span>
</div>
<div class="stats-bar">
<div class="stat-item">
<div class="stat-value accent" id="gh-stars">--</div>
<div class="stat-label">Stars</div>
</div>
<div class="stat-item">
<div class="stat-value green" id="gh-forks">--</div>
<div class="stat-label">Forks</div>
</div>
<div class="stat-item">
<div class="stat-value orange" id="gh-issues">--</div>
<div class="stat-label">Issues</div>
</div>
<div class="stat-item">
<div class="stat-value" id="gh-lang">--</div>
<div class="stat-label">Language</div>
</div>
</div>
</section>
<section class="reveal">
<div class="section-divider"></div>
<h2 class="section-title">Features</h2>
<p class="section-subtitle">Everything you need to manage your game library</p>
<div class="feature-grid">
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 5v14M5 12h14"/></svg>
One-Click Emulator Setup
</h3>
<p>Download, install, and auto-configure 20+ emulators from inside the app. No terminal required.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
ROM Library
</h3>
<p>Scan your ROMs, browse by platform, and launch games directly from a unified library.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.66 0 3-4.03 3-9s-1.34-9-3-9m0 18c-1.66 0-3-4.03-3-9s1.34-9 3-9"/></svg>
Game Art Scraping
</h3>
<p>Automatically fetches covers, screenshots, and metadata from SteamGridDB and libretro-thumbnails.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
RetroAchievements
</h3>
<p>View per-game achievements in the game detail modal. Supports RetroArch, PCSX2, DuckStation, and more.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="8" cy="12" r="2"/><circle cx="16" cy="12" r="2"/></svg>
Controller Navigation
</h3>
<p>Navigate the entire UI with a gamepad. Apply PS/Xbox-aware controller bindings to installed emulators.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 10h-1.26A8 8 0 109 20h9a5 5 0 000-10z"/></svg>
Cloud Sync
</h3>
<p>Sync save files between devices with built-in Syncthing integration. BIOS manager included.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"/></svg>
Decomp Projects
</h3>
<p>Install and manage PC port projects like Ship of Harkinian, SM64, and more.</p>
</div>
<div class="feature-card">
<h3>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
Light & Dark Mode
</h3>
<p>Choose your theme or follow system preference. Cross-platform with identical experience everywhere.</p>
</div>
</div>
</section>
<section class="reveal">
<div class="section-divider"></div>
<h2 class="section-title">Supported Emulators</h2>
<p class="section-subtitle">20+ emulators across Windows, macOS, and Linux</p>
<div class="table-wrapper">
<table>
<thead>
<tr><th>Emulator</th><th>Systems</th><th>Windows</th><th>macOS</th><th>Linux</th></tr>
</thead>
<tbody>
<tr><td>Dolphin</td><td>GameCube, Wii</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>RPCS3</td><td>PlayStation 3</td><td class="check">Yes</td><td class="cross">No</td><td class="check">Yes</td></tr>
<tr><td>Eden</td><td>Nintendo Switch</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>PCSX2</td><td>PlayStation 2</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>DuckStation</td><td>PlayStation 1</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Mednafen</td><td>PS1, PC Engine, Lynx, Neo Geo Pocket</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>MAME</td><td>Arcade</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>PPSSPP</td><td>PSP</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>melonDS</td><td>Nintendo DS</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Flycast</td><td>Dreamcast, Naomi</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Cemu</td><td>Wii U</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>xemu</td><td>Original Xbox</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Vita3K</td><td>PS Vita</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Azahar</td><td>Nintendo 3DS</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Project64</td><td>Nintendo 64</td><td class="check">Yes</td><td class="cross">No</td><td class="cross">No</td></tr>
<tr><td>Snes9x</td><td>SNES</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>mGBA</td><td>Game Boy, GBA</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>Mesen2</td><td>NES, SNES, GB, GBA, PC Engine</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
<tr><td>RetroArch</td><td>Multi-system</td><td class="check">Yes</td><td class="check">Yes</td><td class="check">Yes</td></tr>
</tbody>
</table>
</div>
</section>
<section class="reveal">
<div class="section-divider"></div>
<h2 class="section-title">Tech Stack</h2>
<div class="tech-stack">
<span class="tech-badge">TypeScript (91.4%)</span>
<span class="tech-badge">CSS (6.8%)</span>
<span class="tech-badge">JavaScript (0.8%)</span>
<span class="tech-badge">Shell (0.6%)</span>
<span class="tech-badge">Python (0.2%)</span>
<span class="tech-badge">HTML (0.1%)</span>
<span class="tech-badge">Vite</span>
<span class="tech-badge">Electron</span>
</div>
</section>
<section class="reveal">
<div class="section-divider"></div>
<h2 class="section-title">Quick Start</h2>
<div class="desc-text">
<p>Download the latest release for your platform, launch OmniEmu, install an emulator from the Library, set your ROMs directory, and start playing.</p>
</div>
<div class="code-block">
<span class="comment"># macOS</span><br>
sudo xattr -rd com.apple.quarantine /Applications/OmniEmu.app<br><br>
<span class="comment"># Linux</span><br>
chmod +x OmniEmu*.AppImage && ./OmniEmu*.AppImage<br><br>
<span class="comment"># Build from source</span><br>
<span class="cmd">npm install</span><br>
<span class="cmd">npm run start</span>
</div>
</section>
<footer>
<a href="../index.html" style="color: var(--accent); text-decoration: none;">Back to Home</a> &middot; Built by Miles &middot; 2026
</footer>
</div>
<script>
fetch('https://api.github.com/repos/mileswolfallen2/OmniEmu2.0')
.then(r => r.json())
.then(d => {
if (d.stargazers_count != null) document.getElementById('gh-stars').textContent = d.stargazers_count;
if (d.forks_count != null) document.getElementById('gh-forks').textContent = d.forks_count;
if (d.open_issues_count != null) document.getElementById('gh-issues').textContent = d.open_issues_count;
if (d.language) document.getElementById('gh-lang').textContent = d.language;
})
.catch(() => {});
const observer = new IntersectionObserver((entries) => {
entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });
}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });
document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
</script>
</body>
</html>