オブジェクト改造

最終更新日:2011/02/17

N64日本語版パーフェクトダークの改造コードです。
ゲームシャーク ver3.30専用のコードです(Zeldaキー(Zキー)で起動します)。
Project64等のチート機能付きエミュにも対応しています。
※改造は自己責任でお願いします。

オブジェクトの情報(種類や位置など)を管理しているアドレス(以下管理アドレス)を見つけることによってオブジェクトを改造することができます。

ポインタ固定コード

81099A7A xxxx

管理アドレスは毎回位置が変わってしまうので、固定する必要があります。
そこで、ポインタ固定コードを使用します。

値の決め方

実機とエミュレータで管理アドレスの値に差があります。

ステージによって違うのですが、「ペラジック2」の場合だとエミュレータは実機より20大きくなります。
つまり、xxxx=0000で固定してもいいのですが、それだと実機に応用できなくなってしまいます(応用するつもりがないなら問題はないです)。

オブジェクトの改造コードを作成する時は、xxxx=0100で解析するとします。
エミュレータで使用する時は、xxxx=0100でもいいですが、実機の時は-20でxxxx=00E0で使用します。

後で解説しますが、複数人プレイの場合も管理アドレスは変わります。

というわけで、実機に応用する場合は最低でもxxxx=0020である必要があります。

今回はxxxx=0100を使います(これは一人プレイのエミュレータ用ポインタ固定コードです)。
81099A7A 0100

管理アドレスを見つける

下準備

今までに作成した改造コードをONにして、Project64でパーフェクトダークを起動します。

  1. MECCを起動し、ランチャから「Project64」をダブルクリックして起動します。
  2. Project64で、パーフェクトダークのROMを右クリックして、「チートの編集」を選択します。
    「チートの編集」を選択
  3. チートの画面上を右クリックして、「チートの追加」を選択します。
    「チートの追加」を選択
  4. 今までに作成した改造コードを入力します。
    80085289 0021
    810805E8 01E2
    81099A7A 0100
    改造コード入力
  5. チートにチェックを入れて、チートONの状態でゲームを始めます。
    オプションで「前回使ったチートを記憶する」のチェックが外れている場合は、ROMを起動してから「システム→チート」でチートをONにしてください。
  6. MECCの「プロセス」タブで、メモリサイズを「$600000」にし、「アドレス設定」を選択します。
    アドレス設定
  7. <始動>のシネマが始まる前に、セーブデータ選択画面に行ってください。
    コンバット・シミュレータを起動し、ステージで「ランダム」を選択し、ゲームを一度スタートします。
  8. ペラジック2でコンバットが始まると思いますが、そのまま「F2キー」で一時停止状態にします。
  9. MECCで「01000408」をサーチします。
    「01000408」をサーチ
  10. 検索結果の一番上の「00532890」が、管理アドレスの先頭です。
    そのアドレスをダブルクリックして、そのアドレスに移動します。
  11. 値を右クリックして、4バイト表示に切り替えます。
    値を右クリック 管理アドレスの先頭

解説

0100 0408 00F5 002C

先頭は0100です。
次の「04」は、オブジェクトの大きさ
次の「08」は、オブジェクトタイプ(08はウェポン)
次の「00F5」は、外見(オブジェクト番号で指定します)
次の「002C」は、オブジェクトを置く場所
更に下の「0200」は、ウェポンタイプ(0200はファルコン2)
をそれぞれ表しています。

実はこれらの値は、「ウェポン1-1」(ウェポン設定の1番)の情報を表しています。

これを改造コードでまとめてみると以下のようになります。
81532890 0100:?
80532892 0004:大きさ
80532893 0008:オブジェクトタイプ
81532894 00F5:外見(オブジェクト番号)
81532896 002C:オブジェクト置き場
805328EC 0002:ウェポンタイプ

全てのオブジェクトは、同じような配置で値が並んでいるので「外見」や「オブジェクト置き場」の値を知っている場合、サーチすることが可能です。
上記の場合だと、「00F5002C」を検索すれば、「ウェポン1-1」の管理アドレスを見つけることができます。

オブジェクト番号や、オブジェクト置き場の値は「GoldenEye/PD Editor 2.4/1.0」を使うことによって調べることが可能です。

計算で求める

全てのオブジェクトは、「大きさ」「オブジェクトタイプ」「外見」「オブジェクト置き場」の値が連なっているので、計算によって求めることができます。
例えば、「大きさ/オブジェクトタイプ」のアドレス+2は「外見」という感じで求めていきます。

