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.