Free Download The Book Of Doom

0 views
Skip to first unread message
Message has been deleted

Berry Spitsberg

unread,
Jul 14, 2024, 10:30:57 PM7/14/24
to gradosochti


I have been playing with different image upscaling neural networks : letsenhance.io and Nividia's GameWorks SuperResolution.
I finally used Nvidia's solution (it took some time to be in the beta!) : Infinite amount of requests, better results.
little drawbacks : max output size is 8192, so, for 8x it's a 1024 input, etc... 2 files processed at the same time max.

The process was to pack doom textures into different 1024x1024 pngs (7 iamges), then get the 8x upscaled versions (using 2 different techniques), then blend those results together as they both have qualitys and issues, downsize to 4096 with bicubic supersampling to blend some noise, then downsize to 2048x2048 with nearest neighbour supersampling to keep the sharpness feeling of original doom textures.
the 4x and 8x versions have too much funny AI artistic style artifacts to be used
Unfortunately this comes with some unwanted pixels here and there and a heavy de-noising work was needed. Also the contrast is changed, bright details are brighter, and dark one are darker too, this had to be cleaned as well by removing them and leting the original texture color appear.
The clean isn't perfect but a first alpha release stage has been reached and I can test it ingame...

but I'm stuck, I can't make this work and I need some help to be able to launch gzdoom with the -file parameter and a folder with all Hires pngs . then I can fine tweak from photoshop to gzdoom easily.
If someone more skilled than me with gzdoom modding could take a look
My files (pngs, notworking pk3s) are shared in this google drive folder

Here are some previews of the results (note : the transparency of the vine has been done manually, sadly the upscaler can't handle black and white shapes, but It's not that hard to do manually)

Free Download The Book Of Doom


Download File https://psfmi.com/2yW7ot



Dragonfly : I re-uploaded transparent textures as transparent pngs without cyan background
DooM_RO : I uploaded some 8k sources here, I'll take look in smoothdoom files to see if I can upscale them at the same time of the original ones. Doom2 minor sprite fixing project seems also to be taken into consideration. what bother me is that it's no longer a Hires override pak but a full mod (actually, as I can't make Hires folder work, it's already no longer a Hires pak lol).

Linguica : I'm still fighting with my files to make this work worrectly, with no success :(.
-I split Flats and Patches, did a flats.txt and a patches.txt. only the scale of flats is working, patches scales are still ignored.
-I tried to understand how the HD-Textures.pk3 works, because it does, ( as opposed to mine :D), and still has crazy filenames different from the ones in doom2.wad. The .txts in that file are just appearing as "readme", the patch/scale informations are hidden somehow.

"Much like doom scrolling, we're seeing people mindlessly shop to soothe concerns about the economy and foreign affairs, which could take a toll on their financial wellbeing," said Courtney Alev, Credit Karma's consumer financial advocate.

When receiving a message, one would decrypt it, look at the value of the last byte (call it N), and then insure that the preceding N-1 bytes also had the value of N. Should they have an incorrect value, one has encountered a padding error, and should abort. Since the MAC is part of the encrypted payload, all of this needs to happen before the MAC can be verified. And thus, inevitable doom.

Notes : It seems "variable hightlights" and "Control-Click" are also available on Visual Studio 2010 after installing the Visual Studio 2010 Productivity Power Tools. I cannot understand why this is not part of the vanilla install.

Both codebases are now in the best state possible : One click away from an executable !

  • Download the code.
  • Hit F8 / Commmand-B.
  • Run !

Trivia : In order to run the game you will need the base folder containing the Doom 3 assets. Since I did not want to waste time extracting them from the Doom 3 CDs and updating them: I downloaded the Steam version. It seems id Software team did the same sincethe Visual Studio project released still contains "+set fs_basepath C:\Program Files (x86)\Steam\steamapps\common\doom 3" in the debug settings!

Trivia : The engine was developed with Visual Studio .NET (source). But the code does not feature a single line of C# and the version released requires Visual Studio 2010 Professional in order to compile.
Trivia : Id Software team seems to be fan of the Matrix franchise: Quake III working title was "Trinity" and Doom III working title was "Neo". This explains why you will find all of the source code in the neo subfolder.

Like every engine since idTech2 we find one closed source binary (doom.exe) and one open source dynamic library (gamex86.dll).:


