轩辕春秋文化论坛 » 曹操传MOD制作交流 » GODTYPE的引擎优化真是彻底哇~


2010-2-26 13:27 武骧金星
GODTYPE的引擎优化真是彻底哇~

为了方便抄袭代码研究3.0版中……

结果发现了这么一段函数:

004D4489    55              PUSH EBP
004D448A    8BEC            MOV EBP,ESP
004D448C    8B09            MOV ECX,DWORD PTR DS:[ECX]
004D448E    6BC9 48         IMUL ECX,ECX,48
004D4491    81C1 0000D600   ADD ECX,0D60000
004D4497    8BE5            MOV ESP,EBP
004D4499    5D              POP EBP
004D449A    C3              RETN

这段函数是干嘛用的呢?很简单,每当需要读取武将DATA内存时,只要调用一下这个子函数就可以了,从而节省了很多空间……

还有很多对原有代码的优化,比如把:

0043BC54   .  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
0043BC57   .  50            PUSH EAX                                 ; /Arg1
0043BC58   .  E8 2002FDFF   CALL Ekd5.0040BE7D                       ; \Ekd5.0040BE7D

改成:

0043BC54  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; /Arg1
0043BC57  |.  E8 2102FDFF   CALL E300.0040BE7D                       ; \E300.0040BE7D

这样就直接节省出了一个字节……

所以说,GODTYPE是应该受到景仰的……

2010-2-26 13:40 武骧金星
现在试图抄袭3.0版中,精神辅助攻击/防御的代码。

首先问问是不是以下两段子程序?

00409369  /$  55            PUSH EBP
0040936A  |.  8BEC          MOV EBP,ESP
0040936C  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
0040936F  |.  E8 15B10C00   CALL E300.004D4489
00409374  |.  6A 56         PUSH 56                                  ; /Arg1 = 00000056
00409376  |.  E8 8EE6FFFF   CALL E300.00407A09                       ; \E300.00407A09
0040937B  |.  85C0          TEST EAX,EAX
0040937D  |.  74 04         JE SHORT E300.00409383
0040937F  |.  6A 02         PUSH 2
00409381  |.  EB 02         JMP SHORT E300.00409385
00409383  |>  6A 00         PUSH 0
00409385  |>  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ; |
00409388  |.  E8 AD2B0300   CALL E300.0043BF3A                       ; \E300.0043BF3A
0040938D  |.  8BE5          MOV ESP,EBP
0040938F  |.  5D            POP EBP
00409390  \.  C2 0400       RETN 4


00409393  /$  55            PUSH EBP
00409394  |.  8BEC          MOV EBP,ESP
00409396  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
00409399  |.  E8 EBB00C00   CALL E300.004D4489
0040939E  |.  6A 56         PUSH 56                                  ; /Arg1 = 00000056
004093A0  |.  E8 64E6FFFF   CALL E300.00407A09                       ; \E300.00407A09
004093A5  |.  85C0          TEST EAX,EAX
004093A7  |.  74 04         JE SHORT E300.004093AD
004093A9  |.  6A 02         PUSH 2
004093AB  |.  EB 02         JMP SHORT E300.004093AF
004093AD  |>  6A 01         PUSH 1
004093AF  |>  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ; |
004093B2  |.  E8 832B0300   CALL E300.0043BF3A                       ; \E300.0043BF3A
004093B7  |.  8BE5          MOV ESP,EBP
004093B9  |.  5D            POP EBP
004093BA  \.  C2 0400       RETN 4

谢谢。

2010-2-26 14:19 godtype
算不上什么优化,只是看STAR也是这样做,所以才照学而已。
精神辅助攻防就是2楼的。

页: [1]


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