PKr Posted July 24, 2022 (edited) First of all I hope Hexen is somewhat related to "Doom General" forum... So, I have just discovered that Hexen has two 1.1 versions (both are called 1.1). According to doomwiki https://doomwiki.org/wiki/HEXEN.EXE I have the more common 1.1 version of the game (MD5 713319e8adbc34bca8e06dbaff96f86c). What's different in v1.1 (DFE619E8C6E3339359D62CDA11E5375B)? Edited July 24, 2022 by PKr 3 Quote Share this post Link to post
Dark Pulse Posted July 26, 2022 Possibly it added support for Deathkings? I'm not sure. Only way to really have an idea would probably be to disassemble the EXE. 0 Quote Share this post Link to post
Hitboi Posted July 26, 2022 The two versions are mentioned in this thread: On 4/28/2020 at 9:20 PM, NY00123 said: - As usual with public repositories, there might be changes later, like using output directory names differing from "10" or "11". Just for one example of an explanation, I've recently learnt that there might actually be two original Hexen DOS EXEs identified as 1.1, with one of them possibly including the following A_SoAExplode bugfix for DK, which I've disabled for now 4 Quote Share this post Link to post
PKr Posted July 26, 2022 Thanks! Since the Doomwiki article calls this v1.1"b" an improved version of the game I wonder if there are any other known bug fixes this version has over v1.1"a"? 0 Quote Share this post Link to post
chungy Posted July 26, 2022 I don't see anywhere on the wiki that gives it the name 1.1b; not even the more common community name of 1.1r2 (which isn't official, so doesn't really belong on the wiki either). Anyhow, if you'd like to play around with it, the iwad-patches repository has both versions in the vanilla-engine directory; you can use the "Code" button on the main page to download a Zip file of everything: https://github.com/Doom-Utils/iwad-patches 2 Quote Share this post Link to post
FistMarine Posted July 29, 2022 Yes, there are two variants of Hexen 1.1. I was very surprised about this too. I only discovered this two years ago when I was reading the topic that was posted earlier by Hitboi. In fact, I was the one who added the information of the second Hexen 1.1 variant on Doomwiki just two months ago. I am not sure if the CRC-32 is correct, as I recall getting different hashes from two different softwares I used and in the end I settled with what Checksum Calculator showed me. MD5 and SHA-1 hashes should be correct, at least. Anyway, here is a proof screenshot of my HEXEN folder that contains this rare version, after I used the infamous QCRACK (on an emulated Windows 98SE) to access this rare version, which was only available in locked form on the Quake 1.01 CDs. Notice how it is dated 22/03/1996, much like Heretic: Shadow of the Serpent Riders (aka Heretic 1.3) and Hexen: Deathkings of the Dark Citadel (aka HexenDK 1.0, the original CD release). At least that's what you get when you install from the original CD. The installation also works out of the box on Windows 7 32-bit (yes I still use outdated OS on my PC), though I recommend using DOSBox X to install the DOS games because it appears to preserve the original install date of DOS games, unlike vanilla DOSBox. :) I'm curious, has anyone attempted to make a semi-official patch that updates either the original Hexen 1.0 (dated 15/10/1995) or the common 1.1 (14/03/1996) to the rare 1.1 version? I don't mean what chungy has posted above, I mean an actual patch like the old official ones that patched all the files in the entire directory. That way, it would make the rare variant accessible to many other people. It was the same situation with the updated id anthology versions of Final Doom until their existence was discovered back in 2010. Hope this is helpful! 2 Quote Share this post Link to post
chungy Posted July 30, 2022 (edited) 20 hours ago, FistMarine said: I am not sure if the CRC-32 is correct, as I recall getting different hashes from two different softwares I used and in the end I settled with what Checksum Calculator showed me. It's correct, but in decimal format rather than the usual hexadecimal. I'll fix it :) 20 hours ago, FistMarine said: I'm curious, has anyone attempted to make a semi-official patch that updates either the original Hexen 1.0 (dated 15/10/1995) or the common 1.1 (14/03/1996) to the rare 1.1 version? I don't mean what chungy has posted above, I mean an actual patch like the old official ones that patched all the files in the entire directory. That way, it would make the rare variant accessible to many other people. The IWAD isn't different, you can just take that directory and drop the 1.1 IWAD into it. Same effect. Edited July 30, 2022 by chungy 1 Quote Share this post Link to post
FistMarine Posted August 2, 2022 (edited) On 7/30/2022 at 5:43 PM, chungy said: It's correct, but in decimal format rather than the usual hexadecimal. I'll fix it :) Ah ok, thanks for letting me know. :) On 7/30/2022 at 5:43 PM, chungy said: The IWAD isn't different, you can just take that directory and drop the 1.1 IWAD into it. Same effect. You're right. It's only the executable that was changed between the common 1.1 version and the rare 1.1 one. I just got confused for a second because all files in directory had the date changed as well, although I had remembered that the IWAD hasn't been changed between the two 1.1 versions. I find it interesting that only the executable was changed in Hexen 1.1's case, while in Hexen Deathkings, only the IWAD was changed between 1.0 and 1.1. EDIT: Looking at the wiki page, it looks like the 1.0 versions are now called 1.0r1 and 1.0r2. I went ahead and changed the page to also mention 1.1r1 and 1.1r2, so there wouldn't be much confusion anymore between the two 1.1 versions available. Hope it's all fine now! EDIT 2: I wonder if I should go ahead and modify the HEXEN.WAD page as well? https://doomwiki.org/wiki/HEXEN.WAD EDIT 3: Done. Edited August 2, 2022 by FistMarine 1 Quote Share this post Link to post
PKr Posted August 2, 2022 (edited) @FistMarine I think what still appears to be somewhat confusing is this phrase on hexen.wad page: "A slightly different, and rarer, version is found in encrypted form (HEXEN11.MJ3) on some CDs (such as the Quake 1.01 CD) that contain id STUFF folders on them. There are various undocumented changes. The IWAD appears to be identical to the common 1.1 one, except it is now dated 1996-03-22." "The undocumented changes" apply to 1.1 executables, but not an iwad. I guess the "undocumented changes" part should only be mentioned on hexen.exe page. At least that's what confused me at first. Edited August 2, 2022 by PKr 1 Quote Share this post Link to post
Alex S. Posted August 2, 2022 On 7/25/2022 at 10:06 PM, Dark Pulse said: Possibly it added support for Deathkings? I'm not sure. Only way to really have an idea would probably be to disassemble the EXE. And here I go! 1 Quote Share this post Link to post
PKr Posted August 2, 2022 3 minutes ago, Alex S. said: And here I go! Are you for real? Because that would be awesome... 0 Quote Share this post Link to post
Alex S. Posted August 2, 2022 2 minutes ago, PKr said: Are you for real? Because that would be awesome... First, I want to MD5 the "rare" executable against a stock 1.1 copy to make sure they have dissimilar hashes. If they in fact checksum differently, then yea I could disassemble or at least debug them in hopes of seeing what changed. 0 Quote Share this post Link to post
Alex S. Posted August 2, 2022 (edited) Alright, I grabbed my Quake Shareware 1.01 CD, cracked the MJ3 and snagged the resulting executable for Hexen 1.1. I then compared the checksums on my Mac. MD5 (HEXEN.EXE) = 713319e8adbc34bca8e06dbaff96f86c MD5 (ID Stuff HEXEN.EXE) = dfe619e8c6e3339359d62cda11e5375b I installed the real TestDrive and used a tool I made to unlock the game. Not sharing that tool, but here's proof in Windows 3.1 that the copy is fresh! Edited August 2, 2022 by Alex S. 1 Quote Share this post Link to post
Alex S. Posted August 2, 2022 Alright, I've been up to no good. Take a look below and have at it! Here is the disassembly of the Id Stuff EXE: Disassembly: 0: da a0 00 00 00 04 fisub DWORD PTR [eax+0x4000000] 6: d5 a7 aad 0xa7 8: 40 inc eax 9: 07 pop es a: b0 04 mov al,0x4 c: e0 02 loopne 0x10 e: 00 00 add BYTE PTR [eax],al 10: 10 0f adc BYTE PTR [edi],cl 12: ff f2 push edx 14: 10 1d aa 00 00 00 adc BYTE PTR ds:0xaa,bl 1a: 10 40 03 adc BYTE PTR [eax+0x3],al 1d: cd f7 int 0xf7 1f: 82 23 bd and BYTE PTR [ebx],0xbd 22: 01 1e add DWORD PTR [esi],ebx 24: 00 00 add BYTE PTR [eax],al 26: 00 01 add BYTE PTR [ecx],al 28: 00 20 add BYTE PTR [eax],ah 2a: 00 da add dl,bl 2c: a0 00 00 02 00 mov al,ds:0x20000 31: 00 02 add BYTE PTR [edx],al 33: 80 00 00 add BYTE PTR [eax],0x0 36: 08 c0 or al,al 38: 90 nop 39: 00 09 add BYTE PTR [ecx],cl 3b: 40 inc eax 3c: 90 nop 3d: 00 0a add BYTE PTR [edx],cl 3f: 00 9d aa 00 00 00 add BYTE PTR [ebp+0xaa],bl 45: 30 00 xor BYTE PTR [eax],al 47: 00 a6 09 00 00 aa add BYTE PTR [esi-0x55fffff7],ah 4d: 09 00 or DWORD PTR [eax],eax 4f: 00 ae 09 00 00 b4 add BYTE PTR [esi-0x4bfffff7],ch 55: 09 da or edx,ebx 57: a0 00 00 04 00 mov al,ds:0x40000 5c: 00 0b add BYTE PTR [ebx],cl 5e: 60 pusha 5f: 90 nop 60: 00 0f add BYTE PTR [edi],cl 62: 10 90 00 00 00 0b adc BYTE PTR [eax+0xb000000],dl 68: d0 14 80 rcl BYTE PTR [eax+eax*4],1 6b: 3d aa 00 00 00 cmp eax,0xaa 70: 50 push eax 71: bd 01 65 03 bd mov ebp,0xbd036501 76: 01 11 add DWORD PTR [ecx],edx 78: 04 bd add al,0xbd 7a: 01 4c 04 bd add DWORD PTR [esp+eax*1-0x43],ecx 7e: 01 94 04 ed aa 00 00 add DWORD PTR [esp+eax*1+0xaaed],edx 85: 00 60 bd add BYTE PTR [eax-0x43],ah 88: 01 e1 add ecx,esp 8a: 04 bd add al,0xbd 8c: 01 ad 05 bd 01 b2 add DWORD PTR [ebp-0x4dfe42fb],ebp 92: 05 bd 01 6a 06 add eax,0x66a01bd 97: da a0 00 00 07 0b fisub DWORD PTR [eax+0xb070000] 9d: d0 19 rcr BYTE PTR [ecx],1 9f: a0 6b d0 17 20 mov al,ds:0x2017d06b a4: 7b d0 jnp 0x76 a6: 1b a0 7b d0 1e a0 sbb esp,DWORD PTR [eax-0x5fe12f85] ac: 7d aa jge 0x58 ae: 00 00 add BYTE PTR [eax],al b0: 00 80 bd 01 3b 09 add BYTE PTR [eax+0x93b01bd],al b6: bd 01 4d 09 bd mov ebp,0xbd094d01 bb: 01 9e 09 bd 01 da add DWORD PTR [esi-0x25fe42f7],ebx c1: 09 da or edx,ebx c3: a0 00 00 09 0b mov al,ds:0xb090000 c8: d0 1f rcr BYTE PTR [edi],1 ca: 30 9b d0 13 a0 ab xor BYTE PTR [ebx-0x545fec30],bl d0: d0 16 rcl BYTE PTR [esi],1 d2: 10 ab d0 18 70 aa adc BYTE PTR [ebx-0x558fe730],ch d8: da a0 00 00 0a 0b fisub DWORD PTR [eax+0xb0a0000] de: d0 1a rcr BYTE PTR [edx],1 e0: 20 ab d0 1e 50 ab and BYTE PTR [ebx-0x54afe130],ch e6: d0 11 rcl BYTE PTR [ecx],1 e8: 50 push eax e9: bb d0 16 f0 bd mov ebx,0xbdf016d0 ee: aa stos BYTE PTR es:[edi],al ef: 00 00 add BYTE PTR [eax],al f1: 00 b0 bd 01 95 0b add BYTE PTR [eax+0xb9501bd],dh f7: bd 01 bd 0d bd mov ebp,0xbd0dbd01 fc: 01 b8 02 e2 07 16 add DWORD PTR [eax+0x1607e202],edi 102: 0f da a0 00 00 0c 0b pminub mm4,QWORD PTR [eax+0xb0c0000] 109: d0 13 rcl BYTE PTR [ebx],1 10b: c0 fb d0 sar bl,0xd0 10e: 17 pop ss 10f: b0 fb mov al,0xfb 111: d0 1b rcr BYTE PTR [ebx],1 113: 90 nop 114: fb sti 115: d0 11 rcl BYTE PTR [ecx],1 117: 00 ad aa 00 00 00 add BYTE PTR [ebp+0xaa],ch 11d: d0 00 rol BYTE PTR [eax],1 11f: 00 1a add BYTE PTR [edx],bl 121: 11 bd 01 24 0a 00 adc DWORD PTR [ebp+0xa2401],edi 127: 00 53 15 add BYTE PTR [ebx+0x15],dl 12a: bd 01 58 17 da mov ebp,0xda175801 12f: a0 00 00 0e 0b mov al,ds:0xb0e0000 134: d0 19 rcr BYTE PTR [ecx],1 136: 41 inc ecx 137: 7b d0 jnp 0x109 139: 12 51 fb adc dl,BYTE PTR [ecx-0x5] 13c: d0 12 rcl BYTE PTR [edx],1 13e: 81 fb d0 11 00 bd cmp ebx,0xbd0011d0 144: aa stos BYTE PTR es:[edi],al 145: 00 00 add BYTE PTR [eax],al 147: 00 f0 add al,dh 149: 00 00 add BYTE PTR [eax],al 14b: 35 4c 91 09 c5 xor eax,0xc509914c 150: 1f pop ds 151: bd 01 fa 1f bd mov ebp,0xbd1ffa01 156: 01 55 20 add DWORD PTR [ebp+0x20],edx 159: 5d pop ebp 15a: aa stos BYTE PTR es:[edi],al 15b: 00 00 add BYTE PTR [eax],al 15d: 01 00 add DWORD PTR [eax],eax 15f: bd 01 38 0c e2 mov ebp,0xe20c3801 164: 07 pop es 165: 61 popa 166: 0f e2 07 psrad mm0,QWORD PTR [edi] 169: 65 0f e2 07 psrad mm0,QWORD PTR gs:[edi] 16d: 59 pop ecx 16e: 10 8a ed aa 00 00 adc BYTE PTR [edx+0xaaed],cl 174: 01 10 add DWORD PTR [eax],edx 176: e2 07 loop 0x17f 178: 7f 11 jg 0x18b 17a: e2 07 loop 0x183 17c: 1a 00 sbb al,BYTE PTR [eax] 17e: f3 00 e0 repz add al,ah 181: 0c 00 or al,0x0 183: 00 83 23 da a0 00 add BYTE PTR [ebx+0xa0da23],al 189: 00 12 add BYTE PTR [edx],dl 18b: 0b d0 or edx,eax 18d: 18 c2 sbb dl,al 18f: 3b d0 cmp edx,eax 191: 1a 12 sbb dl,BYTE PTR [edx] 193: 3b d0 cmp edx,eax 195: 10 12 adc BYTE PTR [edx],dl 197: 4b dec ebx 198: d0 1b rcr BYTE PTR [ebx],1 19a: 92 xchg edx,eax 19b: 8d aa 00 00 01 30 lea ebp,[edx+0x30010000] 1a1: bd 01 f3 2c bd mov ebp,0xbd2cf301 1a6: 01 fe add esi,edi 1a8: 2c bd sub al,0xbd 1aa: 01 4b 16 add DWORD PTR [ebx+0x16],ecx 1ad: e2 07 loop 0x1b6 1af: 67 38 8d aa 00 cmp BYTE PTR [di+0xaa],cl 1b4: 00 01 add BYTE PTR [ecx],al 1b6: 40 inc eax 1b7: bd 01 eb 39 bd mov ebp,0xbd39eb01 1bc: 01 48 44 add DWORD PTR [eax+0x44],ecx 1bf: bd 01 43 4b bd mov ebp,0xbd4b4301 1c4: 01 58 5d add DWORD PTR [eax+0x5d],ebx 1c7: 9d popf 1c8: cd aa int 0xaa 1ca: 00 00 add BYTE PTR [eax],al 1cc: 01 50 bd add DWORD PTR [eax-0x43],edx 1cf: 01 71 5f add DWORD PTR [ecx+0x5f],esi 1d2: bd 01 00 00 00 mov ebp,0x1 1d7: 00 00 add BYTE PTR [eax],al 1d9: 00 00 add BYTE PTR [eax],al 1db: 00 00 add BYTE PTR [eax],al 1dd: 00 da add dl,bl 1df: a0 00 00 16 00 mov al,ds:0x160000 ... 1f0: 00 00 add BYTE PTR [eax],al 1f2: 00 0d aa 00 00 01 add BYTE PTR ds:0x10000aa,cl 1f8: 70 00 jo 0x1fa ... 206: 00 00 add BYTE PTR [eax],al 208: 00 da add dl,bl 20a: a0 00 00 18 00 mov al,ds:0x180000 ... 21b: 00 00 add BYTE PTR [eax],al 21d: 00 0d aa 00 00 01 add BYTE PTR ds:0x10000aa,cl 223: 90 nop ... 234: da a0 00 00 1a 00 fisub DWORD PTR [eax+0x1a0000] ... 246: 00 00 add BYTE PTR [eax],al 248: 00 0d aa 00 00 01 add BYTE PTR ds:0x10000aa,cl 24e: b0 00 mov al,0x0 ... 25c: 00 00 add BYTE PTR [eax],al 25e: 00 da add dl,bl 260: a0 00 00 1c 00 mov al,ds:0x1c0000 ... 271: 00 00 add BYTE PTR [eax],al 273: 00 0d aa 00 00 01 add BYTE PTR ds:0x10000aa,cl 279: d0 00 rol BYTE PTR [eax],1 ... 287: 00 00 add BYTE PTR [eax],al 289: 00 da add dl,bl 28b: a0 00 00 1e 00 mov al,ds:0x1e0000 ... 29c: 00 00 add BYTE PTR [eax],al 29e: 00 0d aa 00 00 01 add BYTE PTR ds:0x10000aa,cl 2a4: f0 00 00 lock add BYTE PTR [eax],al ... ....and here is the disassembly of the stock 1.1 EXE: Disassembly Raw Hex (zero bytes in bold): DAA004000004D5A74007B004E0020000100FFFF2101DAA004000104003CDF78223BD011E00000001002000DAA004000200000280000008C09000094090000A009DAA004000300000A6090000AA090000AE090000B409DAA004000400000B6090000F10900000000BD014803DAA00400050BD016503BD011104BD014C04BD019404EDAA00400060BD01E104BD01AD05BD01B205BD016A06DAA00400070BD019A06BD017207BD01BA07BD01EA07DAA00400080BD013B09BD014D09BD019E09BD01DA09DAA00400090BD01F309BD013A0ABD01610ABD01870AADAA004000A0BD01A20ABD01E50ABD01150BBD016F0BDAA004000B0BD01950BBD01BD0DBD01B802E207160FDAA004000C0BD013C0FBD017B0FBD01B90FBD01100ADAA004000D000001A11BD01240A00005315BD015817DAA004000E0BD019417BD01251FBD01281FBD01100BDAA004000F00000354C9109C51FBD01FA1FBD0155205DAA00400100BD01380CE207610FE207650FE20759108AEDAA00400110E2077F11E2071A00F300E00C00008323DAA00400120BD018C23BD01A123BD010124BD01B928DAA00400130BD01F32CBD01FE2CBD014B16E20767388DAA00400140BD01EB39BD014844BD01434BBD01585D9DCDAA00400150BD01715FBD010000DAA0040016000000000DAA0040017000000000DAA0040018000000000DAA00400190DAA004001A000000000DAA004001B000000000DAA004001C000000000DAA004001D000000000DAA004001E000000000DAA004001F00000 String Literal: "\xDA\xA0\x04\x00\x00\x04\xD5\xA7\x40\x07\xB0\x04\xE0\x02\x00\x00\x10\x0F\xFF\xF2\x10\x1D\xAA\x00\x40\x00\x10\x40\x03\xCD\xF7\x82\x23\xBD\x01\x1E\x00\x00\x00\x01\x00\x20\x00\xDA\xA0\x04\x00\x02\x00\x00\x02\x80\x00\x00\x08\xC0\x90\x00\x09\x40\x90\x00\x0A\x00\x9D\xAA\x00\x40\x00\x30\x00\x00\xA6\x09\x00\x00\xAA\x09\x00\x00\xAE\x09\x00\x00\xB4\x09\xDA\xA0\x04\x00\x04\x00\x00\x0B\x60\x90\x00\x0F\x10\x90\x00\x00\x00\x0B\xD0\x14\x80\x3D\xAA\x00\x40\x00\x50\xBD\x01\x65\x03\xBD\x01\x11\x04\xBD\x01\x4C\x04\xBD\x01\x94\x04\xED\xAA\x00\x40\x00\x60\xBD\x01\xE1\x04\xBD\x01\xAD\x05\xBD\x01\xB2\x05\xBD\x01\x6A\x06\xDA\xA0\x04\x00\x07\x0B\xD0\x19\xA0\x6B\xD0\x17\x20\x7B\xD0\x1B\xA0\x7B\xD0\x1E\xA0\x7D\xAA\x00\x40\x00\x80\xBD\x01\x3B\x09\xBD\x01\x4D\x09\xBD\x01\x9E\x09\xBD\x01\xDA\x09\xDA\xA0\x04\x00\x09\x0B\xD0\x1F\x30\x9B\xD0\x13\xA0\xAB\xD0\x16\x10\xAB\xD0\x18\x70\xAA\xDA\xA0\x04\x00\x0A\x0B\xD0\x1A\x20\xAB\xD0\x1E\x50\xAB\xD0\x11\x50\xBB\xD0\x16\xF0\xBD\xAA\x00\x40\x00\xB0\xBD\x01\x95\x0B\xBD\x01\xBD\x0D\xBD\x01\xB8\x02\xE2\x07\x16\x0F\xDA\xA0\x04\x00\x0C\x0B\xD0\x13\xC0\xFB\xD0\x17\xB0\xFB\xD0\x1B\x90\xFB\xD0\x11\x00\xAD\xAA\x00\x40\x00\xD0\x00\x00\x1A\x11\xBD\x01\x24\x0A\x00\x00\x53\x15\xBD\x01\x58\x17\xDA\xA0\x04\x00\x0E\x0B\xD0\x19\x41\x7B\xD0\x12\x51\xFB\xD0\x12\x81\xFB\xD0\x11\x00\xBD\xAA\x00\x40\x00\xF0\x00\x00\x35\x4C\x91\x09\xC5\x1F\xBD\x01\xFA\x1F\xBD\x01\x55\x20\x5D\xAA\x00\x40\x01\x00\xBD\x01\x38\x0C\xE2\x07\x61\x0F\xE2\x07\x65\x0F\xE2\x07\x59\x10\x8A\xED\xAA\x00\x40\x01\x10\xE2\x07\x7F\x11\xE2\x07\x1A\x00\xF3\x00\xE0\x0C\x00\x00\x83\x23\xDA\xA0\x04\x00\x12\x0B\xD0\x18\xC2\x3B\xD0\x1A\x12\x3B\xD0\x10\x12\x4B\xD0\x1B\x92\x8D\xAA\x00\x40\x01\x30\xBD\x01\xF3\x2C\xBD\x01\xFE\x2C\xBD\x01\x4B\x16\xE2\x07\x67\x38\x8D\xAA\x00\x40\x01\x40\xBD\x01\xEB\x39\xBD\x01\x48\x44\xBD\x01\x43\x4B\xBD\x01\x58\x5D\x9D\xCD\xAA\x00\x40\x01\x50\xBD\x01\x71\x5F\xBD\x01\x00\x00\xDA\xA0\x04\x00\x16\x00\x00\x00\x00\x0D\xAA\x00\x40\x01\x70\x00\x00\x00\x00\xDA\xA0\x04\x00\x18\x00\x00\x00\x00\x0D\xAA\x00\x40\x01\x90\xDA\xA0\x04\x00\x1A\x00\x00\x00\x00\x0D\xAA\x00\x40\x01\xB0\x00\x00\x00\x00\xDA\xA0\x04\x00\x1C\x00\x00\x00\x00\x0D\xAA\x00\x40\x01\xD0\x00\x00\x00\x00\xDA\xA0\x04\x00\x1E\x00\x00\x00\x00\x0D\xAA\x00\x40\x01\xF0\x00\x00" Array Literal: { 0xDA, 0xA0, 0x04, 0x00, 0x00, 0x04, 0xD5, 0xA7, 0x40, 0x07, 0xB0, 0x04, 0xE0, 0x02, 0x00, 0x00, 0x10, 0x0F, 0xFF, 0xF2, 0x10, 0x1D, 0xAA, 0x00, 0x40, 0x00, 0x10, 0x40, 0x03, 0xCD, 0xF7, 0x82, 0x23, 0xBD, 0x01, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0xDA, 0xA0, 0x04, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x08, 0xC0, 0x90, 0x00, 0x09, 0x40, 0x90, 0x00, 0x0A, 0x00, 0x9D, 0xAA, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0xA6, 0x09, 0x00, 0x00, 0xAA, 0x09, 0x00, 0x00, 0xAE, 0x09, 0x00, 0x00, 0xB4, 0x09, 0xDA, 0xA0, 0x04, 0x00, 0x04, 0x00, 0x00, 0x0B, 0x60, 0x90, 0x00, 0x0F, 0x10, 0x90, 0x00, 0x00, 0x00, 0x0B, 0xD0, 0x14, 0x80, 0x3D, 0xAA, 0x00, 0x40, 0x00, 0x50, 0xBD, 0x01, 0x65, 0x03, 0xBD, 0x01, 0x11, 0x04, 0xBD, 0x01, 0x4C, 0x04, 0xBD, 0x01, 0x94, 0x04, 0xED, 0xAA, 0x00, 0x40, 0x00, 0x60, 0xBD, 0x01, 0xE1, 0x04, 0xBD, 0x01, 0xAD, 0x05, 0xBD, 0x01, 0xB2, 0x05, 0xBD, 0x01, 0x6A, 0x06, 0xDA, 0xA0, 0x04, 0x00, 0x07, 0x0B, 0xD0, 0x19, 0xA0, 0x6B, 0xD0, 0x17, 0x20, 0x7B, 0xD0, 0x1B, 0xA0, 0x7B, 0xD0, 0x1E, 0xA0, 0x7D, 0xAA, 0x00, 0x40, 0x00, 0x80, 0xBD, 0x01, 0x3B, 0x09, 0xBD, 0x01, 0x4D, 0x09, 0xBD, 0x01, 0x9E, 0x09, 0xBD, 0x01, 0xDA, 0x09, 0xDA, 0xA0, 0x04, 0x00, 0x09, 0x0B, 0xD0, 0x1F, 0x30, 0x9B, 0xD0, 0x13, 0xA0, 0xAB, 0xD0, 0x16, 0x10, 0xAB, 0xD0, 0x18, 0x70, 0xAA, 0xDA, 0xA0, 0x04, 0x00, 0x0A, 0x0B, 0xD0, 0x1A, 0x20, 0xAB, 0xD0, 0x1E, 0x50, 0xAB, 0xD0, 0x11, 0x50, 0xBB, 0xD0, 0x16, 0xF0, 0xBD, 0xAA, 0x00, 0x40, 0x00, 0xB0, 0xBD, 0x01, 0x95, 0x0B, 0xBD, 0x01, 0xBD, 0x0D, 0xBD, 0x01, 0xB8, 0x02, 0xE2, 0x07, 0x16, 0x0F, 0xDA, 0xA0, 0x04, 0x00, 0x0C, 0x0B, 0xD0, 0x13, 0xC0, 0xFB, 0xD0, 0x17, 0xB0, 0xFB, 0xD0, 0x1B, 0x90, 0xFB, 0xD0, 0x11, 0x00, 0xAD, 0xAA, 0x00, 0x40, 0x00, 0xD0, 0x00, 0x00, 0x1A, 0x11, 0xBD, 0x01, 0x24, 0x0A, 0x00, 0x00, 0x53, 0x15, 0xBD, 0x01, 0x58, 0x17, 0xDA, 0xA0, 0x04, 0x00, 0x0E, 0x0B, 0xD0, 0x19, 0x41, 0x7B, 0xD0, 0x12, 0x51, 0xFB, 0xD0, 0x12, 0x81, 0xFB, 0xD0, 0x11, 0x00, 0xBD, 0xAA, 0x00, 0x40, 0x00, 0xF0, 0x00, 0x00, 0x35, 0x4C, 0x91, 0x09, 0xC5, 0x1F, 0xBD, 0x01, 0xFA, 0x1F, 0xBD, 0x01, 0x55, 0x20, 0x5D, 0xAA, 0x00, 0x40, 0x01, 0x00, 0xBD, 0x01, 0x38, 0x0C, 0xE2, 0x07, 0x61, 0x0F, 0xE2, 0x07, 0x65, 0x0F, 0xE2, 0x07, 0x59, 0x10, 0x8A, 0xED, 0xAA, 0x00, 0x40, 0x01, 0x10, 0xE2, 0x07, 0x7F, 0x11, 0xE2, 0x07, 0x1A, 0x00, 0xF3, 0x00, 0xE0, 0x0C, 0x00, 0x00, 0x83, 0x23, 0xDA, 0xA0, 0x04, 0x00, 0x12, 0x0B, 0xD0, 0x18, 0xC2, 0x3B, 0xD0, 0x1A, 0x12, 0x3B, 0xD0, 0x10, 0x12, 0x4B, 0xD0, 0x1B, 0x92, 0x8D, 0xAA, 0x00, 0x40, 0x01, 0x30, 0xBD, 0x01, 0xF3, 0x2C, 0xBD, 0x01, 0xFE, 0x2C, 0xBD, 0x01, 0x4B, 0x16, 0xE2, 0x07, 0x67, 0x38, 0x8D, 0xAA, 0x00, 0x40, 0x01, 0x40, 0xBD, 0x01, 0xEB, 0x39, 0xBD, 0x01, 0x48, 0x44, 0xBD, 0x01, 0x43, 0x4B, 0xBD, 0x01, 0x58, 0x5D, 0x9D, 0xCD, 0xAA, 0x00, 0x40, 0x01, 0x50, 0xBD, 0x01, 0x71, 0x5F, 0xBD, 0x01, 0x00, 0x00, 0xDA, 0xA0, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xAA, 0x00, 0x40, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xA0, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xAA, 0x00, 0x40, 0x01, 0x90, 0xDA, 0xA0, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xAA, 0x00, 0x40, 0x01, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xA0, 0x04, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xAA, 0x00, 0x40, 0x01, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xA0, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xAA, 0x00, 0x40, 0x01, 0xF0, 0x00, 0x00 } Disassembly: 0: da a0 04 00 00 04 fisub DWORD PTR [eax+0x4000004] 6: d5 a7 aad 0xa7 8: 40 inc eax 9: 07 pop es a: b0 04 mov al,0x4 c: e0 02 loopne 0x10 e: 00 00 add BYTE PTR [eax],al 10: 10 0f adc BYTE PTR [edi],cl 12: ff f2 push edx 14: 10 1d aa 00 40 00 adc BYTE PTR ds:0x4000aa,bl 1a: 10 40 03 adc BYTE PTR [eax+0x3],al 1d: cd f7 int 0xf7 1f: 82 23 bd and BYTE PTR [ebx],0xbd 22: 01 1e add DWORD PTR [esi],ebx 24: 00 00 add BYTE PTR [eax],al 26: 00 01 add BYTE PTR [ecx],al 28: 00 20 add BYTE PTR [eax],ah 2a: 00 da add dl,bl 2c: a0 04 00 02 00 mov al,ds:0x20004 31: 00 02 add BYTE PTR [edx],al 33: 80 00 00 add BYTE PTR [eax],0x0 36: 08 c0 or al,al 38: 90 nop 39: 00 09 add BYTE PTR [ecx],cl 3b: 40 inc eax 3c: 90 nop 3d: 00 0a add BYTE PTR [edx],cl 3f: 00 9d aa 00 40 00 add BYTE PTR [ebp+0x4000aa],bl 45: 30 00 xor BYTE PTR [eax],al 47: 00 a6 09 00 00 aa add BYTE PTR [esi-0x55fffff7],ah 4d: 09 00 or DWORD PTR [eax],eax 4f: 00 ae 09 00 00 b4 add BYTE PTR [esi-0x4bfffff7],ch 55: 09 da or edx,ebx 57: a0 04 00 04 00 mov al,ds:0x40004 5c: 00 0b add BYTE PTR [ebx],cl 5e: 60 pusha 5f: 90 nop 60: 00 0f add BYTE PTR [edi],cl 62: 10 90 00 00 00 0b adc BYTE PTR [eax+0xb000000],dl 68: d0 14 80 rcl BYTE PTR [eax+eax*4],1 6b: 3d aa 00 40 00 cmp eax,0x4000aa 70: 50 push eax 71: bd 01 65 03 bd mov ebp,0xbd036501 76: 01 11 add DWORD PTR [ecx],edx 78: 04 bd add al,0xbd 7a: 01 4c 04 bd add DWORD PTR [esp+eax*1-0x43],ecx 7e: 01 94 04 ed aa 00 40 add DWORD PTR [esp+eax*1+0x4000aaed],edx 85: 00 60 bd add BYTE PTR [eax-0x43],ah 88: 01 e1 add ecx,esp 8a: 04 bd add al,0xbd 8c: 01 ad 05 bd 01 b2 add DWORD PTR [ebp-0x4dfe42fb],ebp 92: 05 bd 01 6a 06 add eax,0x66a01bd 97: da a0 04 00 07 0b fisub DWORD PTR [eax+0xb070004] 9d: d0 19 rcr BYTE PTR [ecx],1 9f: a0 6b d0 17 20 mov al,ds:0x2017d06b a4: 7b d0 jnp 0x76 a6: 1b a0 7b d0 1e a0 sbb esp,DWORD PTR [eax-0x5fe12f85] ac: 7d aa jge 0x58 ae: 00 40 00 add BYTE PTR [eax+0x0],al b1: 80 bd 01 3b 09 bd 01 cmp BYTE PTR [ebp-0x42f6c4ff],0x1 b8: 4d dec ebp b9: 09 bd 01 9e 09 bd or DWORD PTR [ebp-0x42f661ff],edi bf: 01 da add edx,ebx c1: 09 da or edx,ebx c3: a0 04 00 09 0b mov al,ds:0xb090004 c8: d0 1f rcr BYTE PTR [edi],1 ca: 30 9b d0 13 a0 ab xor BYTE PTR [ebx-0x545fec30],bl d0: d0 16 rcl BYTE PTR [esi],1 d2: 10 ab d0 18 70 aa adc BYTE PTR [ebx-0x558fe730],ch d8: da a0 04 00 0a 0b fisub DWORD PTR [eax+0xb0a0004] de: d0 1a rcr BYTE PTR [edx],1 e0: 20 ab d0 1e 50 ab and BYTE PTR [ebx-0x54afe130],ch e6: d0 11 rcl BYTE PTR [ecx],1 e8: 50 push eax e9: bb d0 16 f0 bd mov ebx,0xbdf016d0 ee: aa stos BYTE PTR es:[edi],al ef: 00 40 00 add BYTE PTR [eax+0x0],al f2: b0 bd mov al,0xbd f4: 01 95 0b bd 01 bd add DWORD PTR [ebp-0x42fe42f5],edx fa: 0d bd 01 b8 02 or eax,0x2b801bd ff: e2 07 loop 0x108 101: 16 push ss 102: 0f da a0 04 00 0c 0b pminub mm4,QWORD PTR [eax+0xb0c0004] 109: d0 13 rcl BYTE PTR [ebx],1 10b: c0 fb d0 sar bl,0xd0 10e: 17 pop ss 10f: b0 fb mov al,0xfb 111: d0 1b rcr BYTE PTR [ebx],1 113: 90 nop 114: fb sti 115: d0 11 rcl BYTE PTR [ecx],1 117: 00 ad aa 00 40 00 add BYTE PTR [ebp+0x4000aa],ch 11d: d0 00 rol BYTE PTR [eax],1 11f: 00 1a add BYTE PTR [edx],bl 121: 11 bd 01 24 0a 00 adc DWORD PTR [ebp+0xa2401],edi 127: 00 53 15 add BYTE PTR [ebx+0x15],dl 12a: bd 01 58 17 da mov ebp,0xda175801 12f: a0 04 00 0e 0b mov al,ds:0xb0e0004 134: d0 19 rcr BYTE PTR [ecx],1 136: 41 inc ecx 137: 7b d0 jnp 0x109 139: 12 51 fb adc dl,BYTE PTR [ecx-0x5] 13c: d0 12 rcl BYTE PTR [edx],1 13e: 81 fb d0 11 00 bd cmp ebx,0xbd0011d0 144: aa stos BYTE PTR es:[edi],al 145: 00 40 00 add BYTE PTR [eax+0x0],al 148: f0 00 00 lock add BYTE PTR [eax],al 14b: 35 4c 91 09 c5 xor eax,0xc509914c 150: 1f pop ds 151: bd 01 fa 1f bd mov ebp,0xbd1ffa01 156: 01 55 20 add DWORD PTR [ebp+0x20],edx 159: 5d pop ebp 15a: aa stos BYTE PTR es:[edi],al 15b: 00 40 01 add BYTE PTR [eax+0x1],al 15e: 00 bd 01 38 0c e2 add BYTE PTR [ebp-0x1df3c7ff],bh 164: 07 pop es 165: 61 popa 166: 0f e2 07 psrad mm0,QWORD PTR [edi] 169: 65 0f e2 07 psrad mm0,QWORD PTR gs:[edi] 16d: 59 pop ecx 16e: 10 8a ed aa 00 40 adc BYTE PTR [edx+0x4000aaed],cl 174: 01 10 add DWORD PTR [eax],edx 176: e2 07 loop 0x17f 178: 7f 11 jg 0x18b 17a: e2 07 loop 0x183 17c: 1a 00 sbb al,BYTE PTR [eax] 17e: f3 00 e0 repz add al,ah 181: 0c 00 or al,0x0 183: 00 83 23 da a0 04 add BYTE PTR [ebx+0x4a0da23],al 189: 00 12 add BYTE PTR [edx],dl 18b: 0b d0 or edx,eax 18d: 18 c2 sbb dl,al 18f: 3b d0 cmp edx,eax 191: 1a 12 sbb dl,BYTE PTR [edx] 193: 3b d0 cmp edx,eax 195: 10 12 adc BYTE PTR [edx],dl 197: 4b dec ebx 198: d0 1b rcr BYTE PTR [ebx],1 19a: 92 xchg edx,eax 19b: 8d aa 00 40 01 30 lea ebp,[edx+0x30014000] 1a1: bd 01 f3 2c bd mov ebp,0xbd2cf301 1a6: 01 fe add esi,edi 1a8: 2c bd sub al,0xbd 1aa: 01 4b 16 add DWORD PTR [ebx+0x16],ecx 1ad: e2 07 loop 0x1b6 1af: 67 38 8d aa 00 cmp BYTE PTR [di+0xaa],cl 1b4: 40 inc eax 1b5: 01 40 bd add DWORD PTR [eax-0x43],eax 1b8: 01 eb add ebx,ebp 1ba: 39 bd 01 48 44 bd cmp DWORD PTR [ebp-0x42bbb7ff],edi 1c0: 01 43 4b add DWORD PTR [ebx+0x4b],eax 1c3: bd 01 58 5d 9d mov ebp,0x9d5d5801 1c8: cd aa int 0xaa 1ca: 00 40 01 add BYTE PTR [eax+0x1],al 1cd: 50 push eax 1ce: bd 01 71 5f bd mov ebp,0xbd5f7101 1d3: 01 00 add DWORD PTR [eax],eax ... 1dd: 00 da add dl,bl 1df: a0 04 00 16 00 mov al,ds:0x160004 ... 1f0: 00 00 add BYTE PTR [eax],al 1f2: 00 0d aa 00 40 01 add BYTE PTR ds:0x14000aa,cl 1f8: 70 00 jo 0x1fa ... 206: 00 00 add BYTE PTR [eax],al 208: 00 da add dl,bl 20a: a0 04 00 18 00 mov al,ds:0x180004 ... 21b: 00 00 add BYTE PTR [eax],al 21d: 00 0d aa 00 40 01 add BYTE PTR ds:0x14000aa,cl 223: 90 nop ... 234: da a0 04 00 1a 00 fisub DWORD PTR [eax+0x1a0004] ... 246: 00 00 add BYTE PTR [eax],al 248: 00 0d aa 00 40 01 add BYTE PTR ds:0x14000aa,cl 24e: b0 00 mov al,0x0 ... 25c: 00 00 add BYTE PTR [eax],al 25e: 00 da add dl,bl 260: a0 04 00 1c 00 mov al,ds:0x1c0004 ... 271: 00 00 add BYTE PTR [eax],al 273: 00 0d aa 00 40 01 add BYTE PTR ds:0x14000aa,cl 279: d0 00 rol BYTE PTR [eax],1 ... 287: 00 00 add BYTE PTR [eax],al 289: 00 da add dl,bl 28b: a0 04 00 1e 00 mov al,ds:0x1e0004 ... 29c: 00 00 add BYTE PTR [eax],al 29e: 00 0d aa 00 40 01 add BYTE PTR ds:0x14000aa,cl 2a4: f0 00 00 lock add BYTE PTR [eax],al ... 1 Quote Share this post Link to post
GuyMcBrofist Posted August 2, 2022 Can you provide a diff between the two disassemblies? 0 Quote Share this post Link to post
Alex S. Posted August 2, 2022 1 hour ago, GuyMcBrofist said: Can you provide a diff between the two disassemblies? Sure thing. Here you go: https://www.textcompare.org/?id=62e99e000a2eda45e3bddcdc 1 Quote Share this post Link to post
Blzut3 Posted August 3, 2022 I believe NY00123's gamesrc-ver-recreation repo has the source code reproduced if you want something easier to analyze: https://bitbucket.org/gamesrc-ver-recreation/hexen/src/master/ Pretty sure I saw a post on this forum outlining the changes, but I guess it never made it to the wiki? 3 Quote Share this post Link to post
Alex S. Posted August 3, 2022 15 minutes ago, Blzut3 said: I believe NY00123's gamesrc-ver-recreation repo has the source code reproduced if you want something easier to analyze: https://bitbucket.org/gamesrc-ver-recreation/hexen/src/master/ Pretty sure I saw a post on this forum outlining the changes, but I guess it never made it to the wiki? Thanks! 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.