注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 模拟器综合讨论区 PCSX2 0.94游戏修改程序
查看: 11033|回复: 8
打印 上一主题 下一主题

[分享] PCSX2 0.94游戏修改程序 [复制链接]

帖子
205
精华
0
积分
103
金钱
1620
荣誉
0
人气
5
评议
0
跳转到指定楼层
楼主
发表于 2007-11-30 17:18:13 |只看该作者 |倒序浏览
pcsx2程序及相关插件在附件中:
第1个为pcsx2下的游戏修改程序phaste
[發佈]汎用模擬器修改查找工具EmuHaste
===============================================================
............
Copy code
這是一些原因下,日本同人朋友們聯合製作的。
當初並沒有想發佈到中國(因爲中國有EC...),沒想到還是被發現了,既然有人喜歡,就稍微説明一下。

可以自己編寫擴充模擬器支持。
就是cheat代碼支持有些特別
模擬器的文件名一定要注意與設定保持一致。
目前比較初期,以後還要進行各種改進與功能增強。

軟件名 :Multi Emulator cheat engine [emuhaste]當前版本Ver1.21
汎用模擬器修改查找工具。

以下是無表格信息。


基本使用方法:
先运行模擬器,后运行emuhaste,“启动进程SNAP PROCESS”
可以用XP格式的码,把XP码贴在右边的空框中,点更新&適用[EXE&APPLY]有修改效果,无须主码(M)。



Last update 2007/11/14 #2emuhaste v1.21公開とりあえず、やたら要望の多かったシリアルコードを実装。
ただしdipstar互換なので、書式は以下のようになります。
Copy code
4aaaaaaa nnnnnnnn
w000zzzz uuuuuuuuアドレスaaaaaaaにパラメータyyyyyyyyをuuuuuuuuバイトごとにzzzz回、
w=0のときは1バイト、1のときは2バイト、2のときは4バイト書き込む。
(Dipstarシリアルコードもどき互換)
あくまでコード実験のときに手抜きできる程度の利点しかないので、
実際には改造ツールにあわせてシリアルコードを組み直してください。

あと、コンフィグファイルはねこかぶさん投稿の「GCエミュレータDolphin、N64エミュレータProject64・1964」、
私作(というか更新)の「PCSX2 v0.9.4」を追加しています。
>>Download : emuhaste v1.21


ソ フ ト名 :Multi Emulator cheat engine [emuhaste] Ver1.21 (2007/11/14)
著作権者  :Imaha486
チェック環境:OS.WinXPPro + CPU.C2dE6600 + MEM.DDR2(3GB)
推奨環境  :とりあえずAthlon64 3200+くらいでも普通に使えるっぽい。
タイプ   :フリーウェア。著作権は放棄してません。
転載条件  :なし。でも、連絡をくれたらうれしいかな。
オフィシャル:オフィシャル
About the modification or disassemble : All Ok. You may distribute it again. ;)

emuhasteとは?
拙作『DreamHaste』『phaste』『hasteDS』っぽい見た目をしたゲーム改造ツールですが、
Multi Emulatorつまり、いくつものエミュレータで動作するゲームの改造を目的としており、
configフォルダ内にターゲット条件を記載したINI(コンフィグファイル)を追加することで
対応エミュレータを追加することができます。

