Darhkfox/SuperMarioAllStars
游戏面向 PC 与 Android 的 SNES《超级马力欧全明星》原生移植,支持宽屏、双人合作与成就,需自备 ROM。
项目介绍
这是一个用 C++ 编写的《超级马力欧全明星》(SNES)原生移植,面向 Windows 10/11 与 Android。它在模拟 SNES 硬件的基础上加入移植特性:最高 21:9 的真实宽屏与重新锚定的 HUD、SMB1、The Lost Levels 和 SMB3 的同屏双人合作、82 项成就、CRT 滤镜与 RetroArch slang 着色器、即时存档、倒带、作弊、关卡选择、声音测试和音乐播放器。仓库不含游戏数据,需自备 Super Mario All-Stars (USA).sfc ROM(CRC32 925637C7),否则启动器卡片显示 ROM not found。
宽屏是主要技术投入:src/game/ 中的逐游戏逻辑负责延伸瓦片地图、重建流式视差背景、让边缘敌人保持活动,并把状态栏拆分到屏幕两侧,README 按游戏和关卡类型详细记录了处理方式。
Windows 构建
需要 Windows 10/11、Visual Studio 2022(C++ 工作负载)和 CMake 3.20 以上。无需其他库,Direct3D 11、Direct2D、XAudio2、XInput 和 DirectInput 随 Windows 提供。
build.bat
程序输出到 build\Release\SuperMarioAllStars.exe。构建说明
Android 构建
安装 Android SDK 中的 NDK 28.2、CMake 3.31.6,以及 JDK 17 或更高版本。SDL2 源码需放在 third_party/SDL2-2.32.10-src,android/fetch_sdl.ps1 会下载并校验。然后在 android 目录执行:
cd android
gradlew assembleDebug
APK 生成在 android/app/build/outputs/apk/debug/,面向 64 位 ARM 设备(Android 6.0+)和 x86_64 模拟器。若 android/keystore.properties 提供 keystore,则可构建签名发布版。Android 构建说明
运行游戏
把 ROM 放在可执行文件旁、其旁的 roms 文件夹,或向上最多三级的任意父目录中,路径会记入 rompath.txt。Android 上点击显示 ROM-not-found 的卡片,在系统文件选择器中选中文件,或复制到 Android/data/com.darhkfox.allstars/files。
启动后先进入启动器,卡片可启动整张合集或单个游戏。跳过启动器:
SuperMarioAllStars.exe --game smb1
可用值为 allstars、smb1、smbll、smb2、smb3。存档写入 saves\smas.srm,即时存档和截图分别写入各自目录,设置写入 smas_port.ini。运行细节
操作与双人合作
键盘默认方向键对应十字键,Z/X/A/S 对应 B/A/Y/X,Q/W 对应 L/R,Enter 为 Start,Esc 或右 Shift 打开菜单;F5/F8 存档读档,Tab 快进,Backspace 倒带约最近一分钟。支持 Xbox 布局手柄、PlayStation、Switch Pro 及 USB/SNES 手柄,按键可在 Menu → Controls 中为两名玩家分别重绑。
双人合作会在每帧再运行一次游戏自身的玩家代码,让 2P 手柄控制路易吉;SMB1 和 The Lost Levels 中两兄弟各自保留物理差异。在 Options → Multiplayer 中开启,SMB1、The Lost Levels 和 SMB3 的标题画面也会出现 CO-OP GAME 选项。开启合作后模拟 CPU 以双倍速度运行,以保持复杂场景的帧率。按键表
成就与公平模式
82 项成就分布于四个游戏,另有两项合集成就,在 Menu → Achievements 中按游戏列出并显示进度,保存在 achievements.ini。成就开启期间,作弊、关卡选择、快进和倒带均不可用;关闭成就后恢复。即时存档记录其存档是否计入成就,因此读取用作弊的存档无法获得成就。成就列表
使用约束
- 支持 Windows 10/11 与 Android 6.0+;Android 发布签名需按上文配置 keystore 属性。
- 必须自备美版 ROM。其他版本或 dump 也能运行,但宽屏、作弊和关卡选择是针对美版调校的。
- 部分显示功能仅限 Windows,包括窗口设置、垂直同步、黑帧插入、高帧率和 slang 着色器。
- slang 着色器需要可执行文件旁有
librashader.dll和存放预设的shaders文件夹;部分预设按 4:3 设计,宽屏下可能拉伸或取景异常。 - 仓库许可证元数据为 NOASSERTION;内置第三方代码与着色器预设各有许可(SDL2 为 zlib,librashader 为 MPL-2.0,多个 CRT 预设为 GPL),再分发前需查看各组件许可文件。
HotRepo 点评
该项目出现在 HotRepo 新项目榜 2026-11-06 的记录中:约 11 小时窗口内新增 102 Star、2 Fork,暂无 GitHub 全语言日榜名次。这只是一次快照,说明它在 C++ 与复古游戏圈获得了早期关注,而非趋势判断。支撑它的是 README 中深入记录的宽屏渲染和逐游戏合作实现,而不只是给现成模拟器套壳;在决定是否满足 ROM 与硬件要求前,宽屏工作原理那部分最值得先读。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。