emu-os

Last-modified: 2017-09-02 (土) 15:30:44

emuos.PNG

コレはいいかもしれない。使い終わったノートPCの超有効な使いみち。OSレベルでのマルチコンシューマー機の出来上がりである。CD-ROMの自動認識まで出来てくれれば完全なPSX互換機といえるかもしれない。エミュ専用インターフェースで動いているのと、デスクトップ環境から起動するのがこんなに違うとは思わなかった。
 
しかし残念なことに既に開発を停止している模様。FaceBookで仲間を募集しているが当面バージョンアップには期待できない。中で使われている「Emulation Station」というGUI。こっちは更新されてるっぽい。
http://emulationstation.org/index.html

emuOSはあくまでOSであり、ランチャー部分は「EmulationStation」、エミュレータはretroarchなので、es_systems.cfgさえなんとかなればエミュレータの追加や更新が可能。関係がややこしいが多分こう。

emuos(ubuntu)
 + EmulationStation(Linux GUI)
  + RetroArch(エミュレーターランチャー/コンフィグ管理)
    + LibRetro(エミュレーター本体、DLL的なもの)

PCはLet's NoteT4にインストール。PentiumMの753MHzだとスーパーファミコン、メガドライブくらいまでなら難なく動くがPS、N64クラスは厳しい。

LINK

ダウンロード

