Home > PSP memo > PSPLink 簡易コマンド表 rev 7

PSPLink 簡易コマンド表 rev 7


03/21 初稿
04/01 ショートカットキーと演算子を追加。その他加筆修正。
04/02 calcとスクリプトサンプルを追加。その他加筆修正。
04/03 スクリプト修正。exresumeについて追加。
04/03 スクリプト4ヶ追加。コマンド echo chdir ls cp rm iena irel 追加。
04/07 コマンド並べ替え。cd、スクリプト文言修正。リンク追加。
04/10 スクリプト1ヶ追加。
04/14 コマンド別名(Synonym)とバックトレース追加。

TempAR 1.59 の使い方 【後編】 rev 8 - God is in the details
にてPSPLinkを扱っていますがPSPLinkのreadme.txtだけだと
とっつきにくいと思われるので簡易的なコマンド表を作ってみました。
コマンドはゲーム解析で使用する主立ったものだけを抜き出しています。
半分は自分の備忘録的意味合いなのデス。

必要なファイルは上部のメニューのToolsか、ツール置き場からDL出来ます。






凡例など



[ ]内オプションは省略可、それ以外は省略不可、| (パイプ)はorの意味、

num = 数字 val = 値 addr = アドレス $reg = レジスタ名
filename = ファイル名 .ext = 拡張子 intno = 正の整数 Path = パス
source = 元 destination = 先

b=Binary (2進数) d=Decimal (10進数) o=Octet (8進数) x=heX (16進数)
f=Float(浮動小数点)

b=8bit/1byte h=16bit/2byte/Half word w=32bit/4byte/Double word

アドレスは表記も入力値もReal Address。
Virtual Addressの場合はアドレス入力の際に足し算させても良い。
bpset 0x08923456 w
↓これをこのように置換可能。
bpset 0x00123456+0x08800000 w
なお、アドレス入力は加算だけでなく減算等も可能。

DOSのようにキーボードカーソル↑を押すとコマンド履歴が出る。
↓を入れると履歴の新しい側へ。
一部のコマンドでは未実装のオプションを指定しても無視される。(エラーが出ない)
つまり、コマンド履歴から下記のようにコマンド指定しても機能する。
bpset 0x00123456+0x08800000 w Enter
↑を押して履歴を表示させる
bpset 0x00123456+0x08800000 w 表示
←でカーソル移動、BackSpaceで不要文字を削除
bpdel 0x00123456+0x08800000 w Enter
オプションはwは無視されて、bpdelが実行される。


PSPLink 簡易コマンド表





ショートカットキー




演算子



演算子はアドレスと数値双方に適用可能です。
また、ブレークさせた際にコマンドのアドレスや数値を
レジスタで置き換えることも可能です。

disasm $epc-0x16 10
(ブレークした箇所の4行前から10行分ディスアセンブル表示)

memdump $a0+0x1679-0x16
(a0レジスタの指すアドレス+オフセット0x1679の箇所の少し手前-0x16からメモリダンプする)

peekw $v0
(v0レジスタが指すアドレスの中身を見る)

pokew $v0+0x1679 0x16<<4
(v0レジスタの値+オフセット0x1679に0x16を左シフト4回した数値で書き込む)

pokew $v0+0x1679 $s0||$s1
(v0レジスタの値+オフセット0x1679にレジスタs0とs1を論理ORした数値を書き込む)

などのように記述することも出来ます。



PSPLINKの演算評価は単純に左結合です。
PSPLINKでは1+1*2=4になります。
四則演算に従うなら1+(1*2)と表記する必要があります。



exresumeについて


exresumeでゲームに戻る際には、次のような手順で実行します。

1 . bpdelかbpdisでブレークポイントを解除する。
2 . stepを1回実行する。
3 . exresumeを実行する。

1は当然で、ブレークポイントを解除しないとstepやexresumeの際に同じ箇所でブレークし続けます。
2を実行しない場合は、一部のゲームでFPU Exceptionのエラーが発生することがあります。(要検証)
3でゲームに戻れます。

