kof97 逆向分析_碰撞检测
碰撞检测
贴吧推荐判定框
https://tieba.baidu.com/p/2301212873?red_tag=1896742946
https://tieba.baidu.com/p/3378926459?red_tag=1900554217
dip switch 打开游戏碰撞检测框
0x100000=0x02
p2rom包含的所有的的判定框的数据
- 可以通过mame 内存搜索工具找到这些数据
- 从ACT封装章节里的Bank2找到box数据的起始地址是 0x21191A
- FD05 type | box index=05 根据000001 01 type左移2位
所以类型是type=1,在第一个判定框index=1;1*4 + 1 +FD00=FD05; -
FD0A type | box index=0A 根据000010 10 type左移2位
所以类型是type=2,在第一个判定框index=2;2*4 + 2 +FD00=FD0A;
image.png
image.png
代码部分分析
-
0x9DE0
0x9e04=BoxCheck;碰撞检测,攻击被攻击
0x9e0A=CheckP1P2BodyOverlap;过于近检测,过近弹开 -
进入BoxCheck到3698位置4个循环检查box
3F1E+108000=10BF1E 攻击者携带的判定框
3F9E+108000=10BF9E 被攻击者携带的判定框 -
8100 108190P1人物携带的判定框
8300 108390P2人物携带的判定框
2B00=102B00,102B70:ch,act;102B90 是这个对象判定框,每个结构体是固定,小100,大的对象200,最小40; -
108190 P1判定框属性 5组box0,box1,box2,box3,box4,boxBody;
5个字节一组,为啥是5个一组,因为数据是6个字节,第一个类型的分配到不同地址,人物一般都携带连三组判定框
判定框碰撞有效性
DD492ED0-BFE6-418E-B5FE-14E880A2483F.png判定框类型0x38c0;switch{}
12
3
-
0-B一共12个被攻击判定
-
C-17 是不摩血的攻击
-
18-30 必杀技判定
-
38-39 架招
-
3A-3F 飞行道具抵消框
-
07 特瑞可以无限连击
不要在p2的108300+90位置设置07的判定框可以实现
分析动态内存的技巧
30B2是动态内存分配的方法,
在这个函数的返回的地方断点,打印出a1,就是他分配的内存地址
bp 3112,1,{printf a1;g}
3794
每一帧
bp 3794,1,{pc+=4;g}
a4 结构体
连技
- cancel:八神前爪+葵花,前抓处在半主动状态,
58ec
是否连技判断
image.png
image.png