开始之前:感谢安同社区的同事们和朋友们,我之前是小白,啥都不会,大家很细心的引导我学习。社区氛围非常好,欢迎大家加入。作为新加入社区的小白,请大家严厉批评和指出问题,我会虚心学习。我35岁了,希望学的还不算晚。
源代码项目地址:https://github.com/azahar-emu/azahar
博客开发历程:https://azahar-emu.org/pages/bloglist/
简介:Azahar是一款基于开源项目Citra分支Lime3DS开发的全新3DS模拟器,旨在提供高性能、低硬件需求且合规的掌机模拟体验。
它是由 PabloMK7 的 Citra 分支与 Lime3DS 项目合并而成,这两个项目都是在 Citra 被关闭后不久出现的。
以下是其核心特点与功能:
一、开发背景与目标
开源社区驱动:在任天堂起诉Switch模拟器Yuzu并波及Citra后,开源社区以Lime3DS为基础开发了Azahar,目标是成为未来Citra开发的标杆平台。
性能优化:针对低性能设备(尤其是安卓)设计,通过技术改进显著降低硬件负载。
合规性优先:严格规避法律风险,仅支持正版游戏备份。
二、核心技术特点
单眼渲染模式
通过禁用右眼3D画面渲染,强制以单眼模式运行,使部分游戏性能提升高达50%。即使原3DS游戏关闭3D功能,仍会渲染双画面,Azahar的技术优化有效减少资源消耗。
多平台支持
支持安卓、Linux、macOS、Windows系统,并适配竖屏设备(如联想Legion Go),还原3DS经典双屏体验。
高兼容性与稳定性
首个候选版本已发布,开发者计划在一周内无重大漏洞后推出稳定版。
三、合规性措施
正版游戏要求:用户需自行准备3DS系统文件,并通过任天堂e商店下载已购游戏。
安全提取工具:推荐使用Artic工具提取游戏文件,避免触发任天堂TPM安全机制。
法律规避:明确声明不支持加密格式(如.3ds、.cia),仅提供解密密钥用于正版备份。
四、使用场景与建议
低配设备用户:安卓手机或老旧PC可通过单眼渲染模式流畅运行3DS游戏。
怀旧玩家:结合Windows掌机竖屏模式,复刻3DS双屏操作体验。
开发者测试:开源特性(GitHub发布)便于二次开发与调试。
五、未来发展方向
持续优化性能:计划进一步优化图形兼容性,减少单眼渲染可能导致的画面问题。
社区协作:鼓励用户反馈问题,推动功能迭代。
这里有龙。(Here be dragons.)
我的环境:安同系统(x86,loongarch64) 两个架构测试都通过了。
那么我们开始,首先找到wiki,找到linux相关构建信息:
地址:https://github.com/azahar-emu/azahar/wiki/Building-From-Source
依赖列表
标准化数据表
Deb:sudo apt 安装 libsdl2-dev
拱门:pacman -S --needed sdl2
Fedora:sudo dnf 安装 SDL2-devel
OpenSUSE:libSDL2-devel 中的 zypper
OpenSSL(可选)
Deb:sudo apt install libssl-dev
架构:pacman -S --needed openssl-1.0
Fedora:sudo dnf 安装 openssl-devel
OpenSUSE:openssl-devel 中的 zypper
Qt 6.2+
Deb:sudo apt 安装 qt6-base-dev qt6-base-private-dev qt6-multimedia-dev
对于翻译支持:apt install qt6-l10n-tools qt6-tools-dev qt6-tools-dev-tools
对于 WrapOpenGL 错误:apt install libgl-dev
架构:pacman -S --needed qt6-base qt6-multimedia qt6-multimedia-ffmpeg
您还需要一个多媒体后端:qt6-multimedia-ffmpeg 或 qt6-multimedia-gstreamer
Fedora: sudo dnf 安装 qt6-qtbase-devel qt6-qtbase-private-devel qt6-qtmultimedia-devel
OpenSUSE:qt6-base qt6-multimedia 中的 zypper
音频端口
Deb:sudo apt 安装 libasound-dev
Fedora:sudo dnf install portaudio-devel
OpenSUSE Leap 15:portaudio-devel 中的 zypper
OpenSUSE Tumbleweed:portaudio-devel 中的 zypper
外部组织
Deb:sudo apt 安装 xorg-dev libx11-dev libxext-dev
Fedora: sudo dnf 安装 xorg-x11-server-devel libX11-devel libXext-devel
OpenSUSE Leap 15: xorg-x11-util-devel libX11-devel libXext-devel 中的 zypper
OpenSUSE Tumbleweed: xorg-x11-util-devel libX11-devel libXext-devel 中的 zypper
JACK 音频连接套件
Deb:sudo apt install jackd
Fedora:sudo dnf 安装 jack-audio-connection-kit-devel
OpenSUSE Leap 15:libjack-devel 中的 zypper
OpenSUSE Tumbleweed:libjack-devel 中的 zypper
PipeWire
Deb:sudo apt install libpipewire-0.3-dev
Fedora:sudo dnf 安装 pipewire-devel
OpenSUSE Leap 15:pipewire-devel 中的 zypper
OpenSUSE Tumbleweed:pipewire-devel 中的 zypper
sndio(可选)
Deb:sudo apt 安装 libsndio-dev
Fedora: sudo dnf -y copr 启用 andykimpe/shadow && sudo dnf -y install sndio
OpenSUSE Leap 15:sndio-devel 中的 zypper
OpenSUSE Tumbleweed:sndio-devel 中的 zypper
Gnome ESound(可选)
Deb:echo “esound 需要构建使用源代码https://download.gnome.org/sources/esound/ ”
Fedora:sudo dnf 安装 esound-devel
OpenSUSE Leap 15:libesd0-devel 中的 zypper
OpenSUSE Tumbleweed:libesd0-devel 中的 zypper
编译器(你只需要其中一个)
GCC 11.0+
Deb:apt 安装 build-essential
架构:pacman -S --needed base-devel
Fedora:dnf 安装 gcc-c++
OpenSUSE:gcc-c++ 中的 zypper
Clang 18.0+
Deb:apt 安装 clang clang-format libc++-dev
Arch: pacman -S --needed clang,libc++ 在 AUR 中。使用 pacaur 或 yaourt 安装它。
Fedora:dnf 安装 clang libcxx-devel
OpenSUSE:clang 中的 zypper
CMake 3.22+
Deb:apt 安装 cmake
拱门: pacman -S --needed cmake
Fedora:dnf 安装 cmake
OpenSUSE:cmake extra-cmake-modules 中的 zypper
**此处因发行版不同,需要安装的软件也不同。
以安同系统举例:**
oma install glibc gcc devel-base llvm cmake jack alsa-lib pipewire mesa qt-6 sndio openssl x11-lib imake spirv-tools doxygen audiofile portaudio tslib pulseaudio pulseaudio-qt jack pipewire-jack soundtouch libdecor ffmpeg zstd vulkan-headers openal-soft ruby libyuv libusb inih httplib2 glslang gamemode faad2 pycryptopp perl-json-webtoken catch2 boost
以上依赖可能装多了 大家可以自己精简下。特别指出robin-map这个依赖系统没有,后面会说
开始克隆项目,一定要加上--recursive参数,会自动克隆链接到其他仓库的子模块。
git clone --recursive https://github.com/azahar-emu/azahar