一連の手順はスクリプトを利用した方が楽が出来ます。




スクリプトサンプル



スクリプトにはファイル名、拡張子を自由に付けることが出来ます。
ファイル名を付ける際に拡張子を削除しておくと、スクリプトを呼ぶ際に
ファイル名だけで実行することが可能になり打鍵数を減らすことが出来ます。

スクリプトファイルだけを別のディレクトリに管理しておきたい場合は
ディレクトリ名を1文字にしておくとタイプする実行の際に楽になります。
(スクリプトのサーチパスはカレントディレクトリではなく、pspsh.exeが存在する
ディレクトリ決め打ちみたいなので)



名前 @sv
機能 メモリ保存
備考 setlocalなどを使用してファイル名に自動でyyyymmdd-hhmmss等を付けたいところですが
   DOSコマンドが使えない為高度なことは出来ません。
savemem 0x08800000 0x01800000 hogehoge.bin


名前 @e
機能 次の箇所でブレーク
bpdis 0
step
bpena 0
exresume


名前 @s
機能 bpdisを自動化。
bpdis 0
step
exresume


名前 @d
機能 bpdelを自動化。
備考 安定して動くなら bpdel 0 → step → exresumeでも良い。
bpdis 0
step
bpdel 0
exresume


名前 ゲーム略称+α等
機能 現在のゲームのポインターアドレスなどをまとめて表示
備考 監視機能の代わりに、アドレスをpeekwで読み出し、echoで分かりやすくするだけ。
   パイプで標準入力を受け取れないので高度なことは出来ません。
echo ポインターアドレス
peekw ポインターアドレス
echo 残り時間数値
peekw 残り時間のアドレス


名前 @cp0
機能 TempARでメモリダンプしたファイルをMSからPCに転送
備考 host0:/ はpspsh.exeのあるディレクトリを指す。
   上書き確認せずに強制的に上書きするので注意。
cp ms0:/seplugins/TempAR/dump0.ram host0:/


名前 @rm0
機能 TempARでメモリダンプしたファイルdump0.ramをMS上から削除
rm ms0:/seplugins/TempAR/dump0.ram


名前 @dldb
機能 TempARのチートデータベースファイルをMSからPCに転送
備考 host0:/ はpspsh.exeのあるディレクトリを指す。
   上書き確認せずに強制的に上書きするので注意。
cp ms0:/seplugins/TempAR/cheats/ULJM-XXXXX.db host0:/


名前 @updb
機能 TempARのチートデータベースファイルをPCからMSに転送
備考 host0:/ はpspsh.exeのあるディレクトリを指す。
   上書き確認せずに強制的に上書きするので注意。
cp host0:/ULJM-XXXXX.db ms0:/seplugins/TempAR/cheats/


名前 @trc
機能 自動でstepさせて通過したアドレスをログに出力する。トレース。
備考 ブレークさせたら、bpdisかbpdelで解除してから使用。
   disasmだとリダイレクト出来ないのでcalcかexlistを使用する。
calc $epc >>psplink_trace.log
step
calc $epc >>psplink_trace.log
step
以下好きなだけ繰り返し記述。



必要最低限のコマンド



初めて触る人向けに最低限必要なコマンドだけ抜き出してみる。

コマンド理由
savememPS2disで読み込ませる場合に必要。
disasmPS2disを使わない場合はこちら。
bpsetブレークポイント設置。これが無いと始まらない。
bpdisブレークポイント無効化。
bpdelブレークポイント削除。
bpenaブレークポイント有効化。
bpprintブレークポイント表示。
exresumeゲームに復帰。
resetexresumeで復帰出来ない場合のリセット。



関連記事
スポンサーサイト



コメント: -

コメント

読み込み中... ログイン中…
  • としてログイン中
まだコメントはありません。 最初のコメントを投稿しましょう !

コメントを投稿

Comments by

Home > PSP memo > PSPLink 簡易コマンド表 rev 7

Return to page top