Laboratory|FCEUltra


News | History | About | Link | Emulator | Soft | Lab | Game | Gallery | BBS

第6回 FCE Ultraをコンパイルする。


Page 1/ 2/ 3/ 4

 

設定フォルダーを自由に指定する。

「HOME」のままだとコマンドがダブるので変更します。

FCE Ultraの設定ファイルやスナップショット、セーブデータなどが保存されるフォルダは「.fcultra」という不可視フォルダになっていますが…これではちょっと使い勝手が悪すぎますね。そこでこの設定フォルダを自分の好きな場所に指定する方法を紹介します。

fceu/src/drivers/pc/ フォルダの中にある「sdl.c」をXcodeで開きます。

221行目にある
ol=getenv("HOME"); の部分を
ol=getenv("FCEUHOME"); と変更。

さらに227行目にコメント「/*」「*/」を付けて使用不能します。

「sdl.c」を保存したら再びコンパイルして新しい実行ファイルを作ります。

 

一番下にFCE Ultraの環境変数と使用するフォルダのパスを
書き入れます。

今回は例として /Users/jazzin/Emulator/FAMICOM/FCEUltra という断層のフォルダに指定してみましょう。

ホームフォルダの中にある不可視ファイル「.bash_profile」をFile Buddyなどで開きます。

export FCEUHOME=
~/Emulator/FAMICOM/FCEUltra

と記入して保存します。

設定ファイル「fceu98.cfg」が指定したフォルダに作成されま
した。DiskSystemのBiosもこのフォルダに置いて使用します。

ではちゃんと動くか試してみましょう。

指定した「FCEUltra」フォルダに実行ファイル「fceu」を入れてターミナルから起動します。(基本的に実行ファイルはどこにあっても構いません)

nekocan:~ jazzin$ cd ~/Emulator/FAMICOM/FCEUltra

nekocan:~/Emulator/FAMICOM/FCEUltra jazzin$ ./fceu test.nes

指定した「FCEUltra」フォルダに設定ファイルが作成されれば成功です。

これで不可視フォルダを使わなくて済みますね。

 


デフォルトのキー配列。

MK(x), MK(z), MK(TAB), MK(ENTER), MK(CURSORUP), MK(CURSORDOWN), MK(CURSORLEFT), MK(CURSORRIGHT), MK(s), MK(a) に変更します。

FCE Ultra0.98からデフォルトのキー配列が、方向キー「w,a,s,z」A,Bボタン「2,3」に変更されました。これだと非常に使いづらいですよね…、新しい機能で「Shift」「Alt」キーを使用するので変更になったのでしょうか?

