1 ポイント 投稿者 GN⁺ 2025-12-12 | 1件のコメント | WhatsAppで共有
  • Nintendo 64向けのスーパーマリオ64デコンパイルプロジェクトをベースに、PlayStation(PSX) 専用へ移植したバージョン
  • DualShock振動対応固定小数点演算への変換レンダリング最適化など、PS1ハードウェア向けの大規模な修正を含む
  • グラフィックプリプロセッサテクスチャ圧縮アニメーションメモリ最適化などの性能改善機能を追加
  • 一部のカメラ制御が未完成衝突やクラッシュの問題音楽をビルドできないなど、多数の既知のバグが存在
  • 古典ゲームのプラットフォーム間移植実験として、レガシーコンソール開発とリバースエンジニアリング研究において意義ある事例

プロジェクト概要

  • このコードは Super Mario 64 (J/U/E/SH) 完全デコンパイル版のフォークで、対象は PSXとPC(デバッグ用) のみ
    • Nintendo 64向けビルドは、すでにサポートしていない
    • 現時点では 米国版(US) ROMのみビルド可能
  • ゲームのビルドには元のアセットは含まれておらず、正規ROMからのアセット抽出が必要

主な機能

  • DualShock™互換グラフィックを追加し、元の「Rumble Pak Compatible」表記を模倣
  • DualShockの大型モーター向けアナログ振動信号小型モーター向けデジタル信号の両方をサポート
  • PSX向けの低精度ソフトフロート実装により、浮動小数点演算の性能低下を最小化
  • 固定小数点演算でコードを置き換え、PSX標準の16ビット整数ベクトル・行列を使用
  • レンダーグラフワーカーを簡素化して書き直し
  • ポリゴン分割(最大2倍) により大型ポリゴン問題を緩和
  • RSPディスプレイリストJIT方式でカスタム形式へ変換し、処理速度を向上
  • ディスプレイリストプリプロセッサで不要な命令を削除し、メッシュを最適化
  • マリオのアニメーション圧縮(580,632 → 190,324バイト)およびVRAMへの直接配置
  • カスタムプロファイラ4bppテクスチャエンコーダを追加
  • PSXの透明度の制限を考慮し、六角形の影に置き換え
  • (予定) 右アナログスティックによるカメラ回転およびGoddardサブシステムの再実装

既知の問題

  • 浮いている木一部アニメーションが動作しない、またはクラッシュする
  • 音楽をビルドできない効果音の欠落または異常音
  • カメラ制御が未完成特定レベル進入時にクラッシュ
  • エンディングシーケンスの読み込み失敗ラキトゥが登場しないポールが動作しない
  • テクスチャ個別読み込みによる長いロード時間PSXの限界によるテクスチャの歪み
  • グラフィックプリプロセッサの改善が必要一部テクスチャの描画エラータイトル画面が未完成ポーズメニューが動作しない

ビルド方法

Linux

  • mipsel-none-elf-gcc ツールチェーンをインストール後、リポジトリをクローン
  • baserom.us.z64 ファイルをルートディレクトリに配置
  • (任意) .local フォルダにサウンドトラック .wav ファイル(0〜37)を追加
  • make 実行時にISOイメージを生成 (build/us_psx/sm64.us.iso)
  • ベンチマーク版(make BENCH=1)はISOなしでELF/EXEのみ生成し、8MB RAM PSX が必要

Windows (未検証)

  • MSYS2 をインストール後、mingw-w64 パッケージを構成
  • mipsel-none-elf-gcc をインストールし、sm64-psx リポジトリをクローン
  • baserom.us.z64 ファイルを配置して make を実行
  • ビルド成果物はLinuxと同じパスに生成

トラブルシューティング

  • gccが認識されない場合、誤ったMSYS2環境を起動していないか確認
  • baserom.us.z64が見つからない場合、ファイル位置を確認
  • Makefileが見つからない場合、ディレクトリパスを確認
  • パッケージエラーの場合、pacman -Syu および pacman -Su で更新
  • mipsel gccの動作確認mipsel-none-elf-gcc -v コマンドで検証
  • プラットフォームを切り替える際は make -C tools clean でツールの再コンパイルが必要