同じオブジェクト間のアドレス差は一定なので、アドレス差を足していくことによって次のオブジェクトのアドレスを求めることができます。
したがって、まず各オブジェクトの先頭の情報を格納しているアドレスを求めてから、アドレス差を足していくという手順で求めていきます。

ウェポン

ウェポン設定は以下のようになっているとします。
1:ファルコン2
2:MagSec4
3:フェニクス
4:Mauler
5:シールド
6:無し

まず、「00F5002C」をサーチします。
番号間のアドレス差は「1B8」なので、1B8を足せば次の番号のアドレスを求めることができます。

・大きさ/オブジェクトタイプ
81532892 0408:ウェポン1-1
81532A4A 0408:ウェポン2-1
81532C02 0408:ウェポン3-1
81532DBA 0408:ウェポン4-1
81532F72 0415:ウェポン5
8153312A 0008:ウェポン6
815332E2 0408:ウェポン1-2
8153349A 0408:ウェポン2-2
81533652 0408:ウェポン3-2
8153380A 0408:ウェポン4-2

+2が外見
・外見
81532894 00F5:ウェポン1-1
81532A4C 00F6:ウェポン2-1
81532C04 00FA:ウェポン3-1
81532DBC 00F7:ウェポン4-1
81532F74 00F4:ウェポン5
8153312C 0118:ウェポン6
815332E4 00F5:ウェポン1-2
8153349C 00F6:ウェポン2-2
81533654 00FA:ウェポン3-2
8153380C 00F7:ウェポン4-2

更に+2がオブジェクト置き場
・オブジェクト置き場
81532896 002C:ウェポン1-1
81532A4E 002D:ウェポン2-1
81532C06 002E:ウェポン3-1
81532DBE 002F:ウェポン4-1
81532F76 0030:ウェポン5
8153312E 0031:ウェポン6
815332E6 0032:ウェポン1-2
8153349E 0033:ウェポン2-2
81533656 0034:ウェポン3-2
8153380E 0035:ウェポン4-2

・ウェポンタイプ
815328EC 0200:ウェポン1-1
81532AA4 0500:ウェポン2-1
81532C5C 0700:ウェポン3-1
81532E14 0600:ウェポン4-1
81532FCC 3F80:ウェポン5
81533184 0000:ウェポン6
8153333C 0200:ウェポン1-2
815334F4 0500:ウェポン2-2
815336AC 0700:ウェポン3-2
81533864 0600:ウェポン4-2

弾薬箱

まず、「00C10036」をサーチします。

弾薬箱は、各番号に2つずつ割り当てられます。
同じ番号間のアドレス差は「A8」で、違う番号間のアドレス差は「110」です。

・大きさ/オブジェクトタイプ
815328FA 0414:1-1
815329A2 0414:1-1
81532AB2 0414:2-1
81532B5A 0414:2-1
81532C6A 0414:3-1
81532D12 0414:3-1
81532E22 0414:4-1
81532ECA 0414:4-1
81532FDA 0014:5
81533082 0014:5
81533192 0014:6
8153323A 0014:6
8153334A 0414:1-2
815333F2 0414:1-2
81533502 0414:2-2
815335AA 0414:2-2
815336BA 0414:3-2
81533762 0414:3-2
81533872 0414:4-2
8153391A 0414:4-2

+2が外見
・外見
815328FC 00C1:1-1
815329A4 00C1:1-1
81532AB4 00C1:2-1
81532B5C 00C1:2-1
81532C6C 00C1:3-1
81532D14 00C1:3-1
81532E24 00C1:4-1
81532ECC 00C1:4-1
81532FDC 00C1:5
81533084 00C1:5
81533194 00C1:6
8153323C 00C1:6
8153334C 00C1:1-2
815333F4 00C1:1-2
81533504 00C1:2-2
815335AC 00C1:2-2
815336BC 00C1:3-2
81533764 00C1:3-2
81533874 00C1:4-2
8153391C 00C1:4-2

更に+2がオブジェクト置き場
・オブジェクト置き場
815328FE 0036:1-1
815329A6 0037:1-1
81532AB6 0038:2-1
81532B5E 0039:2-1
81532C6E 003A:3-1
81532D16 003B:3-1
81532E26 003C:4-1
81532ECE 003D:4-1
81532FDE 003E:5
81533086 003F:5
81533196 0040:6
8153323E 0041:6
8153334E 0042:1-2
815333F6 0043:1-2
81533506 0044:2-2
815335AE 0045:2-2
815336BE 0046:3-2
81533766 0047:3-2
81533876 0048:4-2
8153391E 0049:4-2

