ニンテンドースイッチ スーパーマリオ 3Dコレクションの公式内蔵エミュについてとROMをダンプする方法

記事の方法を試す前や質問をするまえに必ず下記リンクを見てからにしてください!
このブログについて
http://yyoossk.blogspot.jp/1970/11/blog-post_24.html


こちらではニンテンドースイッチのスーパーマリオ 3Dコレクションの公式内蔵エミュについてとROMをダンプする方法を紹介します
スーパーマリオ 3Dコレクションが発売される前にスーパーマリオ64のソースコード流出という事件があり、そこからpcへ移植され、さらにそこから各ハードに移植されました
https://yyoossk.blogspot.com/2020/08/64.html
その経緯もあり、自分はてっきり移植したものだとばかり思っていました
そしてスーパーマリオ 3Dコレクション自体が世界共通なため、まさか他の言語のromを全て入れているはずがないと思っていたので、そこから移植だろうとも思っていました

実際のところは、公式エミュでそれぞれn64、gc、wiiを動かしていることが分かりました
そして中に入っていたromは
スーパーマリオ64だけ日本語
サンシャインとギャラクシーは英語
でしたので、どうやってサンシャインとギャラクシーを日本語にしているのだろう
そして、switch特有のボタン表示を画面に載せているのだろうかと思いデータを展開して覗いてみると、どうやらswitchのmodと同じようにrom自体には手を加えずその上から新たにテクスチャや言語ファイルをかぶせているような形でした

これらの仕組みから一つのromで様々な言語に対応ということが可能になったようです

公式エミュ
実際にプレイすれば分かりますが、gc、wiiのサンシャインとギャラクシーがぬるぬる動いてます
当然そこからゲームの入れ替えを試みる人がいましたが、この記事を投稿した時点では上手く行っていません
しかし、仕組みがだんだん解明されてきているのでもしかすると近々入れ替える方法が出てくる可能性はあります
この公式エミュを利用した新たなgc&wiiエミュレーターの可能性は正直分かりません
スーパーマリオ 3Dコレクションからそのエミュレーターを抜き出す必要があると思うので法的に厳しい可能性もあります

追記
解析者より
3Dオールスターへの新しいゲームの導入は非常に困難です。
サンシャインは最も良いターゲットですが...
任天堂は、Sunshineの.exeファイル内のGC / Wiiコードをスイッチコードに変換する特別なツールを作成しました。自分で作る方法を理解する必要があります。簡単ではありません。

追記2
追記3
解析者より
MarioSunshine.nrolzは、ゲームのROM内のファイルで、スイッチで実行するように特別に設計されたゲーム用に再コンパイルされたコードが含まれています。このゲームモジュールはHagiApplicationによって読み込まれ、このバージョンのHagiは、完全にそれに依存しています。テーブルがあり、各エントリは、Sunshineのmain.dol(gamecube実行可能ファイル)の関数ポインターとMarioSunshine.nro(スイッチ実行可能ファイル)の関数ポインターにつながります。。
hagi実行可能ファイル(main)は、これらの関数をmain.dolからフックし、MarioSunshine.nroに直接ポイントします。これにより、MarioSunshine.nroは、マリオサンシャインを実行するためだけでなく、Hagiを実行するためにも完全に必要になります。
Hagiは公式ゲームキューブエミュレーターのこと

ROMをダンプする方法
冒頭でも述べたようにサンシャインとギャラクシーは英語でした
ですのでスーパーマリオ64のみ紹介します

下記リンクを参考にxciまたはnspファイルを展開
ゲームのダンプデータであるXCI、XCZ、NSP、NSZのタイトルidや要求fwなどの情報表示や、トリム、展開ができるNxFileViewer紹介

5977df9d4848858cbde157c6723dd1de.ncaファイルを展開

rom/Stardust_JPフォルダの中の01_UNSMJ3.002.binファイルがスーパーマリオ64のromデータ
.binを.z64に拡張子を変更すればエミュレータなどでそのまま起動可能

コメント