現在、下記のエミュレータに対応しています。
ターゲット        INIファイル名        コンフィグ作者(敬称略)
DSエミュレータ DeSmuMe        NDS_DeSmuMe.ini        Imaha486
DSエミュレータ iDeaS        NDS_iDeaS.ini        Imaha486
DSエミュレータ No$gba        NDS_no$gba.ini        Imaha486
PS2エミュレータ PCSX2 v0.9.4        PS2_pcsx2_094.ini        Imaha486
メガドライブエミュレータ DGEN        MD_DGEN.ini        Imaha486
SFCエミュレータ SNES9X        SFC_SNES9X.ini        Imaha486
FCエミュレータ VirtuaNES 0.96~0.97        VirtuaNES.ini        Imaha486
PCEエミュレータ npce 0.10+0.08        npce010.ini        Imaha486
DreamCastエミュレータ nullDC        DC_nullDC.ini        Shimita
SegaSaturnエミュレータ SSF        SS_SSF.ini        Shimita
GameCubeエミュレータ Dolphin        GC_Dolphin_final.ini        ねこかぶ
N64エミュレータ 1964        N64_1964.ini        ねこかぶ
N64エミュレータ Project64        N64_Project64.ini        ねこかぶ
※PCSX2v0.9.3及びDolphin1.01~1.03.2のコンフィグファイルは old_conf フォルダにありますので、
 必要な方は config フォルダにコピーしてご利用ください。
なお、個人的に余裕が無いためコンフィグファイル作成依頼は引き受けられませんが、
「自作した!」というツワモノな方は以下に報告頂けると助かります。





------------------------------------------------------------------------
emuhasteマニュアル
初心者の方へ
・基本的な使い方
基本的な使い方
・わかってる人向け
エミュ起動→ROM読込→emuhaste起動→MODE CHANGE→エミュ種類選択
→SNAP PROCESS→コードサーチ→コード動作チェック→ウマー(゚Д゚)

・・・以下、初心者向け

見た目は以下のような感じです。




img_01.png



初回起動時はサーチ方法を選択するように表示されるので、サーチしたい項目を選んでください。

ゲームを始めた後、メニュー左上の [SNAP PROCESS] でプロセスを捕捉すればサーチ可能になります。
ここでエラーが表示される場合、右下のINFORMATION & MEMOにあるProcessの名前と、
実際にゲームプレイに利用しているエミュレータのプログラム名が一致していることを確認してください。

Hex Viewer
emuhaste左上半分の16進数羅列表示エリアを「Hex Viewer」と言います。
直接パラメータやキャラクター名などを確認するために使用します。
「自動更新」のチェックを外すと表示が固定されたままになります。
Search Pallet
実際にパラメータサーチを行うのがこの「Search Pallet」です。
必ず最初は新規サーチ[NEW]ボタンを押してサーチ用バッファをクリアしてください。
また、サーチをやり直す場合もこのボタンを押してください。

*PARAM & STRING SEARCH
16進数、10進数、浮動小数点数、文字列などのパラメータを直接指定してサーチできます。
Copy code
サーチ対象書式例説明16進数00FFEE1122…直接打ちます。最大で255桁までサーチ可能10進数(直指定)S0 ~ S255
M0 ~ M65535
L0 ~L42949672958ビット(00-FF)の値を探します。
16ビット(0000-FFFF)の値を探します。
32ビット(00000000-FFFFFFFF)の値を探します。10進数(変化量)+S0 ~ +S255
+M0 ~ +M65535
+L0 ~ +L429496729510進数指定の頭        にプラスまたはマイナスの符号を付けると、
「変化量」を調べることができます。
(例)敵に34ダメージを与えた→敵のHPは34減った→-M34浮動小数点数T0 ~浮動小数点数サーチ。バグだらけなのであまり使えない文字列$string文字列検索。キャラ名からステータステーブルを探したりとか。任意の範囲Innnnnnnn-nnnnnnnn
(開始addr - 終端addr)16進数で任意の範囲に含まれるパラメータ探します。
DATEL TOOLKITのレンジサーチと同じです。
「任意の範囲」検索については上級者向けのため、あえてここでは説明しません。
上級者の方へ/変動アドレスのサーチ方法リンクを参照。






MULTI SEARCH
目に見えないパラメータ(HPゲージや好感度など)を探す際に用います。
初めにDATA TYPEでバイトサイズを指定して、絞り込みやすくしてください。
例えば「レベル」は大抵0~99なのでBYTE、「所持金」は999999999だったりするのでDWORDですね。
後はステータス変化に合わせて「増加」「減少」「変動」「不動」で絞り込めばOK。
CHEAT ENGINEemuhasteはサーチツールですが、簡易的な改造コードの動作チェックが可能で、
以下のコードをサポートしています。

