FC2ブログ
--/--/--

スポンサーサイト

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

--:-- | スポンサー広告  TOP

2012/06/06

JPCPS CWCHEAT


Revision 2562: Added an import from "cheat.db" in the Cheat window.
gi...@web.de
Changed Paths:
Modify /trunk/README.txt
Modify /trunk/src/jpcsp/GUI/CheatsGUI.java

Added an import from "cheat.db" in the Cheat window.

cheat.db読み込みに対応したらしい。ぽいんたこーどの拡張はうごかないままだkど。cheat.dbはSJISしかでねえぽいkど、かんたい中国語GKBだとでねえな、JAVAとかには強力な自動判定ルーチンだか標準であったはずだkどつかってねえのk。EUC美乳にせBOMおいてもでねえk。
isSJIS (c1 ^0x20 +0x5f)&0xFF <0x3C && c2>=0x40 && c2<=FC && c2!=0x7f
isEUC (c1 +0x5f)&0xFF <0x5C && c2>=0xA1 && c2!=0xFF
isGBK (c1 +0x7f)&0xFF <0x7E && c2>=0x40 && c2<=FE && c2!=0x7f

スポンサーサイト

22:56 | JPCPSCOMMENT(0)TRACKBACK(0)  TOP

2012/04/02

JPCPS CWCHEAT

http://code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/GUI/CheatsGUI.java
cwcheatがうpされたっぽい。ちゃんと>>>符号除去しふとにかわってるからうごくっぽいか。追記;ぽいんたがいまいち違うっぽい。TYPEnullがないな。

