Home > スポンサー広告 > CONCEPTION - 宝箱中身決定コード

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント: -

Home > スポンサー広告 > CONCEPTION - 宝箱中身決定コード

Home > PSP etc > CONCEPTION - 宝箱中身決定コード

CONCEPTION - 宝箱中身決定コード

yukariさん向けのコメント返信です。
他の人が見ても、面白くもなんともないと思われ。



下準備


01 宝箱を何度でも開けられるコードを作成して、ONにします。
02 宝箱を開けたら、変動サーチでアイテム種類が書かれているアドレスを特定します。
03 アドレスは変動なのでアドレスがすぐ分かるようにポインターコード化しておきます。


02のアドレス名称を仮に『アイテム種類アドレス』とします。
03のポインターコードはCWCのポインターコード書き込みではなく、
TempARかPMEtanでオフセットコードを利用してアドレスを表示出来るようにします。



読み込み法


01 『アイテム種類アドレス』にブレークポイント readを仕掛けます。
02 宝箱を開けます。
03 ブレークしたアドレスの命令を書き換えます。


この方法は、開けた瞬間の値を読み込んだ後に全要素を決定するロジックの場合のみ有効です。

この方法には欠点があり、その1つは複数の関数からreadされている場合、コードが長くなります。
たとえば、30カ所の関数からreadされているとします。下の関数はあくまでも例です。

関数A 種類決定用
関数B 文字表示用
関数C プレイヤーの持っているアイテム個数比較用
関数D 効果音決定用
関数E ミミック判定用
関数F トラップ判定用
関数G 画面エフェクト決定用


このように、30カ所全部の関数を書き換える必要が出てきてしまいます。

最大の欠点はもちろん、読み込み前にほとんどの要素を決定しておいて
読み込み時は、文字表示やエフェクトなどしか行わない場合は効果が無いことです。



書き込み法


01 『アイテム種類アドレス』にブレークポイント writeを仕掛けます。
02 宝箱を開けます。
03 ブレークしたアドレスの命令から手動バックトレースをかけます。



ゲームによっては、マップ生成時、ダンジョン突入時などに
アイテム種類を決定する場合もあるので、仕掛けるタイミングは
ゲームによって異なります。



実際例

0x09509EE0 0x00000031 アイテム種類(注:このアドレスは変動する)


bp 0x09509EE0 w
break 08893070

>>起点
08893070:AE510050 sw s1, $0050(s2)


ここから実行順に書いていきます。
起点を一番最後に書いていますので、下から読んでください。

手動バックトレースは、PS2disの逆参照解析と、
psplinkのexeブレークポイントによるレジスタ参照で行います。
詳しい手順についてはあえて書きません。このヒントだけで十分だと思います。
あとは自分で考えてください。

なぜあえて書かなかったかは、自分で方法を模索し
創意工夫して方法を自分なりに確立した時に理解できるでしょう。
(基礎を理解せずに応用だけを覚えても役に立たない)