ISOファイルをダウンロード。
ココから[http://www.emuos.com] emuos-trusty-i386-final.isoをダウンロードする
 

インストール用のUSBメモリを作る

ISOファイルをlinux live USB を使ってUSBメモリを作る。「オールドPCを~」を参考に作っています。

これは定かではないがインストーラの最初で選ぶ言語は「英語」がいい。今まで日本語でインストールしたものはほぼ確実にシステムディレクトリの設定が効かない(なぜか英語版は効く)、コレが原因かどうかはわからないが現象としてはほぼ確実にそうなってる。

「インストール中にアップデートをダウンロードする」のチェックボックスはチェックした方がいい。最新版を自動的に更新してくれる件については、つけた場合とそうでない場合でUIの動作速度に差がでた。後者のほうがなぜかUIが快適。なのでインストールするPCにはLANケーブルを挿しておくといい、無線はインストール中に認識させるプロセスがなかった。

その他細かいトラブル対応はこちら

起動してROMを用意

ネットワーク経由でロムをメンテできるように最初からEmuOS側のRomフォルダが共有されている。
しかし場合によってはネットワークにインストール済みPCが見えないことがある。その時にはEmu-OS側で端末を開いて「ifconfig」で割り当てられているIPアドレスを確認して「\\(IPアドレス)」で、直接Emu-OSのPCにアクセスする。事前にROMフォルダのパーミッションを777にしておくことを忘れないように。

ROMを認識しない

同じような問題で困ってるヒト発見。しかし回答がない。
http://stackoverflow.com/questions/33491882/loading-roms-to-emu-os

実機だとファイルの移動とか調査がめんどうなので、VirtualBoxでテストすることにした。

※拡張子ZIPに対応させるには、はes_systems.cfgで設定可能なようです。

ファイルの拡張子に要注意

対応している拡張子のファイルが無かったことが問題だった。生ファイルにすれば認識できた。
さらにいうと拡張子をフィルタリングしている「es-system.cfg」を編集すれば好みの環境に設定できる。

FC.nes .NESFCE Ultra?
SFC.smc .SMCBSNES
GB.gb .GBgambatte
GBC.gbc .GBCgbはダメだった、しかし拡張子を変えればgbファイルも動く、gambatte
GBA.gba .GBAVBA Next
64.v64 .V64 .n64 .N64 .z64 .Z64mupen64plus
32X.32x .32Xbin md genはダメ、しかしbinを32xにリネームしたら動いた。picodrive
PSX.iso .ISO .bin .BINmednafen
SS.iso .ISO .bin .BINyabause
PSP.iso .ISO .bin .BINまともに動いてるのに驚いた、なるほどppssppでした

対応拡張子を増やす

es_system.cfgを書き換える
/usr/share/emuos/es_system.cfgをみれば対応が書いてあった。ここを増やせば対応拡張子を増やせるっぽい。ただエミュレータ側でアーカイブファイルに対応していないのにZIPを指定しても起動できないので注意。あと、デフォルトの設定だとbSNESの実行ファイルがが指定してあるフォルダにない(別バージョンが入ってる)ので適宜、ファイル名を書き換えてあげないとSNESは起動できない。
ちなみにこのファイルが格納されている場所のパーミッションが一般ユーザーにないので、以下でフルアクセスできるようにしておこう。

> sudo passwd root
> (インストール時に設定したパスワード)
> (root用パスワード)
> (root用パスワード(もう1回))
> su
> chmod -R 777 .

あれ?そういえばPCEがないね。es_systems.cfgに追記してみよう。

PCE.pce .PCEmednafen_pce_fast_libretro.so
FDS.nes .NES .fds .FDSnestopia_libretro.so
MAME.ZIP .zipmame_stable_libretro.so

あと、ここで対応拡張子にZIPを追加したらエミュレータ側でZIPに対応していれば起動できる。
libretroはzipに対応しているので対応拡張子を増やしてやるだけでいい。

ちなみにlibretroのconfigファイルと間違えて、es_systems.cfgを削除しちゃうと起動できなくなるので注意

新しいエミュレーターを追加する

最新のエミュレーターは、ここから取得できる。
http://buildbot.libretro.com/nightly/linux/x86/latest/

以下にSOファイルを追加して、es_systems.cfgに追記すればできるっぽいので開いてみたらデフォのエミュレーター以外にもsnes9x~MSX~atariまで、既にそろえてくれている。

/usr/lib/libretro/

es_systems.cfgへの記述内容

	<system>
        <name>システム名(sega32x)</name>
        <fullname>フルネーム(Sega 32X)</fullname>
        <path>ロムのパス名(~/Roms/sega32x)</path>
        <extension>
         拡張子を列挙:スペース区切り(.32x .32X .info .INFO .bin .BIN .md .MD .SMD .smd)
        </extension>
        <command>
         実行コマンド(retroarch -L /usr/lib/libretro/picodrive_libretro.so %ROM%)
        </command>
        <platform>ゲーム機名(sega32x)</platform>
        <theme>表示するテーマ(sega32x)</theme>
    </system>

MSX関連はBIOSの追加が必要

https://github.com/HerbFargus/EmulationStation_Windows/wiki/MSX

具体的にはretroarchのconfigファイルにある「system_directory」の設定を書き換える。system_directoryのデフォルトがどこを指すのかわからないので、自分の都合のいいフォルダに書き換えることにしている。
例)例えばRoms/BIOS

system_directory="default"
↓
system_directory="~Roms/BIOS/"

ここにblueMSXのWin版に同梱されている「Databases」「Machines」フォルダを入れてあげればいい