网络情况存在差异,也许会报错,可以重新克隆直到整个项目完整复制成功。见下图:

官方给出的完整安装指引是:
mkdir build
cd build
cmake ../
cmake --build . -- -j"$(nproc)"
sudo make install (optional)
我们先执行
cd azahar
mkdir build
cd build
也可以把这三步节省为一步
cd azahar && mkdir build && cd build

接下来开始编译前生成配置和检查工作:
cmake ../

里面如果跳出橘黄色或者白色的cmake警告,需要自己审阅,看看还缺啥,红色的警告一定要重视!这三种颜色警告都有可能导致编译失败,或者生成配置文件失败。
有下面这行就可以直接开始编译了

开始编译,-j是多线程加速编译的意思
cmake --build . -- -j"$(nproc)"

之前说robin-map这个头文件依赖的问题,有可能x86架构不会碰到问题,但是龙芯上是一定要自己编译安装的,先提醒下,把这个过程讲完再讲编译他。
另外非x86架构会在编译过程60%-70%左右编译失败的问题已经修复
我碰到的问题向上游反馈后修复了。 https://github.com/azahar-emu/azahar/issues/730
然后上游帮我提交了PR。 https://github.com/azahar-emu/azahar/pull/732

上图显示 编译过程已经完毕,接下来需要安装
sudo make install
安装完毕

系统菜单有了

运行成功

接下来讲龙芯上的重要部分,robin-map
项目地址:https://github.com/Tessil/robin-map
新开一个终端窗口
git clone --recursive https://github.com/Tessil/robin-map
cd robin-map && mkdir build && cd build
cmake ..
sudo make install
完成,因为是个头文件应该不用编译把,可以直接安装。此处我还有点不太懂,你用这个命令cmake --build . -- -j"$(nproc)"是不会有任何效果的。

这样子装完了,龙芯上就可以编译通过了。
另外新手提醒,每次build目录的文件在编译或者生成配置文件失败后都要清空再弄。否则会报错。
大家玩的愉快,不直接提供安装包,自己动手下,龙芯生态大家一起努力!