allkern/iris

GitHub: allkern/iris

跨平台 PlayStation 2 模拟器,采用 Vulkan 硬件渲染并内置调试器,致力于完整模拟 PS2 及其衍生系统

Stars: 417 | Forks: 14

# 🐣 Iris 适用于 Windows、Linux 和 macOS 的 Sony PlayStation 2 模拟器 ## 截图
Metal Gear Solid 3 - Snake Eater (Japan) Resident Evil 4 (USA) God of War II (USA) Kingdom Hearts II (USA) Ace Combat Zero - The Belkan War (USA) Virtua Fighter 4 (USA) Devil May Cry 3 - Dante's Awakening (USA) Ico (USA)
## 用法 ### GUI 导航至 `Iris > Open...` 并选择光盘镜像或 ELF 可执行文件,同时也支持拖放操作 ### CLI ``` Usage: iris [OPTION]... -b, --bios Specify a PlayStation 2 BIOS dump file --rom1 Specify a DVD player dump file --rom2 Specify a ROM2 dump file -d, --boot Specify a direct kernel boot path -i, --disc Specify a path to a disc image file -x, --executable Specify a path to an ELF executable to be loaded on system startup --slot1 Specify a path to a memory card file to be inserted on slot 1 --slot2 Specify a path to a memory card file to be inserted on slot 2 -h, --help Display this help and exit -v, --version Output version information and exit ``` ## 功能特性 - 支持 ISO、BIN/CUE、CHD 和 CSO/ZSO 光盘镜像格式 - 硬件加速的 Vulkan GS 渲染器,支持高达 16x SSAA - 功能丰富的调试器 - 易于使用的图形界面 - 支持游戏控制器及输入重映射 - 支持后处理着色器 ## 构建 ### Linux 在 Linux 上构建需要安装 SDL3 依赖项,如果希望生成 AppImages,还需要安装 FUSE。 ``` sudo apt update sudo apt upgrade sudo add-apt-repository universe sudo apt-get install build-essential git make \ pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \ libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev \ libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev \ libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev libfuse2t64 ``` 然后克隆仓库并运行 CMake: ``` git clone https://github.com/allkern/iris --recursive cd iris cmake -S . -B build cmake --build build -j8 ``` 可以选择运行 `cmake --install build` 来生成 AppImage。 ### Windows 我们目前在 Windows 上仅支持 GCC 作为编译器,这是因为 MSVC 没有内联汇编器,而我们需要它来将资源嵌入到可执行文件中。不过这个问题将来可能会得到解决! ``` git clone https://github.com/allkern/iris --recursive cd iris cmake -S . -B build -G "MinGW Makefiles" cmake --build build -j8 ``` ### macOS ``` git clone https://github.com/allkern/iris --recursive cd iris cmake -S . -B build cmake --build build -j8 ``` 可以选择运行 `sudo cmake --install build` 来生成 macOS App Bundle ## 进展/洞察 Iris 可以启动/运行相当多的商业游戏,但可玩性可能参差不齐,有些游戏运行相当流畅,而另一些则无法突破个位数的 FPS 大关,这是由于缺少 EE/VU JIT,这一问题将很快得到解决。 PlayStation 2 最多可以同时运行三个约 300 MHz 的处理器,加上运行在 33 MHz 的 IOP,这还不包括所有各自工作的不同外设/芯片,例如渲染大量图形的 GS、解码 MPEG-2 视频的 IPU、以 48 KHz 渲染多达 48 个 ADPCM 音频通道的 SPU2 等等。一旦将每帧所做的所有处理计算在内,您就会发现模拟该系统会变成一项相当复杂的任务。 为了缓解模拟 PS2 的艰难,我们有许多优化技术可供使用,其中一些已经实现: - 调度(已完成) - 软件 fastmem(已完成) - EE 解释器缓存(已完成) - 硬件加速 GS 渲染(已完成) - EE JIT/Dynarec(即将推出) - VU JIT/Dynarec(即将推出) - 硬件 fastmem(最终会实现) - 等等。 集成 Parallel-GS 是 Iris 的一个重要里程碑,现在我们需要致力于 EE 的 JIT 化。一旦完成,我预计模拟器将开始以可玩的速度运行更多游戏。 ## 保存 Iris 旨在不仅模拟零售版 PlayStation 2,还模拟基于 PS2 的其他系统,例如 PSX DESR(日本 PS2/DVR 混合机型)以及所有或大多数基于 PS2 的街机系统,朝着这一目标的工作正在进行中,事实上,Iris 是第一个启动 [PSX DESR BIOS/bootrom](https://www.youtube.com/watch?v=YtsoRjofYKA) 的 PS2 模拟器。 为了模拟这些系统,需要实现一堆额外的硬件,例如 PSX DESR 上的板载闪存,以及所有 Namco 板上的 NAND 存储。这并非易事,而且缺乏文档使其成为一项相当艰巨的任务,但我们正在努力解决。 值得一提的是,PSX DESR 支持已合并到主分支中,这意味着您(我们要爱的用户)应该能够从您的 PSX DESR 机器中转储 BIOS 并在 Iris 上运行它。虽然运行启动动画后无法通过一些错误屏幕,但我认为这仍然很酷。 除了模拟基于 PS2 的其他系统外,Iris 还旨在支持零售系统的**所有**功能/能力,这包括经常被忽视的 DVD 播放器、PSBBN、Linux,以及最终支持所有可用的外部 USB/SIO 外设和输入/输出设备。 # 特别感谢与致谢 我要感谢 emudev Discord 服务器、Ziemas、Nelson (ncarrillo)、cakehonolulu、PSI-rockin、noumi 以及 PCSX2 团队的亲切支持。 本项目使用了以下第三方库: - [ImGui](https://github.com/ocornut/imgui) - [ImPlot](https://github.com/epezent/implot) - [SDL3](https://github.com/libsdl-org/SDL) - [SDL_GameControllerDB](https://github.com/mdqinc/SDL_GameControllerDB) - [incbin](https://github.com/graphitemaster/incbin) - [Parallel-GS](https://github.com/Arntzen-software/parallel-gs) - [libchdr](https://github.com/rtissera/libchdr) - [libdeflate](https://github.com/ebiggers/libdeflate) - [lz4](https://github.com/lz4/lz4) - [toml++](https://marzer.github.io/tomlplusplus/) - [Portable File Dialogs](https://github.com/samhocevar/portable-file-dialogs) - [stb_image](https://github.com/nothings/stb) 感谢这些库的开发者,没有你们出色的工作,Iris 就不可能诞生。 ### 组件 与 PS1 相比,这台主机明显更加复杂,以下是组件的粗略列表: ``` 🟡 EE (R5900) CPU - 🟡 FPU - 🟡 MMI (SIMD) - 🟡 TLB - 🟡 DMAC - 🟢 INTC - 🟡 Timers - 🟢 GIF - 🟡 GS - 🟡 VU0 = 🟡 Macro mode = 🟡 Micro mode = 🟡 VIF0 - 🟡 VU1 (always micro mode) = 🟡 VIF1 - 🟡 IPU 🟢 IOP (R3000) CPU - 🟡 DMAC - 🟢 INTC - 🟡 Timers - 🟢 CDVD - 🟢 SIO2 (controllers and Memory Cards) - 🟢 SPU2 - 🟡 DEV9 - 🟡 USB/FireWire? - 🔴 Ethernet - 🔴 PS1 backcompat (PS1 hardware) 🟢 SIF ```
标签:Bash脚本, BIOS加载, C++, DNS解析, ELF执行, Iris, ISO加载, Linux软件, macOS应用, PlayStation 2, PS2模拟器, ROM运行, UML, Windows软件, 仿真器, 图形用户界面, 复古游戏, 客户端加密, 开源项目, 怀旧游戏, 数据擦除, 游戏存档, 游戏机模拟, 硬件模拟, 系统仿真