Roms/BIOS/Databases/*.*
Roms/BIOS/Machines/*.*

MSX1 / 2 / 2+ / TurboRの切り替えは起動後のF1キーでRetoroArchのQuickMenuから。
Core Optionsで選択できる。

Mednafen PSXの設定

retroarchからの起動に成功したので覚書き。

まずretroarch.cfgにシステムディレクトリ設定を記述

system_directory = "~/Roms/BIOS"

BIOSファイルを設置(大文字小文字注意)

~/Roms/BIOS/scph5500.bin

※リージョンに応じて以下のファイル名のものを置くこと

scph5500.bin(日本)
scph5501.bin(北米)
scph5502.bin(ヨーロッパ)
  • retroarchは、なにか起動できるnesとかGenesisエミュなどを利用してとりあえずretoroarchを起動する。
  • retoroarchが起動したらF1を押してメニューに入る。
  • LoadCoreで「Mednafen PSX」を選択。
  • LoadContentsでbinイメージを読み込む。

BIOSファイルが正しく設定できていれば起動できる。

EmulationStationからの起動にどうして成功しないか調べてみたら、拡張子を.cueにしたら読み込めることがわかった。.iso、.binではダメみたい。あと物理CDのサポートがなされなくなったらしい。コレは残念。

Mednafen can load CD-ROM games from a dumped copy of the disc, such as CUE+BIN.
Physical CD support was removed in version 0.9.38.

PCSX(ReARMed)については、問題なく起動した。どうもBIOSすら必要ないみたいなので、mednafenでうまく起動できない時はこちらを試してみてもいい。

MAMEを使う

とっても詳しい未確認男さんのページを参考にROMにあったMAMEを実行すること。

  • MAME 2000 is based on MAME 0.37b5
    2000 = 0.37b5
    2003 = 0.087(試したら0.78だった)
    2010 = 0.139
    2014 = 0.157(試したら0.159だった)
    MAME_STABLE = 0.157

参考:http://libretro.com/forums/showthread.php?t=5224

しかし上記MAMEは現時点でいくつか問題があって、古いMAME2000ではキーアサインができない。また最新のMAME_STABLE(安定MAME)ではコンフィグは問題ないもののノイズがひどい。特にNeogeo/CPS関連で大きめのノイズでBGMがかき消されてしまう。これは困った。
※対策案
retroarch.cfgを修正
audio_driver = "sdl2"
audio_out_rate = "22050"
これで、音質はあれだが、ノイズは激減した

ということでretroarch関連でないMAMEをインストールしてみる。

もう少し新しいMAMEを使う

インストールに必要なのはubuntu14.04系で動くもの。

http://www.upubuntu.com/2012/10/how-to-install-mame-multiple-arcade.htmlここを参考に。

  • 新しいrepositoryを追加する
  • apt-get install mameする
    これで落ちてくるMAMEはver.0.164。LibretroのLatestよりも新しいが、現段階での最新は0.175なので一回り遅い感じ。0.164はちょうど1年前くらい。ここで更新されたMAMEはWindowsと同じくTABキーによるキーコンフィグが可能
  • mame.iniは以下のコマンドで「/etc/mame/mame.ini」にできる。
    mame -cc
  • 起動は「mame ファイル名」でOK。
  • 新しいMAMEのせいなのか最適化されてないからなのかLibretro版と較べて比較的重たい。

なぜかapt-getでmameを導入中にterminalを見失ってしまった。具体的にはインストールのプロセスで上書きされるmame.iniの中身を比較できるところがあるんだけど、比較後terminalが起動できなくなって絶体絶命になった。

ステートセーブとかの共通メニュー

F1を押すとメニュー画面に移行できる。ここでStateSaveやSlot変更などが可能。おそらくLibretroに内包されているエミュレーターは
同じインターフェースが利用できると思われる。

retroarchを直接使う

EmulationStationは言ってみればRetroarchのフロントエンドなので、ターミナル画面で「retroarch」を直接起動することもできる。(RetroarchはLibretroのフロントエンドなので関係がややこしいが・・・)
起動するとエミュ起動中にF1を押した画面になる。ここでcoreを選択(フォルダに入ってるエミュレーターを選択)した後、Contents(Romを選択)という2段階を経て各種エミュレーターを起動することができる

  • コレを使うと直接ROMを起動できるのでROMパスの設定ミスとかを検出できる
  • MAMEならROMに対応したバージョンを適宜起動して確認することもできて便利
  • PSXなどのエミュレーターを単体起動(EmulationStationに登録なしに)起動できるのも魅力

Retroarchの設定

RetroArchでは共通の設定を持っているので、retroarch.cfgを設定することで、どのエミュレーターでも共通の設定が使用できる。半面、個別の設定をしたいときに困ることがある。たとえばNEOGEOとSFCで同じような4ボタン構成でも、あらかじめのキーバインドがSNES9xとFinalBurnで異なる場合に意図したキーにならない。片っ端からキーバインドしなおした結果、最初に設定したエミュレーターの設定はすべて上書きされてしまっていることになるので注意。どちらかのキーバインドしか反映されないのである。しかしF1キーから入るメインメニューで、エミュレーター個別に設定を保存することができるので、これをやっておこう。次回起動時からエミュレーターごとに自動的にその設定が読み込まれるようになる。

その他、覚え書き

  • ファミコン ディスクシステムはdisksys.romを用意する。bizHawk準拠のdisksys.romで動作を確認。
  • Roms/BIOSフォルダに入れておくこと。
  • DCエミュレーター(reicast)はx86に対応していない模様。x64用バイナリとなってるみたい。x86マシンだと、どんなに設定してもretroarchからも起動できない。x64マシンであっさり動いた。
  • retroarchのcfgファイルは消して再起動したら、自動的にコンフィグファイルが作成されてコントローラを認識する。便利。FPSもオートに調整されていて安定する。インストール直後は速すぎて困っていた。
  • 場合により「retroarch.cfg」に記述した「system_directory」の設定が反映されないことがある
    • リセットしようが書き換えようがパスを動かそうが、全くsystem_directoryとして認識されない。
    • 正確にはretroarchではパスの設定通りに表示はされているが、なぜか各エミュレータがBIOSを読めない
    • 何をどうしても読めないのでEmu-OSを再インストールしたら動くようになった
    • 認識しない問題が発生したのはx64版のEmu-OS
    • その後、認識したのもx64版のEmu-OS(ただし言語を英語環境にした)
    • この2つの設定ファイルは全く同じ(動かなかった時の設定ファイルをコピーした)
    • 何か内部的な問題かもしれない
  • Emu-OSのx64。色々やってみたが残念ながらPSXしか動かすことが出来なかった。Libretroのコアがほぼ全滅。頼みの綱のreicastがx64でしか動かないのでこれに期待したが日本語環境だとなぜかsystem_directoryの設定がうまくいかない。で、やっぱりLAKKAのx64に帰ってきている。

使用されているLinuxのメモ

OSUbuntu 14.04.4 LTSKernel:Linux 3.19.0-64 generic
RAM816MB / 1GBがフリーシステムが18%使用(@kodi)

メディアプレイヤーのKodiがGUIの1つとしてついてる。もう1つ「OpenBox」もついているがコレを起動すると、デスクトップが
マウスカーソル以外表示されなくなってログオフ出来なくなった。電源ボタンで強制シャットダウンした後も、デフォルトでのログインがこいつに
なるのでもう戻せなくなって再インストールすることになった。環境依存の可能性は高いが、もう2度とこれでログインしない。
 
とりあえずes_systems.cfgを編集するのにエディタがあると便利なので、ターミナルからgeditをインストールしておくといい感じ。

$ sudo apt-get install gedit

 
 
 
 

インストール時のメモ 

インストール直後の状態で注意すること

  • 生のファイル(*.nesとか)しか認識しない
  • ZIPファイルはダメ
  • フォルダは認識できる
  • 日本語表示は問題なし
  • ファイルを置いた後はPCを再起動しなくてはならない

あとコントローラーが効かない、それと高性能なPCだとフレームレートがタカくなりすぎる

.config/retroarch/retroarch.cfgを編集すると適切な設定にできるらしんだけど、このファイルを削除してエミュレーターが
自動的に生成シてくれたファイルだと自動フレームレート、コントローラー設定がなされていたので、これでいい。

日本語にならない

インストーラーの最初で左のリストから日本語を選べば日本語インターフェースでインストールできる「だけでなく」その後のデスクトップ環境も日本語にできるので注意。つまりここで英語を選ぶとデスクトップ環境も英語になっちゃうということ。しかしながらいくつもEmu-OSをインストールしているとなかには、日本語を選んだ時点で画面が動かなくなるケースもあった。その場合はやむなく英語で進めるほかない。場合によってはマウスカーソルが暴走してマルチデスクトップの別画面に飛んだこともあった。インストール後に日本語にする方法はわからないが、ファイル名などで文字化けすることはなかった。しかし確証はないがなぜか日本語環境にするとsystem_directoryを認識できない問題に遭遇してしまう。英語版ですすめるのがいいのかもしれない。

Let's Noteでサウンドがでない

イヤホンからは音がでるけど内蔵スピーカーから音が出ない。どうもfnキーからのコールバックを受け付けられるように
ソース修正とカーネルのリコンパイルが必要になるっぽい。簡単な修正方法はXPで起動してミュートを解除すること。
この簡単な修正方法とカーネルのリコンパイルを両天秤にかけた結果、XPを再インストールすることになる機会を待つことにした。くわばらくわばら。

とりあえずイヤホンからは音が出るわけなんで100円均一でノートPCにくっつけられる激安スピーカーを買ってくれば対応できる。音量の調整は、EmulationStationのSTARTメニューからサウンドの設定で最大ボリュームにしておけばとりあえず聞こえる。アンプがないので大きな音量は出せないので、そういうのが必要なときはアンプ内蔵のスピーカーにつなぐといい。

https://hirish.wordpress.com/2008/08/12/%E3%83%AC%E3%83%83%E3%83%84%E3%83%8E%E3%83%BC%E3%83%88%E3%81%AEfn%E3%82%AD%E3%83%BC%E3%82%92linux%E3%81%A7%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B/

XPが再インストール出来ない

emu-osを入れてから再度XPを入れようとすると既にパーティションが埋まっているのでXPインストール途中(CDからストレージへのファイルコピー)でコケる。絶望的ではあるがKNOPPIXとかで

USBメモリ起動 → パーティション全削除 → FATフォーマット

で再インストール可能になる。リカバリー領域を削除してしまっていたらCDからインストールするしか無い。

Let's Note T-4専用のメモ

  • CDインストール時は(Intel ??後で調べる??) のChipsetドライバーを用意する
  • T4のサウンドドライバーはSigmatel Core Audioのものを探してインストール
    • PanasonicのサイトからダウンロードできるがXPの生CDからのインストールではT4を認識できず、インストール前に弾かれる
    • インストール用のexeを7-Zipで展開して中身を取り出して無理やりインストールする
  • HotKeyドライバーを入れてサウンドのミュートを解除する

そもそもインストールUSBが作れない

[[未確認男さん>]]のページによるとISOファイルをlinux live USB を使ってUSBメモリを作るとあった。まさにその通りだった。

ちなみにLAKKAの場合はWin32DiskImagerを使う。なぜかLiliUSBではダメだった。

過去のチャレンジ

自分で追加したファイルが、他のファイルと異なるのはファイルの所有権が「nobody」になっていること。
なので、コマンドから

sudo passwd root
> 新しいパスワード
> 確認用パスワード

とやったあと、以下で所有権を変更して、念のため再起動。

chown -c ユーザー名 ROMファイル名

しかしダメだった。色々やったけど、これ以上はなぜROMを認識しないのか想像がつかないのでLakkaに変更してみる。


ファイルの所有権が「nobody」でもこちらの環境では、認識している
ROMをいれるフォルダのアクセス権の可能性やファイルの拡張子が違う可能性がある
例:ファミコンはnes
(zipファイルはアーケードゲームでは対応。)
またSFCは記述ミスで起動できないので、上記の未確認男のブログを参照し訂正されたし

※まさに対応拡張子の問題でした。いただいたコメントとes_system.cfgに記載している内容で把握しました。助かりました、ありがとうございます!