一般的な改造コード(初心者向け)

Copy code
コード書式効果・用法0aaaaaaa 000000nnアドレスaaaaaaaに1バイトnnを書き込む1aaaaaaa 0000nnnnアドレスaaaaaaaに2バイトnnnnを書き込む2aaaaaaa nnnnnnnnアドレスaaaaaaaに4バイトnnnnnnnnを書き込むDaaaaaaa nnnnnnnnアドレスaaaaaaaが4バイトnnnnnnnnのときだけ次の行のコードを実行
特殊効果をもつコード(上級者向け)

Copy code
コード書式効果・用法Baaaaaaa 00000000アドレスaaaaaaaの4バイトをインデックスとして0,1,2コードのアドレスをずらす ※D2000000 00000000Bコードのインデックスの値を0にリセットする4aaaaaaa nnnnnnnn
w000zzzz uuuuuuuuアドレスaaaaaaaにパラメータyyyyyyyyをuuuuuuuuバイトごとにzzzz回、
w=0のときは1バイト、1のときは2バイト、2のときは4バイト書き込む。
(Dipstarシリアルコードもどき互換)
※Bコードの仕様はDSプロアクションリプレイ互換です (load index,[addr] & str param,[addr+index])

また、スペースや / @ * といった記号を行の先頭に置くとコメント扱いになります。

各ボタンおよびチェックの機能は以下の通り。
「更新&適用」ボタン … 入力したコードを適用&実行します。
「to ClipBoard」ボタン … クリップボードに改造コードをコピーします。
「CLEAR」ボタン … 改造コードを全て消去します。
「常に実行」チェック … このチェックを入れると常にコードが実行されます。
「0-2コード効果反転」 … 改造コードの1バイト書き込みと4バイト書き込みの効果を反転します(主にDS用)。
EXTRA MODE -エクストラモード-メニューの [EXTRA] をクリックすると、EXTRA MODEダイアログが開きます。





img_02.png





この画面でOKボタンを押すと、emuhasteがエクストラモードに切り替わります。

このモードでは、コンフィグファイルを修正することなく、対象プロセス名や
アドレス情報などをカスタマイズすることができます。
ただし、使い方次第ではシステムにダメージを与える可能性がありますので、
「本当に理解している方のみ」お使いください。

なお、Refresh rateは「改造コードの実行頻度をミリ秒で指定」です。
(ヘキサビューワの更新周期はコレの5倍の時間です。 50→50x5 = 250ms …0.25秒ごと)。

BaseAddr detect step sizeは、BASEADDR_KEYでベースアドレス検索する際のステップ幅を指定します。
普通は 4 で良いのすが、スピード重視の場合は 16。精度重視の場合は 1 を指定してください。



--------------------------------------------------------------------------

中級者の方へ
・コンフィグファイルの作り方
・裏技みたいなもの

コンフィグファイルの作り方

emuhasteと同じフォルダ内にある"configフォルダ"を開くと色々なINIファイルが入っていますが、
これが各エミュレータに対応するための設定情報が記載されたコンフィグファイルです。

例えば NDS_no$gba.ini を開くとこんな感じ。
;Config by Imaha486
[EMUHASTE]
PROCESS_NAME=NO$GBA.EXE
BASEADDR_KEY=FFDEFFE7FFDEFFE7
BASEADDR_TRY=2
VIRTUAL_ADDR=2000000
MEMORY_SIZE=400000
COMMENT=CleanROM専用\n暗号化ROMでは利用不可。また、このコンフィグファイルの動作は以下の通り。
「プログラム NO$.GBA.EXE のメモリから FFDEFFE7FFDEFFE7 という配列を探し、
2回目に見つかった場所を基準とする。基準は2000000hから始まり、そのサイズは400000hバイト」。


