| 
 
				
Code:
 ; НАЗВАНИЕ: TypeMessages; ВЕРСИЯ: 1.0
 ; АВТОР: Master Of Puppets
 ; ОПИСАНИЕ: Расширение функции показа сообщения (новые типы картинок)
 ; EXE: MOP
 ; StatFree = YES
 
 ; дополнительная ветка свитча в SUB_L004F5540 (тип картинки №37):
 F558A 83FF26;                            cmp    edi,00000026h
 F5595 8A8FB8064400;                      mov    cl,[edi+CASE_004406B8]
 F559B FF248D64064400;                    jmp    [CASE_PROCTABLE_00440664+ecx*4]
 
 40664 EA554F00;                         dd    CASE_004F639C_PROC0000
 40668 92584F00;                         dd    CASE_004F639C_PROC0001
 4066C 38594F00;                         dd    CASE_004F639C_PROC0002
 40670 DB594F00;                         dd    CASE_004F639C_PROC0003
 40674 E7604F00;                         dd    CASE_004F639C_PROC0004
 40678 3A614F00;                         dd    CASE_004F639C_PROC0005
 4067C 8D614F00;                         dd    CASE_004F639C_PROC0006
 40680 EE5F4F00;                         dd    CASE_004F639C_PROC0007
 40684 41604F00;                         dd    CASE_004F639C_PROC0008
 40688 94604F00;                         dd    CASE_004F639C_PROC0009
 4068C FF5D4F00;                         dd    CASE_004F639C_PROC000A
 40690 0C5D4F00;                         dd    CASE_004F639C_PROC000B
 40694 B95B4F00;                         dd    CASE_004F639C_PROC000C
 40698 A2554F00;                         dd    CASE_004F639C_PROC000D
 4069C 745A4F00;                         dd    CASE_004F639C_PROC000E
 406A0 475F4F00;                         dd    CASE_004F639C_PROC000F
 406A4 23574F00;                         dd    CASE_004F639C_PROC0010
 406A8 DD614F00;                         dd    CASE_004F639C_PROC0011
 406AC BDAB4700;                         dd    CASE_004F639C_PROC0012 - новая ветка (сообщения из MTypeMsg.txt)
 406B0 17706300;                 dd    CASE_004F639C_PROC0013 - новая ветка (произвольное сообщение)
 406B4 90909090; - зарезервировано
 
 406B8 00000000000000110102030405060708
 406C8 090A11110B0C0D0D0D0D0D0D0D0D0D0E
 406D8 0E0E0E0F10121390; 1 зарезервированное значение
 
 ; CASE_004F639C_PROC0012:
 7ABBD 6A01;                             PUSH 1
 7ABBF 8B0D5C354000;                     MOV ECX,DWORD PTR DS:[40355C]
 7ABC5 8B4C8104;                         MOV ECX,DWORD PTR DS:[ECX+EAX*4+4]
 7ABC9 8B4904;                           MOV ECX,DWORD PTR DS:[ECX+4]
 7ABCC 8B7108;                           MOV ESI,DWORD PTR DS:[ECX+8] //текст под картинкой
 7ABCF 83C9FF;                           OR ECX,FFFFFFFF
 7ABD2 33C0;                              XOR EAX,EAX
 7ABD4 8BFE;                              MOV EDI,ESI
 7ABD6 8D5318;                           LEA EDX,DWORD PTR DS:[EBX+18]
 7ABD9 F2AE;                             REPNE SCAS BYTE PTR ES:[EDI]
 7ABDB F7D1;                              NOT ECX
 7ABDD 49;                                DEC ECX
 7ABDE 894D08;                           MOV DWORD PTR SS:[EBP+8],ECX
 7ABE1 51;                                PUSH ECX
 7ABE2 8BCA;                              MOV ECX,EDX
 7ABE4 E8579EF8FF;                       CALL mop.00404A40
 7ABE9 84C0;                              TEST AL,AL
 7ABEB 741F;                             JE SHORT mop.0047AC0C
 7ABED 8B4D08;                           MOV ECX,DWORD PTR SS:[EBP+8]
 7ABF0 8B7B1C;                           MOV EDI,DWORD PTR DS:[EBX+1C]
 7ABF3 8D4318;                           LEA EAX,DWORD PTR DS:[EBX+18]
 7ABF6 8BD1;                              MOV EDX,ECX
 7ABF8 C1E902;                           SHR ECX,2
 7ABFB F3A5;                             REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 7ABFD 8BCA;                              MOV ECX,EDX
 7ABFF 83E103;                           AND ECX,3
 7AC02 F3A5;                             REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 7AC04 52;                                PUSH EDX
 7AC05 8BC8;                              MOV ECX,EAX
 7AC07 E8149EF8FF;                       CALL mop.00404A20
 7AC0C 8B7B04;                           MOV EDI,DWORD PTR DS:[EBX+4]
 7AC0F 8B0D5C354000;                     MOV ECX,DWORD PTR DS:[40355C]
 7AC15 8B4CB904;                         MOV ECX,DWORD PTR DS:[ECX+EDI*4+4]
 7AC19 8B4904;                           MOV ECX,DWORD PTR DS:[ECX+4]
 7AC1C 8B39;                              MOV EDI,DWORD PTR DS:[ECX] //деф
 7AC1E 83C9FF;                           OR ECX,FFFFFFFF
 7AC21 33C0;                              XOR EAX,EAX
 7AC23 8D5308;                           LEA EDX,DWORD PTR DS:[EBX+8]
 7AC26 F2AE;                             REPNE SCAS BYTE PTR ES:[EDI]
 7AC28 F7D1;                              NOT ECX
 7AC2A 49;                                DEC ECX
 7AC2B 6A01;                             PUSH 1
 7AC2D 894D08;                           MOV DWORD PTR SS:[EBP+8],ECX
 7AC30 51;                                PUSH ECX
 7AC31 8BCA;                              MOV ECX,EDX
 7AC33 E8089EF8FF;                       CALL mop.00404A40
 7AC38 84C0;                              TEST AL,AL
 7AC3A 7431;                             JE SHORT mop.0047AC6D
 7AC3C 8B7304;                           MOV ESI,DWORD PTR DS:[EBX+4]
 7AC3F 8B0D5C354000;                     MOV ECX,DWORD PTR DS:[40355C]
 7AC45 8B4CB104;                         MOV ECX,DWORD PTR DS:[ECX+ESI*4+4]
 7AC49 8B4904;                           MOV ECX,DWORD PTR DS:[ECX+4]
 7AC4C 8B31;                              MOV ESI,DWORD PTR DS:[ECX] //деф
 7AC4E 8B4D08;                           MOV ECX,DWORD PTR SS:[EBP+8]
 7AC51 8B7B0C;                           MOV EDI,DWORD PTR DS:[EBX+C]
 7AC54 8D4308;                           LEA EAX,DWORD PTR DS:[EBX+8]
 7AC57 8BD1;                              MOV EDX,ECX
 7AC59 C1E902;                           SHR ECX,2
 7AC5C F3A5;                             REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 7AC5E 8BCA;                              MOV ECX,EDX
 7AC60 83E103;                           AND ECX,3
 7AC63 F3A5;                             REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 7AC65 52;                                PUSH EDX
 7AC66 8BC8;                              MOV ECX,EAX
 7AC68 E8B39DF8FF;                       CALL mop.00404A20
 7AC6D 8B7304;                           MOV ESI,DWORD PTR DS:[EBX+4]
 7AC70 8B0D5C354000;                     MOV ECX,DWORD PTR DS:[40355C]
 7AC76 8B4CB104;                         MOV ECX,DWORD PTR DS:[ECX+ESI*4+4]
 7AC7A 8B4904;                           MOV ECX,DWORD PTR DS:[ECX+4]
 7AC7D FF7104;                           PUSH DWORD PTR DS:[ECX+4] //Номер кадра в дефе
 7AC80 E8ACC20100;      CALL mop.00496F31
 7AC85 8BD0;                              MOV EDX,EAX
 7AC87 E99AB50700;                       JMP mop.004F6226
 
 ; CASE_004F639C_PROC0013:
 237017 6A01;            PUSH 1
 237019 8B359C268302;    MOV ESI,DWORD PTR DS:[283269C]
 23701F 83C9FF;          OR ECX,FFFFFFFF
 237022 33C0;             XOR EAX,EAX
 237024 8BFE;             MOV EDI,ESI
 237026 8D5318;          LEA EDX,DWORD PTR DS:[EBX+18]
 237029 F2AE;            REPNE SCAS BYTE PTR ES:[EDI]
 23702B F7D1;             NOT ECX
 23702D 49;               DEC ECX
 23702E 894D08;          MOV DWORD PTR SS:[EBP+8],ECX
 237031 51;               PUSH ECX
 237032 8BCA;             MOV ECX,EDX
 237034 E807DADCFF;      CALL mop.00404A40
 237039 84C0;             TEST AL,AL
 23703B 741F;            JE SHORT mop.0063705C
 23703D 8B4D08;         MOV ECX,DWORD PTR SS:[EBP+8]
 237040 8B7B1C;          MOV EDI,DWORD PTR DS:[EBX+1C]
 237043 8D4318;          LEA EAX,DWORD PTR DS:[EBX+18]
 237046 8BD1;             MOV EDX,ECX
 237048 C1E902;          SHR ECX,2
 23704B F3A5;            REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 23704D 8BCA;             MOV ECX,EDX
 23704F 83E103;          AND ECX,3
 237052 F3A5;            REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 237054 52;               PUSH EDX
 237055 8BC8;             MOV ECX,EAX
 237057 E8C4D9DCFF;      CALL mop.00404A20
 23705C 8B3D94268302;    MOV EDI,DWORD PTR DS:[2832694]
 237062 83C9FF;          OR ECX,FFFFFFFF
 237065 33C0;             XOR EAX,EAX
 237067 8D5308;          LEA EDX,DWORD PTR DS:[EBX+8]
 23706A F2AE;            REPNE SCAS BYTE PTR ES:[EDI]
 23706C F7D1;             NOT ECX
 23706E 49;               DEC ECX
 23706F 6A01;            PUSH 1
 237071 894D08;          MOV DWORD PTR SS:[EBP+8],ECX
 237074 51;               PUSH ECX
 237075 8BCA;             MOV ECX,EDX
 237077 E8C4D9DCFF;      CALL mop.00404A40
 23707C 84C0;             TEST AL,AL
 23707E 7425;            JE SHORT mop.006370A5
 237080 8B3594268302;    MOV ESI,DWORD PTR DS:[2832694]
 237086 8B4D08;          MOV ECX,DWORD PTR SS:[EBP+8]
 237089 8B7B0C;          MOV EDI,DWORD PTR DS:[EBX+C]
 23708C 8D4308;          LEA EAX,DWORD PTR DS:[EBX+8]
 23708F 8BD1;             MOV EDX,ECX
 237091 C1E902;          SHR ECX,2
 237094 F3A5;            REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 237096 8BCA;             MOV ECX,EDX
 237098 83E103;          AND ECX,3
 23709B F3A5;            REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
 23709D 52;               PUSH EDX
 23709E 8BC8;             MOV ECX,EAX
 2370A0 E87BD9DCFF;      CALL mop.00404A20
 2370A5 8B1598268302;    MOV EDX,DWORD PTR DS:[2832698]
 2370AB E976F1EBFF;      JMP mop.004F6226
 
 
 
 ; дополнительная ветка свитча в L004F11B0 (текст сообщения при нажатии ПКМ на картинке):
 ; сокращение кода:
 23FE64 B5114F00;                         dd    L004F11B5
 
 F11B5 55;                               PUSH EBP
 F11B6 8BEC;                             MOV EBP,ESP
 F11B8 6AFF;                            PUSH -1
 F11BA 68706D7B00;                      PUSH mop.007B6D70
 F11BF 64A100000000;                   MOV EAX,DWORD PTR FS:[0]
 F11C5 50;                               PUSH EAX
 F11C6 64892500000000;                 MOV DWORD PTR FS:[0],ESP
 F11CD 83EC28;                          SUB ESP,28
 F11D0 8A4508;                          MOV AL,BYTE PTR SS:[EBP+8]
 F11D3 84C0;                             TEST AL,AL
 F11D5 7405;                            JE SHORT mop.004F11DC
 F11D7 8A450C;                          MOV AL,BYTE PTR SS:[EBP+C]
 F11DA 84C0;                             TEST AL,AL
 F11DC 0F84F0030000;                    JE mop.004F15D2
 F11E2 8B4138;                          MOV EAX,DWORD PTR DS:[ECX+38]
 F11E5 83F826;                          CMP EAX,26
 F11E8 0F87D2030000;                    JA mop.004F15C0
 F11EE 0FB69028164F00;                  MOVZX EDX,BYTE PTR DS:[EAX+4F1628]
 
 F161C F86D4900;                         dd    CASE_004F15E4_PROC000E - новая ветка (сообщения из MTypeMsg.txt)
 F1620 E55A7100;                         dd    CASE_004F15E4_PROC000E - новая ветка (произвольное сообщение)
 F1624 90909090;                         dd    CASE_004F15E4_PROC000E  - зарезервировано
 ; перенесённая таблица
 F1628 000000000000000D01020D0304050607
 F1638 08090D0D0A0D0D0D0D0D0D0D0D0D0D0B
 F1648 0B0B0B0C000E0F90;
 
 ; Смена местами команд, чтобы сюда прыгать:
 F11FC 8B0D94536A00;    MOV ECX,DWORD PTR DS:[6A5394]
 F1202 6A00;            PUSH 0 - сюда
 F1204 6AFF;            PUSH -1
 
 ; CASE_004F15E4_PROC000E
 96DF8 8B493C;                           MOV ECX,DWORD PTR DS:[ECX+3C]
 96DFB 8B155C354000;                     MOV EDX,DWORD PTR DS:[40355C]
 96E01 8B548A04;                         MOV EDX,DWORD PTR DS:[EDX+ECX*4+4]
 96E05 8B5204;                           MOV EDX,DWORD PTR DS:[EDX+4]
 96E08 8B4A0C;                           MOV ECX,DWORD PTR DS:[EDX+C] - текст сообщения при ПКМ на картинке
 96E0B E9F2A30500;                       JMP mop.004F1202
 
 ; CASE_004F15E4_PROC000F
 2B0AE5 8B0DA0268302;    MOV ECX,DWORD PTR DS:[28326A0]
 2B0AEB E912B7DDFF;      JMP mop.004F1202
Не знаю, есть ли тут исправление для IF:N или оно в другом куске кода. Исходников RTL для сравнения у меня нет, а в чём была проблема - вообще не помню. Помню лишь, что ларчик просто открывался - исправил свою же ошибку или даже опечатку, допущенную во время разработки Seek & Destroy.
			 
 Circle of destruction, hammer comes crushing
 Powerhouse of energy
 Whipping up a fury, dominating flurry
 We create the battery
 |