神崎亚里亚 发表于 2012-12-14 11:04:19

[大坑]xsa文件破解(未完成)

本帖最后由 神崎亚里亚 于 2012-12-14 13:41 编辑

通过.xsa文件修改,可以改变mm在不同情况下的动作,以及后续动作.
一周前就想改xsa了,今天下决心开始干.

文件结构大概是知道了,来源于这张图.http://up.hgame5.cc/data/attachment/forum/201212/07/0632400e99wl0ql9q5ql3l.jpg

经过几个小时的努力(学习iostream,试探地址),成功的用c++读取了xsa文件. 现在能做到的是读取每个动作的start frame, end frame, speed 以及ifrepeat. 还没有找到next frame所在的位置..

下表是从.xsa文件里读出来的.因为太长了我就列了前几行.做过xa文件修改的朋友应该很熟悉吧.这和xa文件里的数据是一样的.

No.speedstartend
11.51020
21.23070
31.280120
41.512501290
51740760
62760780
71.2780800
82800820
91880900
101.7900920
110.8880900
121.2900920
131.7130150
141.6710730
15216401660
16216601680
172.217001720
1010.577007710
1021.577507770
103177707790
1041.577907810

按说在xsa文件里修改这些值就可以改变游戏里的动作了.但是我刚试了一下,修改了走路和跑步的动作,但是没用.
然后 我把4个xsa文件都删了,mm该怎么走还是怎么走...这可让我纳闷了..难道我这个2.2ogg版本不需要读取xsa文件?
于是我查了论坛里的腰碎补丁,也是改xsa文件的.我用A型腰碎补丁替换了4个xsa文件,但是mm依然故我!拒绝拥抱的时候啥变化也没有....
我再度怀疑我这个版本是不是不用读xsa文件....
谁能告诉我这是为什么???

工作尚未完成. 还没有找到nextframe的地址. 也没有能通过xsa改变mm的动作.

哪位大大有兴趣,做个修改器吧..我不会.
附上读写文件源代码:

//读写ai3 xsa文件. 1.0版. 作者:神崎亚里亚 Dec.13.2012
#include <iostream>
#include <fstream>
using namespace std;
void main()
{

    fstream pp("ax01_01_01.xsa",ios::binary|ios::in|ios::out);
    struct Clip {
      char nff;
      float speed;
      float unknown1;
      float start;
      float end;
    };   
    char unknownB;   
    cout<<sizeof(Clip)<<endl;;
    Clip rr;
    int count=0;
    char a;
    int suojin=11;
   // cout<<"please enter the suojin number:";
   // cin>>suojin;
    pp.read(reinterpret_cast<char *>(&a),suojin);

    int inta;
   int intb;
   float next;

   fwrite( pp, 509, 100.0, 480.0, 730.0); //把509号动作的速度改成100,始末帧改成480和730.

    while(pp ) //开始读文件,输出每个clip的始末帧和速度
    {      
      pp.read(reinterpret_cast<char *>(&rr),sizeof(Clip));
      pp.read(reinterpret_cast<char *>(unknownB),28);      
      if(rr.speed>0)
      cout<<count<<""<<rr.speed<<"   "<<rr.start<<"   "<<rr.end<<"   "<<endl;
      count++;
    }
    pp.close();
}

//把关键帧写入文件
void writefile(fstream &file, int serial_num, float speed, float start, float end)
{
    float a;
    file.seekp( 7+ serial_num * 108, ios::beg );
    file.seekp( 68, ios::cur);
    streamsize size =4;   
    a = speed;   
    file.write( reinterpret_cast<char *>(&a), size);
    file.seekp( 4, ios::cur);//start
    a = start;
    file.write( reinterpret_cast<char *>(&a),size);
    a = end;
    file.write( reinterpret_cast<char *>(&a), size);
    cout<<"**!"<<endl;
    file.seekp(0,ios::beg);
}


buhao33 发表于 2012-12-14 12:01:48

技术贴,沙发啊

dtzxyy 发表于 2012-12-14 12:33:33

看起来很复杂啊,技术活干不来{:H5_04:}楼主加油

ivws112255 发表于 2012-12-14 13:35:55

太复杂了,表示路过支持大大早日成功{:H5_14:}

ringolmf 发表于 2012-12-14 14:24:21

ande750520 发表于 2012-12-14 14:47:19

大大這麼努力的在研究探討
真是令人感動
雖然我不懂
但還是給予支持

laising 发表于 2012-12-14 19:24:38

技術性挺高呢,為樓主搖旗吶喊

kismicolor 发表于 2012-12-14 20:46:35

技术宅拯救世界!!!!!!!!!!!!!{:H5_03:}

n00bsucks 发表于 2012-12-14 22:47:04

xsa在js3_01_02_00里

神崎亚里亚 发表于 2012-12-15 02:01:25

acecat 发表于 2012-12-14 22:47 static/image/common/back.gif
xsa在js3_01_02_00里

nani?不是00_02_00里吗

aofen001 发表于 2012-12-15 02:34:13

技术贴是应该支持的,其ta的我做不了太多,我在一边呐喊好了

n00bsucks 发表于 2012-12-15 03:05:44

神崎亚里亚 发表于 2012-12-15 02:01 static/image/common/back.gif
nani?不是00_02_00里吗

大大乃试试看呀{TG:23:}

神崎亚里亚 发表于 2012-12-15 03:16:49

acecat 发表于 2012-12-15 03:05 static/image/common/back.gif
大大乃试试看呀

今晚就试,多谢你呀,我已经看到胜利的曙光了

zino 发表于 2012-12-24 20:58:59

技术贴{:H5_05:}

矢部一郎 发表于 2012-12-24 22:58:37

其實我都不會改的說
{:H5_13:}
页: [1] 2
查看完整版本: [大坑]xsa文件破解(未完成)