No Gadget, No Life

ゲームやガジェットの雑記

Android 11上のエミュで外部ストレージのROMファイルを読み込む方法

f:id:Lou-gun:20210314021532j:plain

Galaxy Tab S7+Android 11で、エミュを使って遊ぼうとしたら、エミュによって外部ストレージが読み込めない現象に遭遇。その為、外部ストレージに入れたROMからゲームを起動できない。

Android 11からストレージへのアクセス方法(API?)が変更されたために起きている現象のようだ。アプリのアプデで直って欲しいところだけど、いくつかのエミュで外部ストレージに入れたROMファイルを読み込んでエミュを起動することができたので、その方法をまとめておこうと思う。ただ、一部のエミュはまだ、内部ストレージからしかROMを読み込めていない。

エミュレーター毎の外部ストレージ参照状況:

まずは、僕が確認した状況を整理する。

普通に外部ストレージのROMを参照できるエミュアプリ:

  • PPSSPP
  • Dolfin
  • M64 Plus FZ
  • DamonPS2
  • Yaba sanshiro 2 Pro

ファイルPATHを指定しなおすと外部ストレージのROMを参照できるエミュアプリ:

  • Snes9x EX+
  • GBA.emu
  • MSX.emu

(.emu系は多分全部同じ)

DIGを使うと外部ストレージのROMを参照できるエミュアプリ:

  • RetroArch

  • DraStic

  • ePSxe

内部ストレージのROMしか読み込めないアプリ:

  • Citra
  • Redream

ROMファイルの参照方法:

ファイルPATHを指定しなおすと外部ストレージのROMを参照できるエミュアプリ:

まずは、Snes9x EX+GBA.emuなどのファイルPATHを指定しなおすと外部ストレージのROMを参照できるエミュアプリから。これらは、ファイルPATHをマニュアルで指定してあげればよい。

GBA.emuを例に説明をする。

まずアプリを起動して、Load Gameを選択。

f:id:Lou-gun:20210314191741j:plain
メニューバーをタップしていくとメニューバーがFile Locationsという表示になり、以下の画面になる。

f:id:Lou-gun:20210314192023j:plain

次にCustom Pathを選択し、外部ストレージのPathを指定する。

f:id:Lou-gun:20210314192201j:plain

僕の場合、外部ストレージの直下にRomsというディレクトリを切ってその中にGBAというディレクトリを切ってGBAのRomを入れているので、/Storage/0000-0000/Roms/GBAと入力すると外部ストレージ内のRomが参照できるようになった。0000-0000の部分は機種やSDカードによって変わる。僕の場合PPSSPPでRomPath指定した時に確認できた。

f:id:Lou-gun:20210314202948j:plain

DIGを使うと外部ストレージのROMを参照できるエミュアプリ:

外部ストレージのROMを直接指定できないエミュアプリは、Digというエミュレーターのフロントエンドを使うと外部ストレージのROMを参照しつつエミュを起動することができる。

僕が確認できたのは、DraSticePSxeRetroArch

DraSticを例に説明をする。

まずDIGを起動し、システムを選択する。

f:id:Lou-gun:20210314193847j:plain

右上のメニューからすべてのシステムにチェックを入れる。

f:id:Lou-gun:20210314193943j:plain

そうするとまだROMを読み込んでないシステムも出てくるので、ROMを読み込みたいシステムを選択する。ここではNintendo DSを選択。

f:id:Lou-gun:20210314194106j:plain

Nintendo DSを開いたら、右上のメニューからシステムの管理ROMファイルパスを選択。

f:id:Lou-gun:20210314194458j:plain

そうすると、外部ストレージを選択できるようになるのでROMファイルが入っているPATHを選択し、チェックを入れて完了とすると自動でROMファイルを認識してくれる。

f:id:Lou-gun:20210314194711j:plain

ROMファイルが読み込まれると、リスト上に表示されるので起動したいROMファイル選択する。ROMファイルを実行するのに何のエミュが使われるのかを確認するには、右上のメニューからゲームを管理するを選択すると一番上に選択されているエミュが出てくる。複数候補がある場合は、ここをタッチすると別のエミュを指定できる。あとは、左下の再生ボタンを押せばゲームが始まる。

f:id:Lou-gun:20210314195512j:plain

RetroArchなどは、ここでROM毎のCoreを指定できるで、ROMにあったCOREを指定しておくといい。

f:id:Lou-gun:20210314195553j:plain

内部ストレージのROMしか読み込めないアプリ:

CitraRedreamはDIGからROMを指定してエミュを起動してもROMを読み込んでくれず、内部ストレージのROMしか読み込めないアプリだ。内部ストレージ内にショートカット(シンボリックリンク)を作って、外部ストレージのファイルかディレクトリを指定してあげればイケるのではないかと思うのだが、僕の知識ではできそうにない。なので、これらのエミュは仕方なく内部ストレージにROMを置くことにした。

エミュをインストールすると内部ストレージ内にエミュ用のディレクトリが作られるので、その中にROMというディレクトリを切ってそこにROMファイルを入れてあげることでゲームが起動できるようになった。

f:id:Lou-gun:20210314203924j:plain

上記のDIGを使ってゲームを起動したエミュアプリも同様に、内部ストレージにROMファイルを入れてあげればDIG無しでもゲームの起動は可能だ。

最後に:

今回紹介した手順は、暫定的な手段にしかなっていない。Android10から11にアップデートしたAndroid機ではこんな手順を使わないでも各エミュアプリから外部ストレージのROMを参照出来ているので、何らかの手段があるのだと思う。

もう少し調べてみて、もっといい方法が見つかればまた記事にしようと思う。