Board logo

标题: 关于街机三国志的一些特定条件下的小细节…… [打印本页]

作者: aweiwei    时间: 2013-10-24 14:30     标题: 关于街机三国志的一些特定条件下的小细节……

posted by wap, platform: Chrome

淳于导是无法被斩首的;
晏明、夏侯杰那一关,晏明是无法被斩首的;夏侯杰虽然看起来很像李典,但实际上即使先杀死晏明,也是仍然无法斩首夏侯杰的;
有的武将在马上会有特殊的死法,但这个没有特意的去尝试,只记得夏侯惇是可以在马上留半个身子的,但不记得是不是可以马上斩首了;

此外,有人知道华容道那一关之前,N多大血的那里,啥时候才有老鹰飞过啊?
作者: Yit    时间: 2013-10-24 15:18

posted by wap, platform: iPhone

老鹰1/4几率出现 两只老鹰只有其中一半?
作者: ccf1st    时间: 2013-10-24 17:06

乱步,姑且这样称呼,正式名称为:伪随机数

三国志II的伪随机数存储在一个FF FF结构中

地址是:

乱步值(Kawaks 模拟器 MAME自己换算)
0063BE
0063BF

根据规则
虽然看上去0063BE是高位,实际上并非是这样。这里的高位是0063BF 低位是0063BE
任何一个值 比如
0063BE 01
0063BF 02

看上去是 0102
实际是 0201

三国志II的乱步值与圆桌骑士不一样的是游戏开始的时候并非是随机生成的,而是固定生成。
一开机选人之后乱步值从0000开始计算。

进入第一个画面之后,一共看到几个小兵,每个小兵见到一次自增长乱步值(每个小兵增加3个标准单位乱步值)

每个标准单位=一次乱步值最低变迁量

人物每向下走一步(向下走 放开按钮之后计算为1次 时间长度不限制 也就是说下移动一点点距离和下移动走到最下方 只要按钮不放开 实际上都是1次)乱步值增加1个标准单位

每个标准单位增加的值是不同的,但是公式是统一的。以下2个公式都可以直接使用,并没有本质区别

公式1:
第一次 (x-y)*5^1+x=z
第二次 5^2
第三次 5^3
第N次 5^N

其中X等于当前乱步值(低高位互换 从新拼凑出一个正确的 高低位FFFF数据)
其中Y等于上一个乱步值(低高位互换 从新拼凑出一个正确的 高低位FFFF数据)
其中Z等于下一个乱步值(低高位互换 从新拼凑出一个正确的 高低位FFFF数据
如果只移动一个标准单位 就选择第一次的公式


公式2

第1次生成 (x-0)*5^1+x
第2次生成 (x-0)*5^2+(x-0)*5^1+x
第3次生成 (x-0)*5^3+(x-0)*5^2+(x-0)*5^1+x

其中X等于3711(16进制)

--
关于3711

实际上这是一个伪随机数种子第一次生成的基数,所有后面的计算都是根据种子和公式再进行。
3711根据我的猜测 应该是一个时间戳(三国志II当年程序员被开发完毕之后 第一次运行时的格林威治时间计算出的1970对应时间戳,然后换算成16进制,最终余下最后的4位FFFF作为这个种子的数据,就是3711)

这是一个常规做法,这个时间戳我也已经算出来了,不过并不重要。这个时间其实就是三国志II被研发之后第一次乱步运行的时间 之后程序被写入主板芯片里。


乱步在游戏里控制的内容非常多,我也不一一叙述,主要说几点,通过乱步可以控制敌人留分 留血 箱子开除什么,可以在下一个场景获得什么等等。

乱步值的变化规律基本会有上面这个表+所有自增长表构成(这个表实际上我没有时间去做,如果有谁有兴趣 可以去研究一下 并不会太复杂)这样就构成了乱步基本的变化原则

乱步应用第二需要获得是几张表 所有物品出宝表 所有敌人出宝表,只有详细了解每一个敌人或每个箱子的出宝规则 概率 范围 才能精准控制。

乱步应用的第三样需要获得是精准定位当前乱步值的表(这需要熟悉游戏本身的来研究 通过敌人留下的物品或箱子打出的物品来做起始判断一般是比较难的,只能作为2次判断。所以需要寻找到一切可以自定位的乱步规律 一般情况下去尝试各类动作 或则一般意义上感觉运气比较好的一些动作是可以尝试总结出表格的)


三国志II掉落表2-1关出门双木箱 出宝表 一共有65536个数据

左列为 内存中看到的高位,实际计算中的低位(0063BE)
上横为 内存中看到的低位,实际计算中的高位(0063BF)

从表结构可以看出 最终的这个木箱的出宝比例分别为


龙虾 0.59%
鱼 5.66%
空 25.00%
金剑 6.25%
金环 12.50%
金币 18.75%
书 18.75%
丝绸 12.50%


在上横中(0063BF)可以看到00~1F是一组数据,之后20~3F 也是一组镜像数据。也就是说出宝表里实际的数据只有00~1F这8000多个数据是真实的,后面的全部是镜像数据。这样一个精简就会让6万多数据变成只有8000多个。

从左列中可以看出,数据每10行都会有一个过渡。

00~1F的数据中,其中也有3组镜像,说明数据还可以缩小到2000多个。



目前我卡住的方向是怎么精简这2000多个数据,我已经看到有2个大方向,
1是很明显的10个数据一组的间隔,
2是非常明显的第1列的尾部上接第2列的头部
3是非常明显的出宝数据有明显规律的数据,比如龙虾加鱼自左则开始向下来计算的话,呈现21 20 21 21 20等的规律。其他出宝情况也是类似的
4是非常明显从全局00~1F的数据自上行开始向下移动过程中可以看出比如鱼始终只有2条。

只有把数据精简到一定数目之下之后才可以比较容易的控制出宝。

另外也需要去寻找乱步理论中建立2项中的自定位表。

人物出宝 或 其他所有物品出宝 实际上在有以上2张表格的指导下已经不会成为问题 只是一个手动活而已了

数据共享出来主要是想吸引一些喜欢这个游戏的人继续来研究 ,我近期时间比较少 可能会研究的少一些 人多方向就多,三国志II的研究开始于6年之前,6年前研究出了标准乱步单位公式,中间停止了很久,今年继续上手,研究出了后面的一些东西。 整个的理论体系建立已经可以看到曙光了,之后的就交给更多人吧

暂时结束
(黄泽泽 2013)
作者: 四百击    时间: 2013-10-24 17:16

没法留半截在马上,你记错了,鹰是随机的,最多能5只
作者: Yit    时间: 2013-10-24 17:17

posted by wap, platform: Windows

ls 爱好者+计算机高手
作者: xuziyu2006    时间: 2013-10-27 12:45

哇靠,研究到乱数了,好强
作者: 9562    时间: 2013-10-27 21:50

第2关 的确可以留下半个身体在马背上

玩的正式版,非改版

我影响中是玩土星版的,之后再也没打出来
作者: wuming1989    时间: 2013-10-31 09:05     标题: 回复 3# 的帖子






欢迎光临 TGFC Lifestyle (http://club.tgfcer.com/) Powered by Discuz! 6.0.0