added SUPER3 pages

This commit is contained in:
izzy2lost
2025-12-26 17:54:41 -05:00
parent 2a09bb51b2
commit ddedb82175
6 changed files with 391 additions and 8 deletions
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 100 KiB

+17
View File
@@ -58,6 +58,23 @@
</section>
<section class="section projects-section">
<div class="featured-row">
<div class="project-card featured-card">
<a href="super3.html" class="featured-main">
<img src="assets/super3.svg" class="project-icon featured-icon" alt="SUPER3">
<div class="featured-text">
<h3>SUPER3</h3>
<p class="featured-kicker">Coming soon — need testers</p>
</div>
</a>
<a href="mailto:izzynochill@gmail.com" class="email-cta" aria-label="Email izzynochill@gmail.com to become a tester">
<img src="assets/Gmail_icon_(2020).svg" class="gmail-icon" alt="">
<span>Click email to become a tester</span>
</a>
</div>
</div>
<div class="project-grid">
<a href="psx2.html" class="project-card">
+51 -8
View File
@@ -1,15 +1,58 @@
import argparse
import errno
import http.server
import socketserver
PORT = 5500
class NoCacheHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
self.send_header('Pragma', 'no-cache')
self.send_header('Expires', '0')
self.send_header("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0")
self.send_header("Pragma", "no-cache")
self.send_header("Expires", "0")
super().end_headers()
with socketserver.TCPServer(("", PORT), NoCacheHTTPRequestHandler) as httpd:
print(f"Server running at http://localhost:{PORT}/")
httpd.serve_forever()
class ReusableThreadingHTTPServer(http.server.ThreadingHTTPServer):
allow_reuse_address = True
def serve(host: str, preferred_port: int, auto_port: bool) -> None:
candidate_ports = [preferred_port]
if auto_port:
candidate_ports.extend(range(preferred_port + 1, preferred_port + 50))
last_error: OSError | None = None
for port in candidate_ports:
try:
with ReusableThreadingHTTPServer((host, port), NoCacheHTTPRequestHandler) as httpd:
print(f"Server running at http://{host}:{port}/", flush=True)
httpd.serve_forever()
return
except OSError as exc:
last_error = exc
if auto_port and exc.errno in (errno.EADDRINUSE, 10048):
continue
raise
message = f"Could not bind to {host}:{preferred_port}"
if auto_port:
message += " (and nearby ports)"
if last_error is not None:
message += f": {last_error}"
raise SystemExit(message)
def main() -> None:
parser = argparse.ArgumentParser(description="Local dev server (no-cache headers).")
parser.add_argument("--host", default="localhost", help="Host/interface to bind (default: localhost)")
parser.add_argument("--port", type=int, default=5500, help="Preferred port (default: 5500)")
parser.add_argument(
"--no-auto-port",
action="store_true",
help="Do not try a different port if the preferred port is in use.",
)
args = parser.parse_args()
serve(args.host, args.port, auto_port=not args.no_auto_port)
if __name__ == "__main__":
main()
+101
View File
@@ -207,6 +207,79 @@ body {
padding: 20px 16px 40px;
}
.featured-row {
display: flex;
gap: 16px;
max-width: 1200px;
margin: 0 auto 16px;
align-items: stretch;
}
.featured-card {
flex: 1;
min-height: 0;
justify-content: flex-start;
gap: 14px;
}
.featured-main {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
width: 100%;
color: inherit;
text-decoration: none;
text-align: center;
}
.featured-text {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
}
.featured-card h3 {
font-size: 20px;
margin: 0;
}
.featured-kicker {
margin: 0;
font-size: 13px;
font-weight: 600;
color: #ff2a9d;
text-shadow:
0 0 10px rgba(255, 42, 157, 0.6),
0 0 20px rgba(255, 42, 157, 0.4);
}
.email-cta {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 10px 14px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.25);
background: rgba(0, 0, 0, 0.25);
color: rgba(255, 255, 255, 0.9);
text-decoration: none;
font-size: 13px;
font-weight: 600;
width: fit-content;
max-width: 100%;
margin: 0 auto;
}
.gmail-icon {
width: 28px;
height: 28px;
display: block;
}
.project-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
@@ -254,6 +327,20 @@ body {
animation: neonPulse 3s ease-in-out infinite;
}
.project-page .coming-soon {
display: inline-block;
padding: 6px 12px;
margin: 0 auto 28px;
border-radius: 999px;
border: 1px solid rgba(0, 227, 255, 0.5);
background: rgba(0, 227, 255, 0.08);
color: #00e3ff;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.project-card h3 {
margin: 0;
font-size: 16px;
@@ -423,6 +510,10 @@ body {
padding: 30px 24px 60px;
}
.featured-row {
margin-bottom: 20px;
}
.project-grid {
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 20px;
@@ -472,6 +563,16 @@ body {
}
}
@media (max-width: 420px) {
.featured-row {
flex-direction: column;
}
.email-cta {
width: 100%;
}
}
/* Neon Pink Button */
.btn-neon-pink {
color: #ff2a9d !important;
+98
View File
@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy - SUPER3</title>
<link rel="icon" type="image/png" href="assets/logo.png">
<link rel="stylesheet" href="style.css">
</head>
<body class="crt-off">
<canvas id="starfield"></canvas>
<div class="crt-toggle">
<label>
<input type="checkbox" id="crtSwitch">
<span></span>
<span>CRT Mode</span>
</label>
</div>
<header class="navbar">
<a href="super3.html" class="back">&#10094; Back</a>
</header>
<main class="project-page">
<h1>Privacy Policy for SUPER3</h1>
<p class="subtitle">Last updated: December 26, 2025</p>
<div class="description">
<h2>Introduction</h2>
<p>SUPER3 ("we," "our," or "us") is an open-source Sega Model 3 emulator for Android (the "Service"). This Privacy Policy explains what data the Service collects (if any), how it is used, and what third parties may receive data as a result of your use of the Service.</p>
<h2>Information We Do NOT Collect</h2>
<p>SUPER3 is designed to run locally on your device and does not include analytics/telemetry by default. We do not collect:</p>
<ul>
<li>Personal identification information</li>
<li>Location data</li>
<li>Contact lists</li>
<li>Advertising identifiers</li>
<li>Usage analytics or tracking</li>
<li>Device identifiers for profiling</li>
</ul>
<h2>Information The App May Store or Access Locally</h2>
<p>To provide emulator functionality, SUPER3 may store and/or access the following on your device:</p>
<ul>
<li>Emulator settings and configuration files</li>
<li>Save states and screenshot thumbnails</li>
<li>Folders/files you explicitly select (e.g., ROM folder, optional export/sync folder)</li>
<li>Downloaded flyer images (if you use Flyer view)</li>
</ul>
<h2>Data Storage</h2>
<p>Data used by SUPER3 is stored locally on your device (for example under <code>.../Android/data/&lt;package&gt;/files/super3/</code>). We do not operate a backend server for storing your emulator files.</p>
<h2>Third-Party Services</h2>
<h3>Flyer Downloads (Optional)</h3>
<p>If you use Flyer view, SUPER3 may download artwork from GitHub:</p>
<ul>
<li>Source: <a href="https://github.com/izzy2lost/Model3flyers" target="_blank" rel="noopener noreferrer">https://github.com/izzy2lost/Model3flyers</a></li>
<li>Storage: Saved locally under <code>.../Android/data/&lt;package&gt;/files/super3/Flyers/</code></li>
</ul>
<p>When your device connects to GitHub to download files, GitHub may receive standard network information (such as your IP address and user agent) as part of serving the request. Please review GitHubs policies for details.</p>
<h3>External Links</h3>
<p>The Service may link to external sites (such as upstream projects on GitHub). We are not responsible for the privacy practices of those sites.</p>
<h2>Permissions and File Access</h2>
<p>SUPER3 may offer an optional export/sync workflow using Androids Storage Access Framework. If enabled, the app only accesses the folder(s) you explicitly choose via the system file picker.</p>
<h2>No Games Included / Copyright</h2>
<p>SUPER3 does not include any games, ROMs, BIOS files, or copyrighted game content. You must supply your own legally obtained game ROMs. "SEGA" and all associated game names and trademarks are the property of their respective owners. SUPER3 is not affiliated with or endorsed by SEGA.</p>
<h2>Children's Privacy</h2>
<p>The Service is not directed to children under the age of 13, and we do not knowingly collect personal information from children under 13.</p>
<h2>Data Security</h2>
<p>Because SUPER3 primarily stores data locally on your device, the security of your data depends on your devices security measures. We recommend keeping your device updated and secured.</p>
<h2>Changes to This Privacy Policy</h2>
<p>We may update this Privacy Policy from time to time. Changes will be reflected on this page by updating the "Last updated" date.</p>
<h2>Contact</h2>
<p>If you have questions about this Privacy Policy, contact:</p>
<ul>
<li>Email: <a href="mailto:izzynochill@gmail.com">izzynochill@gmail.com</a> <a href="mailto:izzynochill@gmail.com" class="email-icon-simple"><img src="assets/Gmail_icon_(2020).svg" alt="Email" style="width: 20px; height: 20px; vertical-align: middle;"></a></li>
</ul>
<p class="disclaimer">This privacy policy is intended to help comply with Google Play policy requirements.</p>
</div>
</main>
<script src="script.js"></script>
<script src="starfield.js"></script>
</body>
</html>
+123
View File
@@ -0,0 +1,123 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SUPER3 Aú izzy2lost</title>
<meta name="description" content="SUPER3 is an open-source Sega Model 3 emulator for Android. Coming soon.">
<link rel="icon" type="image/png" href="assets/logo.png">
<link rel="stylesheet" href="style.css">
</head>
<body class="crt-off">
<canvas id="starfield"></canvas>
<div class="crt-toggle">
<label>
<input type="checkbox" id="crtSwitch">
<span></span>
<span>CRT Mode</span>
</label>
</div>
<header class="navbar">
<a href="index.html" class="back">&#10094; Back</a>
</header>
<main class="project-page">
<img src="assets/super3.svg" class="project-icon-large" alt="SUPER3 icon">
<h1>SUPER3</h1>
<p class="subtitle">Open-source Sega Model 3 emulator for Android</p>
<div class="coming-soon">Coming soon</div>
<div class="description">
<p>SUPER3 is an open-source Sega Model 3 emulator for Android. It is based on the <a href="https://github.com/trzy/Supermodel" target="_blank" rel="noopener noreferrer">Supermodel</a> emulator by trzy, with additional work derived from the <a href="https://github.com/DirtBagXon/model3emu-code-sinden/tree/arm" target="_blank" rel="noopener noreferrer">model3emu-code-sinden (ARM)</a> fork.</p>
<p><strong>No games are included.</strong> This app does not include any games, ROMs, BIOS files, or copyrighted game content. You must supply your own legally obtained game ROMs.</p>
</div>
<div class="features">
<h2>Features</h2>
<ul>
<li><strong>Sega Model 3 emulation</strong> (compatibility varies by title/device)</li>
<li><strong>On-screen touch controls</strong> (Service/Test/Coin/Start and game-specific controls)</li>
<li><strong>Virtual on-screen steering wheel</strong> for driving games (when supported)</li>
<li><strong>Save states</strong> (10 slots) with automatic screenshot thumbnails and tap-to-preview</li>
<li><strong>In-game pause/resume</strong> button</li>
<li><strong>Game flyers</strong> (front/back) in the launcher list</li>
<li><strong>Video settings</strong> (Resolution &amp; Widescreen)</li>
</ul>
</div>
<div class="features">
<h2>Video Settings</h2>
<p>From the main game list, open the side menu (toolbar “menu” icon) and look under <strong>Video</strong>.</p>
<ul>
<li><strong>Resolution:</strong> Native (496x384) and integer scale options (2x through 8x). Higher values look sharper but can reduce performance.</li>
<li><strong>Match device resolution:</strong> Sets the internal resolution to your devices exact pixel resolution (landscape). This also enables Widescreen and Wide background.</li>
<li><strong>Widescreen:</strong> Expands the horizontal field of view (Supermodel <code>-wide-screen</code>). At very wide aspect ratios some games may cull objects at the edges.</li>
<li><strong>Wide background:</strong> Stretches the 2D background layers when using widescreen (Supermodel <code>-wide-bg</code>).</li>
<li><strong>Enhanced Real3D (experimental):</strong> Enables more desktop-like Real3D rendering (multi-pass transparency compositing + scroll fog). This can improve visuals in some games/areas, but may reduce performance on lower-end devices.</li>
</ul>
<p>These settings are written to <code>.../Android/data/&lt;package&gt;/files/super3/Config/Supermodel.ini</code> (<code>XResolution</code>, <code>YResolution</code>, <code>WideScreen</code>, <code>WideBackground</code>, <code>New3DAccurate</code>).</p>
</div>
<div class="features">
<h2>Files &amp; Storage</h2>
<ul>
<li><strong>Save states &amp; thumbnails:</strong> Stored under <code>.../Android/data/&lt;package&gt;/files/super3/Saves/</code></li>
<li><strong>Optional sync/export:</strong> May use Androids Storage Access Framework; if enabled, the app only accesses folder(s) you explicitly choose.</li>
</ul>
</div>
<div class="features">
<h2>Flyers</h2>
<p>Flyers are downloaded on-demand (when you switch to Flyer view) from <a href="https://github.com/izzy2lost/Model3flyers" target="_blank" rel="noopener noreferrer">https://github.com/izzy2lost/Model3flyers</a>.</p>
<p>They are stored in <code>.../Android/data/&lt;package&gt;/files/super3/Flyers/</code> as <code>&lt;game&gt;_front.png</code> and <code>&lt;game&gt;_back.png</code>. You can replace or add files in that folder to customize artwork.</p>
</div>
<div class="features">
<h2>Legal / Google Play Policy Notes</h2>
<ul>
<li><strong>No games included:</strong> SUPER3 does not ship with ROMs or game data, and it is not intended to facilitate piracy.</li>
<li><strong>You must own the games:</strong> Only use ROMs you are legally permitted to use in your region.</li>
<li><strong>Trademarks:</strong> “SEGA” and all associated game names, trademarks, and copyrighted works are the property of their respective owners.</li>
<li><strong>Not affiliated:</strong> This project is not affiliated with or endorsed by SEGA or any arcade hardware manufacturer.</li>
</ul>
</div>
<div class="features">
<h2>Privacy</h2>
<ul>
<li>SUPER3 can run offline for emulation, but Flyer view may download artwork from GitHub.</li>
<li>The app stores emulator settings, save states, and screenshots locally on your device.</li>
<li>If you opt into selecting a user folder for syncing/export, access is limited to the folder you select via the system file picker.</li>
</ul>
</div>
<div class="features">
<h2>Upstream / Credits</h2>
<ul>
<li><strong>Supermodel (upstream):</strong> <a href="https://github.com/trzy/Supermodel" target="_blank" rel="noopener noreferrer">https://github.com/trzy/Supermodel</a></li>
<li><strong>Model3Emu fork reference (ARM):</strong> <a href="https://github.com/DirtBagXon/model3emu-code-sinden/tree/arm" target="_blank" rel="noopener noreferrer">https://github.com/DirtBagXon/model3emu-code-sinden/tree/arm</a></li>
<li><strong>SDL2:</strong> Used for the Android shell and input/audio/video integration</li>
</ul>
</div>
<div class="features">
<h2>License</h2>
<p>This project is licensed under the GNU GPL v3.0 (see <code>LICENSE</code>). If you distribute builds (including on Google Play), GPL requires providing the corresponding source code to recipients.</p>
<div class="project-links">
<a href="https://www.gnu.org/licenses/gpl-3.0.html" target="_blank" rel="noopener noreferrer" class="btn btn-neon-pink">View License (GPL-3.0)</a>
<a href="super3-privacy.html" class="btn btn-neon-pink">Privacy Policy</a>
</div>
</div>
<footer class="project-footer">
<p>Ac 2025 SUPER3. Licensed under GPL-3.0.</p>
<p class="disclaimer">No games, ROMs, BIOS files, or copyrighted content are included. SUPER3 is not affiliated with or endorsed by SEGA.</p>
</footer>
</main>
<script src="script.js"></script>
<script src="starfield.js"></script>
</body>
</html>