• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a faction for Warcraft 3 and enter Hive's 19th Techtree Contest: Co-Op Commanders! Click here to enter!
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 21st Texturing Contest: Upgrade is now concluded, time to vote for your favourite set of icons! Click here to vote!

How to determine the structure of Warcraft 3 MapHashData?

Level 1
Joined
Jul 8, 2025
Messages
1
My Warcraft version is 1.26.
Below is the disassembly code for obtaining map information from the Warcraft map list. I would like to know what the corresponding structure MapHashData is?

028FE380 | 53 | push ebx |
028FE381 | 55 | push ebp |
028FE382 | 56 | push esi |
028FE383 | 8BF1 | mov esi,ecx |
028FE385 | 57 | push edi |
028FE386 | 8B7C24 14 | mov edi,dword ptr ss:[esp+14] |
028FE38A | 8B07 | mov eax,dword ptr ds:[edi] |
028FE38C | 8906 | mov dword ptr ds:[esi],eax |
028FE38E | 8B4F 04 | mov ecx,dword ptr ds:[edi+4] |
028FE391 | 8BDF | mov ebx,edi |
028FE393 | 894E 04 | mov dword ptr ds:[esi+4],ecx |
028FE396 | 8D46 08 | lea eax,dword ptr ds:[esi+8] | esi+08:"Dalaran"
028FE399 | 2BDE | sub ebx,esi |
028FE39B | BD 6D000000 | mov ebp,6D | 6D:'m'
028FE3A0 | 8A1403 | mov dl,byte ptr ds:[ebx+eax] | mapName
028FE3A3 | 8810 | mov byte ptr ds:[eax],dl |
028FE3A5 | 83C0 01 | add eax,1 |
028FE3A8 | 83ED 01 | sub ebp,1 |
028FE3AB | 75 F3 | jne game.28FE3A0 |
028FE3AD | 8D46 75 | lea eax,dword ptr ds:[esi+75] | esi+75:"1v1"
028FE3B0 | BD 31000000 | mov ebp,31 | 31:'1'
028FE3B5 | 8A0C18 | mov cl,byte ptr ds:[eax+ebx] | playersRecommend
028FE3B8 | 8808 | mov byte ptr ds:[eax],cl |
028FE3BA | 83C0 01 | add eax,1 |
028FE3BD | 83ED 01 | sub ebp,1 |
028FE3C0 | 75 F3 | jne game.28FE3B5 |
028FE3C2 | 8D86 A6000000 | lea eax,dword ptr ds:[esi+A6] |
028FE3C8 | BD 61000000 | mov ebp,61 | 61:'a'
028FE3CD | 8D49 00 | lea ecx,dword ptr ds:[ecx] |
028FE3D0 | 8A1418 | mov dl,byte ptr ds:[eax+ebx] | mapAuthor
028FE3D3 | 8810 | mov byte ptr ds:[eax],dl |
028FE3D5 | 83C0 01 | add eax,1 |
028FE3D8 | 83ED 01 | sub ebp,1 |
028FE3DB | 75 F3 | jne game.28FE3D0 |
028FE3DD | 8D86 07010000 | lea eax,dword ptr ds:[esi+107] |
028FE3E3 | BD 01030000 | mov ebp,301 |
028FE3E8 | 8A0C18 | mov cl,byte ptr ds:[eax+ebx] |mapDescription
028FE3EB | 8808 | mov byte ptr ds:[eax],cl |
028FE3ED | 83C0 01 | add eax,1 |
028FE3F0 | 83ED 01 | sub ebp,1 |
028FE3F3 | 75 F3 | jne game.28FE3E8 |
028FE3F5 | 8B97 08040000 | mov edx,dword ptr ds:[edi+408] |What is this field?
028FE3FB | 8996 08040000 | mov dword ptr ds:[esi+408],edx |
028FE401 | 8B87 0C040000 | mov eax,dword ptr ds:[edi+40C] |What is this field?
028FE407 | 8986 0C040000 | mov dword ptr ds:[esi+40C],eax |
028FE40D | 8B8F 10040000 | mov ecx,dword ptr ds:[edi+410] |What is this field?
028FE413 | 898E 10040000 | mov dword ptr ds:[esi+410],ecx |
028FE419 | 8B97 14040000 | mov edx,dword ptr ds:[edi+414] |What is this field?
028FE41F | 8996 14040000 | mov dword ptr ds:[esi+414],edx |
028FE425 | 8B87 18040000 | mov eax,dword ptr ds:[edi+418] |What is this field?
028FE42B | 8986 18040000 | mov dword ptr ds:[esi+418],eax |
028FE431 | 8B8F 1C040000 | mov ecx,dword ptr ds:[edi+41C] |What is this field?
028FE437 | 898E 1C040000 | mov dword ptr ds:[esi+41C],ecx |
028FE43D | 8B97 20040000 | mov edx,dword ptr ds:[edi+420] |What is this field?
028FE443 | 8996 20040000 | mov dword ptr ds:[esi+420],edx |
028FE449 | 8B87 24040000 | mov eax,dword ptr ds:[edi+424] |What is this field?
028FE44F | 8986 24040000 | mov dword ptr ds:[esi+424],eax |
028FE455 | 8B8F 28040000 | mov ecx,dword ptr ds:[edi+428] |What is this field?
028FE45B | 898E 28040000 | mov dword ptr ds:[esi+428],ecx |
028FE461 | 8B97 2C040000 | mov edx,dword ptr ds:[edi+42C] |What is this field?
028FE467 | 8996 2C040000 | mov dword ptr ds:[esi+42C],edx |
028FE46D | 8B87 30040000 | mov eax,dword ptr ds:[edi+430] |What is this field?
028FE473 | 8986 30040000 | mov dword ptr ds:[esi+430],eax |
028FE479 | 8B8F 34040000 | mov ecx,dword ptr ds:[edi+434] |What is this field?
028FE47F | 898E 34040000 | mov dword ptr ds:[esi+434],ecx |
028FE485 | 8B97 38040000 | mov edx,dword ptr ds:[edi+438] |What is this field?
028FE48B | 8996 38040000 | mov dword ptr ds:[esi+438],edx |
028FE491 | 8B87 3C040000 | mov eax,dword ptr ds:[edi+43C] |What is this field?
028FE497 | 8986 3C040000 | mov dword ptr ds:[esi+43C],eax |
028FE49D | 8B8F 40040000 | mov ecx,dword ptr ds:[edi+440] |What is this field?
028FE4A3 | 898E 40040000 | mov dword ptr ds:[esi+440],ecx |
028FE4A9 | 8A97 44040000 | mov dl,byte ptr ds:[edi+444] |What is this field?
028FE4AF | 68 FC190000 | push 19FC |
028FE4B4 | 8D87 48040000 | lea eax,dword ptr ds:[edi+448] |What is this field?
028FE4BA | 50 | push eax |
028FE4BB | 8D8E 48040000 | lea ecx,dword ptr ds:[esi+448] |What is this field?
028FE4C1 | 51 | push ecx |
028FE4C2 | 8896 44040000 | mov byte ptr ds:[esi+444],dl |What is this field?
028FE4C8 | E8 1F317D00 | call <JMP.&memcpy> |
028FE4CD | 68 FC190000 | push 19FC |
028FE4D2 | 8D97 441E0000 | lea edx,dword ptr ds:[edi+1E44] |What is this field?
028FE4D8 | 52 | push edx |
028FE4D9 | 8D86 441E0000 | lea eax,dword ptr ds:[esi+1E44] |What is this field?
028FE4DF | 50 | push eax |
028FE4E0 | E8 07317D00 | call <JMP.&memcpy> |
028FE4E5 | 8B8F 40380000 | mov ecx,dword ptr ds:[edi+3840] |What is this field?
028FE4EB | 898E 40380000 | mov dword ptr ds:[esi+3840],ecx |
028FE4F1 | D987 44380000 | fld dword ptr ds:[edi+3844] |What is this field?
028FE4F7 | D99E 44380000 | fstp dword ptr ds:[esi+3844] |
028FE4FD | 83C4 18 | add esp,18 |
028FE500 | D987 48380000 | fld dword ptr ds:[edi+3848] |What is this field?
028FE506 | BD 20000000 | mov ebp,20 | 20:' '
028FE50B | D99E 48380000 | fstp dword ptr ds:[esi+3848] |
028FE511 | D987 4C380000 | fld dword ptr ds:[edi+384C] |What is this field?
028FE517 | D99E 4C380000 | fstp dword ptr ds:[esi+384C] |
028FE51D | 8B97 50380000 | mov edx,dword ptr ds:[edi+3850] |What is this field?
028FE523 | 8996 50380000 | mov dword ptr ds:[esi+3850],edx |
028FE529 | 8B87 54380000 | mov eax,dword ptr ds:[edi+3854] |What is this field?
028FE52F | 8986 54380000 | mov dword ptr ds:[esi+3854],eax |
028FE535 | 8D86 58380000 | lea eax,dword ptr ds:[esi+3858] |What is this field?
028FE53B | EB 03 | jmp game.28FE540 |
028FE53D | 8D49 00 | lea ecx,dword ptr ds:[ecx] |
028FE540 | 8A0C18 | mov cl,byte ptr ds:[eax+ebx] |
028FE543 | 8808 | mov byte ptr ds:[eax],cl |
028FE545 | 83C0 01 | add eax,1 |
028FE548 | 83ED 01 | sub ebp,1 |
028FE54B | 75 F3 | jne game.28FE540 |What is this field?
028FE54D | 8A97 78380000 | mov dl,byte ptr ds:[edi+3878] |
028FE553 | 8896 78380000 | mov byte ptr ds:[esi+3878],dl |
028FE559 | 8B87 79380000 | mov eax,dword ptr ds:[edi+3879] |What is this field?
028FE55F | 5F | pop edi |
028FE560 | 8986 79380000 | mov dword ptr ds:[esi+3879],eax |
028FE566 | 8BC6 | mov eax,esi |
028FE568 | 5E | pop esi |
028FE569 | 5D | pop ebp |
028FE56A | 5B | pop ebx |
028FE56B | C2 0400 | ret 4 |
 
Top