Board logo

标题: 关于战役名称显示 [打印本页]

作者: 砖家叫兽    时间: 2011-1-22 19:45     标题: 关于战役名称显示

记得以前玩《蜀汉英雄传》虎牢关地图出现了两次,S之前有个战役名称显示一样

因为指定了战役 ,战役名称会自动搜索到 IMSG 文件


00449E52  /$  55            PUSH EBP
00449E53  |.  8BEC          MOV EBP,ESP
00449E55  |.  81EC D0000000 SUB ESP,0D0
00449E5B  |.  898D 30FFFFFF MOV DWORD PTR SS:[EBP-D0],ECX
00449E61  |.  8B85 30FFFFFF MOV EAX,DWORD PTR SS:[EBP-D0]
00449E67  |.  33C9          XOR ECX,ECX
00449E69  |.  8A08          MOV CL,BYTE PTR DS:[EAX]
00449E6B  |.  83F9 3A       CMP ECX,3A                               ;  58
00449E6E  |.  7D 30         JGE SHORT yuan.00449EA0                  ;  超过58关上限跳
00449E70  |.  8B95 30FFFFFF MOV EDX,DWORD PTR SS:[EBP-D0]
00449E76  |.  33C0          XOR EAX,EAX
00449E78  |.  8A02          MOV AL,BYTE PTR DS:[EDX]
00449E7A  |.  50            PUSH EAX                                 ; /关数
00449E7B  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]            ; |
00449E81  |.  51            PUSH ECX                                 ; |地址
00449E82  |.  E8 1D21FCFF   CALL yuan.0040BFA4                       ; \获取战役名称
00449E87  |.  83C4 08       ADD ESP,8
00449E8A  |.  6A 16         PUSH 16
00449E8C  |.  8D95 34FFFFFF LEA EDX,DWORD PTR SS:[EBP-CC]            ;  地址  已获取IMSG文字
00449E92  |.  52            PUSH EDX                                 ;  地址
00449E93  |.  68 58074B00   PUSH yuan.004B0758                       ;  场所名地址
00449E98  |.  E8 53690300   CALL yuan.004807F0
00449E9D  |.  83C4 0C       ADD ESP,0C
00449EA0  |>  8BE5          MOV ESP,EBP
00449EA2  |.  5D            POP EBP
00449EA3  \.  C3            RETN


实际上这里把场所名覆盖了,然后作为战役名显示

有兴趣的童鞋可以 将这一段抹掉

不过这样的话似乎出战前场所名要指定好了 否则还是你上一个场景的地名
作者: 砖家叫兽    时间: 2011-1-22 19:47

后面是继续追踪的子函数
迷有兴趣的童鞋可以跳过

0040BFA4  /$  55            PUSH EBP
0040BFA5  |.  8BEC          MOV EBP,ESP
0040BFA7  |.  837D 0C 3A    CMP DWORD PTR SS:[EBP+C],3A
0040BFAB  |.  76 02         JBE SHORT yuan.0040BFAF
0040BFAD  |.  EB 15         JMP SHORT yuan.0040BFC4
0040BFAF  |>  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]
0040BFB2  |.  05 FA000000   ADD EAX,0FA
0040BFB7  |.  50            PUSH EAX                                 ; /关数+0FA
0040BFB8  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ; |
0040BFBB  |.  51            PUSH ECX                                 ; |地址
0040BFBC  |.  E8 95FFFFFF   CALL yuan.0040BF56                       ; \yuan.0040BF56
0040BFC1  |.  83C4 08       ADD ESP,8
0040BFC4  |>  5D            POP EBP
0040BFC5  \.  C3            RETN


0040BF56  /$  55            PUSH EBP
0040BF57  |.  8BEC          MOV EBP,ESP
0040BF59  |.  68 C8000000   PUSH 0C8                                 ; /0C8(200)
0040BF5E  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]             ; |
0040BF61  |.  50            PUSH EAX                                 ; |地址
0040BF62  |.  8B4D 0C       MOV ECX,DWORD PTR SS:[EBP+C]             ; |
0040BF65  |.  69C9 C8000000 IMUL ECX,ECX,0C8                         ; |
0040BF6B  |.  51            PUSH ECX                                 ; |(关数+0FA)*0C8
0040BF6C  |.  B9 BCE44A00   MOV ECX,yuan.004AE4BC                    ; |
0040BF71  |.  E8 0ED20000   CALL yuan.00419184                       ; \yuan.00419184
0040BF76  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
0040BF79  |.  C682 C8000000>MOV BYTE PTR DS:[EDX+C8],0
0040BF80  |.  5D            POP EBP
0040BF81  \.  C3            RETN

00419184  /$  55            PUSH EBP
00419185  |.  8BEC          MOV EBP,ESP
00419187  |.  51            PUSH ECX                                 ;  4AE4BC
00419188  |.  894D FC       MOV DWORD PTR SS:[EBP-4],ECX
0041918B  |.  6A 00         PUSH 0                                   ; /0
0041918D  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]             ; |
00419190  |.  50            PUSH EAX                                 ; |(关数+0FA)*0C8
00419191  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]             ; |4AE4BC
00419194  |.  E8 16000000   CALL yuan.004191AF                       ; \yuan.004191AF
00419199  |.  8B4D 10       MOV ECX,DWORD PTR SS:[EBP+10]
0041919C  |.  51            PUSH ECX                                 ; /0C8 (200)
0041919D  |.  8B55 0C       MOV EDX,DWORD PTR SS:[EBP+C]             ; |
004191A0  |.  52            PUSH EDX                                 ; |地址
004191A1  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]             ; |
004191A4  |.  E8 59FFFFFF   CALL yuan.00419102                       ; \yuan.00419102
004191A9  |.  8BE5          MOV ESP,EBP
004191AB  |.  5D            POP EBP
004191AC  \.  C2 0C00       RETN 0C
作者: 砖家叫兽    时间: 2011-1-22 19:50

像原版第一关是颍川之战,战前会显示 “颍川之战”
把这一段NOP掉,如果之前场景场所名是街道,那么这里战役名称就是“街道”

实际上大家读档的时候可以看到,如果是 R 会显示场景信息,事件 地名
但是到了 S 就变成了 事件 和 战役名

其实战役名的地址和场所名是在一块的

这一段就是按照关数(注意上限是58),然后搜索 IMSG中战役名称覆盖了场所名
作者: 513633522    时间: 2011-3-14 09:41

看到了,收藏下




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