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
谢谢。