FC2ブログ
2012/11/25

cmfsvn2012/11/25


2012/11/25
#SJIS/GBK/EUC版共通
CMF保存処理をヒープ2Kバッファ使用に変更
ファイル名SJISモード保存時、DOS文字除去に変なとこがあったので修正(改=0x89FC,2バイト目のFCが引っかかっていた)
#以下はCFDAT版のみ
TAB自動読込をcf.dat自動読込に変更
BOM付きUTF-8,UTF16テキストを読めるようにした(テキストリーダーのみ,SJIS範囲)

保存処理がLINE書き込みになってたので、BUFFER溜めてかきだすようにしてみた。多少早くなったようなキガス。UTFてきすとの変換はにたようなもんなので、ねたでつけた。libconvまんまだとNULLでとまらんので、ちとかえたkど。
↓くそーす(p++に変えた)↓


#define WRITE_BUFFER 2048

char *p= malloc(WRITE_BUFFER);
char *p_backup;
p_backup=p;

mips_memcpy(fn,ui_get_gamename(),10);
fn[10]=0;

p+=sprintf(p,"_S %s\r\n",fn);

mips_memcpy(fn,ui_get_gamename()+12,64);
fn[64]=0;
p+=sprintf(p,"_G %s\r\n",fn);

if(enc){
sceid2cfid(fn,ui_get_gamename());

sprintf(p,"_E 0x%s 0x00000020\r\n",fn);
mips_memcpy(p+16,ui_get_gamename()+5,5);
p=strchr(p, 0);

}
int k=0;

for(i = 0; i < mem_gv.mem_table_size;){
k = mem_table_walkforward(i);
if(k==mem_gv.mem_table_size-1){
if(i==mem_gv.mem_table_size-1 || mem_gv.mem_table[k].name[0]=='+') k = mem_gv.mem_table_size;
}

p+=sprintf(p,"_C%d %s\r\n",mem_gv.mem_table[i].lock,mem_gv.mem_table[i].name);

for(j=i;j if(p-p_backup>WRITE_BUFFER-64){
sceIoWrite(fd, p_backup, p-p_backup);
p=p_backup;
}

addr=mem_table_ConvertTabType(&mem_gv.mem_table[j]);
if(enc){
addr ^=0xD6F73BEE;
}
p+=sprintf(p,"_L 0x%08X 0x%08X\r\n",addr,mem_gv.mem_table[j].value);
}
i = j;
}
sceIoWrite(fd, p_backup, p-p_backup);
p=p_backup;

sfree(p);
sceIoClose(fd);

スポンサーサイト



19:06 | CheatMasterCOMMENT(0)TRACKBACK(0)  TOP

コメント

コメントの投稿



秘密にする