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

PsyDoom 0.8.3 - PSX Doom port (reverse engineered) for PC

Recommended Posts

8 hours ago, Chris0neilson said:

NICE. Where you put fold map and texture?

 

You can point the -datadir directory to wherever you like on your local machine. If it contains any of the files that are on the disc then PsyDoom will use those versions of the files instead. That way you can overwrite existing maps etc.

 

I added new textures by overwriting the entire of PSXDOOM.WAD with an edited version containing the new textures. Not exactly ideal but it works for the moment. I also had to hex-edit the texture lumps to get them into the PSX Doom format, as well as hex editing the TEXTURE1 lump to add entries for the new wall texture. I've just made a small change to my own fork of SLADE however that can make it do the conversions to the PSX texture format; I might try to see if this would be accepted as a pull request:

https://github.com/BodbDearg/SLADE/commit/fad8c553561d1f6afd0077459d26b3533170f915

 

I also plan to eliminate the use of the TEXTURE1 lump in PsyDoom to make modding easier. It's just there basically as a way of telling how big a texture is without actually loading it, but I think I can bypass/ignore this completely now for PsyDoom.

Share this post


Link to post
3 hours ago, intacowetrust said:

I might try to see if this would be accepted as a pull request

It would. :)

Share this post


Link to post
Posted (edited)

New exploit uncovered for PSYDoom speedrunning in the last 24 hours. Discovered by @depr4vity , PSYDoom seems to support a turbo mode. The running community are dubbing this playback as 'Dep Mode', after its founder.

Mappings:
Digital_MoveForward = W, Up, Gamepad DpUp, Gamepad LeftY-
Digital_MoveBackward = S, Down, Gamepad DpDown, Gamepad LeftY+
Digital_StrafeLeft = A, Gamepad LeftX-
Digital_StrafeRight = D, Gamepad LeftX+

Analog_MoveForwardBack = Gamepad LeftY
Analog_MoveLeftRight = Gamepad LeftX

Mapping Dpad movements and analog movements to the same function on the joystick, results in double speeds.

All manners of speedrunning skips and tricks are being discovered now thanks to this option. Depr4vity got Hangar in under 7 seconds, Spawning Vats in under 10 seconds.... its incredible!

Unfortunately, we have not found a successful way of doing this with a Keyboard and Mouse, so it is exclusive to Controller only. Hybrid methods of using Mouse and Joystick have been found to be successful in use also. Categories for Normal and Dep Mode are offered now on the full game leaderboard.
 

 

 

Full run with Dep mode. 18:37 DOOM 1

Share this post


Link to post
18 hours ago, Gez said:

It would. :)

 

Thanks @Gez, I'll submit a pull request shortly! :)

 

4 hours ago, Alexo said:

New exploit uncovered for PSYDoom speedrunning in the last 24 hours. Discovered by @depr4vity , PSYDoom seems to support a turbo mode. The running community are dubbing this playback as 'Dep Mode', after its founder.

 

Heh... that was not intentional, that's for sure! Thanks for bringing this bug to my attention. Although I will have to fix the issue I don't want to spoil the fun people are seeming to have with the exploit, so perhaps the 2x 'turbo mode' could be formalized as a command line parameter or cheat setting.

Share this post


Link to post

Haven't looked on here and played for a while till today, upgraded from 5.2 and it's made such a big difference, many thanks @intacowetrust

 

I also had to upgrade my display drivers to get the Vulkan renderer to work, definitely worth it though!!! (AMD Radeon Vega 8)

 

Struggling to find any recommendations for improvements now....

 

Other than a proper save system and smoother door opening/closing which have already been mentioned, the only other thing I can think of now would be a way to select Final Doom/Doom from within the program itself at the start instead of having to edit the .cue path in the game_cfg.ini each time you want to change between the two.

 

Or if that's too much work and out of scope of this project, perhaps there could be a separate program specifically for Final Doom like psyfdoom/psyfinaldoom?

Share this post


Link to post
1 hour ago, Redneckerz said:

@intacowetrust I am keeping up a promise.

 

Screenshot used is one you provided privately.

 

There you go. ;)