このデフォルトキーを設定しているソースが「fceu/src/drivers/pc/input.c」の287行目あたりにあるので、使いにくい場合は変更してしまいましょう。でもキーボードの配列もオプション「-inputcfg」から設定できるのであまり意味が無いんですけどね…(^^;

ジョイスティックを使わない人、設定するのが面倒な人、fceu98.cfgをよく捨てる人向け(笑。

 


カスタムグローバルパレットの作製。

FCE Ultra にカスタムグローバルパレットというオプションが付いているんですが、これはいったいどういう機能なんでしょう?

ネットで検索してみるとどうやら自分で作ったオリジナルのカラーパレットが使えるようですね。

Windows版エミュレーターの G-NES や パソファミ などに付いている(.pal)というのがどうやらカラーパレットのファイルらしい。

しかしMacのグラフィックソフトでは、このファイルを開く事ができません…。う~んどうしよう。

G-NESを起動して「NES Palette」を表示してみると(左)のようなカラーパレットが表示されました。なるほど、これが G-NES で使われる「nes.pal」のカラーデータですか。

ではMacでこの「nes.pal」をHexEditで開いてみましょう。

はは~ん、これは単にWebなどで使われるカラー値(#000000~#FFFFFF)を左上から順番に並べているだけですね。謎は解けたー!
これを改造すればオリジナルのカラーパレットがMacでも作れますな。

では試しに作ってみましょう。

まずWindows側でG-NESパレットのスクリーンショットを撮りMacに持ってきます。
Photo Shopなどでカラーをパステル調に調整して保存。次に「カラーピッカー」で色の値を調べていきます。

モニタは32bit(1677万色)にして下さい。

64色全てのカラー値を調べたら順番通り(1~64)に並べます。HexEditで新規データを作りコピー&ペーストして保存します。

ファイル名は何でも構いませんが拡張子を必ず(.pal)と付けて下さい。

では、早速カスタムパレットをロードしてゲームを起動してみましょう。

見事、カラーがパステル調になりました。(左)しかしこれはパステル調というよりも日焼けした写真みたいだな(笑。

皆さんも好みのパレットを作ってみては如何でしょうか。

 


AppleScriptで一発起動!

Terminalからコマンド入力しなくても済むように「Wrapper2」でアプリケーション化したのはいいんですが、困った事に環境変数で指定したフォルダーを使用してくれません。

しょうがないのでAppleScriptを使ってFCEUltraを起動するスクリプトを作ってみましょう。

 

アプリケーションフォルダにある「Script Editor」を起動し上記のリストを入力します。
 リストの内容はこんな感じ。

 (1) エラーログ(ターミナルのログ)を表示しないようにする。
 (2) オープンウインドウを開いて選択したファイル(ROM)を関数「f」にセットする。
 (3)「do shell script」 " " で囲まれたターミナルコマンドを実行します。
 (4) 環境変数で変更した「FCEUltra」フォルダのパスを指定。(fceu.cfgのある場所)
 (5) コンパイルした実行ファイル「fceu」のあるパスを指定。
 (6) 関数「f」にセットされた選択ファイル(ROM)のパスをコマンドの後に追加する。

これで「フォーマット:アプリケーション」形式で保存すれば出来上がり、ダブルクリック一発で起動するスクリプトが完成しました。もちろんこれは私の設定ですので、各自で使用する場合には(4)と(5)のパスを変更して下さい。

 


AppleScript + Xcodeでランチャーを作る

ApplescriptとXcodeを使ってCocoaなランチャーを作成!

ダブルクリック一発で起動するスクリプトを作ったのはいいんですが、オプション(引数)設定を変更するのに一々書き換えるのは面倒です、スクリプトを沢山作るのも格好悪いですしなんとかならないかな。

そういえばXcodeってAppleScriptが使えたような…AppleScriptならObjective-Cとか分からなくてもプログラムできそうじゃん~、って事で早速ランチャーのようなソフトを作ってみました。

中身はAppleScriptでUNIXコマンドを実行しているだけなんすけどね。

このランチャーはSoft缶からダウンロードできます。

 


コントロールキーの説明。

Keyboard Controller (FCEUltra)
w 十字キー 上
z 十字キー 下
a 十字キー 左
s 十字キー 右
Nom-key 3 A ボタン
Nom-key 2 B ボタン
Tab セレクト ボタン
Return スタート ボタン

キーボードでの操作表をまとめてみました。

デフォルトで設定されているのは1プレイヤーのみ、キー設定の変更や2~4プレイヤーの設定をするにはオプション「-inputcfg」を使って設定します。

Keyboard Controller (FCEUltra)
F1 グラフィックデータの表示
F2 チートコードの入力
(Terminalでのみ入力可能)
F3 メニューを隠す
(Windows版のみの機能)
F4 スプライトの表示/非表示
Shift+F4 背景の表示/非表示
F5 セーブ ステート
Shift+F5 ムービーを記録
F6 ディスクサイドの変更
F7 ロード ステート
Shift+F7 ムービーを再生
F8 ディスクのイジェクト/インサート
F9 スクリーンショットの保存
F10 ソフト リセット
F11 ハード リセット
F12 エミュレーターを終了
0~9 セーブ用スロットの選択
Shift+0~9 ムービー用スロットの選択
` 早送り
Option+
return
フルスクリーンモードの切り替え
esc エミュレーターを終了

その他、便利な機能やハード関係の操作表。

Macでは「F3」キーは機能しません。

「ソフトリセット」はファミコンのリセットボタン、「ハードリセット」は電源スイッチを意味します。

「早送り」キーを押してもそんなに早くなりませんね…、エミュが重いのかしら。

 


オプション(引数)の説明。

FCE Ultra には様々なオプション(引数)が用意されています。 ターミナルからコマンド入力して起動する際、ROM名の前に記入して実行します。たとえば… 例:「./fceu -Options 1 rom.nes」といった具合にオプション名の後に(値)を付けて記入します。一度実行したオプションはfceu98.cfgに保存されるので2回目からは入力しなくてもOKです。

Options (値) 説明 (例)
-xres ? フルスクリーン時のモニタ(水平)解像度の設定。(640)
-yres ? フルスクリーン時のモニタ(垂直)解像度の設定。(480)
-xscale ?
(-xscalefs ?)
ウインドウ表示する画面(幅)の倍率。(2.5)
 *OpenGLを使用しない場合、小数点以下は切り捨てられます。
 *フルスクリーンで使用する場合は -xscalefs ? を使用します。
-yscale ?
(-yscalefs ?)
ウインドウ表示する画面(高さ)の倍率。(2)
 *OpenGLを使用しない場合、小数点以下は切り捨てられます。
 *フルスクリーンで使用する場合は -yscalefs ? を使用します。
-opengl ? OpenGLの設定。(0=OFF, 1=ON)
-stretchx ? 画面をモニタの幅いっぱいに引き伸ばします。(0=OFF, 1=ON)
 *OpenGL & フルスクリーン時のみ有効。
-stretchy ? 画面をモニタの高さいっぱいに引き伸ばします。(0=OFF, 1=ON)
 *OpenGL & フルスクリーン時のみ有効。
-efx ?
(-efxfs ?)
シンプル スペシャル エフェクト。(0=OFF, 1=走査線, 2=TVぼけ)
 *フルスクリーンで使用する場合は -efxfs ? を使用します。
-fs ? フルスクリーンモード。(0=OFF, 1=ON)
-sound ? サウンドの設定。(0=OFF, 1=ON)
-connect ? TCP/IP ネットワークプレイ。サーバー (?) に接続。
-server TCP/IPネットワークプレイの為のホスト/サーバーにする。
-netportu ? ネットワークプレーの為にUDP/IPポート (?) を使用する。
-netport ? ネットワークプレーの為にTCP/IPポート (?) を使用する。
-cpalette ? ファイル (?) からカスタムグローバルパレットをロードする。
-ntsccol ? NTSCのTVカラーで表示する。(0=OFF, 1=ON)
-pal ? PALモードで実行する。(0=OFF, 1=ON)
-soundvol ? サウンドボリューム。(0~100) %
-soundq ? サウンドクオリティー。(0= Low quality, 1=High quality)
-input? ? 仮想入力機器。(1 none) *1~2player
 *none, gamepad, zapper, powerpada, powerpadb, arkanoid
-fcexp ? ファミコン周辺機器。(none)
 *none, shadow, arkanoid, 4player, fkb
-nofs ? フォースコア(マルチタップ)エミュレーションを不能にする。(0=OFF, 1=ON)
-gg ? Game Genieを有効にする。(0=OFF, 1=ON)
-no8lim ? スプライト8枚のスキャンライン制限を不能にする。(0=OFF, 1=ON)
-snapname ? スクリーンショットのナンバリング方法。(0= 0.png, 1= File name-0.png)
-nothrottle ? 人工速度調整を不能にする。(0=OFF, 1=ON)
-clipsides ? 画面の両端を8ピクセル表示しない。(0=OFF, 1=ON)
-slstart ?
(-slstartp ?)
最初に描画するスキャンライン値。(0~239)
 *PALモードで使用する場合は -slstartp ? を使用します。
-slend ?
(-slendp ?)
最後に描画するスキャンライン値。(0~239)
 *PALモードで使用する場合は -slendp ? を使用します。

Ver 0.98.4 から追加されたオプション

Options (値) 説明 (例)
-openglip ? OpenGL使用時に画面を直接描画します。(1)
-frameskip ? フレームスキップの設定。(0)
 *スキップ値が大きいと光線銃などのゲームで不具合が起こるかもしれません。
-doublebuf ? ダブルバッファーを要求する(ダブルバッファーあるいはvblankへの同調があなたのビデオドライバーによって強制的に可能になるかもしれません)。(0)
-special ?
(-specialfs ?)
スペシヤル ビデオ スケーリング フィルターを使用する。(0)
 (0= OFF, 1=hq2x, 2=Scale2x, 3=hq3x, 4=Scale3x)
 *フルスクリーンで使用する場合は -specialfs ? を使用します。
-soundrate ? 秒単位で、正常な再生レートを指定します(Hz)。(48000)
-soundbufsize ? 秒単位で、正常なバッファーサイズを指定します。(24, Winは52)
-inputcfg ? USBジョイスティックやキーボードの入力設定。(gamepad1, gamepad2, gamepad3, gamepad4, powerpad1, powerpad2)

 

Next


Laboratory CAN