FC2ブログ
2012/11/20

CMF_CFDAT2012/11/20-1


2012/11/20-1(SJIS-CF)
ゲーム名のとこが変になっていたので修正
CF.DATで読込失敗することがあったので修正

NULLSTOPPERがぬけてたっぽい。64KB限界を試算してみると
//_Lだけが1000行、約28,656 バイト※コメント無しの場合
_C0 30バイト
_L 0x12345678 0x12345678
~~
_L 0x12345678 0x12345678

でつくってみると約28,656 バイト、CFだとだとUTF16でだいたい倍になるのでCF1000行で60KBぐらいになるか。
_C0と_Lが1行ずつセットが000行あるばあいはCFDATの限界が640ぐらいになるかも、にてぷろみたく2kで繋ぎ目あってもおkにしねえと取りこぼしが発生するk。ばっふぁふやすのがてぬきで一番楽だけど、UTF16テーブルがでかいのでメモリ不足しそうな感じだし。
//_C0と_Lが1行ずつ1000セット,CWC62,524 バイト(CFDAT変換すると100,850 バイトで不足)
_C0 30バイト
_L 0x12345678 0x12345678
~~~
_C0 30バイト
_L 0x12345678 0x12345678

//修正
int codefreak_utf16be_seek(char *p,char *cmp){
int i=0,game=0,temp=0;
while(i
temp=p+i;

//BIG_ENDIAN!!、なぜか0x0a0a判定を追加すると動かなくなる
switch(*((unsigned short*)(temp))){
case 0 :
return 0;
break;
case 0x2047://G+x20
game=temp;
break;
case 0x204D://M+0x20
temp+=2;
if(memcmp(temp,cmp,26)==0){
return game;
}
break;
}
i+=2;
}

return 0;

}

//CMFパーサーイメージ
1.64KB読む,(読込サイズが64KB未満だったら最終読込と判で3へ) 
↓ 
2.64KBの真ん中32KBから最初に出てくる_Sをさがす、位置を覚えておくPOS

64KB中IDと一致するとこを探す、検索範囲読込64KB最初からPOSまで

みつからなかったらDBをPOS累計のところから64KB読み込む、繰り返し

スポンサーサイト



21:43 | CheatMasterCOMMENT(0)TRACKBACK(0)  TOP

コメント

コメントの投稿



秘密にする