Multi Address Writes(シリアルコード) 使い方

スポンサーサイト

[ --/--/-- --:-- ] スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[タグ未指定] | TB(-) | CM(-)

Multi Address Writes(シリアルコード) 使い方

[ 2009/03/27 20:16 ] 解析日記

シリアルコードの使い方です。
シリアルコードはただ単にコードが短く出来るという優れもの。
よくCG全開やアイテムMAXに使います。
条件はアドレスとアドレスの間が同じのとき。

例としてまずはこちらのコードを短くしていきます。
_L 0x0134902E 0x000000FF
_L 0x0134902F 0x000000FF
_L 0x01349030 0x000000FF
_L 0x01349031 0x000000FF
_L 0x01349032 0x000000FF

0x8aaaaaaa 0xbbbbyyyy
0x000000dd 0x000000ee
アドレスaaaaaaaからbbbb個のアドレスになるように
yyyyアドレスずつずらしながら値ddを書き込み続ける。このときddもee分ずつ増加して書き込まれる。

五つのアドレスで一番低いアドレス0x0134902Eこれからはじめていきます。0x80134902E 0xbbbbyyyy

bbbb個のアドレスになるようにです。
コードの数が5つなのでbbbbに書き込む値は5と分かります。0x8134902E 0x0005yyyy

次のアドレスが_L 0x0134902Fと+1hずつあがってきているので
yyyyに書き込む値は1と分かります。0x8134902E 0x00050001

アドレスに書き込む値がFFなので0x000000FF 0x00000000でおkです。

短く出来ました。
0x8134902E 0x00050001
0x000000FF 0x00000000

8bit
0x8aaaaaaa 0xbbbbyyyy
0x000000dd 0x000000ee
アドレスaaaaaaaからbbbb個のアドレスになるようにyyyyアドレスずつずらしながら値ddを書き込み続ける。
このときddもee分ずつ増加して書き込まれる。

16bit
0x8aaaaaaa 0xbbbbyyyy
0x1000dddd 0x0000eeee
アドレスaaaaaaaからbbbb個のアドレスになるようにyyyy*2アドレスずつずらしながら値ddddを書き込み続ける。
このときddddもeeee分ずつ増加して書き込まれる。

32bit
0x4aaaaaaa 0xbbbbyyyy
0xdddddddd 0xeeeeeeee
アドレスaaaaaaaからbbbb個のアドレスになるように yyyy*4アドレスずつずらしながら値ddddddddを書き込み続ける。
このときddddddddもeeeeeeee分ずつ増加して書き込まれる


ddもee分ずつ増加して書き込まれるが分からない人は続きへ


0x8aaaaaaa 0xbbbbyyyy
0x000000dd 0x000000ee
アドレスaaaaaaaからbbbb個のアドレスになるようにyyyyアドレスずつずらしながら値ddを書き込み続ける。
このときddもee分ずつ増加して書き込まれる。

ddもee分ずつ増加して書き込まれる。
つまり例として
0x20000000 0x03020100
0x20000004 0x07060504
0x20000008 0x0B0A0908
0x2000000C 0x0F0E0D0C
0x20000010 0x13121110
このようなコードがあった場合も簡単に短縮できます。
条件は+h1で1ずつあがっていくコード
よくアイテムリスト系で使われます。
アドレス+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F
0x00000000000102030405060708090A0B0C0D0E0F
0x00000010101112131415161718191A1B1C1D1E1F


短縮するには0x00000000がアドレスなので0x80000000

個数は1F個(16進数)なのでbbbbには1Fを
0x80000000 0x001Fyyyy

コードでは32bitですが、1ずつあがっているので8bit書き込みになり、yyyy=0001です。
0x80000000 0x001F0001

最初に始まる値が00なので
0x80000000 0x001F0001
0x00000000 0x000000ee


さらに+1hあがっていくのでee=1です
0x80000000 0x001F0001
0x00000000 0x00000001
これで完成。


+2hに値を増加させたければ
0x80000000 0x001F0001
0x00000000 0x00000002でおk


値が8bitを越す場合は
16bit
0x80000000 0x031F0001
0x10000000 0x00000001

32bit
0x40000000 0xDDFF0001
0x00000000 0x00000001


8bit
0x8aaaaaaa 0xbbbbyyyy
0x000000dd 0x000000ee
アドレスaaaaaaaからbbbb個のアドレスになるようにyyyyアドレスずつずらしながら値ddを書き込み続ける。
このときddもee分ずつ増加して書き込まれる。

16bit
0x8aaaaaaa 0xbbbbyyyy
0x1000dddd 0x0000eeee
アドレスaaaaaaaからbbbb個のアドレスになるようにyyyy*2アドレスずつずらしながら値ddddを書き込み続ける。
このときddddもeeee分ずつ増加して書き込まれる。

32bit
0x4aaaaaaa 0xbbbbyyyy
0xdddddddd 0xeeeeeeee
アドレスaaaaaaaからbbbb個のアドレスになるように yyyy*4アドレスずつずらしながら値ddddddddを書き込み続ける。
このときddddddddもeeeeeeee分ずつ増加して書き込まれる
[タグ未指定] | TB(0) | CM(3)

  1. CG全開コードはどういうサーチ方法で作れますか?
  2. by: LUCIFER * 2009/06/20 21:57 * URL [ 編集] | TOP↑


  3. フラグ系なので、ダンプしてメモリを比較するのが一般らしいですが
    私は範囲狭めてFFFFとか0101で検索かけてます
  4. by: RUIN * 2009/06/21 16:34 * URL [ 編集] | TOP↑

  5. 管理人のみ閲覧できます
    このコメントは管理人のみ閲覧できます
  6. by: * 2009/11/28 21:31 * [ 編集] | TOP↑
















管理者にだけ表示を許可する


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