the M.G.C'sHP



通常書き込み
シリアル
ポインター
ポインターシリアル
多重ポインター
パッド
条件判定0xD
条件判定0xE
アドレス比較
コピー系
wikiからのコピを簡略化
使用頻度が低すぎるものは省略
多重ポインタの説明が難しい。カオス
ついでにASM表現追加
面倒で書いてないのもある,いつか追記するかも

通常書き込み

8bit書き込み
_L 0x0aaaaaaa 0x000000bb
アドレス0x0aaaaaaaにbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
ori t1,zero,0x00bb
sb t1,t0,0x0000


16bit書き込み
_L 0x1aaaaaaa 0x0000bbbb
アドレス0x0aaaaaaaにbbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
ori t1,zero,0xbbbb
sh t1,t0,0x0000


32bit書き込み
_L 0x2aaaaaaa 0xbbbbbbbb
アドレス0x0aaaaaaaにbbbbbbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lui t0,0xbbbb
ori t1,zero,0xbbbb
sw t1,t0,0x0000


シリアル

8bitシリアル
_L 0x8aaaaaaa 0xbbbbcccc
_L 0x000000dd 0x000000ee
アドレス0x0aaaaaaaからbbbb個のアドレスになるように
ccccアドレスずつずらしながらddを書き込み
ddもeeずつ増加
lui t0,0x0aaa
ori t0,t0,0xaaaa
ori t1,zero,0xbbbb
ori t2,zero,0x00dd
sb t2,0x0000(t0)
addiu t0,t0,0xcccc
addiu t1,t1,0xFFFF
bne t1,zero,0xFFFC
addiu t2,t2,0x00ee


16bitシリアル
_L 0x8aaaaaaa 0xbbbbcccc
_L 0x1000dddd 0x0000eeee
アドレス0x0aaaaaaaからbbbb個のアドレスになるように
ccccx2アドレスずつずらしながらddddを書き込み
ddddもeeeeずつ増加
32bitシリアル
_L 0x4aaaaaaa 0xbbbbcccc
_L 0xdddddddd 0xeeeeeeee
_L 0x40001000 0xbbbb0001
_L 0xdddddddd 0xeeeeeeee
アドレス0x0aaaaaaaからbbbb個のアドレスになるように
ccccx4アドレスずつずらしながらddを書き込み
ddddddddもeeeeeeeeずつ増加

ポインター書き込み(オフセットが基準アドレス<=0)

8bit書き込み
_L 0x6aaaaaaa 0x000000bb
_L 0x00000001 0x0000cccc
アドレス0x0aaaaaaaに書かれている数値を基準アドレスとし、
基準アドレス+ccccのアドレスにbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
beq t1,zero,0x0002
ori t2,zero,0x00bb
sb t2,0xcccc(t1)


16bit書き込み
_L 0x6aaaaaaa 0x0000bbbb
_L 0x00010001 0x0000cccc
アドレス0x0aaaaaaaに書かれている数値を基準アドレスとし、
基準アドレス+ccccのアドレスにbbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
beq t1,zero,0x0002
ori t2,zero,0xbbbb
sh t2,0xcccc(t1)


32bit書き込み
_L 0x6aaaaaaa 0xbbbbbbbb
_L 0x00020001 0x0000cccc
アドレス0x0aaaaaaaに書かれている数値を基準アドレスとし、
基準アドレス+ccccのアドレスにbbbbbbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
lui t2,0xbbbb
beq t1,zero,0x0002
ori t2,t2,0xbbbb
sw t2,0xcccc(t1)


リバースポインター書き込み(オフセットが基準アドレス>=0)

8bit書き込み
_L 0x6aaaaaaa 0x000000bb
_L 0x00030001 0x0000cccc
アドレス0x0aaaaaaaに書かれている数値を基準アドレスとし、
基準アドレス-ccccのアドレスにbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
ori t3,zero,0xcccc
nor t3,t3,zero
ori t2,zero,0x00bb
beq t1,zero,0x0002
addiu t1,t1,t3
sb t2,0x0000(t1)


