This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Dostalgia — Environment Configuration
|
||||
# DOStalgia — Environment Configuration
|
||||
# Copy this file to .env and fill in your values:
|
||||
# cp .env.example .env
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# This workflow builds and deploys Dostalgia whenever code is pushed to main.
|
||||
# This workflow builds and deploys DOStalgia whenever code is pushed to main.
|
||||
# The runner has Docker socket access so it can manage containers on the host.
|
||||
# Parameters match the docker-compose at:
|
||||
# /appdata/dockhand/stacks/unraid/dostalgia/compose.yaml
|
||||
@@ -48,10 +48,10 @@ jobs:
|
||||
sleep 5
|
||||
STATUS=$(docker inspect -f '{{.State.Status}}' ${{ env.CONTAINER_NAME }})
|
||||
if [ "$STATUS" = "running" ]; then
|
||||
echo "✅ Dostalgia container is running"
|
||||
echo "✅ DOStalgia container is running"
|
||||
echo "--- last logs ---"
|
||||
docker logs ${{ env.CONTAINER_NAME }} --tail 5
|
||||
echo "✅ Dostalgia deployed!"
|
||||
echo "✅ DOStalgia deployed!"
|
||||
else
|
||||
echo "❌ Container status: $STATUS"
|
||||
docker logs ${{ env.CONTAINER_NAME }} --tail 30
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Dostalgia — Quarkus multi-stage build
|
||||
# DOStalgia — Quarkus multi-stage build
|
||||
|
||||
# ─── 1. Build frontend ───────────────────────────
|
||||
FROM node:20-alpine AS frontend
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# DOSTALGIA 🕹️
|
||||
# DOStalgia 🕹️
|
||||
|
||||
A nostalgic DOS game hub. Upload your old DOS games, auto-scrape artwork and metadata from IGDB, and play them directly in your browser via js-dos (DOSBox compiled to WebAssembly).
|
||||
|
||||
@@ -10,18 +10,18 @@ Every uploaded game is packaged into a `.jsdos` bundle — a standard ZIP with e
|
||||
**Save states are automatic** — js-dos persists your game progress to the browser's storage. Come back anytime and pick up where you left off.
|
||||
|
||||
### 📦 Handles any file structure
|
||||
DOS games come in all shapes. Dostalgia handles them transparently:
|
||||
DOS games come in all shapes. DOStalgia handles them transparently:
|
||||
|
||||
- **Flattening** — If your ZIP has a single root directory (e.g. `doom/` with all files inside), the extractor flattens it so the game files sit at the bundle root. No extra nesting.
|
||||
- **Subdirectory games** — If files are deeper, the autoexec automatically `cd`s to the right directory before launching the executable.
|
||||
- **CD images** — Games shipped on CD-ROM often need the disc mounted. Dostalgia detects `.iso`, `.cue`, `.img`, `.ccd`, and `.bin` files, fixes broken CloneCD `.cue` references (where the referenced `.bin` is actually `.img`), and mounts them in both `dosbox.conf` and `jsdos.json`.
|
||||
- **CD images** — Games shipped on CD-ROM often need the disc mounted. DOStalgia detects `.iso`, `.cue`, `.img`, `.ccd`, and `.bin` files, fixes broken CloneCD `.cue` references (where the referenced `.bin` is actually `.img`), and mounts them in both `dosbox.conf` and `jsdos.json`.
|
||||
- **CD-only games** — If the archive contains only CD images with no executable, a CD-only bundle is created that mounts the disc and drops you at the DOS prompt.
|
||||
- **Hardcoded paths** — `ConfigPatcher` scans game config files for hardcoded absolute paths (e.g. `C:\FALLOUT1\MASTER.DAT`) that broke after flattening, and rewrites them to relative paths.
|
||||
|
||||
Other solutions such as [RomM](https://www.romm.app/) generate raw ZIP bundles and require you to write your own `dosbox.conf` with manual `mount` and `imgmount` commands. Dostalgia automates all of this for you.
|
||||
Other solutions such as [RomM](https://www.romm.app/) generate raw ZIP bundles and require you to write your own `dosbox.conf` with manual `mount` and `imgmount` commands. DOStalgia automates all of this for you.
|
||||
|
||||
### 🔍 Smart executable detection
|
||||
On upload, Dostalgia scans every `.exe`, `.com`, and `.bat` file and picks the best candidate as the main executable using a scoring system:
|
||||
On upload, DOStalgia scans every `.exe`, `.com`, and `.bat` file and picks the best candidate as the main executable using a scoring system:
|
||||
|
||||
1. **Not an installer** — INSTALL/SETUP/CONFIG executables are deprioritised
|
||||
2. **DOS executables** — Pure DOS apps are preferred over Windows ones
|
||||
@@ -31,12 +31,12 @@ On upload, Dostalgia scans every `.exe`, `.com`, and `.bat` file and picks the b
|
||||
|
||||
All discovered executables are stored and available in the **Edit** page, where you can pick a different one via radio buttons.
|
||||
|
||||
Again, RomM requires you to manually specify the executable in a custom `dosbox.conf`, while Dostalgia detects and configures it for you.
|
||||
Again, RomM requires you to manually specify the executable in a custom `dosbox.conf`, while DOStalgia detects and configures it for you.
|
||||
|
||||
> **⚠️ Cache note:** If you change the executable, the `.jsdos` bundle is patched in-place. Your browser may serve a cached version of the old bundle — if the game doesn't launch with the new executable, **hard-refresh** the play page (Ctrl+Shift+R / Cmd+Shift+R).
|
||||
|
||||
### 🛠 One-click Setup launcher
|
||||
Many DOS games include a `SETUP.EXE`, `INSTALL.EXE`, or `CONFIG.EXE` used to configure sound, controls, and graphics. When Dostalgia detects one:
|
||||
Many DOS games include a `SETUP.EXE`, `INSTALL.EXE`, or `CONFIG.EXE` used to configure sound, controls, and graphics. When DOStalgia detects one:
|
||||
|
||||
- A **🛠 Setup** button appears on the game detail page
|
||||
- Clicking it launches the setup executable *without modifying the main game bundle*
|
||||
@@ -45,7 +45,7 @@ Many DOS games include a `SETUP.EXE`, `INSTALL.EXE`, or `CONFIG.EXE` used to con
|
||||
This is not supported in RomM, where you would have to run the setup manually from the DOS prompt every time.
|
||||
|
||||
### 🪟 Windows game detection
|
||||
DOSBox can't run Windows executables. Dostalgia's `PlatformDetector` reads MZ/PE/NE headers to detect Windows executables:
|
||||
DOSBox can't run Windows executables. DOStalgia's `PlatformDetector` reads MZ/PE/NE headers to detect Windows executables:
|
||||
|
||||
- The game detail page shows a **🪟 Requires Windows 3.1** badge
|
||||
- The **Play** button is disabled with "Unplayable" text
|
||||
@@ -53,16 +53,16 @@ DOSBox can't run Windows executables. Dostalgia's `PlatformDetector` reads MZ/PE
|
||||
- Setup executables that are Windows-native are also filtered out from the Setup button
|
||||
|
||||
### 📡 IGDB metadata & media
|
||||
Dostalgia integrates with [IGDB](https://www.igdb.com/) (via Twitch OAuth2) to auto-populate game info:
|
||||
DOStalgia integrates with [IGDB](https://www.igdb.com/) (via Twitch OAuth2) to auto-populate game info:
|
||||
|
||||
- **Auto Scrape** — On upload, Dostalgia searches IGDB by title and fills in year, genre, developer, publisher, description, and cover art. If IGDB finds a DOS result, it prioritises it.
|
||||
- **Auto Scrape** — On upload, DOStalgia searches IGDB by title and fills in year, genre, developer, publisher, description, and cover art. If IGDB finds a DOS result, it prioritises it.
|
||||
- **Manual Search** — From the game detail page you can search IGDB by any query, browse results with cover thumbnails and DOS badges, and apply the one you want.
|
||||
- **Media** — Videos (YouTube embeds) and screenshots (1080p) are fetched and displayed in a scrollable media gallery with a preview player.
|
||||
|
||||
**Setup:**
|
||||
|
||||
1. Go to https://dev.twitch.tv/console/apps → **Register Your Application**
|
||||
2. Name: `Dostalgia` (or anything), OAuth Redirect URL: `http://localhost`, Category: **Other**
|
||||
2. Name: `DOStalgia` (or anything), OAuth Redirect URL: `http://localhost`, Category: **Other**
|
||||
3. Copy the **Client ID** and generate a **Client Secret**
|
||||
4. Provide them via environment variables:
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36'><rect x='4' y='6' width='28' height='22' rx='2' fill='%2333FF33' opacity='.15'/><rect x='6' y='8' width='24' height='16' fill='%230A0A0A'/><rect x='8' y='10' width='20' height='10' fill='%2333FF33' opacity='.3'/><rect x='10' y='12' width='6' height='4' fill='%2333FF33' opacity='.6'/><rect x='18' y='12' width='6' height='4' fill='%2333FF33' opacity='.4'/></svg>" />
|
||||
<title>Dostalgia</title>
|
||||
<title>DOStalgia</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/** API client for Dostalgia backend. */
|
||||
/** API client for DOStalgia backend. */
|
||||
|
||||
const BASE = import.meta.env.PROD ? "" : ""; // Proxy handles it in dev
|
||||
|
||||
|
||||
Reference in New Issue
Block a user