リフト

リフトは全部で2つあります。

1個目:「002E004C」をサーチします。
2個目:「002E004B」をサーチします。
(リフト間のアドレス差は「A4」です。)

「オブジェクト置き場」のアドレスに56を足すと「始点」のアドレスが求められます。
「始点」のアドレスに2を足すと「終点」のアドレスを求められます。

【リフト(1)】
815339D2 0430:大きさ/オブジェクトタイプ
815339D4 002E:外見
815339D6 004C:オブジェクト置き場
81533A2C 004C:始点
81533A2E 004D:終点

【リフト(2)】
81533A76 0430:大きさ/オブジェクトタイプ
81533A78 002E:外見
81533A7A 004B:オブジェクト置き場
81533AD0 004B:始点
81533AD2 004A:終点

ドア

ドアは全部で5つあります。

まず、「00BF004E」をサーチします。
ドア間のアドレス差は「DC」です。

最初の一個目だけを載せておきます。
【ドア(1)】
81533B0A 0801:大きさ/オブジェクトタイプ
81533B0C 00BF:外見
81533B0E 004E:オブジェクト置き場
81533B7C 0000:鍵の有無
81533BCE 0100:開閉音

金属コンテナ

金属コンテナは全部で24個あります。

1個目:「00210053」をサーチします。
24個目:「0021006A」をサーチします。
金属コンテナ間のアドレス差は「5C」です。

最初の一個目だけを載せておきます。
【金属コンテナ(1)】
81533F56 0C03:大きさ/オブジェクトタイプ
81533F58 0021:外見
81533F5A 0053:オブジェクト置き場
81533F5C 0002:破壊フラグ
81533F60 0000:すり抜けフラグ
81533F66 0000:運搬フラグ

以上でアリーナ「基地」のオブジェクトは全てです。

GoldenEye/PD Editor

「GoldenEye/PD Editor」を使用してオブジェクト置き場の値と外見の値を調べます。

Visual Editor起動

  1. 「GoldenEye/PD Editor」を開き、「Tools→Switch Editor Game (GE/PD)」でPDに切り替えます。
  2. 「File→Open Uncomprssed」を選択します。
  3. 「Setup Files」(ステージ構成ファイル)を選択します。ファイル名に「setup」がついているファイルを選択します。
    ゴールデンアイのステージ構造ファイルも同じフォルダに含まれているので注意。開くと強制終了してしまいます。
  4. 「Pads File」(オブジェクト置き場ファイル)を選択します。
    先頭が「bg_」語尾が「_pads」のファイル名を選択するのですが、同じステージの「Pads File」は自動で選択してくれているので、そのまま「開く」を選択すればOKです。
  5. 「Edit Setup」→「Visual Editor」でVisual Editorを開きます。
    visual Editor
    ※Visual Editorは、結構重いです。
    ウィンドウサイズは1024x786です。
・ソロミッション:「ペラジック2<妨害>」の場合
Usetuppelagic2Z.bin
bg_pelagic2_pads.bin

・アリーナ:「基地」の場合
Ump_setupbaseZ.bin
bg_basemulti_pads.bin

操作方法

Q:前進
Z:後退
A:左にスライド
D:右にスライド
W:上にスライド
X:下にスライド
←:右に視点移動
→:左に視点移動
R:180°回転(真後ろを向く)
↑:下を向く
↓:上を向く
C:左に視点回転
V:右に視点回転

スペース:一番近い番号の部屋へ
O:次の番号の部屋へ
P:前の番号の部屋へ

※いろいろと弄り過ぎて、わけがわからなくなった場合は、スペースキーを押すと正しい位置に戻ります。

操作方法

以上の操作方法で、移動をしてオブジェクトをクリックするとオブジェクトの情報が表示されます。
例えば、ムーンプールリフトのドアをクリックしてみます。
ムーンプールリフトのドア選択
「Pad」はオブジェクト置き場、「Type」はオブジェクトタイプ(01はドア)、「Img」は外見の値をそれぞれ表しています。

ソロミッションのオブジェクトも同じように、管理アドレスが存在します。
ソロミッション起動中に値をサーチすると、オブジェクトの情報を得ることができます(上記の場合だと「01300102」をサーチ)。
その値をコンバットシミュレータに流用すると、ソロミッションの時と同様のオブジェクトを作ることができます。


ペラジック2をアリーナに | 作成中→