INIファイルでサポートしている構文は以下の通り。基本的に全ての数値は16進数表記。
Copy code
項目名意味記述例[EMUHASTE]コンフィグ先頭の宣言文。必ず初めに入れてください。.PROCESS_NAME対象プロセス(プログラム)名。部分一致だけでも検出する。
(chank→chankast.exe or chankex.exe ..)PROCESS_NAME=no$gba.exeBASE_ADDRベースアドレスをダイレクトに指定。普通は使わない。BASE_ADDR=0021FE00BASEADDR_KEYベースアドレスを検出するためのキー配列を指定。
最も効果的で、バージョン違いなどにも影響されない。BASEADDR_KEY=FFDEFFE7FFDEFFE7BASEADDR_LOAD任意アドレスに格納された4バイトを読み込み、
読んだ値のアドレスからベースアドレスを取得する。BASEADDR_LOAD=00638000BASEADDR_FIX検出したベースアドレスの値を加減算して調整する。
検出場所と基準アドレスが異なる場合に使用。BASEADDR_FIX=-3E7BASEADDR_TRYBASEADDR_KEYで指定したキーを何回探すかを指定。
未指定の場合、デフォルト値は1。BASEADDR_TRY=2VIRTUAL_ADDR開始アドレスがどの値から始まるかを指定する。
例えばDSのARM9はアドレス02000000から始まっている。VIRTUAL_ADDR=2000000MEMORY_SIZEサーチするメモリサイズをバイト単位で指定する。
DSは4MB(400000)、PS2は32MB(1000000)。MEMORY_SIZE=400000COMMENTコメント。対応バージョンや注意書きなどにどうぞ。COMMENT=自己責任で!
ベースアドレスを探す手順1.デバッガやメモリビューア付きのエミュレータでゲーム開始。

2.タイトル前くらいでエミュレーションを停止させ、メモリビューアからアドレス00000000付近の
 基準になりそうな特徴的な値を探す(BIOSコードなど)。

3.DBxSTANDやSTAND-Mxなどのプロセスメモリエディタでその値を検索。

4.うまくヒットしたら実際コンフィグファイルを組んで動作検証する。

5.他のゲームでも正しくアドレスが検出できれば成功。
ベースアドレスを探す手順(BASEADDR_LOAD使用)1.デバッガやメモリビューア付きのエミュレータでゲーム開始。

2.メモリビューアのアドレス00000000以降にある特徴的な値を探す。

3.DBxSTANDやSTAND-Mxなどのプロセスメモリエディタでその値を検索。

4.うまくヒットしたらそのアドレス00000000の位置のリアルアドレスを反転する
(例:010DC250にヒット→50C20D01)。

5.反転した値を検索し、EXEモジュール内のアドレスにヒットしたら成功

6.BASEADDR_LOAD=ヒットしたアドレス、で定義完了。



-----------------------------------------------------------------------------

・裏技みたいなもの

ここはマニア向けの項目です。
普通にパラメータサーチしたいだけの人が見てもあまり面白くないでしょう。
ダイレクトモードemuhasteのコンフィグファイル構文では、
「どうしてもコンフィグファイルではベースアドレスを検出できない」
ようなシーンに出会うことが多々あると思います。
例えば「キー 0C2DFE27 を探し、見つかったアドレス+4バイトにある値をアドレスとしてロード~」など、
変則的なアドレス配置には太刀打ちできないわけですね。
そこでemuhasteではコマンドラインから以下の引数を指定して起動することが出来ます。

> emuhaste.exe プロセス名 実開始アドレス 仮想開始アドレス 領域サイズ コメント

