{"id":50602218,"url":"https://github.com/anomixer/superacan-web","last_synced_at":"2026-06-05T19:30:48.220Z","repository":{"id":358144812,"uuid":"1239874880","full_name":"anomixer/superacan-web","owner":"anomixer","description":"Super A'Can Online Emulator (with 12 full games)","archived":false,"fork":false,"pushed_at":"2026-05-15T23:27:45.000Z","size":25937,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T00:55:49.074Z","etag":null,"topics":["emulator","games","superacan","wasm","web"],"latest_commit_sha":null,"homepage":"https://anomixer.github.io/superacan-web/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anomixer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-15T14:31:17.000Z","updated_at":"2026-05-15T23:27:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anomixer/superacan-web","commit_stats":null,"previous_names":["anomixer/superacan-web"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/anomixer/superacan-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anomixer%2Fsuperacan-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anomixer%2Fsuperacan-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anomixer%2Fsuperacan-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anomixer%2Fsuperacan-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anomixer","download_url":"https://codeload.github.com/anomixer/superacan-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anomixer%2Fsuperacan-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33957496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emulator","games","superacan","wasm","web"],"created_at":"2026-06-05T19:30:45.141Z","updated_at":"2026-06-05T19:30:48.211Z","avatar_url":"https://github.com/anomixer.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Super A'Can Web Emulator 🎮\n\n[English](./README_EN.md) | **繁體中文**\n\n\u003cdiv align=\"right\"\u003e\n\n[![GitHub](https://img.shields.io/badge/GitHub-anomixer/superacan--web-green?logo=github)](https://github.com/anomixer/superacan-web)\n[![WebAssembly](https://img.shields.io/badge/WebAssembly-Powered-blueviolet?logo=webassembly)](https://webassembly.org/)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Games](https://img.shields.io/badge/遊戲支援-12%20%2F%2012-brightgreen)](#-完整遊戲清單)\n\n\u003c/div\u003e\n\n### 🌐 線上體驗：[https://anomixer.github.io/superacan-web/](https://anomixer.github.io/superacan-web/)\n\n\u003e 🎊 紀念台灣唯一自製 16 位元遊戲主機 **Funtech Super A'Can** 誕生 30 週年！\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"30th-anniversary.png\" alt=\"Super A'Can 30th Anniversary\" width=\"500\"\u003e\n\u003c/p\u003e\n\n這是一個基於 **WebAssembly (WASM)** 技術的 Super A'Can 瀏覽器線上模擬器。本專案將 MAME 核心針對 Web 環境進行深度特化與效能調校，讓玩家能直接在網頁上以 **100% 原生速度**體驗這款傳奇主機的魅力——包含全部 12 套官方遊戲。\n\n---\n\n## ✨ 核心特色\n\n### ⚡ 100% 原生滿速運行\n針對 MAME 核心拔除效能殺手 `perfect_quantum`，並改用特製的 `6000Hz` 同步率，確保在 Web 環境下依然能達到 **60FPS 滿速運行**，不妥協任何相容性。\n\n### 🎵 雙軌音訊除靈引擎 (Dual-Core Audio Engine)\n\n這是本專案最核心的技術突破之一。Super A'Can 的 UM6619 音效晶片在 MAME 內長期存在 DMA 握手問題，導致特定遊戲產生「喪屍循環雜音」甚至無法開機。本專案提供兩套 WASM 核心以對應不同需求：\n\n| WASM 核心 | 適用遊戲 | 音訊處理方式 |\n| :--- | :--- | :--- |\n| `mamesupracan.wasm` | 8 款正常遊戲 | 100% 原汁原味高保真音效 |\n| `mamesupracan-sndfix.wasm` | 4 款問題遊戲 ★ | Ghost-Buster ADSR 緩衝衰減 + DMA 握手修復 |\n\n\u003e ★ **除靈版適用遊戲**：《音速飛龍》、《福爾摩沙大對決》、《超級中華職棒聯盟》、《嘻遊記》\n\n### 🖥️ 現代化前端 UI\n- **雙語系**：繁體中文 / English 即時切換\n- **RWD 響應式佈局**：側邊欄可收合，支援自訂寬度拖拉\n- **兩種畫面縮放**：「適應螢幕」與「原生 2x」模式\n- **雙影像渲染模式**：支援「硬體加速 (WebGL)」與「軟體渲染」切換，重啟後生效並自動記憶偏好\n- **三段式音訊核心切換**：新增「自動」、「標準」與「修正」切換功能，讓玩家自由決定是否套用除靈版音訊修復，重啟後生效並自動記憶偏好\n- **可靠靜音控制**：獨立 GainNode 機制，完美繞過 Emscripten 強制恢復\n- **📱 行動虛擬手把**：觸控裝置支援螢幕虛擬按鍵，**支援斜對角同時按壓**（如右上等方向）；電腦模式下以底部抽屜收納，手機模式下自動常駐並配合畫面縮放\n\n### 📚 完整數位典藏\n內建全套 **12 款**官方遊戲的數位博物館資訊，包含年代、開發商與高解析度封面。\n\n---\n\n## 🕹️ 完整遊戲清單\n\n| # | 遊戲名稱 | 音訊核心 |\n| :---: | :--- | :---: |\n| 1 | 音速飛龍 (Speedy Dragon) | 除靈版 |\n| 2 | 福爾摩沙大對決 | 除靈版 |\n| 3 | 超級中華職棒聯盟 | 除靈版 |\n| 4 | 嘻遊記 | 除靈版 |\n| 5 | 爆爆動物園 (Boom Zoo) | 標準版 |\n| 6 | 賭霸 (Gambling Lord) | 標準版 |\n| 7 | 魔棒撞球 (Magical Pool) | 標準版 |\n| 8 | 非洲探險大富翁 (Monopoly) | 標準版 |\n| 9 | 叛星 (Rebel Star) | 標準版 |\n| 10 | 武將爭霸 (Sango Fighter) | 標準版 |\n| 11 | 超級光明戰士 (Super Light Saga) | 標準版 |\n| 12 | 邪惡之子 (The Son of Evil) | 標準版 |\n\n---\n\n## ⚖️ 版權與 ROM 檔案說明 (DMCA)\n\n為符合版權與 DMCA 規範，本專案倉庫**不代管、不內建**任何 Super A'Can 的 BIOS 與遊戲 ROM 檔案。我們的作法如下：\n\n1.  **零檔案殘留**：專案嚴格將 ROM 檔案排除在 Git 追蹤之外，絕不將版權檔案推送到 GitHub。\n2.  **本地端動態下載**：提供 `node prepare.js` 腳本。當玩家在本地端部署時，腳本會自動從網路上的公開典藏庫（如 Archive.org）下載所需檔案。\n3.  **防過期爬蟲**：針對部分網站動態過期連結的問題，腳本內建了模擬瀏覽器請求的爬蟲，確保玩家隨時都能在本地端備齊檔案。\n\n*請注意：本專案僅提供模擬器技術實作，使用者下載 ROM 檔案需自行評估當地法律規範。*\n\n---\n\n## 🚀 如何運行\n\n由於瀏覽器安全性限制 (CORS)，WASM 檔案無法直接從本地資料夾點擊開啟，必須透過本機伺服器運行。\n\n**需求：** [Node.js](https://nodejs.org/)\n\n```bash\n# 1. 複製專案\ngit clone https://github.com/anomixer/superacan-web.git\ncd superacan-web\n\n# 2. 準備 BIOS 與遊戲檔案\n# 執行此腳本會自動下載所需的 BIOS 與遊戲檔案並自動更名\n# (若您已有標準 MAME .zip 檔，直接放入 roms/supracan/ 即可智慧跳過下載)\nnode prepare.js\n\n# 3. 啟動本機伺服器\nnode server.js\n\n# 4. 開啟瀏覽器\n# 前往 http://localhost:8080\n```\n\n---\n\n## 📂 專案檔案架構\n\n```text\nsuperacan-web/\n├── index.html          # 主頁面 (包含 UI 與語系字典)\n├── index.css           # 樣式表 (極簡黑魂風格、RWD)\n├── loader.js           # MAME 載入器 (處理 WASM 預載入與相容性)\n├── games.js            # 12 款遊戲的資料庫 (已去敏)\n├── prepare.js          # 自動化 BIOS/ROM 下載與防呆腳本\n├── server.js           # 本地簡易 Node.js 伺服器\n├── hash/               # MAME 軟體清單定義\n│   └── supracan.xml\n├── supracan-fix/       # MAME 核心修補源碼與文檔 (典藏)\n│   ├── src/            # C++ 修改源碼\n│   └── *.md            # 修補技術文檔\n├── wasm/               # MAME WebAssembly 核心編譯產物\n│   ├── mamesupracan.wasm.gz         # 標準版核心\n│   └── mamesupracan-sndfix.wasm.gz  # 音訊除靈版核心\n└── thumbs/             # 12 款遊戲的封面縮圖\n```\n\n---\n\n## 🎮 操作說明\n\n模擬器支援全鍵盤操作。遊戲中按下 **`TAB`** 鍵可叫出 MAME 原生選單，重新定義任意按鍵。\n\n| A'Can 手把 | 預設按鍵 (1P) | 預設按鍵 (2P) |\n| :--- | :---: | :---: |\n| **方向鍵** | 鍵盤方向鍵 | `R` `F` `D` `G` |\n| **A** | `Ctrl` | `A` |\n| **B** | `Space` | `Q` |\n| **X** | `Alt` | `S` |\n| **Y** | `L-Shift` | `W` |\n| **L** | `Z` | `E` |\n| **R** | `X` | — |\n| **Select** | `5` | `6` |\n| **Start** | `1` | `2` |\n\n---\n\n## 🛠️ 技術架構與修改紀錄\n\n本專案對 MAME `supracan` 驅動程式進行了以下技術介入：\n\n### 1. 影像渲染最佳化（`supracan.cpp`）\n引進 Sprite 螢幕外智慧裁切、解構渲染迴圈，並實作條件式 VRAM 標記，大幅降低 Web 環境下的記憶體運算負擔。\n\n### 2. 音訊 DMA 握手修補（`umc6619_sound.cpp`）\n修復暫存器 `0x16` 的狀態清除機制，讓 6502 協同處理器能正確接收 DMA 中斷，解決特定遊戲無法開機及「喪屍雜音」問題。這也是 MAME 從 0.136 加入支援後、直到近年才能讓全部 12 套遊戲正常運行的核心癥結所在。\n\n### 3. WASM 前端整合（`loader.js`）\n使用 Software List 模式取代直接掛載，解決多層資料夾與磁區的相容性問題，確保所有遊戲 ROM 均可正確識別。\n\n---\n\n## 📖 為什麼 Super A'Can 的完整支援姍姍來遲？\n\nSuper A'Can 是台灣敦煌科技（Funtech）於 1995 年推出的 16 位元家用主機，也是台灣唯一自主研發的電視遊樂器。由於商業失敗，僅發行 12 套遊戲，硬體文件幾乎付之一炬。\n\nMAME 早在 2010 年（0.136 版）就已加入 supracan 驅動，但「能開機」和「能完整遊玩」是兩回事：\n\n- **2010 年**：CPU、顯示、基本 I/O 模擬完成，大部分遊戲勉強可進標題畫面\n- **2021 年**：MAME 0.233 WIP 補入初步音效支援，但 envelope、voice samples、DMA 時序仍有缺漏\n- **2024–2025 年**：MAME 0.28x 世代逐步補完 UM6619 音效晶片細節，才讓多款遊戲達到可遊玩狀態\n\n本專案在 MAME 最新核心基礎上，進一步修補了 DMA 握手與音訊衰減問題，首次實現 **12 套遊戲全部可正常遊玩**。在 30 週年後的今天，為您完美呈現當年的傳奇！\n\n---\n\n## 📜 聲明\n\n本專案的模擬器核心技術源自開源專案 [MAME](https://github.com/mamedev/mame)，並針對 A'Can 的歷史保存與學術研究進行特化修改。所有遊戲 ROM 版權歸原始著作權人所有，本專案不提供任何 ROM 檔案。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanomixer%2Fsuperacan-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanomixer%2Fsuperacan-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanomixer%2Fsuperacan-web/lists"}