Redditで、kentjhall氏がSwitchと同じハードウェアアーキテクチャのデバイスでSwitchのOSであるHorizon OSのサービスを利用できるようARM64 Linuxにパッチを当てることでNintendo Switchのゲームをネイティブに実行することを目的としたプロジェクトHorizon Linuxを開発していることを公表していました。(Asimovさん、smeaさん情報ありがとね)
Horizon Linuxはかなり興味を引く話題なので海外ではゲーム機のハッキングシーンだけでなくエミュレーターシーンでも大きな話題になっていた上に、コメント欄で情報も頂いていたので記事を書こうとは思ってはいましたが、リアルがちょっと忙しくて出遅れました。
言い出しっぺのkentjhall氏は、そもそもHorizon Linuxの開発に取りかかろうとした動機を
「Switchと同じARM64アーキテクチャのAppleシリコン搭載MacbookでNintendo Switchのゲームを実行したい」
と語っています。
AppleシリコンはAppleが開発したARMアーキテクチャプロセッサで、M1、M2というラインナップがあります。かなり高性能なことで有名です。
一方のNIntendo SwitchはSoCにARMアーキテクチャであるNVIDIAのTegra X1ベースのカスタマイズ版を搭載しています。それぞれAppleとNVIDIAが設計しているので別物ではありますが、アーキテクチャとしては共通のため、両者で実行されるコードは同じということになります。
違いは同じARMアーキテクチャで動作しているOSが役割を担っている部分になります。SwitchのOSであるHorizon OSの機能をARM Linuxで動作するようにしてしまおうというのがHorizon Linuxの目指すところになります。現在はまだ開発段階で完成はしていません。
ARM Linuxにゼロから機能を実装していくと大変なので、kentjhall氏が選択した方法は
「yuzuからパクらせていただきます」
つまり、Linux版のあるオープンソースNIntendo SwitchエミュレータyuzuからSwitchのコード処理に必要な
・入力関係
・オーディオ関係
・グラフィックス関係
などのシステム サービスを流用しています。
yuzuからカーネルやCPUエミュレーションなどの使用しないコードを取り除き、システムサービスやGPUエミュレーション、アプリローダーは流用しています。流用するだけで簡単に解決するものではありませんが、基本的な考え方はそうなっています。
Horizon OSの機能をARM Linuxに付加したものを「Horizon Linux」と呼んでいます。一方でyuzuから拝借したものは「mizu」と呼んでいます。「Horizon Linux」「mizu」は以下のGitHubリポジトリでそれぞれ公開されています。
現状でも「ぷよぷよテトリス」であれば基本的なところは動作するようです。
M1 Max MacBook Proで仮想化されたFedora RawhideでHorizonパッチを適用したLinux 5.19.0カーネルを使ったSwitchアプリ動作デモが以下になります。最初の2つのアプリは2048とInvadersNXというHomebrewです。
次が同じ環境で「ぷよぷよテトリス」を動作させたデモです。
Macbooc Proの仮想環境ではないNVIDIA Jetson Nanoボードで動作させたデモが以下になります。
NVIDIA Jetson Nanoボードは実用的とまでは言えませんが、動作が速くなっています。MacbooK Proの仮想環境はかなり処理が遅いのです。
この違いはyuzuのGPUエミュレーションでのアクセラレーションに必要なOpenGL 4.6をMacbookがサポートしていないためソフトウェアエミュレーションになってしまっているためです。かなりハイスペックなはずのM1 Maxを持ってしてもソフトウェアエミュレーションだけではハードルが高いようです。
一方でNVIDIA Jetson Nanoボードは「OpenGL 4.6をサポートする唯一の安価なARM64ハードウェア」ということで購入してテストを行ったようです。10万円程度のハードウェアであのM1 Max(一番安いMacbook Proでも40万円!)を大きく超えています。
現時点ではまだ開発途中段階ですが、エミュレーション界隈から出てきた「同じアーキケクチャのデバイスでゲーム走らせたい」という発想は、もはやエミュレータの枠を超えて互換機と同じ土俵の話になっているという印象を受けます。
Jetson Nanoは100ドルなので1万円ちょっとですかね
https://www.switch-science.com/catalog/6239/