つまりコンフィグファイルの PROCESS_NAME・BASE_ADDR・VIRTUAL_ADDR・MEMORY_SIZE・COMMENTを
一発で指定して起動することが可能で、この状態を「ダイレクトモード」と言います。
なので、ベースアドレスを検出する外部プログラムを組んで、emuhasteに引数として渡せば、
事実上「どんなエミュレータでもサーチは可能」ということになります。メモリ情報引き継ぎスナップ通常、[SNAP PROCESS]を実行するとサーチ情報などを全消去してしまいますが、
CTRLを押しながら[SNAP PROCESS]をクリックで引き継ぎスナップができます。
例えばiDeaSでサーチしてる最中にコンフィグファイルを切り替えてno$gbaでサーチ~…
といったことも可能です。
また、サーチ&改造コードの動作検証中にエミュレータがクラッシュしてしまった場合も、
再びエミュレータでゲームを読み込んでから引き継ぎスナップをすることでサーチを継続できます。
ただし、サーチフラグ情報だけでなくバッファ内容も保持されたままなので、使い方を誤ると相当危険です。




--------------------------------------------------------------------------


上級者の方へ
・変動アドレスのサーチ方法


変動アドレスのサーチ方法DSの場合、わずか4メガバイトのメモリをやり繰りする必要があるため、
プログラムによってはパラメータ格納アドレスが変動することがあります。

(例1) [キャラ2バイト×3人] + [敵2バイト×2人] + [マップ4バイト]
Address +00+01+02+03+04+05+06+07+08+09+0A+0B+0C+0D+0E+0F
00000000 00 00 11 11 22 22 00 00 11 11 FF FF FF FF(例2) [キャラ4×4人] + [敵1024バイト×4人] + [マップ256バイト]
Address +00+01+02+03+04+05+06+07+08+09+0A+0B+0C+0D+0E+0F
00000000 00 00 11 11 22 22 33 33 00 00 11 11 22 22 33 33
00000010 FF FF FF FF上の例の場合(動的にメモリを確保するとして)、キャラ処理用の変数の確保量が違うため、
敵情報やマップ情報を改造しようにもアドレスが特定できないわけですね。

何故プログラムは変動アドレスに対応できるか?さて、アドレスが変動してもプログラム側は自由にデータを参照できるわけですが、
これは「データの格納されたアドレスそのものがメモリ上にあり、それを利用する」のです。

先ほどの(例1)と(例2)の場合、マップ(緑文字)データは前者がアドレス0000000A、
後者がアドレス00000010にありますが、プログラム中では以下のように処理されます。

Address  code
00012000 ldr r0,[_MapAddr]
00012004 bl _MapRoutine
00012008 bx r14
0001200C _MapAddr: .long 0000000A
r0に_MapAddrラベルのアドレス0001200Cに格納された値(0x0000000A)をロードし、
サブルーチンMapRoutineにジャンプする処理ですが、マップアドレスが変動するたびに
_MapAddrの値を修正することで対応しているわけですね。
(例2のメモリ配置になったとき、_MapRoutineには0x00000010が入っている)。
これを追尾するのがBコードプロアクションリプレイDS及びemuhasteで実装しているBコードは、
このような指標(というか間接アドレス)を追跡することができます。
上の例の場合に B001200C 00000000 というコードを打つと、
アドレス0001200Cに格納された値(0x0000000A)をベース値(オフセット)として定義し、
D2000000 00000000コードが実行されるまで
「全てのコードのアドレス部にベース値が加算」されます。
つまり変動アドレスを追尾し続けるわけです。
この状態で 02024000 FFFFFFFF のコードを実行すると、
本来は「アドレス02024000にFFFFFFFFを書き込め」という意味だったものが、
「アドレス0202400A (02024000+0000000A) にFFFFFFFFを書き込め」となります。
この変動アドレスの指標をサーチするにはまずは「変動アドレスの00000000番目」となる基準点を探します。
これは「キャラ名」だったり「キャラ番号」だったりと色々あるので、
根性と気合とガッツと直感で探してください。

大まかな場所が特定できたら「それっぽい範囲」をPARAM & STRING SEARCHで探します。
開始アドレス-終端アドレス



img_03.png



