Jump to content
Search In
  • More options...
Find results that contain...
Find results in...


  • Content count

  • Joined

  • Last visited


About nukeykt

  • Rank

Recent Profile Visitors

1317 profile views
  1. nukeykt

    Doom and Strife source code restoration

    Bumping a thread with some news. Recently I started reverse engineering of the Doom 95 exe. Wanted to do this for a long time actually, mostly because it is directly derived from the DOS doom code and its exe was build using the Watcom compiler(same compiler used to build DOS Doom) and it included debug symbols(!!!). Now when we have perfect DOS doom sources recreation, it can be used as basis for this effort. Reverse engineering process is pretty starightforward: compile dos doom C modules with the right compiler settings and compare to the doom 95 code disassembly, then modify C code until compiled code matches byte by byte (or at least by behaviour). And of course windows/directx related code needs to be written purely based on disassembly. Today I finished first pass of reverse engineering and finally built exe. With some more bugfixing it is mostly working now.
  2. You probably can check gamesrc-ver-recreation's doom repository to see how things worked in original DOS version(s): https://bitbucket.org/gamesrc-ver-recreation/doom
  3. nukeykt

    Z_CT: Uh oh.

    DMX adds end of track event at the memory chunk end for single track midi formats and thus overwrites some of doom's heap data. You can either convert midi file to multitrack MIDI (format 1) or just add 3 extra bytes at the end of file in any hex editor.
  4. nukeykt

    Things about Doom you just found out

    Doom's OPL patches (well, actually Scott Host's patches) were in fact derived from stock OPL patches, that, for example, was used in Windows 3 adlib/sb drivers. While majority of patches were heavily edited/made from scratch there are still few patches that didn't change much or remained unchanged. I recorded few Doom midi files with both Doom and Windows 3 patches if you want to compare. Especially D_BUNNY and D_E2M7 are good examples. https://drive.google.com/drive/folders/1YgoFaf4lsssJlZqgKH54sgmpqumbJFTU?usp=sharing
  5. nukeykt

    Doom and Strife source code restoration

    Update to the Strife restoration A couple more revisions of the Strife executable are covered now: registered v1.1(aka v1.0) and registered v1.2. Both reconstructed EXEs are identical to the original EXE files (up to garbage data between string literals and differences due to the __LINE__ macro). Thus gamesrc-ver-recreation now covers all known registered versions of Strife. The next obvious step is to try to cover the demo versions of the Strife, but I expect much more differences because both demo versions use much earlier revisions of the executable, so I guess I'll leave this for later.
  6. nukeykt

    Doom and Strife source code restoration

    I don't recall changing any setting in my config file. DM me in discord, you can find me in chocolate doom server
  7. nukeykt

    Doom and Strife source code restoration

    I used vanilla dosbox 0.74-3 myself. Maybe you need reset disk cache in dosbox? (ctrl+f4) EDIT: btw, which revision of Doom you're building?
  8. nukeykt

    Doom and Strife source code restoration

    relative to DOBUILD.BAT. In my setup I have 2 folders: one for watcom and one for doom. In watcom folder I have 9.5b + TASM.EXE in BINW folder. In doom folder I have 2 folders: doom tree and dmx. Watcom is mounted on C drive and Doom on D drive. Thus DOBUILD.BAT is located at D:\DOOM\DOBUILD.BAT, dmx_r.lib is at D:\DMX\DMX37\LIB\DMX_R.LIB
  9. nukeykt

    Doom and Strife source code restoration

    did you put files in dmx37 subfolder? so lib file path will be ..\dmx\dmx37\lib\dmx_r.lib
  10. nukeykt

    Doom and Strife source code restoration

    TASM is part of Borland C. DMX code was leaked some time ago. Original link gone shortly after it became known. This post has mirror of dmx.zip. https://www.doomworld.com/forum/post/1521395
  11. nukeykt

    Doom and Strife source code restoration

    It doesn't, Apogee Sound System uses MIDI as native music format, thus if input music is in MIDI format APODMX will send it to ASS as is. For MUS music it converts it to MIDI under the hood.
  12. nukeykt

    Doom and Strife source code restoration

    Some reverse engineering work was involved actually. Heretic for example rewrote video subsystem completely, so I had to reverse engineer it instead. Also comparison between original and reconstructed EXE for the most part was done by using dissassembler output. Yeah, there're some substational differences between Apogee SS+APODMX and DMX. APODMX does not implement all the DMX features (FM double voices, CODEC/ENSONIQ support, GSS sounds, etc.), but it should be good for general use. Good question. I guess it could be called PCDoom again, heh. Actually it started as PCDoom-v3, but then I suggested NY00123 to include this to gamesrc-ver-recreation instead.
  13. nukeykt

    Doom and Strife source code restoration

    Watcom compiler and Turbo assembler are needed to compile these sources. See notes-restoration.md file for recommended compiler versions. I'm aware of its existence. but I don't have much desire/experience on reversing NextStep apps.
  14. Hi, As you know Doom source code as released in 1997 was not for original DOS version, but rather was Linux version cleaned up by Bernd Kreimeier. During clean up, code specific for DOS version was stripped out. Another big change was reorganizing header files, specifically doomdef.h, p_local.h and r_local.h were split to smaller header files. This is where Heretic sources comes in handy. Raven released their code as is, without any sort of clean up. Specifically it has majority of Doom's DOS specific code and header files organization is very close to Doom's original form. The goal of this project is to combine both these sources and get codebase that is close to the Doom's original codebase as possible. Actually I had this idea for a pretty long time and had previous attempts in the form of PCDoom and PCDoom-v2. This time I decided to start mostly from Heretic sources, gradually reverting Raven's code changes by comparing it to Linux Doom sources. I targeted id Anthology Final Doom EXE as it was closest to linuxdoom sources. Eventually I got compiling EXE, but as expected it had lots of differences to original EXE files. Then I gradually fixed all the differences and got EXE that identical to original EXE by behaviours. Once I covered both revisions of Final Doom, NY00123 volunteered and also covered a lot more Doom revisions down to prototype v1.666. This also includes Chex Quest. Meanwhile I decided to try to do the same for Strife executable using restored Doom code. As Strife source code was never released, I had to rely on reverse engineering of original EXE file. After finishing initial reversing resulted EXE had some differences to original EXE. Eventually after lots of trial and error and not without some help from NY00123 we eventually got EXE that identical to original EXE (up to usual garbage data between string literals and differences due to __LINE__ macro). As original release of Doom this does not include proprietary DMX code. You can use APODMX replacement library instead to get complete GPLv2 compatible codebase. TL;DR These repositories recreate different revisions of Doom and Strife codebase. Compiled EXE files are identical to original EXE in term of behaviours. In total both repositories cover 15 different revisions of Doom, Strife and Chex Quest. List of covered Doom revisions: List of covered Strife revisions: Doom repository Strife repository
  15. image.png.85d225d471d1df2e181bb1cdcad7bf93.png

    Strife v1.31/v1.3 source code reconstruction is done. Sources will be released soon alongside reconstructed Doom sources.