Wine-NX 是一个实验性项目,将 Wine 移植到任天堂 Switch,通过 libnx 和自定义显示驱动及触控输入支持,在 Horizon OS 上运行 aarch64 Windows PE 程序。

Stars

66

7 天增长

暂无数据

Fork 数

1

开放 Issue

0

开源协议

NOASSERTION

最近更新

2026-06-26

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

该项目首次在 Switch 硬件上展示了可运行的 GUI 应用(记事本),尽管性能缓慢,但提供了公开的构建脚本和工作显示驱动,是已知首个针对 Switch 的开源 Wine 实现。

适合谁使用

  • Switch 自制软件开发者
  • Wine 和 ARM64 PE 爱好者
  • 任天堂 Switch 硬件探索者
  • 操作系统与模拟技术研究人员

典型使用场景

  • 在 Switch 上运行简单的 Windows GUI 应用(如记事本)
  • 测试和调试 Wine 在非标准平台上的 ARM64 构建
  • 探索 Switch 硬件在软件渲染和输入处理方面的能力
  • 学习将复杂兼容层移植到游戏主机的工程实践

项目优势

  • 能够在实际 Switch 硬件上运行,提供 SD 卡打包和 NRO 加载器
  • 实现了记事本 GUI 里程碑,包含窗口、菜单、文本渲染和触控交互
  • 提供详细的 Docker 和 LLVM-MinGW 构建说明,可复现
  • 包含自定义 win32u 显示驱动,将软件渲染的 DIB 表面复制到 libnx 帧缓冲

使用前须知

  • 由于全帧缓冲转换和缺少 GPU 加速,显示速度非常慢
  • 许多 Wine 子系统(消息、通用控件、剪贴板、键盘、音频、网络)不完善或缺失
  • 触控输入可用但缺少键盘、控制器、双击、焦点完善;尚无 GPU 加速支持

README 快速开始

Wine-NX Switch

Wine-NX is a Nintendo Switch focused Wine bring-up. The goal is to run AArch64 Windows PE programs inside a Switch NRO, using libnx/Horizon services for process, memory, input, files, display, and eventually GPU presentation.

This repository is no longer just a primitive Horizon probe. It is the working tree for the Switch Wine runtime, the in-process Horizon/Wine server work, the win32u Switch display driver, and the SD-card package builder used for hardware testing.

Current Status

As of the latest runtime work, the project can build and stage a Switch NRO runtime that launches Wine PE targets from:

sdmc:/switch/wine

Notepad is the main real-GUI test target right now. It can launch far enough to show the main window, frame, menu bar, menu popups, text rendering, and touch driven menu interaction. It is still experimental and not production usable: responsiveness is poor, presentation is software-heavy, and several real-app subsystems remain incomplete.

What Works So Far

Switch Build And Packaging

  • wine-nx-probe/build-switch.sh builds the Switch runtime with the devkitpro/devkita64 Docker image.
  • The script stages a runnable SD package under:
wine-nx-probe/build-switch/sd-card/switch/wine
  • Runtime NRO output:
wine-nx-probe/build-switch/wine-nx-runtime.nro
wine-nx-probe/build-switch/sd-card/switch/wine/wine-nx-runtime.nro
  • WINE_NX_APP selects the staged target:
WINE_NX_APP=gui ./wine-nx-probe/build-switch.sh
WINE_NX_APP=notepad ./wine-nx-probe/build-switch.sh
  • The package now stages Wine NLS files and Wine fonts into the Switch package, including C:\windows\fonts and share/wine/fonts equivalents.

Runtime Loader

  • The runtime can bootstrap a Wine ARM64 PE target from the staged package.
  • PE import resolution, loader handoff, Wine DLL staging, and runtime target selection are in place for the smoke apps and Notepad path.
  • The runtime carries a build marker in the NRO so hardware logs can confirm which binary is actually running.
  • Logging goes to:
sdmc:/switch/wine/wine-nx-runtime.log
sdmc:/switch/wine/horizon-trace.log

Horizon And Wine Server Substrate

  • Early Horizon primitives were proven: TLS model, executable memory/JIT alias handling, thread setup, address-space reservation, and Switch-safe runtime logging.
  • The in

项目描述

Experimental Wine runtime for Nintendo Switch: AArch64 Windows PE loading, Horizon/libnx integration, win32u USER/GDI bring-up, software framebuffer display, touch input, and early Notepad GUI support.

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

nsdkinx
精选
nsdkinx GitHub avatar

twell

Twell is a tiny, embeddable, zero-allocation physics engine for interruptible, Apple-style UI animations, available as a single-header C library with Python bindings.

移动开发设计与创意
17
V4bel
V4bel GitHub avatar

Januscape

Januscape (CVE-2026-53359) is a 16-year-old use-after-free vulnerability in KVM/x86's shadow MMU that allows a guest to escape to the host on both Intel and AMD architectures.

C
512
bryanthaboi
bryanthaboi GitHub avatar

pokemon-gen1-recomp-project

A native LÖVE2D recreation of Pokémon Red and Blue that extracts game data from a player-supplied ROM to provide enhanced features like modding, controls rebinding, and link play.

C
349