16bit書き込み
_L 0x6aaaaaaa 0x0000bbbb
_L 0x00040001 0x0000cccc
アドレス0x0aaaaaaaに書かれている数値を基準アドレスとし、
基準アドレス-ccccのアドレスにbbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
ori t3,zero,0xcccc
nor t3,t3,zero
ori t2,zero,0xbbbb
beq t1,zero,0x0002
addiu t1,t1,t3
sh t2,0x0000(t1)


32bit書き込み
_L 0x6aaaaaaa 0xbbbbbbbb
_L 0x00050001 0x0000cccc
アドレス0x0aaaaaaaに書かれている数値を基準アドレスとし、
基準アドレス-ccccのアドレスにbbbbbbbbを書き込み

lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
ori t3,zero,0xcccc
nor t3,t3,zero
lui t2,0xbbbb
ori t2,t2,0xbbbb
beq t1,zero,0x0002
addiu t1,t1,t3
sw t2,0x0000(t1)


ポインタシリアル

8bit
_L 0x6aaaaaaa 0x000000bb
_L 0x0000cccc 0x0000dddd
_L 0x9000eeee 0x000000ff
cccc個のアドレスになるようにeeeeずつずらしながらbbを書き込み
bbもffずつ増加

16bit
_L 0x6aaaaaaa 0x0000bbbb
_L 0x0001cccc 0x0000dddd
_L 0x9000eeee 0x0000ffff
cccc個のアドレスになるようにeeeeずつずらしながらbbbbを書き込み
bbbbもffffずつ増加

32bit
_L 0x6aaaaaaa 0xbbbbbbbb
_L 0x0002cccc 0x0000dddd
_L 0x9000eeee 0xffffffff
cccc個のアドレスになるようにeeeeずつずらしながらbbbbbbbbを書き込み
bbbbbbbbもffffffffずつ増加

多重ポインター書き込み

8bit書き込み
_L 0x6aaaaaaa 0x000000bb
_L 0x000d0001 0x0000cccc
_L 0xe000ffff 0xg000hhhh(二重ならg,hは0)
...(4重以上なら繰り返し)
アドレス0x0aaaaaaaに書かれている数値を第一基準アドレスとし、
eが2ならば第一基準アドレス+cccc、3ならば-ccccする。
そのアドレスに書き込まれている数値にdが0ならば+cccc、dが3ならば-ccccしたものを
最終アドレスとし、bbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
beq t1,zero,0x0005
ori t2,zero,0x00bb
lw t0,0xffff(t1)
beq t1,zero,0x0002
nop
sb t2,0xcccc(t0)
;オフセットマイナスは即値を符号拡張させる


16bit書き込み
_L 0x6aaaaaaa 0x0000bbbb
_L 0x000d0001 0x0000cccc
_L 0xe000ffff 0xg000hhhh(二重ならg,hは0)
...(4重以上なら繰り返し)
アドレス0x0aaaaaaaに書かれている数値を第一基準アドレスとし、
eが2ならば第一基準アドレス+cccc、3ならば-ccccする。
そのアドレスに書き込まれている数値にdが1ならば+cccc、dが4ならば-ccccしたものを
最終アドレスとし、bbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
beq t1,zero,0x0005
ori t2,zero,0xbbbb
lw t0,0xffff(t1)
beq t1,zero,0x0002
nop
sh t2,0xcccc(t0)
;オフセットマイナスは即値を符号拡張させる


32bit書き込み
_L 0x6aaaaaaa 0xbbbbbbbb
_L 0x000d0001 0x0000cccc
_L 0xe000ffff 0xg000hhhh(二重ならg,hは0)
...(4重以上なら繰り返し)
アドレス0x0aaaaaaaに書かれている数値を第一基準アドレスとし、
eが2ならば第一基準アドレス+cccc、3ならば-ccccする。
そのアドレスに書き込まれている数値にdが2ならば+cccc、dが5ならば-ccccしたものを
最終アドレスとし、bbbbbbbbを書き込み
lui t0,0x0aaa
ori t0,t0,0xaaaa
lw t1,0x0000(t0)
beq t1,zero,0x0005
lui t2,0xbbbb
lw t0,0xffff(t1)
beq t1,zero,0x0002
ori t2,t2,0xbbbb
sw t2,0xcccc(t0)
;オフセットマイナスは即値を符号拡張させる