----------------------------------------------------------------------------------------------------
088F39AC:00031100 sll v0, v1, 4
088F39B0:00031880 sll v1, v1, 2
088F39B4:00431023 subu v0, v0, v1
088F39B8:02821021 addu v0, s4, v0 アドレス生成
088F39BC:8C430004 lw v1, $0004(v0) v1 アイテムカテゴリー
088F39C0:27A40010 addiu a0, sp, $0010
088F39C4:AEE30000 sw v1, $0000(s7) v1
088F39C8:8C420000 lw v0, $0000(v0) v0 アイテム種類
088F39CC:0E2A6BDF jal $08a9af7c
088F39D0:AFC20000 sw v0, $0000(fp) v0
----------------------------------------------------------------------------------------------------
::0891647C:8FA50008 lw a1, $0008(sp) a1=v1
08916480:8FA6000C lw a2, $000c(sp) a2=v0
08916484:8FA70010 lw a3, $0010(sp)
08916488:0E244267 jal $0891099c
0891648C:02402021 addu a0, s2, zero
----------------------------------------------------------------------------------------------------
::0891099C:8C820004 lw v0, $0004(a0)
089109A0:8C440028 lw a0, $0028(v0)
089109A4:8C820000 lw v0, $0000(a0)
089109A8:8C5900A4 lw t9, $00a4(v0)
089109AC:03200008 jr t9 t9=088E298C
089109B0:00000000 nop
----------------------------------------------------------------------------------------------------
::088E298C:0A2376DA j $088ddb68
088E2990:8C840004 lw a0, $0004(a0)
----------------------------------------------------------------------------------------------------
::088DDB68:27BDFFE0 addiu sp, sp, $ffe0
088DDB6C:AFB3000C sw s3, $000c(sp)
088DDB70:00809821 addu s3, a0, zero
088DDB74:AFBF0010 sw ra, $0010(sp)
088DDB78:AFB20008 sw s2, $0008(sp)
088DDB7C:00E09021 addu s2, a3, zero
088DDB80:AFB10004 sw s1, $0004(sp)
088DDB84:00C08821 addu s1, a2, zero
088DDB88:AFB00000 sw s0, $0000(sp)
088DDB8C:0E236FE9 jal $088dbfa4
088DDB90:00A08021 addu s0, a1, zero
088DDB94:8E640320 lw a0, $0320(s3)
088DDB98:02002821 addu a1, s0, zero
088DDB9C:02203021 addu a2, s1, zero
088DDBA0:8C820000 lw v0, $0000(a0)
088DDBA4:8C420008 lw v0, $0008(v0)
088DDBA8:0040F809 jalr v0 v0=0891755C
088DDBAC:02403821 addu a3, s2, zero
----------------------------------------------------------------------------------------------------
::0891755C:27BDFFE0 addiu sp, sp, $ffe0
08917560:AFB40010 sw s4, $0010(sp)
08917564:3C0208C9 lui v0, $08c9
08917568:24040070 addiu a0, zero, $0070
0891756C:AFB3000C sw s3, $000c(sp)
08917570:00E09821 addu s3, a3, zero
08917574:AFB20008 sw s2, $0008(sp)
08917578:00C09021 addu s2, a2, zero
0891757C:AFB10004 sw s1, $0004(sp)
08917580:00A08821 addu s1, a1, zero
08917584:AFBF0014 sw ra, $0014(sp)
08917588:AFB00000 sw s0, $0000(sp)
0891758C:0E28ED8B jal $08a3b62c
08917590:8C50D170 lw s0, $d170(v0)
----------------------------------------------------------------------------------------------------
08A3B62C:27BDFFF0 addiu sp, sp, $fff0
08A3B630:AFB00000 sw s0, $0000(sp)
08A3B634:24100001 addiu s0, zero, $0001
08A3B638:0084800B movn s0, a0, a0
08A3B63C:02002021 addu a0, s0, zero
08A3B640:AFBF0008 sw ra, $0008(sp)
08A3B644:0E290B17 jal $08a42c5c
08A3B648:AFB10004 sw s1, $0004(sp)
08A3B64C:1040000C beq v0, zero, $08a3b680
08A3B650:3C1108D3 lui s1, $08d3
08A3B654:8FBF0008 lw ra, $0008(sp)
08A3B658:8FB10004 lw s1, $0004(sp)
08A3B65C:8FB00000 lw s0, $0000(sp)
08A3B660:03E00008 jr ra
08A3B664:27BD0010 addiu sp, sp, $0010
08A3B668:0040F809 jalr v0
08A3B66C:00000000 nop
08A3B670:0E290B17 jal $08a42c5c
08A3B674:02002021 addu a0, s0, zero
08A3B678:1440FFF7 bne v0, zero, $08a3b658
08A3B67C:8FBF0008 lw ra, $0008(sp)
08A3B680:8E224028 lw v0, $4028(s1)
08A3B684:1440FFF8 bne v0, zero, $08a3b668
08A3B688:00000000 nop
08A3B68C:0E28E81F jal $08a3a07c
08A3B690:24040004 addiu a0, zero, $0004
08A3B694:3C0308C7 lui v1, $08c7
08A3B698:2463FEA8 addiu v1, v1, $fea8
08A3B69C:3C0508C7 lui a1, $08c7
08A3B6A0:3C0608A4 lui a2, $08a4
08A3B6A4:AC430000 sw v1, $0000(v0)
08A3B6A8:00402021 addu a0, v0, zero
08A3B6AC:24A5FE80 addiu a1, a1, $fe80
08A3B6B0:0E28EC70 jal $08a3b1c0
08A3B6B4:24C6B5E8 addiu a2, a2, $b5e8
08A3B6B8:2402FFFF addiu v0, zero, $ffff
08A3B6BC:10A20003 beq a1, v0, $08a3b6cc
08A3B6C0:00000000 nop
08A3B6C4:0E203DE4 jal $0880f790
08A3B6C8:00000000 nop
08A3B6CC:0E28EABF jal $08a3aafc
08A3B6D0:00000000 nop
08A3B6D4:27BDFFF0 addiu sp, sp, $fff0
08A3B6D8:AFBF0000 sw ra, $0000(sp)
08A3B6DC:0E28ED8B jal $08a3b62c
08A3B6E0:00000000 nop
08A3B6E4:8FBF0000 lw ra, $0000(sp)
08A3B6E8:03E00008 jr ra
08A3B6EC:27BD0010 addiu sp, sp, $0010
----------------------------------------------------------------------------------------------------
:089175A0:02203021 addu a2, s1, zero
089175A4:02403821 addu a3, s2, zero
089175AC:0E224C02 jal $08893008
089175B0:24090001 addiu t1, zero, $0001
----------------------------------------------------------------------------------------------------
::08893008:27BDFFC0 addiu sp, sp, $ffc0
08893028:00E08821 addu s1, a3, zero s1=a3
08893030:00C08021 addu s0, a2, zero s0=a2 ここはただの文字表示
08893038:0E216E75 jal $0885b9d4
0889303C:AFB50034 sw s5, $0034(sp)
08893040:0E29D505 jal $08a75414
08893044:02402021 addu a0, s2, zero
0889306C:AE50004C sw s0, $004c(s2) カテゴリ書き込み
08893070:AE510050 sw s1, $0050(s2) 種類書き込み
----------------------------------------------------------------------------------------------------






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

コメント: -

Home > PSP etc > CONCEPTION - 宝箱中身決定コード

Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。