ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

mGBA 模拟器完全指南:功能特性、Mapper 支持与跨平台编译实战(Game Boy Advance / Game Boy)

mGBA 模拟器完全指南:功能特性、Mapper 支持与跨平台编译实战(Game Boy Advance / Game Boy) 游戏开发【免费下载链接】mgbamGBA Game Boy Advance Emulator项目地址https://gitcode.com/gh_mirrors/mg/mgba点击查看免费下载mGBA 是一款面向 Game Boy Advance 的模拟器同时兼容 Game Boy 与 Game Boy Color其核心目标是比现有同类模拟器更快、更准并提供其他模拟器所不具备的扩展功能。本文以官方西班牙语文档 README_ES.md 为骨架结合当前仓库源码CMake 构建系统、GB Mapper 实现、GBA 外设与 SIO 驱动等展开帮助读者完整掌握 mGBA 的功能清单、存储控制器支持矩阵、系统需求以及从 Docker 到原生工具链的各平台编译流程。一、项目概况与设计目标mGBA 是一个以速度与精度为首要目标的 Game Boy Advance 模拟器高度精确的 Game Boy Advance 硬件支持同时支持 Game Boy / Game Boy Color 硬件运行速度快能够在低端硬件如上网本上以全速运行提供 SDL 与 Qt 两套图形前端支持本机同一台计算机上的联机线link cable通信。当前仓库中的核心实现与文档描述一一对应GBA 联机线驱动位于 src/gba/sio/包含 lockstep.c、dolphin.c、gbp.cGB 侧则位于 src/gb/sio/lockstep.c、printer.c。文档中标注的“计划特性”包括网络联机线、面向 Dolphin 的 Joybus 联机、MP2k 音频混合、面向 TAS 的 regrabación录影回放、Lua 脚本、完整调试套件与无线适配器兼容等其中 Lua 脚本能力在当前仓库中已落地为 ENABLE_SCRIPTING 与 USE_LUA 构建选项调试器基础设施由 ENABLE_DEBUGGERS 与 ENABLE_GDB_STUB 控制。二、功能特性全览mGBA 在文档中宣称的功能几乎全部能在当前仓库源码中找到对应实现GBA 高精度硬件支持文档脚注说明当前仍缺失 OBJ window 在模式 3/4/5 下的支持即文档注释 [1]其余部分由 src/gba/ 下的核心core.c、video.c、audio.c、io.c、dma.c、timer.c实现。GB / GBC 硬件支持核心位于 src/gb/core.c、video.c、audio.c、io.c、timer.c、memory.c。保存类型自动检测包括 flash 存储器大小探测文档注释 [2] 说明个别情况下检测可能失效可在运行时手工配置遇到此类情况建议提交 bug。对应实现见 src/gba/savedata.c。运动传感器与震动卡带仅在使用手柄时可用。实时时钟RTC支持无需额外配置即可工作MBC3 的 RTC 锁存逻辑见 src/gb/mbc/mbc-private.h 中的_GBMBCLatchRTC。Boktai 系列游戏的太阳光传感器。Game Boy Camera 与 Game Boy Printer相机与打印机的实现分别在 src/gb/mbc/pocket-cam.c 与 src/gb/sio/printer.c。内置 BIOS 与外部 BIOS 可选GBA 侧 BIOS 加载与 HLE 见 src/gba/bios.c 与 src/gba/hle-bios.c。Turbo / 快进模式按住 Tab 即可。回退倒带按反引号键触发核心实现位于 src/core/rewind.c且回退深度可配置。跳帧最多一次跳过 10 帧。截图屏幕快照依赖 libpng由 USE_PNG 构建选项控制。金手指代码支持核心实现见 src/core/cheats.cGBA 侧 GameShark/CodeBreaker 解码器位于 src/gba/cheats/。9 个存档位可附带缩略图预览PNG 内嵌存档由 libpng 支撑。录像与导出支持视频、GIF、WebP、APNG依赖 FFmpeg/libavUSE_FFMPEG编码器实现在 src/feature/ffmpeg/。e-Reader 支持见 src/gba/cart/ereader.c。键位与手柄按键可自定义。ZIP 与 7z 压缩 ROM 加载ZIP 由 zlib/minizip/libzip 支撑USE_ZLIB、USE_LIBZIP7z 由 LZMA SDK 支撑USE_LZMA。IPS、UPS、BPS 补丁支持实现在 src/util/patch-ips.c、src/util/patch-ups.c 与 src/util/patch-fast.c。命令行调试器与 GDB 远程调试兼容 IDA Pro 的 GDB stub见 src/debugger/cli-debugger.c、gdb-stub.c与 src/arm/debugger/。GameShark / Action Replay 存档导入导出见 src/gba/sharkport.c。RetroArch/Libretro 与 OpenEmu 核心Libretro 前端位于 src/platform/libretro/由 BUILD_LIBRETRO 选项控制。社区多语言翻译由 Weblate 平台协作维护。三、支持的存储控制器Mapper矩阵文档将 Mapper 支持分为“完整支持”与“部分支持”两档当前仓库的 src/gb/mbc/mbc-private.h 中声明的所有 MBC 回调函数与之一一对应完整支持12 种Mapper源码实现src/gb/mbc/MBC1_GBMBC1licensed.cMBC1M多路复用版 MBC1_GBMBC1MBC2_GBMBC2MBC3_GBMBC3MBC3 RTC_GBMBC3_GBMBCLatchRTCMBC5_GBMBC5MBC5 Rumble_GBMBC5MBC7_GBMBC7Wisdom Tree未授权卡带_GBWisdomTreeunlicensed.cPokémon Jade/Diamond未授权_GBPKJDunlicensed.cBBD未授权类 MBC5_GBBBDunlicensed.cHitek未授权类 MBC5_GBHitekunlicensed.c部分支持5 种Mapper支持情况源码实现MBC6不支持向 flash 写入_GBMBC6licensed.cMMM01—_GBMMM01licensed.cPocket Cam—_GBPocketCampocket-cam.cTAMA5不支持 RTC_GBTAMA5tama5.cHuC-1不支持 IR_GBHuC1licensed.cHuC-3不支持 RTC 与 IR_GBHuC3huc-3.c值得注意的是当前仓库的 Mapper 覆盖范围已超出文档列表例如_GBNTOld1、_GBNTOld2、_GBNTNew未授权 NT 卡带、_GBLiCheng、_GBGGB81、_GBSachen、_GBSintax等也已具备回调声明说明后续版本在持续扩充未授权卡带兼容性。四、支持平台与系统要求文档列出的官方支持平台Windows 7 或更新版本OS X 10.9Mavericks或更新版本仅 Qt 版本需要 10.9SDL 版本在 10.5 即可运行10.7 上运行 Qt 版本“有可能”但不作官方支持LinuxFreeBSDNintendo 3DSNintendo SwitchWiiPlayStation Vita其他 Unix-like 系统如 OpenBSD理论上可运行但未经官方测试。系统要求极低任何能流畅运行 Windows Vista 的电脑都足以运行模拟器本体显示方面要求 OpenGL 1.1 或更新版本而 Shader 与高级图形功能需要 OpenGL 3.2 或更新版本。OpenGL 相关构建选项在 CMakeLists.txt 中由 BUILD_GL / BUILD_GLES2 / BUILD_GLES3 控制。五、获取方式官方发布版下载位于项目官网的 Downloads 专区源代码可 clone 自 GitHub 仓库mgba-emu/mgba。安装包形式包括 Windows 安装程序/压缩包、macOS 应用、Linux 发行版软件包以及各主机平台3DS、Switch、Wii、Vita的专用构建此外 RetroArch 用户可直接加载 Libretro 核心。六、默认按键与控制mGBA 的按键可在设置菜单中自由配置大部分手柄插入后会尝试自动映射。默认键盘布局如下手柄/主机按键键盘按键AXBZLARSStartEnter回车SelectBackspace退格其他常用快捷键还包括按住 Tab 进入 Turbo/快进模式、按反引号触发回退Rewind。输入系统的底层实现可参考 src/core/input.c 与 src/gba/input.cQt 前端的键位映射逻辑位于 src/platform/qt/input/。七、编译构建指南mGBA 使用 CMake 构建。文档写作时要求 CMake 3.1但以当前仓库为准根目录 CMakeLists.txt 第一行声明的是cmake_minimum_required(VERSION 3.12)因此请使用 3.12 或更新版本的 CMake。编译器方面GCC 与 Clang 均可正常编译文档注明 Visual Studio 2013 及更早版本不可用而当前仓库已包含针对 MSVC 的编译标志分支见 CMakeLists.txt说明现代 Visual Studio 工具链已被支持。7.1 使用 Docker 编译推荐官方提供一组预装工具链与依赖的 Docker 镜像覆盖绝大多数平台。在 mGBA 源码检出目录下执行docker run --rm -t -v $PWD:/home/mgba/src mgba/windows:w32该命令会在当前目录生成build-win32目录内含编译好的可执行文件。将镜像名替换为其他平台即可得到对应的输出目录。Docker Hub 上可用的镜像包括mgba/3dsmgba/switchmgba/ubuntu:xenialmgba/ubuntu:bionicmgba/ubuntu:focalmgba/ubuntu:groovymgba/vitamgba/wiimgba/windows:w32mgba/windows:w647.2 Unix-like 系统原生编译推荐命令序列mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX:PATH/usr .. make sudo make install执行后 mGBA 会被安装到/usr/bin与/usr/lib。CMake 会自动探测已安装的依赖若某些依赖缺失对应功能会被自动禁用并在cmake输出中给出警告。配置阶段结束后构建系统还会打印一份“功能摘要”见 CMakeLists.txt逐项列出 Qt/SDL 前端、调试器、录像、截图、ZIP/7z、SQLite3、OpenGL、Lua 脚本等特性的开启状态便于核对。7.3 macOSHomebrew编译假设使用 Homebrew 包管理器推荐步骤brew install cmake ffmpeg libzip qt5 sdl2 libedit pkg-config mkdir build cd build cmake -DCMAKE_PREFIX_PATHbrew --prefix qt5 .. make注意macOS 上不要执行make install该流程在 macOS 下无法正确工作。7.4 Windows 开发环境编译MSYS2 方式推荐开发用安装 MSYS2 后请确保使用32 位“MSYS2 MinGW 32-bit”若目标为 x86_64 则使用 “MSYS2 MinGW 64-bit”环境并执行以下命令安装依赖注意会下载超过 1100 MB 的软件包耗时较长pacman -Sy --needed base-devel git ${MINGW_PACKAGE_PREFIX}-{cmake,ffmpeg,gcc,gdb,libelf,libepoxy,libzip,pkgconf,qt5,SDL2,ntldd-git}检出源码并编译git clone https://github.com/mgba-emu/mgba.git mkdir -p mgba/build cd mgba/build cmake .. -G MSYS Makefiles make -j$(nproc --ignore1)这种构建因依赖 DLL 分散不适合直接分发但非常适合开发调试。若确实需要分发例如在未安装 MSYS2 的机器上测试执行cpack -G ZIP即可打包出包含全部所需 DLL 的 zip。Visual Studio 方式首先安装 vcpkg然后安装依赖包vcpkg install ffmpeg[vpx,x264] libepoxy libpng libzip sdl2 sqlite3以上命令不支持 Nvidia 硬件加速视频编码若需要请先安装 CUDA并将命令中的ffmpeg[vpx,x264]替换为ffmpeg[vpx,x264,nvcodec]。Qt 的获取相对曲折可选用旧版离线安装包、在线安装器或通过 vcpkg 编译较慢。若使用安装器请选择与 MSVC 匹配的版本离线安装器与 MSVC 2019 不兼容若走 vcpkg则执行vcpkg install qt5-base qt5-multimedia随后打开 Visual Studio选择“克隆仓库”输入 mGBA 的 Git 地址完成克隆再通过“文件 CMake”打开仓库根目录的 CMakeLists.txt即可像其他 CMake 项目一样在 Visual Studio 中开发调试。7.5 使用交叉工具链编译主机平台版本若已安装 devkitARM3DS、devkitPPCWii、devkitA64Switch或 vitasdkPS Vita可按以下模板编译mkdir build cd build cmake -DCMAKE_TOOLCHAIN_FILE../src/platform/3ds/CMakeToolchain.txt .. make各平台的-DCMAKE_TOOLCHAIN_FILE参数如下平台工具链文件3DSsrc/platform/3ds/CMakeToolchain.txtSwitchsrc/platform/switch/CMakeToolchain.txtVitasrc/platform/psp2/CMakeToolchain.vitasdkWiisrc/platform/wii/CMakeToolchain.txt八、依赖体系与功能开关解析mGBA没有硬性依赖所有依赖均为可选找不到对应库时相关功能自动降级关闭。文档列出的可选依赖如下依赖作用构建选项CMakeLists.txtQt 5图形界面音频需 Qt Multimedia 或 SDLBUILD_QTSDL基础前端与 Qt 前端的游戏手柄支持推荐 SDL 2兼容 1.2BUILD_SDLzlib libpng截图、PNG 内嵌存档图USE_ZLIB / USE_PNGlibedit命令行调试器USE_EDITLINEFFmpeg / libav视频、GIF、WebP、APNG 录像USE_FFMPEGlibzip 或 zlib加载 zip 内 ROMUSE_LIBZIP / USE_ZLIBSQLite3游戏数据库USE_SQLITE3libelf加载 ELF 文件USE_ELF其中SQLite3、libpng 与 zlib 已内置于模拟器第三方源码位于 src/third-party/sqlite3/、src/third-party/libpng/、src/third-party/zlib/无需在外部预先编译安装另有 inih配置文件解析src/third-party/inih/与 LZMA SDK7z 支持随源码分发。九、许可与版权mGBA 版权为 © 2013–2021 Jeffrey Pfau以Mozilla Public License 2.0发布许可全文见仓库根目录 LICENSE。项目中还包含以下第三方库inih© 2009–2020 Ben HoytBSD 3-ClauseLZMA SDK公有领域MurmurHash3Austin Appleby 实现公有领域getopt for MSVC公有领域SQLite3公有领域以上第三方库源码分别位于 src/third-party/ 下的 inih、lzma、sqlite3 与 zlib 等目录中。如需为商业用途获取 mGBA 的商业授权文档建议通过官方邮箱联系版权方。十、延伸阅读英文主文档README.md另有德文 README_DE.md、日文 README_JP.md、简体中文 README_ZH_CN.md 等本地化版本。构建配置全文CMakeLists.txt平台工具链脚本位于 src/platform/cmake/。GB 存储控制器实现src/gb/mbc/入口 src/gb/mbc.c。GBA 外设与保存Savedata 检测见 src/gba/savedata.c联机线驱动见 src/gba/sio/。调试与脚本GDB stub 见 src/debugger/gdb-stub.cLua 脚本引擎见 src/script/。赞分享游戏开发【免费下载链接】mgbamGBA Game Boy Advance Emulator项目地址https://gitcode.com/gh_mirrors/mg/mgba点击查看免费下载相关推荐mGBA 模拟器完全指南Game Boy Advance 精确模拟、功能架构与多平台编译实践mGBA 模拟器完全指南Game Boy Advance 精确模拟、功能架构与多平台编译实践 mGBA 是一个以高精度、高性能为目标的 Game Boy Ad游戏开发mGBA 模拟器全指南Game Boy Advance 核心特性、GB 卡带映射器支持矩阵与多平台编译实战mGBA 模拟器全指南Game Boy Advance 核心特性、GB 卡带映射器支持矩阵与多平台编译实战 本文以仓库内的德语版 README README游戏开发mGBA模拟器深度体验解锁Game Boy Advance游戏的全新境界mGBA模拟器深度体验解锁Game Boy Advance游戏的全新境界 在复古游戏复兴的浪潮中mGBA模拟器以其卓越的性能和精准的硬件模拟成为Game游戏开发上一篇Niv彻底解放Nix项目依赖管理的终极方案下一篇终极发动机模拟器指南用开源软件体验真实引擎轰鸣创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表