パッドコード

_L 0xD00000aa 0x1bbbbbbb
パッド値合計がbbbbbbbbと一致するとき下aa+1行のコードを実行
_L 0xD00000aa 0x3bbbbbbb
パッド値合計がbbbbbbbbと一致しないとき下aa+1行のコードを実行
パッド値一覧
psp全ゲーム共通

判定コード0xD

8bit same
_L 0xDaaaaaaa 0x200000bb
アドレス0x0aaaaaaaの数値とbbが一致するとき下のコードを実行
lui t0,0x0aaa
ori t0,t0,0xaaaa
lb t1,0x0000(t0)
ori t0,0x00bb
bne t1,t0,#コード行数で変動


8bit different
_L 0xDaaaaaaa 0x201000bb
アドレス0x0aaaaaaaの数値とbbが一致しないとき下のコードを実行
lui t0,0x0aaa
ori t0,t0,0xaaaa
lb t1,0x0000(t0)
ori t0,0x00bb
beq t1,t0,#コード行数で変動


8bit less than
_L 0xDaaaaaaa 0x202000bb
アドレス0x0aaaaaaaの数値がbbより小さいとき下のコードを実行

8bit greater than
_L 0xDaaaaaaa 0x203000bb
アドレス0x0aaaaaaaの数値がbbより大きいとき下のコードを実行

16bit same
_L 0xDaaaaaaa 0x0000bbdd
アドレス0x0aaaaaaaの数値とbbbbが一致するとき下のコードを実行

16bit different
_L 0xDaaaaaaa 0x0010bbbb
アドレス0x0aaaaaaaの数値とbbbbが一致しないとき下のコードを実行

16bit less than
_L 0xDaaaaaaa 0x0020bbbb
アドレス0x0aaaaaaaの数値がbbbbより小さいとき下のコードを実行

16bit greater than
_L 0xDaaaaaaa 0x0030bbbb
アドレス0x0aaaaaaaの数値がbbbbより大きいとき下のコードを実行

判定コード0xE

8bit same
_L 0xE1cc00bb 0x0aaaaaaa
アドレス0x0aaaaaaaの数値がbbと一致するとき下cc行のコードを実行

8bit different
_L 0xE1cc00bb 0x1aaaaaaa
アドレス0x0aaaaaaaの数値がbbと一致しないとき下cc行のコードを実行

8bit less than
_L 0xE1cc00bb 0x2aaaaaaa
アドレス0x0aaaaaaaの数値がbbより小さいとき下cc行のコードを実行

8bit greater than
_L 0xE1cc00bb 0x3aaaaaaa
アドレス0x0aaaaaaaの数値がbbより大きいとき下cc行のコードを実行

16bit same
_L 0xE0ccbbbb 0x0aaaaaaa
アドレス0x0aaaaaaaの数値がbbbbと一致するとき下cc行のコードを実行

16bit different
_L 0xE0ccbbbb 0x1aaaaaaa
アドレス0x0aaaaaaaの数値がbbbbと一致しないとき下cc行のコードを実行

16bit less than
_L 0xE0ccbbbb 0x2aaaaaaa
アドレス0x0aaaaaaaの数値がbbbbより小さいとき下cc行のコードを実行

16bit greater than
_L 0xE0ccbbbb 0x3aaaaaaa
アドレス0x0aaaaaaaの数値がbbbbより大きいとき下cc行のコードを実行

アドレス比較コード

8bit same
_L 0xDaaaaaaa 0x4bbbbbbb
_L 0x000000cc 0x00000000
アドレス0x0aaaaaaaの8bit分の数値とアドレス0x0bbbbbbbの8bit分の数値が一致するとき
下cc行のコードを実行

