Muv-Luv Alternative分析文档 Part 〇—四
〇. 游戏安装和运行 & Alterdec编译
1)游戏安装和运行
游戏有三个版本,DVD版,CD版和全年龄版,这里研究的是DVD版,大小是4.33G。
使用NTLEA安装,0.82以上版本即可。个人不喜欢AppLocale。
安装之后执行桌面的快捷方式会报错,这是因为原始的主程序的功能只是调用一下:
rugp.exe ;PF:UGPAPP={age/マブラヴオルタネイティヴ/}
这个マブラヴオルタネイティヴ是SJIS编码。只要把快捷方式改成上面这个就可以了。注意填写rugp.exe的路径
该社的游戏引擎系统就叫做rugp。
2)Alterdec编译
Alterdec是hikobae写的专用资源提取程序,附带源代码。
网址是:http://www.geocities.jp/hiko_bae/alterdec.html
原始程序可能是用VC,我使用Code::Blocks编译,里面存在__int64,用gcc的话要改成long long。加入libpng和zlib应该就能编译通过。
注:下面的部分主要分析Alterdec,而不是游戏本体。
一. 资源文件和Offset
所有资源都在rio文件中,最大2G,超过2G,后缀从002开始增加。如下:
Alternative.rio
Alternative.rio.002
Alternative.rio.003
所有的Offset是将这3个文件当成一个文件来看的,实际Offset还要乘2。
(8byte的最大寻址能力是4G,这种方式rio文件最大寻址能力是8G)
以上内容在函数FILE *OpenRio( const char *filename, dword offset )中。(main.cpp)
二. CLASS、OBJECT
CLASS包含2个成员,name和schema
OBJECT继承CLASS,多了offset和size
其实name指明了数据类型,offset和size指明了地址和大小,schema作用不明。
新出现一个CLASS将压入一个vector中,以后出现重复的CLASS,通过index指明。
以上内容在objectlist.h中
三. 获取objectlist
Object是树状结构的。根是:
"CrelicUnitedGameProject", // name
0, // schema
0x00028d1b, // offset
100 // size
之后调用ReadObject,这个函数根据name,调用相应的函数。
如:ReadRelicUnitedGameProject
以上在main.cpp的main,Decode和ReadObject中。
四. RelicUnitedGameProject
Cache.resize(2)
首先跳过8个字节。
ReadClass (in common.cpp)
读word,如果是FFFF:
读word,是schema。
再后面是Class Name,第一个byte是len,之后数据有压缩。(ReadClassName)
Cache.push_back
如果不是FFFF,那么index = word and 0x7FFF,cache[index]。
Cache.push_back // 也就是说新Class被push了两次。
调用Sub1,flag = 0.
Sub1和Sub2是递归调用,用来遍历Object树。
Sub1: // ReadObjectList
如果flag & 0x0200
返回
N = readword
调用Sub2 N次。
Sub2: // ReadObject
flag = readword // Sub2并没有flag参数,这是传给Sub1的。
如果flag & 7 == 0
如果flag & 8000,跳过1 byte,否则2 byte。
ReadClass
Offset = Decode(dword)
Size = Decode(dword)
Add to ObjectList
Sub1(flag) //一个节点,下面有没有叶子看flag
如果flag & 7 == 1
跳dword
w = readword
如果w == 2d6b
Schema = readword
Name = get delphi-type string
如果w == 1e57
ReadClass // name压缩过
Offset = Decode(dword)
Size = Decode(dword)
Add to ObjectList
Sub1(0) // 一个根,下面肯定有叶子
以上执行完毕后,ObjectList生成。
Muv-Luv Alternative分析文档 Part 〇—四相关推荐
- 关于人工智能引擎的最初分析文档
关于人工智能引擎的最初分析文档 赵立 1.开发人工智能引擎的目的是什么?其功能定位什么?有什么特色? 希望开发一整套人工智能软件的开发平台,用于解决目前软件技术难以处理的智能问题,从而能逐渐形成这方面 ...
- linux资源使用统计指南,指南:工作量分析文档
指南:工作量分析文档 工作量分析文档 工作量分析文档用于在不同的性能测试中确定要使用的变量并定义变量值,利用这些性能测试可以模拟主角特征.最终用户业务功能(用例).负载和容量. 主题 软件质量要从不同 ...
- WLAN驱动分析文档_gzc126_新浪博客
WLAN驱动分析文档 目 录 1 引言 3 1.1 目的 3 1.2 项目背景 3 1.3 参考资料 3 2 预备知识 3 2.1 WLAN技术 3 2.2 802.11协议简述 3 2.2.1 概述 ...
- Python数据分析大作业 4000+字 图文分析文档 销售分析
资源地址:Python数据分析大作业 4000+字 图文分析文档 销售分析 +完整python代码 数据来自某商场,具体商业数据保密 资源地址:Python数据分析大作业 4000+字 图文分析文档 ...
- 建议收藏:用Axure做一个竞品分析文档(教程+下载)
之前和大家分享了<Axure版PRD产品需求文档(教程+下载)>大家表示非喜欢.所以这期呢,作者就和大家分享如何用axure制作一个精美的竞品分析文档.有同学可能会问:为什么要用axure ...
- 图书室管理系统--UML用例图、竞品分析文档
这个是朋友做的资源,提供给大家学习. 这是图书管理系统的用例图. 竞品分析文档下载链接:点击下载文档 竞品分析文档目录
- wifi驱动分析文档
WLAN驱动分析文档 目 录 1引言 3 1.1目的 3 1.2项目背景 3 1.3参考资料 3 2预备知识 3 2.1WLAN技术 3 2.2802.11协议简述 3 2.2.1概述 3 2.2.2 ...
- ExtJS4 API文档阅读(四)——Data
2019独角兽企业重金招聘Python工程师标准>>> ExtJS4 API文档阅读(四)--Data 数据 Data包负责加载和保存你应用程序中的所有数据,由41个类构成,其中有三 ...
- java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)
前言 ofd是国家文档标准,其对标的文档格式是pdf.ofd文档是容器格式文件,ofd其实就是压缩包.将ofd文件后缀改为.zip,解压后可看到文件包含的内容. ofd文件分析工具下载: ofd文件解 ...
最新文章
- CSS3属性之——filter
- Go语言来了,要代替C和Python?
- OpenXLSX 中文字段读取问题
- make 命令_make考点总结(建议中、高考学生收藏)
- 作为一名程序员,我站在人生的十字路口
- Java基础-面向接口(interface)编程
- Pycharm如何调整代码颜色以及字体样式
- Echarts3里的地图标记点事件效果实现
- mysql数据恢复或数据找回方法
- Java开发之HTTP协议详解
- JDBC————PreparedStatement批处理
- Attributes as Operators
- 如何关闭联想电脑的大小写切换桌面提示
- 笔记本电脑开机黑屏没反应怎么办
- AS 导出aar给Unity出打包出现Unable to merge android manifests
- win10使计算机进入睡眠状态什么意思,win10如何进入睡眠模式 电脑睡眠模式设置教程...
- Oracle11g密码忘记
- java实现发送手机验证码功能
- go-map数据类型详解
- 关于表的创建(第二次作业)