出力された値を見るとUTF8だったのでShiftJsに変換しないといけないが、UTFとShiftJsは根本的に文字の並びが違うので変換用のテーブルが必要とのこと。
そして変換テーブルはflash0の中にもあるらしいけど使い方まではよく分からなかった。
何をやっても再現できないが切り替える方法でもあるんだろうか。
天地の門→ShiftJis
ガンダムAS→UTF8
PC側のソフト作成再開
最低限のコード実行機能とサーチ機能、表示のみだがメモリエディタ、CWCのコード書式を変換する機能を付けたので、PMEtanForPSPに同梱することにした。
左上のデータ変換→コード書式変換を選択し、左側のテキストボックスに変換したいCWCのコードを入れるだけ。
コードファイルとして保存のボタンを押すと_Sの後ろの文字列をファイル名として保存します。
手持ちのcheat.dbを突っ込んだら一応変換はできているようだけども、比較コードの行数変化をあまり確認していないので少し不安。
PARかCFか、どちらかの公式ツールではCWCのコードが正常に変換できないと聞いたことがあるけども、もう直っているのだろうか。
副産物として変換機能が簡単に作れそうなので、直っていないなら作りたいけどどうなんだろう。
_IDC 0x20000000 0xAAAAAAAA 0x000000VV
仮に0から10ずつ足していったとして250になった場合、次の処理はどうすればいいのだろう。
255で止めるか、オーバーフローして05にするか、スキップして250のままにするかだが、加減算を使ったことがないのでどれが良いのかさっぱり分からない。
規則正しく並んでいる複数のポインターに対してシリアル化っぽいことをしたい。
シリアル化+比較でorの条件もつけたい。
しかし、これ以上フラグに入れる場所が無いのでどうしたものか。
という悩みを改善すべくMLA,MLO,MLE,PMA,PMO,PMEを纏めることにした。
これにより多重シリアルや、シリアル内での柔軟な比較が可能になる予定。
_CN0 変更元サンプル
_MLA 0x40000000 0x0000AAAA 0x0000BBBB
_MLO 0x00000000 0x00000001 0x00000002
_MLE 0x00000000 0x00000003 0x00000000
_PIN 0x00000000 0x0000CCCC 0x00000000
_PTR 0x00000000 0x0000DDDD 0x00000000
_PMA 0x10000000 0x0000EEEE 0x000000FF
_PMO 0x00000000 0x00000001 0x00000002
_PME 0x00000000 0x00000003 0x00000000
↓
_CN0 変更後サンプル
_VOF 0x00000000 0x00000002 0x00000001 //ValueOffset = 2*1
_NWR 0x40000000 0x0000AAAA 0x0000BBBB
_PIN 0x00000000 0x0000CCCC 0x00000000
_PTR 0x00000000 0x0000DDDD 0x00000000
_PWR 0x10000000 0x0000EEEE 0x000000FF
_MLS 0x00000000 0x00000001 0x00050003 //AddressOffset=1 上5行を3回ループ
代わりに下記を追加予定
_MLS 上何行を何回ループするか + AddressOffset
_AOF AddressOffset _MLSと設定が同じ場合には不要
_VOF ValueOffset 0の場合は不要
_POF PointerOffset 0の場合は不要
描画領域やらGameIDやら、かなり無理矢理取得してるのでPopsのバージョンが変わっても使えるかがちと心配。
今度こそ付けるものは付けた気がするので徐々にPC版の作成を開始。
前回同様vb.netで作ってはいるけども、差し当たって問題点が二つ。
一つは4列×5行程度の小さいlistviewでもマウスで選択したときの反応が鈍いこと。
もう一つは毎秒数回更新するメモリエディタをdatagridで作ると重過ぎること。
datagridを更新しまくると重いのは仕方ないとして、ほぼ素の状態のlistviewの反応が遅いってどういうことぞ・・・・