//0x6aaaaaaa 0xvvvvvvvv
//0xqqqtnnnn 0xiiiiiiii
//0xSjjjjjjj 0xSkkkkkkk
case 0x6: // Pointer commands
code = getNextCode();
parts = code.split(" ");
if (parts != null && parts.length >= 2) {
int arg2 = (int) parseHexLong(parts[0].trim());
int offset = (int) parseHexLong(parts[1].trim());
int baseOffset = (arg2 >>> 20) * 4;//QQQ
int base = mem.read32(addr + baseOffset);//QQQ適用はnnnn2回目以降なのでX base=read(addr+4*qqq(counter-1))
int count = arg2 & 0xFFFF;
int type = (arg2 >> 16) & 0xF;
for (int i = 1; i < count; i++) {
if (i + 1 < count) {
code = getNextCode();
parts = code.split(" ");
if (parts != null && parts.length >= 2) {
int arg3 = (int) parseHexLong(parts[0].trim());
int arg4 = (int) parseHexLong(parts[1].trim());
int comm3 = arg3 >>> 28;
switch (comm3) {
case 0x1: // type copy byte
int srcAddr = mem.read32(addr) + offset;
int dstAddr = mem.read32(addr + baseOffset) + (arg3 & 0x0FFFFFFF);
mem.memcpy(dstAddr, srcAddr, arg);
type = -1; // Done
break;
case 0x2:
case 0x3: // type pointer walk
int walkOffset = arg3 & 0x0FFFFFFF;
if (comm3 == 0x3) {
walkOffset = -walkOffset;
}
base = mem.read32(base + walkOffset);
int comm4 = arg4 >>> 28;
switch (comm4) {
case 0x2:
case 0x3: // type pointer walk
walkOffset = arg4 & 0x0FFFFFFF;
if (comm4 == 0x3) {
walkOffset = -walkOffset;
}
base = mem.read32(base + walkOffset);
break;
}
break;
//case 0x0: 0x9とおなじだがbase,argたしがないがQQQだけ変動
case 0x9: // type multi address write
//base = mem.read32(addr + baseOffset*(i-1));qqqがbaseが毎回かわる
base += arg3 & 0x0FFFFFFF;
arg += arg4; // CHECKME Not sure about this?
break;
}
}
}
}

//ちーとますたーと比較

temp = (mem_gv.mem_table[*idx+2].addr & 0xFFFFFFF) - 0x8800000;
u32 qqq = (mem_gv.mem_table[idxcount].addr >> 20) - 0x88;
qqq *= 4;
if((mem_gv.mem_table[*idx+2].addr>>28) == 1)
{
back = adr + qqq;
back = * ((u32 *)back);
adr = * ((u32 *)adr);
back += temp;
adr += adr_offset;
if(adr>0x8800000 && adr<0xa000000 && back>0x8800000 && back<0xa000000)
memmove((u8 *)back, (u8 *)adr, val);
goto PTROUT;
}
else if((mem_gv.mem_table[*idx+2].addr>>28) == 9)
{
adr_step = mem_gv.mem_table[*idx+2].value;
u32 ptradr = adr;

if(back<0x3){
temp *= 1< }
else{
temp *= 1<<(back-3);
}
for(i=0;i {
adr = * ((u32 *)ptradr);//ptrsfr = 6抜きあどれす+qqq(回数-1) で読み込んだ値す
if(back<0x3){
adr += adr_offset;
}
else{
adr -= adr_offset;
}
adr_offset += temp;
if((adr)>0x8800000 && (adr)<0xa000000){//隠屬頁嗤丼議仇峽
switch(back)
{
case 0x0:
case 0x3:
mem_set(adr, (unsigned int)&val, 1);
break;
case 0x1:
case 0x4:
mem_set(adr, (unsigned int)&val, 2);
break;
default:
mem_set(adr, (unsigned int)&val, 4);
break;
}
}
val += adr_step;
ptradr += qqq;//qqqは2回目以降たされる
}
goto PTROUT;
}

00:50 | JPCPSCOMMENT(0)TRACKBACK(0)  TOP

2012/03/27

EMUHASTE PSPAR PLUGIN20120327

2012/03/27
16bit判定読み込み値の16bitマスクが抜けてたので修正
0xE,0xFにもフラグ判定追加
0xE,0xFのコピー上限を65535バイトに変更

ばぐがあったので修正。元のARはコピー無制限だけどそんなにいらないだろうので0x10000までにしといた。

00:44 | JPCPSCOMMENT(0)TRACKBACK(0)  TOP

2012/03/24

emuhastev4.00

>Add [AUTO TRIGGER SEARCH].v4.00
>新たに「オートトリガー」を実装し、サーチコマンドの自動実行が可能になりました。
>詳しくはマニュアルをご覧下さい。
EMUHASTE

emuhastev400が公開されました。

22:37 | JPCPSCOMMENT(0)TRACKBACK(0)  TOP

2012/01/26

JPCPS CWC間違い

SVN
} else if ((comm >>> 28) == 0x8) { // 8-bit and 16-bit patch code.//comはintなんで符号
int addr = MemoryMap.START_USERSPACE + (comm - 0x40000000comm & 0x0FFFFFFF);//nazeka0x4のへっだとばしになってる
int data = (int)Long.parseLong(codes[i + 1].split(" ")[0].substring(2), 16);
int dataAdd = (int)Long.parseLong(codes[i + 1].split(" ")[1].substring(2), 16);

int maxAddr = (arg >>> 16) & 0xFFFF;
int stepAddr = (arg & 0xFFFF) * 4;

if ((data >>> 16) >= 0x1000) {
stepAddr += stepAddr;
}


for (int a = 0; a < maxAddr; a++) {
if (Memory.isAddressGood(addr)) {
if ((data >>> 16) == 0x1000) {
mem.write16(addr, (short) (data & 0xFFFF));
} else {
mem.write8(addr, (byte) (data & 0xFF));
}
}
addr += stepAddr;
data += dataAdd;
}
}

よくみるとまだあったk、0x8は処理がぜんぜん違うような(0x8なのに0x4のおふせっと4倍になってる)。しりある分解(sanik's convertor)でぐぐってくる人が多いのはこれか?(int)Long.parseLongもよくわからんが,parseintで>>を>>>でいいようなきがす。

17:33 | JPCPSCOMMENT(0)TRACKBACK(0)  TOP

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