fix: ARCADE portal - CDN EmulatorJS, ROM upload UI, NOMADZ branding
Browse files- index.html +100 -12
index.html
CHANGED
|
@@ -1,19 +1,107 @@
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
<html lang="en">
|
| 3 |
<head>
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
</head>
|
| 9 |
<body>
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
</body>
|
| 19 |
</html>
|
|
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
<html lang="en">
|
| 3 |
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>NOMADZ CLOUD ARCADE</title>
|
| 7 |
+
<style>
|
| 8 |
+
*{margin:0;padding:0;box-sizing:border-box}
|
| 9 |
+
body{background:#000;color:#0ff;font-family:'Courier New',monospace;min-height:100vh;overflow-x:hidden}
|
| 10 |
+
.scanlines{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,0.15) 2px,rgba(0,0,0,0.15) 4px)}
|
| 11 |
+
.header{text-align:center;padding:20px;border-bottom:2px solid #0ff;text-shadow:0 0 20px #0ff}
|
| 12 |
+
.header h1{font-size:2.5em;letter-spacing:8px;color:#0ff;animation:glow 2s ease-in-out infinite alternate}
|
| 13 |
+
.header p{color:#f0f;letter-spacing:4px;margin-top:8px;font-size:0.9em}
|
| 14 |
+
@keyframes glow{from{text-shadow:0 0 10px #0ff,0 0 20px #0ff}to{text-shadow:0 0 20px #0ff,0 0 40px #0ff,0 0 60px #0ff}}
|
| 15 |
+
.portal{max-width:1000px;margin:30px auto;padding:0 20px}
|
| 16 |
+
.controls{display:grid;grid-template-columns:1fr 1fr 1fr;gap:15px;margin-bottom:25px}
|
| 17 |
+
.ctrl-group{background:#001a1a;border:1px solid #0ff;padding:15px;border-radius:4px}
|
| 18 |
+
.ctrl-group label{display:block;color:#0ff;font-size:0.75em;letter-spacing:2px;margin-bottom:8px}
|
| 19 |
+
select,input[type=file]{width:100%;background:#000;color:#0ff;border:1px solid #0ff;padding:8px;font-family:inherit;font-size:0.85em;cursor:pointer}
|
| 20 |
+
select:focus,input:focus{outline:none;border-color:#f0f;box-shadow:0 0 8px #f0f}
|
| 21 |
+
.launch-btn{display:block;width:100%;padding:15px;background:transparent;border:2px solid #0ff;color:#0ff;font-family:'Courier New',monospace;font-size:1.2em;letter-spacing:6px;cursor:pointer;text-align:center;transition:all 0.3s;margin-bottom:25px}
|
| 22 |
+
.launch-btn:hover{background:#0ff;color:#000;box-shadow:0 0 30px #0ff}
|
| 23 |
+
#game-container{width:100%;background:#000;border:2px solid #0ff;min-height:500px;position:relative;display:none}
|
| 24 |
+
#game-container.active{display:block}
|
| 25 |
+
.idle-screen{text-align:center;padding:60px 20px;border:2px solid #0ff;background:#000}
|
| 26 |
+
.idle-screen pre{color:#0ff;font-size:0.7em;line-height:1.2;text-shadow:0 0 5px #0ff}
|
| 27 |
+
.idle-screen p{color:#f0f;margin-top:20px;letter-spacing:3px;animation:blink 1s step-end infinite}
|
| 28 |
+
@keyframes blink{50%{opacity:0}}
|
| 29 |
+
.status-bar{display:flex;justify-content:space-between;padding:8px 15px;background:#001a1a;border:1px solid #0ff;margin-bottom:25px;font-size:0.75em;letter-spacing:2px}
|
| 30 |
+
.status-dot{width:8px;height:8px;border-radius:50%;background:#0f0;display:inline-block;margin-right:6px;animation:pulse 1.5s infinite}
|
| 31 |
+
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.3}}
|
| 32 |
+
.footer{text-align:center;padding:20px;border-top:1px solid #0ff;color:#0ff;font-size:0.7em;letter-spacing:3px;margin-top:30px}
|
| 33 |
+
</style>
|
| 34 |
</head>
|
| 35 |
<body>
|
| 36 |
+
<div class="scanlines"></div>
|
| 37 |
+
<div class="header">
|
| 38 |
+
<h1>NOMADZ</h1>
|
| 39 |
+
<p>// CLOUD ARCADE // VULTURE:INC // 0VSol13 //</p>
|
| 40 |
+
</div>
|
| 41 |
+
<div class="portal">
|
| 42 |
+
<div class="status-bar">
|
| 43 |
+
<span><span class="status-dot"></span>SYSTEM ONLINE</span>
|
| 44 |
+
<span>NODE: ARCADE-01</span>
|
| 45 |
+
<span>EMULATORJS v4.0</span>
|
| 46 |
+
</div>
|
| 47 |
+
<div class="controls">
|
| 48 |
+
<div class="ctrl-group">
|
| 49 |
+
<label>// SYSTEM CORE //</label>
|
| 50 |
+
<select id="core">
|
| 51 |
+
<option value="snes">SNES</option>
|
| 52 |
+
<option value="nes">NES</option>
|
| 53 |
+
<option value="gba">GBA</option>
|
| 54 |
+
<option value="n64">N64</option>
|
| 55 |
+
<option value="genesis">GENESIS</option>
|
| 56 |
+
<option value="arcade">ARCADE</option>
|
| 57 |
+
</select>
|
| 58 |
+
</div>
|
| 59 |
+
<div class="ctrl-group">
|
| 60 |
+
<label>// ROM FILE //</label>
|
| 61 |
+
<input type="file" id="rom-file" accept=".smc,.sfc,.nes,.gba,.n64,.z64,.v64,.md,.bin,.rom,.zip">
|
| 62 |
+
</div>
|
| 63 |
+
<div class="ctrl-group">
|
| 64 |
+
<label>// BIOS (OPTIONAL) //</label>
|
| 65 |
+
<input type="file" id="bios-file" accept=".bin,.bios">
|
| 66 |
+
</div>
|
| 67 |
+
</div>
|
| 68 |
+
<button class="launch-btn" onclick="launchGame()">[ INSERT COIN // LAUNCH ]</button>
|
| 69 |
+
<div class="idle-screen" id="idle-screen">
|
| 70 |
+
<pre>
|
| 71 |
+
___ _ ___ ___ __ ___ __
|
| 72 |
+
| .\| | \/ || \ / || \
|
| 73 |
+
| | | |\ /| || Y || |
|
| 74 |
+
|__/|_|_| v |_||___|___||__/\|
|
| 75 |
+
ARCADE
|
| 76 |
+
</pre>
|
| 77 |
+
<p>>> SELECT CORE + LOAD ROM TO BEGIN <<</p>
|
| 78 |
+
</div>
|
| 79 |
+
<div id="game-container"></div>
|
| 80 |
+
</div>
|
| 81 |
+
<div class="footer">NOMADZ UNIVERSE // COSMIC-KEY PRODUCTIONS // ALL SYSTEMS NOMINAL</div>
|
| 82 |
+
<script>
|
| 83 |
+
function launchGame(){
|
| 84 |
+
var romInput=document.getElementById('rom-file');
|
| 85 |
+
var coreSelect=document.getElementById('core');
|
| 86 |
+
var biosInput=document.getElementById('bios-file');
|
| 87 |
+
if(!romInput.files||!romInput.files[0]){alert('LOAD A ROM FILE TO LAUNCH');return;}
|
| 88 |
+
var romFile=romInput.files[0];
|
| 89 |
+
var romUrl=URL.createObjectURL(romFile);
|
| 90 |
+
var biosUrl=null;
|
| 91 |
+
if(biosInput.files&&biosInput.files[0])biosUrl=URL.createObjectURL(biosInput.files[0]);
|
| 92 |
+
document.getElementById('idle-screen').style.display='none';
|
| 93 |
+
var gc=document.getElementById('game-container');
|
| 94 |
+
gc.className='active';
|
| 95 |
+
gc.innerHTML='';
|
| 96 |
+
window.EJS_player='#game-container';
|
| 97 |
+
window.EJS_core=coreSelect.value;
|
| 98 |
+
window.EJS_gameUrl=romUrl;
|
| 99 |
+
window.EJS_pathtodata='https://cdn.emulatorjs.org/stable/data/';
|
| 100 |
+
if(biosUrl)window.EJS_biosUrl=biosUrl;
|
| 101 |
+
var s=document.createElement('script');
|
| 102 |
+
s.src='https://cdn.emulatorjs.org/stable/data/loader.js';
|
| 103 |
+
document.body.appendChild(s);
|
| 104 |
+
}
|
| 105 |
+
</script>
|
| 106 |
</body>
|
| 107 |
</html>
|