プロジェクト構成

  • actors: オブジェクト動作、Geoレイアウト、ディスプレイリスト
  • assets: アニメーションおよびデモデータ
  • src: ゲーム中核のCソース (オーディオ、エンジン、ゲーム、メニュー、移植部など)
  • textures, text, levels: グラフィックおよびレベルデータ
  • tools: ビルドツール
  • lib: N64 SDKコードを含む

貢献

  • Pull Request を歓迎
  • 大きな変更の前には Issueを登録して議論 することを推奨

1件のコメント

 
GN⁺ 2025-12-12
Hacker Newsのコメント
  • この移植が気に入ったなら、GBAでSM64を完全に新規実装したプロジェクトも面白いかもしれない
    YouTube動画を見る

    • ここはHNなので、これはぜひ触れておくべき。 このGBA移植はRustで書かれている
      関連記事: The Impossible Port – Super Mario 64 on the Game Boy Advance
    • 興味深い。GBAがMinecraft風の軽量版を動かせるのか気になる
      N64でもかなり相性が良さそうで、いつかSummerCart64を手に入れて試してみたい
    • このプロジェクトのソースコードを知っている人はいる? 削除されたように見える
    • すごいことはすごいが、個人的には少し見ていてつらい
      それでも完成まで持っていったのは本当に見事だ
  • 本当に驚くべき成果だ
    昔は両方のコンソールを持っていたが、この移植を見ると、N64が1996年当時の**「家庭内SGI」感をどれだけうまく再現していたかを改めて感じる
    日本版の輸入N64でMario 64を初めて見たときの衝撃はいまでも鮮明に覚えている
    PSXのWipeoutのようなゲームが別の方向へ進化していた時代の
    多彩なゲーム環境**を思い出す

  • 「Tessellation(最大2倍)」で大きなポリゴンの問題を減らすとしているが、動画では依然としてテクスチャの歪みがかなり目立つ
    おそらく2倍では足りないか、レベルジオメトリを作り直す必要がありそうだ

    • 自分にもテクスチャの歪みは見えるが、PS1ゲーム特有のジオメトリの揺れは見えない
      おそらく浮動小数点演算をソフトウェアで処理しているので、perspective-correct mappingはフレームレートに負担が大きそうだ
    • 現状ではレベルポリゴンに前処理がほとんど入っていない
      今後実装されれば、大きなポリゴンを分割してテクスチャ座標の制限問題も解決される予定だ
    • 既知の問題にも「Tessellationが十分ではない」と明記されている
      PS1時代の初期3Dの粗さがまだ残っている
  • 動作映像やスクリーンショットがあるのか気になる。GitHubにない理由は理解できるが

  • テクスチャの歪みがあると不満を言う人は多いが、それでもこれは本当に驚異的な作品

  • Kazeに触れないわけにはいかない
    彼は何年にもわたってMario 64をさまざまな形で最適化してきた人物で、レトロゲームとプログラミングの交差点に興味があるならぜひ見るべきだ
    KazeのYouTubeチャンネル

    • 8月に投稿した動画で、Mario 64がどれだけRAMを無駄遣いしているかを分析しており、そのときにPS1移植の可能性に初めて触れていた
      こんなに早く現実になるとは思わなかった
      関連動画を見る
    • 彼は本当にすごい(しかも筋肉質だ)
      PS1にKaze並みの知識を持つ人がいるなら、Mario 32のようなプロジェクトも可能かもしれない
  • 最近は逆コンパイルプロジェクトが爆発的に増えているが、その背景が気になる

    • 主な理由は、1:1のバイト一致逆コンパイルを支援するツール群の進歩のおかげだ
      たとえば decomp.me のようなツールが代表的だ
      こうしたツールは既存バイナリと正確に一致するコードを再構成できるようにし、新しいプロジェクトを素早く立ち上げられるようにしている
      さらに、コンソールSDK APIを模倣する移植レイヤーの登場も一因だ
      ただし完全一致のためには、古いツールチェーンの異常な挙動を再現しなければならないなど、膨大な労力が必要になる
    • たぶんAIが逆コンパイルを簡単にしたのかもしれない
    • 単にAIのせいかもしれない
    • Ghidraを使う人が増えたことも影響している
  • 最近はDreamcast移植も登場し、Star Fox 64やMario Kart 64も複数プラットフォームへ移植されている
    関連リスト: awesome-game-decompilations

    • Star Fox 64移植もつい最近完成した
  • スクリーンショットがないのは残念だ

  • 「ついに、Super Mario 32だ」