Thank you for putting up this article.  Perhaps also mention Doom Forever support?

Share this post


Link to post
2 hours ago, Ruritanian said:

Thank you for putting up this article.  Perhaps also mention Doom Forever support?

I rather make Doom Forever first :) but ill look into it.

Share this post


Link to post
15 hours ago, francis247uk said:

Other than a proper save system and smoother door opening/closing which have already been mentioned, the only other thing I can think of now would be a way to select Final Doom/Doom from within the program itself at the start instead of having to edit the .cue path in the game_cfg.ini each time you want to change between the two.

A little launcher would be great imo. Something that you can add each .cue + title to, or a little prompt that asks which game to launch if it detects more than one valid .cue (DOOM.CUE, FINALDOOM.CUE, etc).

Share this post


Link to post
16 hours ago, Redneckerz said:

@intacowetrust I am keeping up a promise.

 

Screenshot used is one you provided privately.

 

There you go. ;)

 

@Redneckerz thank you so much for taking the time to put this together - it looks great! :)

 

19 hours ago, francis247uk said:

Haven't looked on here and played for a while till today, upgraded from 5.2 and it's made such a big difference, many thanks @intacowetrust

I also had to upgrade my display drivers to get the Vulkan renderer to work, definitely worth it though!!! (AMD Radeon Vega 8)

 

6 hours ago, BlueThunder said:

Just got around to trying out the vulkan renderer and I have to say its really awesome!

 

Happy to hear you are both enjoying the new renderer! :)

 

19 hours ago, francis247uk said:

Other than a proper save system and smoother door opening/closing which have already been mentioned, the only other thing I can think of now would be a way to select Final Doom/Doom from within the program itself at the start instead of having to edit the .cue path in the game_cfg.ini each time you want to change between the two.

 

Or if that's too much work and out of scope of this project, perhaps there could be a separate program specifically for Final Doom like psyfdoom/psyfinaldoom?

 

Thanks for the suggestion and as @Lollie mentioned the best thing for that (and my current thinking too) would probably be to have a separate launcher. PsyDoom already has a '-cue' launch parameter that you can use to specify the disc with, so a launcher could just use this.

 

In the meantime you can also use this parameter to create shortcuts or scripts to launch the game disc of your choice. Another workaround would be to create two separate folders for the Doom & Final Doom discs, and copy the same .exe to both places.

Share this post


Link to post
35 minutes ago, intacowetrust said:

 

@Redneckerz thank you so much for taking the time to put this together - it looks great! :)

Happy to hear :) if it is missing any features let me know.

 

That reminds me. Didn't you also had a logo made for PsyDoom?

Share this post


Link to post
6 hours ago, Redneckerz said:

Happy to hear :) if it is missing any features let me know.

 

That reminds me. Didn't you also had a logo made for PsyDoom?

Look at page 4

Share this post


Link to post
1 hour ago, VGA said:

Look at page 4

Indeed, thanks. A lot of designs, but not a final yet, it seems?

Share this post


Link to post
15 hours ago, Redneckerz said:

Indeed, thanks. A lot of designs, but not a final yet, it seems?

 

Not yet - it's something I'll be looking at eventually once all the main features for PsyDoom are done and dusted. This is what I had in the interim (feel free to use if you like):

PsyDoom%20Concept%20Logo.svg

The final logo will likely be just an evolution/polishing of this.

Share this post


Link to post
2 hours ago, intacowetrust said:

 

Not yet - it's something I'll be looking at eventually once all the main features for PsyDoom are done and dusted. This is what I had in the interim (feel free to use if you like):

PsyDoom%20Concept%20Logo.svg

The final logo will likely be just an evolution/polishing of this.

Then ill wont update the article till this is final. :)

Share this post


Link to post

Just put up another new build of PsyDoom, 0.7.4. It can be downloaded from the usual location:

 

https://github.com/BodbDearg/PsyDoom/releases

 

This build contains some limit removing features originally planned for 0.8 and a few bug fixes. The main motivation for this build is to fix the 2x speed exploit but it's also a chance to sneak in a few other small improvements before I dive deep into 0.8 work and exploration, which could take some time.

 

Here is the changelist for the 0.7.4 build:

 

