标题:
【转】【原版+豪曹】解决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/3298672127
CPU占用的问题只是跟到最后顺带解决的。而且不想变快的话直接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