轩辕春秋文化论坛 » 步步为营 » 三国志英杰传DOS版随机数补丁


2010-11-24 16:25 阿尔法孝直
三国志英杰传DOS版随机数补丁

补丁效果:在使用GB4的情况下,只要有计算随机数的操作,可能SL出不同的结果。
补丁原理:修改随机数计算函数,使得每次计算随机数时都读取系统时间作为随机值,然后除以指定参数求余。

用UE将0x17700开始的地方修改为:

29 C0 B4 2C CD 21 88 CC 00 EC 00 D0 90 90 ... 90

0x17725:CB

PS:个人感觉,在DOSBOX里效果会弱很多,我也不知道为什么。


seg001:3DA0 sub_10D00       proc far                ; CODE XREF: sub_10D40+7P
seg001:3DA0                 sub     ax, ax
seg001:3DA2                 mov     ah, 2Ch
seg001:3DA4                 int     21h             ; DOS - GET CURRENT TIME
seg001:3DA4                                         ; Return: CH = hours, CL = minutes, DH = seconds
seg001:3DA4                                         ; DL = hundredths of seconds
seg001:3DA6                 mov     ah, cl
seg001:3DA8                 add     ah, ch
seg001:3DAA                 add     al, dl
seg001:3DAC                 nop
seg001:3DAD                 nop
seg001:3DAE                 nop
................................
seg001:3DC2                 nop
seg001:3DC3                 nop
seg001:3DC4                 nop
seg001:3DC5                 retf
seg001:3DC5 sub_10D00       endp
seg001:3DC5

2010-11-24 18:01 heyou
回复 #1 阿尔法孝直 的帖子

很有趣,希望能因而節省時間

[color=Silver][[i] 本帖最后由 heyou 于 2010-11-24 18:03 编辑 [/i]][/color]

2010-11-26 22:08 5674
用到这个随机数计算函数的地方应该不少,是不是改后和原来的随机率一样的?
:hz1019:

2010-12-3 08:56 TommyChampion
修改后死机了 说清楚到底怎么修改,具体些吧

2011-1-4 23:24 heyou
回复 #4 TommyChampion 的帖子

因為前幾關仍花許多時間在調士氣,覺得很花時間,所以想試一下
修改方法
17700开始
原: 68 C6 41 68 6D 4E FF 36 A2 07 FF 36 A0 07 9A 7E C0 00 00 05 39 30 83 D2 00 A3 A0 07 89 16 A2 07 8B C2 80 E4 7F CB
後: 29 C0 B4 2C CD 21 88 CC 00 EC 00 D0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 CB

不需用按鍵來操作,是用時間來決定隨機數
所以用GB4存下來,不滿意就讀取,結果可能就不一樣

2011-1-5 22:13 heyou
使用此補丁+GB4,有點類似玩曹操傳的感覺,S & L,只是沒有果子
不再像之前S/L結果也不變,需要調整走位才能改變結果
感覺變得很新鮮,有種玩不同遊戲的感覺

其實GB4+此補丁,理論上就可以打出所有的結果
過程也就是S/L,類似曹操傳 :)

2011-1-12 21:22 TommyChampion
[quote]原帖由 [i]heyou[/i] 于 2011-1-4 23:24 发表
因為前幾關仍花許多時間在調士氣,覺得很花時間,所以想試一下
修改方法
17700开始
原: 68 C6 41 68 6D 4E FF 36 A2 07 FF 36 A0 07 9A 7E C0 00 00 05 39 30 83 D2 00 A3 A0 07 89 16 A2 07 8B C2 80 E4 7F ... [/quote]
安装你改的载入存档就黑屏了。

2011-1-12 22:29 heyou
回复 #7 TommyChampion 的帖子

是不是有甚麼沒改對?
我是這樣嘗試而成功的

2011-1-13 09:15 TommyChampion
那我上传我的MAIN给你试试。
只改了:DEBUG模式,可移动所有部队,必反击,攻击策略比中,必晴天,混乱恢复自选,村庄补给固定250。

2011-1-13 09:42 heyou
回复 #9 TommyChampion 的帖子

已新增修改隨機數補丁,在虎牢關試驗可用

好奇,可移动所有部队?!
試了一下,能移動不能攻擊
很好奇,這要怎麼修改,還有,這能作甚麼?

2011-1-13 09:46 阿尔法孝直
debug模式的第一项“事件继续”就是可以移动到地图的任意位置,并能攻击。

