前提条件: Luma3DSというカスタムファームウェア(CFW)を導入済みの3DSを持っていること
私の3DSについて
私のNew2DSLLにはCFWのLuma3DSを導入済みだ。
3DSやNDSのROMを吸い出す方法は知っていたが、バーチャルコンソール版のゲームボーイ・ゲームボーイカラーソフト(例えばポケモンとか)の場合はどうするの?と思ったので調べた。
まずROMの吸い出しから。これに関してはもうまとめてあるブログがあったのでそちらに説明を任せる。

ここで気になる問題が2つ。
- 吸い出したROMにはバーチャルコンソール版で修正された内容が反映されていないらしい
- パソコンのエミュレーターで読み込める形式のセーブデータを3DSのVCから吸い出してパソコンで続きを遊んだり、エミュレーターのセーブデータを3DSのVCで読み込める形式のセーブデータに書き戻したり出来るのか?
まず 1. について。
吸い出したROMにはバーチャルコンソール版で修正された、ポケモンシリーズなら技エフェクトの激しい点滅などがそのまま残っているようだ。まだ手元で確認してはいない。
例えばポケモン緑なら、romfsの中身を見るとこんな感じ。
*.patch というファイルが後ろの方にずらっと並んでいる。

この中の「Dmgapad0.h35.patch」をテキストビューワーで表示すると中身はこう。

とりあえずこの辺に技No.151「mega punch」(おそらくメガトンパンチ)のエフェクトを修正するようなデータが書かれてることまでは推測できる。でも、どんな形式で書かれてるのか、どうやってパッチを当てているのか全く分からない。
ググっても情報が出てこないし自力で解読するのもキツいので、これについては諦める。発売当時と同じ状態のROMで遊べると考えたらそれはそれでアツい。でも部屋を明るくして遊ばないとね。
次に 2. について。自分なりに試してみたら今のところ上手く動いている方法を書いてみる。特定の条件で上手くいかなかったりセーブデータがぶっ壊れたりとかあるかもしれないので、試すときは自己責任で。
3DSのVCからセーブデータを吸い出す
ポケモン緑の場合で説明する。セーブデータの中身はこんな感じ。






HOMEメニューからセーブデータ管理のHomebrewアプリ「Checkpoint」を起動。水色の旗のアイコンが目印。

入ってないよ!って場合は新しくインストールする。
ciaのインストール方法

起動したら、ポケモン緑のアイコンにカーソルを持ってくる。

New… を選択してバックアップする。
Backup selected title? で Yes を選択。

バックアップのフォルダー名を入れる。後から自分で分かるならデフォルトでいいと思う。

書き出しが終わった旨の表示が出るのでOKを押す。

しっかり書き出せていることを確認したら START でHOMEメニューに戻り電源を切る。

SDカードを取り出してパソコンで開き、以下のパスまで行く。
sdmc:\3ds\Checkpoint\saves\0x0170D ポケットモンスター 緑\<バックアップ名>
私の場合は
G:\3ds\Checkpoint\saves\0x0170D ポケットモンスター 緑\20220818-232002
sav.dat がセーブデータ本体なので、それをパソコンの自分で分かる場所にコピーする。
終わったらSDカードを外して3DS本体に戻す。

吸い出したセーブデータをエミュレーターで読み込む
私が使っているmGBAというエミュレーターで説明していく。
パス設定がこうなっている前提で話を進める。この設定は人によって違う。

先ほど吸い出したポケモン緑の sav.dat を、エミュレーターのセーブデータが置かれているフォルダーに移動する。
私の場合は
D:\Emulators\mGBA-0.9.3-win64\saves

移動したらファイル名を以下のように変更する。
<ポケモン緑のROMのファイル名>.sav
私の場合は
DMGAPBJ1.sav

注意: 既に同じファイル名が存在する場合は、エミュレーターで既にROMを起動して遊んでいるということ。既にあるセーブデータを取っておきたい場合は別の場所にコピーしてバックアップしておく。
あとはmGBAを起動してポケモン緑のROMを読み込めば、3DSのVCで遊んだ続きから出来る。
ちゃんと読み込めていることを確認する。






エミュレーターで起動するとスーパーゲームボーイで遊ぶ時と同じ仕様になるの、いいよね。

エミュレーターで遊んだセーブデータを3DSのVCに書き戻す
さっきと逆のことを行えばよい。
まず電源を切った3DSからSDカードを取り出して、パソコンで開く。
Checkpointでバックアップしたセーブデータがあるフォルダーまで移動。さっきとは1階層上の場所。
私の場合は
G:\3ds\Checkpoint\saves\0x0170D ポケットモンスター 緑

適当なバックアップのフォルダーを丸ごと同じ場所にコピーペーストする。
私の場合は 20220818-232002
Windows10ならCtrl+C→Ctrl+Vで勝手に別名の複製が作られる。

これを、エミュレーターで遊んだセーブデータを置いておくフォルダーにする。
「エミュレーターで遊んだセーブデータだ」と分かるような名前に変更し、中を開く。

このフォルダーに、エミュレーターで遊んだセーブデータを入れる。

私は動作確認のためにエミュレーターで、手持ちのポケモンと今いる場所を変えてセーブしてみる。手持ちをカモネギのおしょうだけにして、そらをとぶで今いる場所と違う場所に飛んで外にいる状態でレポートした。




エミュレーターのセーブデータがあるフォルダーからセーブデータをコピー。


上の状態から以下を行う。
- 今ある sav.dat を削除
- エミュレーターから持ってきたセーブデータ(私の場合は DMGAPBJ1.sav)を sav.dat にリネーム
下の画像のようになったらOK。

SDカードをパソコンから取り外し、3DSに挿入して電源を入れる。
Checkpointを起動して、エミュレーターから戻したセーブデータをリストアすれば完了!



バーチャルコンソールを起動して、正しくセーブデータがリストアされているか確認。

ちゃんとセキエイの外にいる。

手持ちもおしょう一匹だけ。

ゲーム配信をするときだけパソコンのエミュレーターで起動して画面キャプチャーを可能にし、終わったらそのセーブデータを3DSのVCに戻して3DSで遊ぶ。またゲーム配信するときにそのセーブデータをパソコンのエミュレーターに戻して……という用途がこれで実現する。
コメント