N64パーフェクトダークの逆コンパイルが実質100%完了し、PC移植という次の段階に進んでいます。
まだ開発中で一部グラフィック等が不完全ですが、ほぼほぼプレイに問題ないレベルまで完成されています。
- 「クリア済みセーブデータ」の追加
目次
逆コンパイルプロジェクト
N64パーフェクトダークの逆コンパイルのプロジェクトがあり、逆コンパイルが進められています。
現在逆コンパイルは実質100%完了し、要はパーフェクトダークの中身が丸裸となりました。
そのソースコードを利用し、PC版が開発されています。
ネイティブにPCで実行できるので、エミュレータによる制限はなくなりパフォーマンスを最大限に発揮することができます。
今後は、パフォーマンス改善や、オンライン対戦等の機能追加が期待できます!
逆コンパイルのプロジェクトについては、以下の記事にて説明していますのでご覧ください。
PC版パーフェクトダークのソースコード
逆コンパイルは、Ryan Dwyer氏によって実施され実質100%完了しました。
現在、fgsfds氏によってPC版のためのソースの改修が行われています。
ソースコードは、GitHub上で公開されています。
https://github.com/fgsfdsfgs/perfect_dark
ビルド(実行ファイルの作成)の手順も記載されているため、気になる方は試してみてください。
2023/09/08現在、北米版ROM用の実行ファイルは配布されていますが、日本語版ROM用はまだ不完全なため配布されておりません。
そのため、日本語版ROMで遊びたい場合はビルド作業が必要となります。
必要なもの
- 北米版パーフェクトダークのROM
※Good Nameが「Perfect Dark (U) (V1.1) [!]」のROMでビッグエンディアン形式
MD5チェックサム:e03b088b6ac9e0080440efed07c1e40f - 実行ファイル(GitHubからダウンロード可能 ※要ログイン)
基本的にはパーフェクトダークのROMさえ用意すれば遊ぶことができます。
ROMを吸い出すやり方や、エンディアン形式の変換方法については、以下の記事をご覧ください。
遊び方
- GitHubのアカウントを作成
実行ファイルのダウンロード時に必要なので、アカウントを持っていない方は作成しましょう。 - GitHubにログイン
- プロジェクトページの「Actions」にアクセス
https://github.com/fgsfdsfgs/perfect_dark/actions - 一番上にある(最新)リンクをクリック
- 「Artifacts」欄にあるリンクをクリック
ビルド済みのファイルをダウンロードできます。
Linuxの場合:pd-i686-linux、Windowsの場合:pd-i686-windows
本記事では、WIndows想定で進めます。 - ダウンロードした「pd-i686-windows.zip」を展開
- 「data」フォルダ内に、以下のファイル名で北米版ROMを配置
pd.ntsc-final.z64 - 「pd.exe」を実行
一度実行するとセーブファイルの「eeprom.bin」が生成されます。
また、閉じた際に設定ファイルの「pd.ini」が生成されます。
操作方法
マウス+キーボード、XInput形式(Xbox 360コントローラ)、DirectInput形式(その他コントローラ)に対応しています。
初期設定は以下の通りですが、後述の設定ファイルを修正することで割り当ての変更が可能です。
長押しで認識する操作が廃止されたため、いくつかN64実機とは異なる操作となります。
操作 | マウス/キーボード | Xbox 360 | N64 | 備考 |
---|---|---|---|---|
撃つ/決定 | 左クリック/スペース | RT | Zボタン | N64実機と同様 |
照準モード | 右クリック/Z | LT | Rボタン | N64実機と同様 |
アクション/キャンセル | E | なし | Bボタン | N64実機と同様 |
アクション/決定 | なし | A | Aボタン | 「アクション」が追加となった ※Aボタンでも端末操作やドアを開けることができる |
リロード | R | X | Xボタン | 「アクション」と「リロード」が別々のボタン割り当てが可能となった N64実機と同じにする場合、Bボタンを割り当てる |
前の武器装備 | マウスホイール 前 | B | 十字左 | A + Zボタンという組み合わせの割り当てはできなくなった |
次の武器装備 | マウスホイール 後 | Y | Yボタン | 「決定」と「次の武器装備」は別々のボタン割り当てが可能となった N64実機と同じにする場合、Aボタンを割り当てる |
クイックメニュー | Q | LB | 十字下 | Aボタン長押しの割り当てはできなくなった |
武器モード切替 | F | RB | Lボタン | Bボタン長押しの割り当てはできなくなった |
起爆(リモート爆弾) | E + Q | A + B | B + 十字下 | A + Bボタンという組み合わせの割り当てはできなくなった 「使う」と「クイックメニュー」の組み合わせとなる |
武器モード一時切替 | F + 左クリック/スペース | RB + RT | L + Z | B+Zボタンという組み合わせの割り当てはできなくなった 「武器モード切替」と「撃つ」の組み合わせとなる |
設定ファイルの調整
「pd.exe」を実行して閉じた際に設定ファイルの「pd.ini」が生成されます。
そこには、ウィンドウサイズの設定やキー割り当ての設定が入っており値を変更することで設定が可能です。
主な設定値のみ紹介いたします。
- [Game]
- BaseDir=./data:データフォルダの場所
- MouseAimSpeedY=0.750000:照準モード時のマウス速度(縦軸)
- MouseAimSpeedX=0.750000:照準モード時のマウス速度(横軸)
- MouseAimMode=0:照準モード時にマウスで視点も移動する(1:有効、0:無効)
- ScreenShakeIntensity:画面の振動の強さ(爆発等)
- [Input]
- LStickDeadzoneY=4096:左スティックの遊び幅(縦軸)
- LStickDeadzoneX=4096:左スティックの遊び幅(横軸)
- MouseEnabled=1:マウス操作の有効化(1:有効、0:無効)
- MouseSpeedX=1.500000:マウス操作の速度(縦軸)
- MouseSpeedY=1.500000:マウス操作の速度(横軸)
- RStickDeadzoneY=6144:右スティックの遊び幅(縦軸)
- RStickDeadzoneX=4096:右スティックの遊び幅(横軸)
- StickCButtons=1:視点移動と移動を組み合わせる(操作設定1-1のような操作になる)(1:有効、0:無効)
- [Input.Player1.Binds]
- 各種ボタンに割り当てる、キー、マウス操作、コントローラのボタンを指定します。
ボタンの名称は、操作方法の「N64」と対応しています。 - A_BUTTON:Aボタン
- B_BUTTON:Bボタン
- D_CBUTTONS:Cボタン下
- D_JPAD:十字下
- L_CBUTTONS:Lボタン
- L_JPAD:十字左
- L_TRIG:Lボタン
- R_JPAD:十字右
- R_CBUTTONS:Cボタン右
- R_TRIG:Rボタン
- START_BUTTON:スタートボタン
- STICK_YPOS:スティック(縦軸)(上)
- STICK_YNEG:スティック(縦軸)(下)
- STICK_XNEG:スティック(横軸)(左)
- STICK_XPOS:スティック(縦軸)(右)
- U_JPAD:十字上
- U_CBUTTONS:Cボタン上
- X_BUTTON:Xボタン
- Y_BUTTON:Yボタン
- Z_TRIG:Zボタン
- 各種ボタンに割り当てる、キー、マウス操作、コントローラのボタンを指定します。
- [Input.Player2.Binds]
- 2P用の設定
- [Input.Player3.Binds]
- 3P用の設定
- [Input.Player4.Binds]
- 4P用の設定
- [Video]
- DefaultHeight=480:起動時のウィンドウサイズ(高さ)
- DefaultWidth=640:起動時のウィンドウサイズ(幅)
コントローラのキー割り当てのための名称については以下が定義されています。
DirectInput形式(N64コン等)の場合、どの名称がどのボタンと対応しているかは使っているコントローラによるため、現在認識している操作がどれなのかと、1つずつ割り当ててみて判断するしかなさそうです。
例えば、JOY1_Aだとしても必ずしもAボタンとは限りません。
- JOY1_A
- JOY1_B
- JOY1_X
- JOY1_Y
- JOY1_BACK
- JOY1_GUIDE
- JOY1_START
- JOY1_LSTICK
- JOY1_RSTICK
- JOY1_LSHOULDER
- JOY1_RSHOULDER
- JOY1_DPAD_UP
- JOY1_DPAD_DOWN
- JOY1_DPAD_LEFT
- JOY1_DPAD_RIGHT
- JOY1_BUTTON_15
- JOY1_BUTTON_16
- JOY1_BUTTON_17
- JOY1_BUTTON_18
- JOY1_BUTTON_19
- JOY1_TOUCHPAD
- JOY1_BUTTON_21
- JOY1_BUTTON_22
- JOY1_BUTTON_23
- JOY1_BUTTON_24
- JOY1_BUTTON_25
- JOY1_BUTTON_26
- JOY1_BUTTON_27
- JOY1_BUTTON_28
- JOY1_BUTTON_29
- JOY1_LTRIGGER
- JOY1_RTRIGGER
参考までに、N64コントローラを使用している私の環境では以下の設定値になりました。
[Input.Player1.Binds] A_BUTTON=JOY1_LTRIGGER B_BUTTON=E, JOY1_RTRIGGER D_CBUTTONS=S, JOY1_A D_JPAD=Q, MOUSE_MIDDLE, JOY1_DPAD_DOWN L_CBUTTONS=A, JOY1_X L_JPAD=MOUSE_WHEEL_UP, JOY1_DPAD_LEFT L_TRIG=F, X, JOY1_LSHOULDER R_TRIG=MOUSE_RIGHT, Z, JOY1_RSHOULDER R_JPAD=NONE R_CBUTTONS=D, JOY1_B START_BUTTON=RETURN, TAB, JOY1_START STICK_YPOS=UP STICK_YNEG=DOWN STICK_XNEG=LEFT STICK_XPOS=RIGHT U_CBUTTONS=W, JOY1_Y U_JPAD=NONE X_BUTTON=R, JOY1_RTRIGGER Y_BUTTON=MOUSE_WHEEL_DN, JOY1_LTRIGGER Z_TRIG=MOUSE_LEFT, SPACE, JOY1_RSTICK
クリア済みセーブデータ
テストも兼ねてPC版で一通りプレイし、協力ミッション以外は全てクリア状態のセーブデータを作成しました。
良かったらお使いください。
セーブデータファイル:pd_pc_port_save_file_20230913.zip
- ソロ・ミッション 全クリア
- チート 全取得
- チャレンジ 全クリア(1P分のみ)
- 射撃訓練 全クリア
- デバイスラボ 全クリア
- ホロ・トレーニング 全クリア
- 協力ミッション 未クリア
- ミッションフラグ状態
- シカゴ<潜入>:リモート爆弾を2Fに設置(3Fに設置すればG5ビル<盗撮>で秘密武器取得可能)
- エリア51<突破>:対空迎撃ロボを操作している作業員を生かす(エリア51<救出>で秘密武器取得可能)
- エリア51<脱出>:ホバーバイクルートでクリア(キャリントン協会ビル<防衛>でジョナサン出現)
- アラスカ空軍基地<変装>:レーザーグリッドルートでクリア(大統領専用機<暴露>で下の階からスタート)
- 大統領専用機<暴露>:ホバーバイクのリフトを下ろす(墜落現場<対決>でホバーバイク出現)
zipファイルを展開し「eeprom.bin」を「pd.exe」と同じフォルダ内に置いてください。
セーブデータファイルは共通のため、北米版でも日本語版でも適用可能です。
動画
テストプレイ1:データダイン本社<始動>/デバイスラボ/グラフィックテスト
データダイン本社<始動>エージェント、デバイスラボをプレイしました。
また、グラフィックテストを行いました。
テストプレイ2:射撃訓練場(全ゴールド)/グラフィックテスト
射撃訓練の全武器のゴールドをプレイしました。
また、グラフィックのテストを行いました。
テストプレイ3:グラフィックテスト
グラフィックの実機との比較チェックを実施しました。
ほとんどのグラフィックは再現できるようになりましたが、あとは以下が不完全です。
- カムスパイ(画面の歪みが不完全)
- IRスキャン(敵兵のハイライトが不完全。中心のパーツがない。)
- HRスキャン
- エリア51<突破>のOPシネマ(砂嵐のエフェクト)
- 画面モヤ(脳震盪)
- スレイヤーのロケットカメラ
更新履歴
- 2023/09/13
- 「クリア済みセーブデータ」の追加
- 2023/09/10
- 「遊び方」の4について、「port」ブランチ(portと記載がある)の中の最新でなくても問題ないため記載を修正