2011-1-13 13:08 heyou
回复 #11 阿尔法孝直 的帖子

這個我知道

但這MAIN檔是不需啟用debug模式的事件繼續
隨時都可以移動地圖上的所有人,但不能讓敵軍攻擊別人
所以才讓人好奇

2011-1-14 00:30 TommyChampion
三国志英杰传——特殊修改

把整理过的资料全部列出来,给你复习复习:

修改MAIN.EXE文件。
1)无限移动,并可控制敌人
【0x030545】74 → EB
2)必然反击
【0x030FBC】76 04 → 90 90
3)必不反击
【0x030FBC】76 04 → EB 04
4)军乐队恢复策略值增加(逢10进一改成逢5进一)
【0x02A966】B1 0A → B1 05
5)策略值无消耗
【0x02E3C3】28 47 0D → 90 90 90
6)满士气可激励
【0x02CD73】75 0E → EB 0E
【0x02CD91】75 21 → EB 21
7)满兵力可补给
【0x02CD67】74 38 → 90 90
【0x02CD8B】75 27 → EB 27
8)士气为0仍不撤退
【0X02CC13】75 18 → EB 18
9)士气低于30仍不混乱
【0x02B4D2】73 2E → EB 2E
10)攻击性策略必失败
【0x030D90】77 05 → 90 90
11)攻击策略必成功
【0x030D90】77 → EB
12)每天都是晴天
【0x02779B】3A 46 FE 76 05 → B0 00 90 EB 2B
13)每天都是雨天
【0x02779B】3A 46 FE 76 05 → B0 05 90 EB 2B
14)自选是否反击,修改自030FAE起的15个字节:
初始值:2A、E4、8B、F8、B8、96、00、9A、E0、3D、F6、0C、3B、F8、76
修改为:B4、00、CD、16、3C、0D、9C、9A、E0、3D、F6、0C、9D、90、75
15)自选攻击性策略是否成功,修改自030D88起的9个字节:
初始值:8A、46、FD、2A、E4、3B、46、FE、77
修改为:90、90、B4、00、CD、16、3C、0D、75
16)自选晴天或者雨天,修改自02779B起的16个字节:
初始值:3A、46、FE、76、05、FE、4E、FF、EB、0B、8A、46、FE、38、46、FF
修改为:B4、00、CD、16、3C、0D、75、04、B0、00、EB、24、B0、05、EB、20
17)自选村庄补兵数量
a)修改自02A8C3起的58个字节:
3C 37 75 03                83 CE 02 3C                38 75 03 83                CE 01 3C 08
75 03 83 CE                03 47 83 FF                08 72 DC 89                76 F6 8B FE
8B C6 25 01                00 89 46 EC                0B C0 74 1A                CD 16 3C 30
75 02 04 0A                E9 F7 8F 6B                C0 0A
* 按大键盘上的1~0,表示恢复兵力160~250
* CD 16 → B0 30 固定恢复250兵力
b)修改自02AC52起的15个字节:
B4、00、2C、30、3C、0A、76、02、B0、00、04、0F、E9、FA、6F
18)自选混乱是否恢复
a)修改自02AC57起的10个字节:
初始值:B9、03、00、2B、D2、F7、F1、89、46、FE
修改为:EB、08、B4、00、CD、16、3C、0D、EB、21
b)修改自02AC7F起的5个字节:
初始值:3B、46、FE、73、29
修改为:EB、D8、90、75、29
* 75 29 → 90 90 必然恢复;75 29 → EB 29 必不恢复

2011-1-14 00:53 周瑜
现在还缺自选非攻击性策略是否成功,自选士气补充值。

2011-1-14 01:11 muzhi
回复 #14 周瑜 的帖子

说到士气补充值,忽然想起关于兵力恢复的一件事:
引自龙吟的分析:
[quote]
特别需要注意的是,当兵力恢复后离最大兵力的差距不足10时,系统将自动不满该差距。例如等级1的刘备最大兵力为500,当前兵力241,如果计算出的随机数是10,那么他可以恢复250点兵力,恢复后兵力为491,只差9点兵力,系统将自动不满这9点,因此最后兵力的恢复量为259。
[/quote]
我前些时发现用了周大的村庄补丁,这10点以内的自动补足没了- -b