8bit different
_L 0xDaaaaaaa 0x5bbbbbbb
_L 0x000000cc 0x00000000
アドレス0x0aaaaaaaの8bit分の数値とアドレス0x0bbbbbbbの8bit分の数値が一致しないとき
下cc行のコードを実行

8bit less than
_L 0xDaaaaaaa 0x6bbbbbbb
_L 0x000000cc 0x00000000
アドレス0x0aaaaaaaの8bit分の数値がアドレス0x0bbbbbbbの8bit分の数値より小さいときとき
下cc行のコードを実行

8bit greater than
_L 0xDaaaaaaa 0x7bbbbbbb
_L 0x000000cc 0x00000000
アドレス0x0aaaaaaaの8bit分の数値がアドレス0x0bbbbbbbの8bit分の数値より大きいときとき
下cc行のコードを実行

16bit same
_L 0xDaaaaaaa 0x4bbbbbbb
_L 0x000000cc 0x00000001
アドレス0x0aaaaaaaの16bit分の数値とアドレス0x0bbbbbbbの16bit分の数値が一致するとき
下cc行のコードを実行

16bit different
_L 0xDaaaaaaa 0x5bbbbbbb
_L 0x000000cc 0x00000001
アドレス0x0aaaaaaaの16bit分の数値とアドレス0x0bbbbbbbの16bit分の数値が一致しないとき
下cc行のコードを実行

16bit less than
_L 0xDaaaaaaa 0x6bbbbbbb
_L 0x000000cc 0x00000001
アドレス0x0aaaaaaaの16bit分の数値がアドレス0x0bbbbbbbの16bit分の数値より小さいとき
下cc行のコードを実行

16bit greater than
_L 0xDaaaaaaa 0x7bbbbbbb
_L 0x000000cc 0x00000001
アドレス0x0aaaaaaaの16bit分の数値がアドレス0x0bbbbbbbの16bit分の数値より大きいとき
下cc行のコードを実行

32bit same
_L 0xDaaaaaaa 0x4bbbbbbb
_L 0x000000cc 0x00000002
アドレス0x0aaaaaaaの32bit分の数値とアドレス0x0bbbbbbbの32bit分の数値が一致するとき
下cc行のコードを実行

32bit different
_L 0xDaaaaaaa 0x5bbbbbbb
_L 0x000000cc 0x00000002
アドレス0x0aaaaaaaの32bit分の数値とアドレス0x0bbbbbbbの32bit分の数値が一致しないとき
下cc行のコードを実行

32bit less than
_L 0xDaaaaaaa 0x6bbbbbbb
_L 0x000000cc 0x00000002
アドレス0x0aaaaaaaの32bit分の数値がアドレス0x0bbbbbbbの32bit分の数値より小さいときとき
下cc行のコードを実行

32bit greater than
_L 0xDaaaaaaa 0x7bbbbbbb
_L 0x000000cc 0x00000002
アドレス0x0aaaaaaaの32bit分の数値がアドレス0x0bbbbbbbの32bit分の数値より大きいときとき
下cc行のコードを実行

コピーバイト

_L 0x5aaaaaaa 0xcccccccc
_L 0xbbbbbbbb 0x00000000
アドレス0x0aaaaaaaから0x0bbbbbbbにccccccccバイト分コピー

lui t0,0x0aaa ori,t0,t0,0xaaaa

ポインターコピー

※修正しますた
_L 0x6aaaaaaa 0xcccccccc
_L 0xbbb00002 0x0000dddd
_L 0x1000eeee 0x00000000
アドレス0x0aaaaaaaに書き込まれている数値を基準アドレス1、
アドレス0x0aaaaaaa+bbbx4に書き込まれている数値を基準アドレス2とする
基準アドレス1+ddddから基準アドレス2+eeeeにccccccccバイト分コピー


CopyRight Team-M.G.C Co.,ltd.