Feature changes & improvements (0.7.4)

  • Add a new '-turbo' command line parameter that enables the 'turbo mode' cheat.
    • Turbo mode allows the player to move and shoot twice as fast, and doors and platforms also operate twice as fast.
  • Vulkan renderer: draw an extended in-game status bar for widescreen mode, using the existing HUD assets.
    • Can be disabled however if letterboxing is preferred.
  • Allow an input key to execute a 'pause' and 'menu back' action at the same time.
    • This allows a key such as 'Escape' to go directly from gameplay to the options screen, bypassing the intermediate 'pause' screen.
    • Change the default key bindings also so that 'Escape' goes directly to the options menu.
  • Vulkan renderer: add a small tweak to make sky scrolling smoother.
  • Engine limit removing: no longer load .IMG files (containing sprites and textures) for maps, instead load resources from WAD files.
    • This makes modding easier since it removes the need to produce these files.
    • We also don't need to worry about lump number references in .IMG files being invalidated if we add new lumps to the main IWAD.
  • Classic renderer limit removing: fix view corruption for tall cliffs of 1024 units or more in height; fix a numerical overflow issue.
  • Spu limit removing: extend SPU RAM to 16 MiB by default and make the amount configurable.
    • Will allow any monster variety on a map without worrying about exceeding SRAM limits, and plenty of SRAM for new music and SFX etc.
  • Spu limit removing: extend the number of available voices from 24 to 64.
    • This should allow PsyDoom to handle even extremely busy scenes and music without dropping any sounds.
  • Spu limit removing: upgrade audio processing and mixing from 16-bit to floating point quality.
    • Improves precision and eliminates distortion on loud sounds caused by audio clipping.
  • Spu: add dynamic range audio compression to limit the strength of very loud sounds.
    • Required since audio loudness is almost unlimited and does not clip anymore with the float SPU.
    • The compression is very light in most cases and barely noticeable until very loud situations occur.

Bug fixes (0.7.4)

  • Fix an exploit where it was possible to move at 2x speed if using analog and digital movement at the same time.
  • Fix an original and PSX specific audio bug that could sometimes cause enemy and player sounds to cut out prematurely.
    • The logic for stopping a missile's spawn sound on explode was slightly flawed, and causing other (unintended) sounds to be stopped instead.
  • Vulkan renderer: fix a failure to redraw the screen while connecting to a multiplayer game, after resizing the window.
  • Debug builds: fix Vulkan validation layer errors on starting a multiplayer game and on encountering an error during a multiplayer game.
  • Windows debug builds: fix an error printed to the console about invalid command line arguments when there are no arguments specified.

 

For 0.8 I'm going to be focusing on extending the engine and removing limits. As part of that work I'm going to be going through the process of making a new (engine stressing!) map along with adding new graphics and new music. It should be a fun chance to explore the possibilities now that the project has made it to this stage, and something I've been looking forward to for a long time.

 

 

Share this post


Link to post
Posted (edited)

Wow, quite ambitious plans!

On the other hand, I doubt it will get much attention since extended maps would work in PsyDoom only, because I don't think similar limit-removing features could be implemented in RE code of PSX Final Doom. I mean, the narrow range of users might be the reason of that. If a regular mapper desires to create a PSX-style map, I think he will go either for GZDoom as it allows much more features and stuff comparing to PSX Doom (I think PSX Doom TC could be used as a base), or make the map rather small so it could it be played on both the real PSX hardware and PsyDoom.

 

I'm happy to be wrong.

Share this post


Link to post
7 hours ago, Dimon12321 said:

Wow, quite ambitious plans!

On the other hand, I doubt it will get much attention since extended maps would work in PsyDoom only, because I don't think similar limit-removing features could be implemented in RE code of PSX Final Doom. I mean, the narrow range of users might be the reason of that. If a regular mapper desires to create a PSX-style map, I think he will go either for GZDoom as it allows much more features and stuff comparing to PSX Doom (I think PSX Doom TC could be used as a base), or make the map rather small so it could it be played on both the real PSX hardware and PsyDoom.

 

I'm happy to be wrong.

 