Most of the codebase has been accessible since October 2004 via the Doom3 SDK: Only the Doom3 executable source code was missing. Modders were able to build idlib.a and gamex86.dll but the core of the engine was still closed source.

Note : The engine does not use the Standard C++ Library: All containers (map,linked list...) are re-implemented but libc is extensively used.

Note : In the Game module each class extends idClass. This allows the engine to perform in-house RTTI and also instantiate classes by classname.

Trivia : If you look at the drawing you will see that a few essential frameworks (such as Filesystem) are in the Doom3.exe project. This is a problem since gamex86.dll needs to load assets as well. Those subsystems are dynamically loaded by gamex86.dll from doom3.exe (this is what the arrow materializes in the drawing). If we use a PE explorer on the DLL we can see that gamex86.dll export one method: GetGameAPI:



Things are working exactly the way Quake2 loaded the renderer and the game ddls: Exchanging objects pointers:

When Doom3.exe starts up it:

  • Loads the DLL in its process memory space via LoadLibrary.
  • Get the address of GetGameAPI in the dll using win32's GetProcAddress.
  • Call GetGameAPI.
gameExport_t * GetGameAPI_t( gameImport_t *import ); At the end of the "handshake", Doom3.exe has a pointer to a idGame object and Game.dll has a pointer to a gameImport_t object containing additional references to all missing subsystems such as idFileSystem.

Gamex86's view on Doom 3 executable objects: typedef struct int version; // API version idSys * sys; // non-portable system services idCommon * common; // common idCmdSystem * cmdSystem // console command system idCVarSystem * cvarSystem; // console variable system idFileSystem * fileSystem; // file system idNetworkSystem * networkSystem; // network system idRenderSystem * renderSystem; // render system idSoundSystem * soundSystem; // sound system idRenderModelManager * renderModelManager; // render model manager idUserInterfaceManager * uiManager; // user interface manager idDeclManager * declManager; // declaration manager idAASFileManager * AASFileManager; // AAS file manager idCollisionModelManager * collisionModelManager; // collision model manager gameImport_t;
Doom 3's view on Game/Modd objects: typedef struct int version; // API version idGame * game; // interface to run the game idGameEdit * gameEdit; // interface for in-game editing gameExport_t;
Notes : A great resource to understand better each subsystems is the Doom3 SDK documentation page: It seems to have been written by someone with deep understanding of the code in 2004 (so probably a member of the development team).


For more details here is the fully unrolled loop that I used as a map while reading the code.

It is a standard main loop for an id Software engine. Except for Sys_StartAsyncThread which indicate that Doom3 is multi-threaded. The goal of this thread is to handle the time-critical functions that the engine don't want limited to the frame rate:

  • Sound mixing.
  • User input generation.

Trivia : idTech4 high level objects are all abstract classes with virtual methods. This would normally involves a performance hit since each virtual method address would have to be looked up in a vtable before calling it at runtime. But there is a "trick" to avoid that. All object are instantiated statically as follow: idCommonLocal commonLocal; // Implementation idCommon * common = &commonLocal; // Pointer for gamex86.dll Since an object allocated statically in the data segment has a known type the compiler can optimize away the vtable lookup when commonLocal methods are called. The interface pointer is used during the handshake so doom3.exe can exchange objects reference with gamex86.dll but in this case the vtable cost is not optimized away.

Trivia : Having read most engines from id Software I find it noticeable that some method name have NEVER changed since doom1 engine: The method responsible for pumping mouse and joystick inputs is still called: IN_frame().

This collection of drum grooves and fills is an homage to not only the pioneering greats but also a celebration of the fact that on this side of the millennium, a myriad of doom-influenced bands have surfaced and made sure that this ever-changing genre has continued to thrive. Just look at Pallbearer, Avatarium, Mastodon, Cult of Luna and many more.

The potential knock-on effects of interest rate hikes may have some investors and market observers concerned about the U.S. economy entering a doom loop in 2022. Sure enough, the increasing cost of borrowing money driven by increasing interest rates generally leads to sinking bond values, which has translated into losses for major banks on their bond portfolios. The effect of rate increases on banks is a reminder of the potential for monetary policy to trigger a doom loop, but for the moment, the market appears more concerned about continued interest rate increases rather than the possibility that the United States will be unable to pay its debts.

aa06259810
Reply all
Reply to author
Forward
0 new messages