Display strings for NPCs (intro, gossip, quest info)

6FB1CDC5   |.  8BCB                      MOV ECX,EBX                                  ;  index to the display string
6FB1CDC7   |.  894424 18                 MOV DWORD PTR SS:[ESP+18],EAX
6FB1CDCB   |.  E8 D0F60400               CALL D2Client.6FB6C4A0                       ;  <<< new code!! ***

Display strings for objects (Book of Lore, Tower Tome, etc)

6FB1D212   |.  8BCE                      MOV ECX,ESI                                  ;  index to the display string
6FB1D214   |.  894424 14                 MOV DWORD PTR SS:[ESP+14],EAX
6FB1D218   |.  E8 83F20400               CALL D2Client.6FB6C4A0                       ;  <<< new code!! ***

New code to get string, and process string variables

6FB6C4A0   /$  E8 33F9FFFF               CALL <JMP.&D2Lang.#10004>                    ;  get original string
6FB6C4A5   |.  50                        PUSH EAX
6FB6C4A6   |.  6A 00                     PUSH 0
6FB6C4A8   |.  68 CD0C0000               PUSH 0CCD
6FB6C4AD   |.  B9 000C0000               MOV ECX,0C00
6FB6C4B2   |.  BA E4E3B86F               MOV EDX,D2Client.6FB8E3E4        ;  ASCII "C:\projects\D2\head\Diablo2\Source\D2Client\UI\text.cpp"
6FB6C4B7   |.  E8 18E2FFFF               CALL <JMP.&Fog.#10042>                       ;  make a place for the adjusted string
6FB6C4BC   |.  50                        PUSH EAX
6FB6C4BD   |.  FF15 3C38B76F             CALL DWORD PTR DS:[6FB7383C]                 ;  D2Extra.6F7ABC00 -- interpret variables
6FB6C4C3   \.  C3                        RETN


Procedure call (requires base relocation)

6FB73830  49 6E 74 65 72 66 61 63 65 00 00 00 00 BC 7A 6F  Interface....¼zo	      ;  procedure pointer at 6FB7383C (**fixup**)


Fixup List:

Absolute  Pointer   RVA Block  Type/Offset
6FB6C4BF  3C38B76F  CC000      BF34                New size = 52
                               0000 - padding

0000019C  64BD0000  DD 0000BD64                    ;  Relocation Table size = BD64 (48484.)  << +4 bytes
00000290  2E 72 65 6C 6F 63 00 00  ASCII ".reloc"  ; SECTION
00000298  F2CD0000  DD 0000CDF2                    ;  VirtualSize = CDF2 (52722.)  << +4 bytes

00106A30 5000 0000 0230 0830 0E30 1430 1A30 2030 P....0.0.0.0.0 0    Change block count from 50 to 52 at 00106A30
00106A70 C933 E933 1434 2C34 7934 9034 00E0 0C00 .3.3.4,4y4.4....    Insert four bytes at 00106A7C, make equal to BF340000
00107D70 0000 0000 0000 0000 0000 0000 0000 0000 ................    Remove four bytes in this block (see 00106A70)

Existing Relocations:
  05 .reloc    VirtSize: 0000CDEE  VirtAddr:  00126000
    raw data offs:   000FC000  raw data size: 0000D000
    relocation offs: 00000000  relocations:   00000000
    line # offs:     00000000  line #'s:      00000000
    characteristics: 42000040
      INITIALIZED_DATA  DISCARDABLE  READ  ALIGN_DEFAULT(16)

Virtual Address: 000CC000  size: 00000050
  000CC002 HIGHLOW
  000CC008 HIGHLOW
  000CC00E HIGHLOW
  000CC014 HIGHLOW
  000CC01A HIGHLOW
  000CC020 HIGHLOW
  000CC026 HIGHLOW
  000CC02C HIGHLOW
  000CC032 HIGHLOW
  000CC038 HIGHLOW
  000CC03E HIGHLOW
  000CC044 HIGHLOW
  000CC0F6 HIGHLOW
  000CC145 HIGHLOW
  000CC172 HIGHLOW
  000CC1D6 HIGHLOW
  000CC1EC HIGHLOW
  000CC235 HIGHLOW
  000CC249 HIGHLOW
  000CC269 HIGHLOW
  000CC294 HIGHLOW
  000CC2AC HIGHLOW
  000CC2C9 HIGHLOW
  000CC2E9 HIGHLOW
  000CC314 HIGHLOW
  000CC329 HIGHLOW
  000CC349 HIGHLOW
  000CC374 HIGHLOW
  000CC38F HIGHLOW
  000CC3AC HIGHLOW
  000CC3C9 HIGHLOW
  000CC3E9 HIGHLOW
  000CC414 HIGHLOW
  000CC42C HIGHLOW
  000CC479 HIGHLOW
  000CC490 HIGHLOW