No you're right, these changes will be for a niche audience only. Mainly for mappers who want a very authentic PSX look, sound and feel but with some of the crushing limits of the real hardware removed. PsyDoom can also be used as a quick way of testing and iterating for those wanting to target the real hardware, and it will be possible to produce custom builds of PsyDoom that have many of those limits restored for that purpose.

 

I'm hoping as well some of the work in this port can possibly be incorporated into other ports to improve efforts like the PSX TC. On the ZDoom forums I left an anonymous post (because my 'intacowetrust' user somehow got deleted) about how the PSX lighting & shading could maybe be incorporated into GZDoom:

https://forum.zdoom.org/viewtopic.php?f=18&t=71282&sid=675fceb732dcc2f055fa43f9b07e22a8&start=15#p1184715

 

Someone was also asking @bradharding about adding PSX style reverb to Doom Retro:

https://github.com/bradharding/doomretro/issues/29

 

It would be possible to route sounds through PsyDoom's 'SimpleSpu' module for that purpose, it's very self contained and should be easy to integrate with other projects:

https://github.com/BodbDearg/PsyDoom/blob/master/simple_spu/Spu.h

https://github.com/BodbDearg/PsyDoom/blob/master/simple_spu/Spu.cpp

 

The PsyQ SDK reverb presets can be found here:

https://github.com/BodbDearg/PsyDoom/blob/master/game/PsyQ/LIBSPU_Resources.cpp

 

Share this post


Link to post
7 hours ago, VGA said:

PsyDoomRenderLimits ... When?

 

Heh... I don't know about that but if someone wants to compile without the limit removing stuff then you can just do the following in CMake (uncheck this box):

 

image.png.afc96709514048b3e75a12207b6e804a.png

 

Also for more accurate Z_Malloc behavior, target 32-bit when generating the project:

image.png.618fc25504de423cd0ce8a3b3962077c.png

 

The memory heap in PsyDoom is much larger (2x) in the standard 64-bit build, because I have to make it that way to account for larger 64-bit pointers and extra size for some of the data structures. This compensation is probably overly generous in most situations and will allow you to go over the limits of what the original hardware could do. 

//------------------------------------------------------------------------------------------------------------------------------------------
// How much heap space is available to Doom's zone memory allocator, via functions like 'Z_Malloc'.
//
// The heap space available was roughly as follows for the original games:
//  - Doom          : 1,368,380 bytes
//  - Final Doom    : 1,357,328 bytes
//------------------------------------------------------------------------------------------------------------------------------------------
static constexpr uint32_t Z_HEAP_SIZE = 1368380 * (IS_64_BIT_BUILD ? 2 : 1);

 

Share this post


Link to post

Nice job with the widescreen hud! With some logical width fiddling (289 used here) it looks nice even in Ultrawide

 

 

psydoom_ultrawide.png.9d212641945f09c9d481f7f1ec404520.png

 

 

Share this post


Link to post
36 minutes ago, lokbustam257 said:

do i need the original psx doom to play this?

Yeah, you need the CD image.

Share this post


Link to post
12 hours ago, intacowetrust said:

Some fun with NUTS.WAD:

 

 

The fact it didn't go completely to Hell is impressive.

 

Though, to be fair, the logic is also running at less than half the speed of PC Doom.

Share this post


Link to post
Posted (edited)

EDIT EDIT: It works now! The WAD file name needs to be in caps so "MAP01.wad" won't work but "MAP01.WAD" will. I think that should be mentioned in the README.

 

So I made a custom PSX-Doom map but I have no idea how to use the file override feature and I can't find any info on how to use it. FYI I have no IMG file (PsyDoom doesn't require these) for the map and no custom textures are used

 

EDIT: Used the -datadir command but that did nothing

Edited by Wavy

Share this post


Link to post
3 hours ago, Wavy said:

EDIT EDIT: It works now! The WAD file name needs to be in caps so "MAP01.wad" won't work but "MAP01.WAD" will. I think that should be mentioned in the README.

 

Yeah it's a bug you ran into - the comparison for file overrides should be case insensitive. Coincidentally I was working on fixing this issue tonight; in the next release you shouldn't need to worry about case.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×