Rance10.ain解析(更新中)

本文记录了个人对“Rance10.ain”解析工作,使用工具为“alice-tools”,版本为0.13.0
段分布
代码段
与游戏玩法直接相关的函数均含有汉字或日文假名
字节码文本下载地址:https://pan.baidu.com/s/1TcXoKdWJFuXOOnBN-kchWw?pwd=yyds
T初始化1()
1、除变量加载之外,字节码的所有操作运算都在栈顶单元之间进行,而且运算结果也保存在栈顶
2、.GLOBALREF、.LOCALREF:加载全局/局部变量地址到栈顶
3、.GLOBALASSIGN、.LOCALASSIGN:对全局/局部变量变量赋值常数(类似立即数赋值操作)
4、S_PUSH:加载字符串到栈顶
5、ASSIGN:栈顶赋值到栈顶以下地址处;根据栈中被赋值变量类型具体存在两种操作,变量类型由字节码解释执行程序的符号表管理
T初始化2()
类似“T初始化1”,但不涉及卡牌生成与卡牌配置
T第2部初期卡牌配置()
由于第2部可以选择不同的性别和立绘,单独设置初期卡牌的生成和配置
T初始化3()
类似“T初始化1”,但不涉及tt的初始化和卡牌的初始化
フラグ(string arg0)
1、A_REF:从栈顶地址加载参数或局部变量,使用方法如下
2、调用函数时,栈顶为最后一个参数,调用フラグ确认(arg0, "")
3、返回flag的判断结果
T确认(string arg0)
1、PUSHLOCALPAGE:当前函数的所有参数&局部变量,以“变量数组”的形式压栈
2、调用フラグ确认("", arg0)
3、返回结果的地址!
フラグ确认(string arg0, string arg1)
1、前两个函数的具体处理函数,arg0保存flag名,arg1保存待确认项目名
2、REF:加载全局变量,和赋值一样,根据栈中被赋值变量类型具体存在两种操作
(To be continued...)