Board logo

标题: 【转】【原版+豪曹】解决CPU占单核100%双核50%的问题 [打印本页]

作者: xiawj    时间: 2014-9-18 09:59     标题: 【转】【原版+豪曹】解决CPU占单核100%双核50%的问题

【转】【原版+豪曹】解决CPU占单核100%双核50%的问题
原帖来自百度曹操传吧大神“我就是伯伯”。在此非常感谢伯伯大神让我的古董机复活了

感觉昨晚改得还是有点粗糙,既然已经深入到关键代码段了,今儿索性尝试把之前也不怎么爽的占CPU的问题解决掉。之前由于心疼CPU,玩的时候一直都是用BES限制CPU的使用率来的。这个BES跟齿轮一样,在我看来只能算权宜之计。



还是不废话,继续贴代码,结果也是有点意外,只需改一处代码就可以把CPU使用率降下来了。


位置0x0042F7F3


源编码:
push ecx
mov [ebp-04],ecx
call 0042C479


--->
修改为:
push 0000000A
call dword ptr [00486144]
nop


其中修改的第二句代码,是用LordPE查到Sleep函数导入的地址,直接调用Sleep()取代原码不停地GetTickCount(),从而释放CPU时间。第一句自然就是Sleep的参数了,值越小越快。
很简单是吧。


根据上面修改了后,因为是10毫秒刷新一次界面,那些一个小人就会闪得跟无影手似的,这时只需要沿用我昨晚发的第二段修改,就可以把单个小人(会动的物体)刷新速度(图片索引)使用天气图片自动刷新索引的地址。齿轮256速无压力的请无视以下这段吧。


0x0041C2DA mov al,[eax+05] -> mov al,[eax+18]




豪曹11跟14还有本吧置顶下载那个原版,经测可用。其他mod应该也可以此方案解决,内存地址或许会有所不同,只需找到相应的代码段即可。


再次重申本人没汇编基础,也就勉强能看懂两句,大部分命令需要搜索现学。所以以上有什么错漏之处,还望不吝指正。


最后要感谢一下猫灵,如果豪曹14出得快或一次性出完的话,我应该没什么闲心去弄这个,齿轮+BES也就凑活过去了。。。

最后希望伯伯大神再为曹操传做出自己宝贵的贡献!
作者: xiawj    时间: 2014-9-18 09:59

http://pan.baidu.com/s/1mg7gkkw 再贴个自制的专门修改曹操传exe的工具,豪曹11跟14还有本吧置顶下载那个原版,都可使用。
作者: 程军超    时间: 2014-9-19 13:47     标题: 回复 #1 xiawj 的帖子

电脑的问题。
作者: iisdog    时间: 2014-9-19 15:16



QUOTE:
原帖由 xiawj 于 2014-9-18 09:59 发表
http://pan.baidu.com/s/1mg7gkkw 再贴个自制的专门修改曹操传exe的工具,豪曹11跟14还有本吧置顶下载那个原版,都可使用。

可不可以幫做天下人間的
作者: xiawj    时间: 2014-9-19 16:31

这里是更新了支持岳飞传6.0的工具,使用的时候记得勾选"岳飞传6.0"再做修改。
http://pan.baidu.com/s/1pJoJj1D

你可以试试这个工具!希望可以帮到你!如果还是不行,你就去http://tieba.baidu.com/p/3300349013 回帖找伯伯大神解决,他应该会出手帮助你的!
作者: xiawj    时间: 2014-9-19 16:32     标题: 回复 #4 iisdog 的帖子

这里是更新了支持岳飞传6.0的工具,使用的时候记得勾选"岳飞传6.0"再做修改。
http://pan.baidu.com/s/1pJoJj1D

你可以试试这个工具!希望可以帮到你!如果还是不行,你就去http://tieba.baidu.com/p/3300349013 回帖找伯伯大神解决,他应该会出手帮助你的!
作者: iisdog    时间: 2014-9-20 10:57

可以用了   感謝大大您!!!
作者: star175    时间: 2014-9-23 17:54

这个改法有缺陷
被修改是延时函数,剧本里有些设置了延时的地方也变快了

改进之后的写法

0042F7F0  /$  55            PUSH EBP
0042F7F1  |.  8BEC          MOV EBP,ESP
0042F7F3  |.  51            PUSH ECX
0042F7F4  |.  6A 01         PUSH 1                                   ; /Timeout = 1. ms
0042F7F6  |.  FF15 44614800 CALL DWORD PTR DS:[<&KERNEL32.Sleep>]    ; \Sleep
0042F7FC  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]
0042F7FF  |.  E8 75CCFFFF   CALL Ekd5.0042C479
0042F804  |.  F7D8          NEG EAX
0042F806  |.  1BC0          SBB EAX,EAX
0042F808  |.  40            INC EAX
0042F809  |.  8BE5          MOV ESP,EBP
0042F80B  |.  5D            POP EBP
0042F80C  \.  C3            RETN

改了之后cpu使用率下来了,也不影响其他的延时效果

只要让cpu稍微休息一下就行了

41C2DA处不用改

[ 本帖最后由 star175 于 2014-9-23 17:59 编辑 ]
作者: 華寶    时间: 2014-9-23 23:16     标题: 回复 #8 star175 的帖子

膜拜大神
作者: boshao    时间: 2014-9-24 04:28



QUOTE:
原帖由 star175 于 2014-9-23 17:54 发表
这个改法有缺陷
被修改是延时函数,剧本里有些设置了延时的地方也变快了

改进之后的写法

0042F7F0  /$  55            PUSH EBP
0042F7F1  |.  8BEC          MOV EBP,ESP
0042F7F3  |.  51           ...

多谢赐教。
不过其实加快游戏速度且不闪屏才是最初修改的动机,这是原帖上篇http://tieba.baidu.com/p/3298672127CPU占用的问题只是跟到最后顺带解决的。而且不想变快的话直接Sleep(50)就跟原版速度差不多了。
再有一个问题,无论哪种修改方式,在交换物品出现选项的时候,CPU一定又会占满了。
作者: xiawj    时间: 2014-9-26 09:07     标题: 回复 #8 star175 的帖子

大神可以完美修复下这个降低CPU占用率的补丁吗?
作者: WHITESHIP    时间: 2014-9-26 11:42

这个有价值,顶起来,我去WIN8试试
作者: WHITESHIP    时间: 2014-9-27 16:11

我靠!效果拔群!
CPU占用从31.5%直接降到0.3%




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0