当然这对兵力影响很小,不过士气要是有同样的现象就不可忽视了
就是因此周大当时没做士气补丁?

2011-1-14 01:44 heyou
回复 #14 周瑜 的帖子

非攻击性策略是否成功,自选士气补充值 => 現在可用隨機數補丁就可解決,只是要花一些時間
理論上所有的不確定都能用隨機數補丁較為快速的達成,不需全軍撤退

話說這不是以前才看的到的人物,好久不見

2011-1-14 17:19 TommyChampion
不行 还是黑屏。我是WIN7+DOSBOX 0.74+GB4

2011-1-14 18:24 heyou
回复 #17 TommyChampion 的帖子

我測試過可以才放上來的,真的不知道甚麼原因了
表示你跟隨機數補丁無緣,就認命吧 :hz1018:

對了,你用阿尔法孝直 原帖中的MAIN檔也不行嗎?

2011-1-14 18:53 fjshnan
[quote]原帖由 [i]TommyChampion[/i] 于 2011-1-12 21:22 发表

安装你改的载入存档就黑屏了。 [/quote]

会不会是你这个存档本身有问题?

2011-1-17 13:49 waklin
这个要试试看。
我以前写了一个键盘替代鼠标补丁,改天也发上来。

2011-1-17 23:52 周瑜
TommyChampion可以尝试一下把前两个 90 改为 EB 17,看看有无改善。

2011-1-19 22:51 TommyChampion
[quote]原帖由 [i]周瑜[/i] 于 2011-1-17 23:52 发表
TommyChampion可以尝试一下把前两个 90 改为 EB 17,看看有无改善。 [/quote]
还是周瑜厉害,这次成功了!随机补丁还是与我有缘的嘻嘻。

2011-2-16 00:32 heyou
回复 #13 TommyChampion 的帖子

1)无限移动,并可控制敌人
【0x030545】74 → EB
=>就算可移動,卻不能攻擊也不能策略

[color=Silver][[i] 本帖最后由 heyou 于 2011-2-16 00:53 编辑 [/i]][/color]

2011-2-16 16:03 TommyChampion
想攻击或策略的话要改内存。改了有个好处,走错位了不用SL。

2011-8-4 22:52 TommyChampion
如果炎龙2也做一个固定随机数就好了!

2011-8-10 15:44 huawhp
能不能把英杰传和所有补丁打个包传上来啊,以前的好象失效了:hz1024:

能不能把英杰传和所有补丁打个包传上来啊,以前的好象失效了:hz1024:

2017-9-10 21:26 wlg2016
楼主好样的,既不滥用补丁,也省时间:!!

2018-1-29 13:28 prokiller_bai
一个小问题

我使用随机数补丁发现,不同村庄里的敌人同一回合补兵数一样,比如第一关,上村赵岑,下村李肃,使用补丁以后他俩每回合兵力回复的数量一样,这是什么情况?能修改吗?

2021-4-1 15:20 potao01
顶到首页方便查看。。。另外修改这个的工具U啥的忘记了,不知道还有没人回复

2021-4-1 15:38 potao01
使用此补丁发现个问题,不知道是补丁本来就这样还是个人原因。当需要2个村庄回复量满足一定条件时,很难SL出合适的结果,一般都是要大量就同时大量,小就一起小。假如想要一个大一个小很难实现。
另外当对某个回复有期待值时,往往SL无数次其中的某2个数值出现的几率超过9成,另外2-3个占剩下的1成,余下的6-7个数值基本不可能出现。
例如我在虎牢上村养1级弓兵下村养3级弓兵的时候,期待上村回复230以上,下村回复210以下的时候,SL和大约7个小时,上村回复出现最多的是220,其次是160,这2个数值占了绝大多数,然后出现过210,200,170,其余数值基本没看见,后来都放弃下村的数据只看上村了,还是这样。。。

2021-5-14 10:19 clubjack
回复 #30 potao01 的帖子

根据我一个 (不太成熟的) 猜测, 随机数补丁的随机数会完全依赖"秒"级别的系统时间, 而判定村庄恢复时是所有村庄连续判断的 (比如, 一句 for 循环内). 这将导致不同村庄恢复的随机数几乎完全相同 (除非正好执行到了前后两次取时间差了 1s), 因此所有村庄的恢复都是同一个值.

PS: 很多帖子里多次提到了修改地址的方式. 哪里有教程可以参考吗? 感谢各位大神.

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.