↑画像の場合、ターゲットとなるデータの格納アドレスが020B6200~020B627Cの
範囲内であると仮定して検索しており、いくつかのアドレスが該当している。
後は「このアドレスの値を適当に書き換える」と良い。
もしも該当した場所の値が変動アドレスのための指標として使われているのであれば、
これが狂うことにより、データがデタラメになるはずです。
そして元の値に戻したときに再び正常になれば大当たり。
これをBコードとして定義してやることで「変動アドレスの追尾用Bコード」が完成です。


-------------------------------------------------
汎用模擬器修改查找工具。
軟件名 :Multi Emulator cheat engine [emuhaste]當前版本Ver1.21
「PCSX2 v0.9.4」追加。

直接附件與網磐上傳。


Quote:
一些原因下,日本同人朋友們聯合製作的。純屬同人朋友愛好與研究產物
當初並沒有想發佈到中國,只做了英文+日文版,沒想到還是被發現了,既然有人喜歡,以上就是最新版下載。.....不斷更新\開發中

............
............

基本使用方法:
先运行模擬器,后运行emuhaste,“启动进程SNAP PROCESS”
可以用XP格式的码,把XP码贴在右边的空框中,点更新&適用[EXE&APPLY]有修改效果,无须主码(M)。

下载地址

使用道具 举报

白衣似雪 长剑如虹
游侠资深版主
【冒险游戏区/PC游戏综合区】
游侠制作组
猎杀者
海軍陸戰隊 少尉
★★★★★
◆◆◆◆◆◆◆◆◆

版主勋章资深版主勋章大头像勋章youki贡献勋章SIMS梦工厂季度勋章

帖子
5106
精华
5
积分
4764
金钱
20147
荣誉
121
人气
7
评议
0

沙发
发表于 2007-11-30 17:22:32 |只看该作者
一堆日语,头晕中……

使用道具 举报

帖子
18
精华
0
积分
9
金钱
238
荣誉
0
人气
0
评议
0
板凳
发表于 2007-11-30 17:27:15 |只看该作者
这个东西是干什么用的?我完全没弄明白..楼下的解释解释

使用道具 举报

白衣似雪 长剑如虹
游侠资深版主
【冒险游戏区/PC游戏综合区】
游侠制作组
猎杀者
海軍陸戰隊 少尉
★★★★★
◆◆◆◆◆◆◆◆◆

版主勋章资深版主勋章大头像勋章youki贡献勋章SIMS梦工厂季度勋章

帖子
5106
精华
5
积分
4764
金钱
20147
荣誉
121
人气
7
评议
0

地板
发表于 2007-11-30 17:57:50 |只看该作者

回复 #3 steve-fox 的帖子

模拟器游戏修改软件。

使用道具 举报

帖子
583
精华
0
积分
292
金钱
3033
荣誉
0
人气
0
评议
0
5#
发表于 2007-11-30 18:05:12 |只看该作者
楼主发错地方了吧,这里又不是模拟区
 

使用道具 举报

帖子
640
精华
0
积分
322
金钱
2593
荣誉
0
人气
0
评议
0
6#
发表于 2007-11-30 18:34:36 |只看该作者
不管怎么样,还是支持一下,毕竟也是成果啊

使用道具 举报

硬件助理工程师

白金会员勋章活跃勋章

帖子
29682
精华
0
积分
15151
金钱
19363
荣誉
29
人气
187
评议
0
7#
发表于 2007-11-30 22:51:15 |只看该作者
修改汉化软件................
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
41
精华
0
积分
21
金钱
173
荣誉
0
人气
0
评议
0
8#
发表于 2007-11-30 22:56:05 |只看该作者

回复 #7 jk1526 的帖子

头晕中......用金山改个MONEY就好了, 什么都改那还有什么可玩性...
不过这个软件也够让人头晕的....基础不好的别看了还是- -!
精神可嘉

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-8-26 13:58 , Processed in 0.342955 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到