LoginSignup
2
3

More than 3 years have passed since last update.

DockerでSnes9xを動かして遊びたい!

Last updated at Posted at 2019-09-21

Linux Mint 18.3 (Sylvia) を使っているが、Ubuntu(と言うか、Debian)の仲間のOSでは、Snes9xは動かないので、ZSNESで我慢しなければならないらしい。
しかし、ZSNESにはゲームをする上で許容できない以下の問題がある。

  • ファンクションキーのガイドがないため、セーブ(ロード)したいのにうっかりロード(セーブ)しやすい
  • サウンドノイズや再生不良が頻繁に起こる

こちらのサイトによれば、FedoraならSnes9xが動作するとのことなので、Linux Mint上のDockerコンテナとして起動したFedoraでSnes9xを動かそうと考えた。

手順

以下に示す通り、順番にファイルの作成、および、コマンドの実行を行う。

Dockerfile

適切なディレクトリ(例:~/docker/fedora30_snes9x)を作成し、そこに以下のDockerfileを作成する。

FROM fedora:30
RUN dnf -y install wget
RUN wget http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-30.noarch.rpm
RUN rpm -Uvh rpmfusion-nonfree-release-30.noarch.rpm
RUN dnf -y install snes9x-gtk
RUN dnf -y install dbus-x11
RUN dnf -y install libGL

build.sh

いちいち長いコマンドを打つのが面倒なので、前述のDockerfileと同じディレクトリに以下のbuild.shを作成しておくと良い。

#!/bin/sh
docker build -t fedora30/snes9x .

run.sh

さらに長いコマンドを打つのはもっと面倒なので、前述のDockerfileと同じディレクトリに以下のrun.shを作成しておくと良い。
以下を見れば分かる通り、 $HOME/snes を /root/snes にマッピングしている。
これは、ホストの $HOME/snes にROMファイルを置くことを想定している。

#!/bin/sh
docker run -it --name=fedora30_snex9x \
--net host \
-e DISPLAY=$DISPLAY \
-v $HOME/.Xauthority:/root/.Xauthority \
-v $HOME/snes:/root/snes \
-v /tmp/.X11-unix:/tmp/.X11-unix -v /var/lib/dbus:/var/lib/dbus \
-v /var/run/dbus:/var/run/dbus -v /etc/machine-id:/etc/machine-id \
--device=/dev/dri:/dev/dri --device=/dev/snd:/dev/snd \
--device=/dev/input:/dev/input \
fedora30/snes9x bash

ビルド&起動

以下のコマンドを実行し、Dockerコンテナをビルドして起動しよう。
なお、便宜上 $ で始まる行はDockerホスト、 # で始まる行はDockerコンテナで実行するコマンド。

$ cd ~/docker/fedora30_snes9x
$ chmod +x build.sh
$ chmod +x run.sh
$ ./build.sh
$ ./run.sh
# cd /root/snes
# snes9x-gtk

Screenshot from 2019-09-22 03-04-36.png

Snes9xの設定

以下の初期設定は必須である。

  • View → Change Size で適切なサイズを選択
  • Options → Controller Ports → SNES Port 1 → Joypad を選択してキーボード使用
  • Options → Preferences → Sound で Dynamic rate control をオンでノイズ低減
  • Options → Preferences → Joypads → Buttons でキーボードの割り当て

もともとなのか、環境のせいかは不明だが、設定変更を行うと不正終了することがある。
それでも繰り返し設定すれば、設定は反映されるのでめげずに進めて欲しい。

参考

以下がなかったら実現困難だったので、とても感謝している。

追記

  • Fedoraリポジトリのバイナリが悪いのか、Dockerコンテナ環境が悪いのか、Snes9xのメニューを表示したときなどにcore dumpするときがあり、安定性に欠けるのが残念である。Windows版の安定性はかなり優れている。
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3