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

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

Recommended Posts

Hey everyone, it's that time again... PsyDoom 0.5.0 is now available! The latest release can be downloaded from here:

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

 

Here's a list of what's new in this version:

 

Feature changes & improvements

  • Added full support for Final Doom.
    • PsyDoom can now play any variant of PlayStation Doom or Final Doom, PAL or NTSC.
      • Note: with the exception of demos, PAL builds will play using NTSC timings (unless specified otherwise) since the overall user experience is better. PAL style gameplay can be forced via game settings however, if desired.
  • Added fully bindable controls.
    • Key mappings can now be changed via the 'control_bindings.ini' configuration file.
  • Output scaling/stretch mode can now be configured.
  • Doubled the sound buffer size to help prevent audio skipping on some machines.
  • Implemented reading of the ISO-9660 filesystem used by PlayStation CD-ROMs.
    • PsyDoom no longer hardcodes the start sectors and sizes of files on disc, as the retail build of PSX Doom originally did.
    • This makes producing a modded PSX Doom CD-ROM image with edited files much easier.
    • The size and location of each game file on disc is now retrieved at startup from the ISO filesystem.
  • CD-ROM I/O improvements: removed all CD-ROM emulation except for music playback.
    • File I/O is now direct, much simpler, faster and more reliable.
  • Removed the old PlayStation controller configuration screen.
    • This screen no longer serves any purpose in PsyDoom.
    • It may be replaced by some other new in-game menus eventually.
  • Classic cheat key sequences can now be entered on the pause menu using an Xbox controller or keyboard.
    • Check your 'control_bindings.ini' file for which keys map to which original PSX buttons.
  • Password screen: added the 'exit' option found from Final Doom.
    • The option now appears for both games on this screen.
  • Mouse wheel weapon switching improvements: allow movement of more than one weapon slot at a time with the wheel.
  • Added Final Doom map format support: allow MAPXX.ROM to be used if MAPXX.WAD is not found.
    • MAPXX.ROM files are interpreted as being in the Final Doom map format, which is slightly different to the original PSX Doom.
      • The binary data structure for sectors and sidedefs differs for Final Doom.
  • Added various changes to ensure full demo compatibility with Final Doom and the PAL version of both games.
    • Game settings can be tweaked to use PAL timings and Final Doom's adjustments.
  • Expanded PsyDoom's automated demo testing suite considerably.
    • PsyDoom has now verified demo compatibility with PSX Doom and Final Doom for both the PAL and NTSC versions, via 4 complete playthroughs recorded as a collection of demo files against the original games.
    • The only demos which can't be played back precisely at this point are those that generate undefined behavior.
      • Some undefined behavior bugs such as buffer overflows cause unpredictable outcomes that can't be reproduced.
      • PsyDoom fixes all known undefined behavior bugs and replaces them with well-defined outcomes, but it can't reproduce any undefined/unpredictable behavior potentially triggered by original demos.
      • Thankfully however PSX Doom did not have too many commonly triggered undefined behavior bugs, so not a huge issue overall in terms of demo compatibility!
  • WMD (Williams Module File) loading: use a dynamically allocated buffer big enough to hold any .WMD file.
    • A stepping stone towards larger custom/modded .WMD files in future.
  • Add partial support for the 'PSX Doom Forever' romhack.
    • The game should be mostly be the exact same, but the hacked/modded Russian strings from the binary won't carry over.
    • This will be the extent of PsyDoom's support for this.
  • The path to the .cue file used can now be configured/changed.
  • Made a movement input latency tweak added for PsyDoom configurable; can disable if original behavior is desired.
  • Made the Lost Soul Spawn limit configurable.
  • Input: the analog to digital threshold is now configurable.
  • I_Error: use a system error dialog for error messages such as 'Texture Cache Overflow'.
    • More user friendly but can be disabled if the original behavior of hanging the game with an error message on-screen is desired.
  • Trim some unused stuff from SDL to reduce PsyDoom's binary size slightly.
  • MacOS: Metal is now used instead of OpenGL.
    • Should be more forward compatible for future MacOS versions.
  • SDL upgraded from 2.0.10 to 2.0.12: contains various bug fixes and improvements.
  • Conflicting movement and turning now always cancels.
    • This can be disabled however if required.

 

Bug fixes

  • Weapon switching: fix a bug where you couldn't immediately switch back to the previously held/ready weapon once another weapon switch was started.
  • Fixed interpolation in demos being broken.
  • Fix small gaps at the sides of the screen during screen fades.
  • Fix not being able to close the game window in windowed mode and make resizing easier.
    • Don't capture the mouse again until the window's client area is clicked.
  • Fix a bug where mouse wheel movement would sometimes not register, and possibly other input events.
  • Various corner case demo compatibility fixes.
  • LCD (sound sample) loader: fixed a bug with trying to read too much data from .LCD files.
  • MacOS: the file overrides mechanism for modding now works.
  • MacOS: fix a strange freezing issue on pressing the left mouse button (only) just after startup.
  • MacOS: fix the mouse wheel not working when shift is pressed.
  • Fix undefined evaluation order for the expression 'P_Random() - P_Random()'.
    • Depending on compiler this could produce different results since either side of the '-' can be evaluated first.
    • Make a 'P_SubRandom' function like the Calico DOOM source port to fix.

 

Video playthrough of Final Doom MAP08, Geryon, in PsyDoom 0.5.0

 

Edited by intacowetrust

Share this post


Link to post
15 minutes ago, Gregory Stephens said:

So I was finally able to get it running in Wine with your 0.5.0 version you released but the sound is really garbled and plays too fast.

 

That's unfortunate... Sounds like your best bet might be to wait for native Linux support then. That should hopefully resolve all of these issues.

Share this post


Link to post

The controller configuration looks about as painless as an .ini file can be, appreciate the list of key/gamepad controls a lot. Hope to see in-game config return sometime in the future!

 

I've yet to play with Final Doom, but here's a couple small things:

1) While in fullscreen, the outer border isn't being cleared. Normally this wouldn't matter as nothing is being rendered outside the play window anyway, but Nvidia likes to pop up notifications for its GeForce Experience / Shadowplay stuff, so they end up leaving behind trails that remain for the entirety of the play session. This would likely occur for any other PC notifications that appear over the top of the game.

ezgif-6-8262f62963b0.gif.d10c52b2e17b4c8a57a5122a0c7ec2c0.gif

 

2) Ultimate Doom: E1M3 Toxin Refinery's secret exit results in the end-game intermission screen being played, and then it returns to the main menu. (Free world record for PsyDoom speedrunners?)

Share this post


Link to post
12 hours ago, Gez said:

Interesting. It'd be nice to have the details of both format on the wiki.

https://doomwiki.org/wiki/Sector

 

Indeed. Is that something I can edit myself or is there someone in charge who can add it? The two versions of the data structures for WAD sectors and sidedefs can be found in the code starting here, if you want to see the differences:

https://github.com/BodbDearg/PsyDoom/blob/aaf3eff3514d3eb1ab867cb17009560d3a3ea1f4/game/Doom/Game/doomdata.h#L85

 

2 hours ago, Lollie said:

The controller configuration looks about as painless as an .ini file can be, appreciate the list of key/gamepad controls a lot. Hope to see in-game config return sometime in the future!

 

I've yet to play with Final Doom, but here's a couple small things:

1) While in fullscreen, the outer border isn't being cleared. Normally this wouldn't matter as nothing is being rendered outside the play window anyway, but Nvidia likes to pop up notifications for its GeForce Experience / Shadowplay stuff, so they end up leaving behind trails that remain for the entirety of the play session. This would likely occur for any other PC notifications that appear over the top of the game.

 

Thanks for the checking out the build! Yeah that issue actually slightly annoys me also when recording videos, usually alt-tabbing in/out fixes it. It's probably something to do with SDL not painting/refreshing that region of the screen which is unused. Will have to investigate...

 

2 hours ago, Lollie said:

2) Ultimate Doom: E1M3 Toxin Refinery's secret exit results in the end-game intermission screen being played, and then it returns to the main menu. (Free world record for PsyDoom speedrunners?)

 

Heh! Thanks for reporting - that's pretty bad! I must have accidentally introduced the issue with some of the changes for Final Doom. I think I know what the problem is and should have a fix shortly.

Share this post


Link to post
42 minutes ago, intacowetrust said:

Indeed. Is that something I can edit myself or is there someone in charge who can add it?

 

Yes, you can edit pages on DoomWiki even without the registration. Then a moderator has to check your changes (regardless of registration) and accept it.

Share this post


Link to post
12 minutes ago, Dimon12321 said:

Yes, you can edit pages on DoomWiki even without the registration. Then a moderator has to check your changes (regardless of registration) and accept it.

 

Thanks for the info, I'll take a look!

 

Just posted a minor bug-fix update for the issues mentioned by @Lollie with version 0.5.1: https://github.com/BodbDearg/PsyDoom/releases

 

Changes in this version:

  • Ultimate Doom: fix warping to secret levels resulting in the finale screen being shown.
  • Fix certain on-screen notifications (like NV video recording) leaving marks in fullscreen.

Share this post


Link to post

A friend of mine wants to know how to switch between the two games from the port.

Readme file still says only Doom.cue file is needed. Unless this has been changed.

Share this post


Link to post
59 minutes ago, Impboy4 said:

A friend of mine wants to know how to switch between the two games from the port.

Readme file still says only Doom.cue file is needed. Unless this has been changed.

You'd need the Final Doom CUE/data in there, not the original Doom CUE.

 

I don't think there's a way to have it pick either/or if both are in there, unless I'm wrong.

Share this post


Link to post
26 minutes ago, Dark Pulse said:

You'd need the Final Doom CUE/data in there, not the original Doom CUE.

 

I don't think there's a way to have it pick either/or if both are in there, unless I'm wrong.

 

The way I do it is to configure the ini to load the Doom.cue file by default and I use a batch file (or you could use a shortcut) that points to the Final Doom.cue via command line argument.

Share this post


Link to post
24 minutes ago, fenderc01 said:

The way I do it is to configure the ini to load the Doom.cue file by default and I use a batch file (or you could use a shortcut) that points to the Final Doom.cue via command line argument.

That also works, as a workaround.

Share this post


Link to post
5 hours ago, Impboy4 said:

A friend of mine wants to know how to switch between the two games from the port.
Readme file still says only Doom.cue file is needed. Unless this has been changed.

 

Yeah the game is set to look for 'Doom.cue' by default. This can either point to Doom or Final Doom, PsyDoom detects which game it is dealing with from the contents of the disc, specifically name of the start executable found at the disc root: https://github.com/BodbDearg/PsyDoom/blob/7070bb974458b209d47d101890199687c08b00ec/game/PcPsx/Game.cpp#L47

 

4 hours ago, Dark Pulse said:

I don't think there's a way to have it pick either/or if both are in there, unless I'm wrong.

 

Correct - there is no switching dialog on startup currently. There are two ways you could get around this:

 

(1) Create a separate folder with another copy of 'PsyDoom.exe' and 'Doom.cue' but have 'Doom.cue' this time referring to the other game.

(2) Use the following command line argument via a shortcut or batch file, as @fenderc01 mentioned:

PsyDoom.exe -cue "Path To My Cue/MyCue.cue"

This might be a useful function that a launcher could provide in future.

Share this post


Link to post

Thanks for doing this.  It's fascinating being able to play Doom Forever natively on a PC.  I've also just had a playthrough of Master Levels in Final Doom.

 

This is an amazing source port.  Please, please, please add game saving as the next feature.

Share this post


Link to post
On 8/17/2020 at 2:03 AM, intacowetrust said:

 

Video playthrough of Final Doom MAP08, Geryon, in PsyDoom 0.5.0

 

This is a got'dang masterpiece. Thank you, sir, for all your service to the community. I salute you. 

Share this post


Link to post
7 hours ago, Job said:

This is a got'dang masterpiece. Thank you, sir, for all your service to the community. I salute you. 

Yes, it's stunning.  PlayStation Final Doom at high framerates is beyond amazing.  It's also making Doom Forever more accessible, which is I think a better game that it's given credit for.

Share this post


Link to post
8 hours ago, Ruritanian said:

It's also making Doom Forever more accessible, which is I think a better game that it's given credit for.

Russian PSYOPS hard at work, I see...

Share this post


Link to post

Interesting, now that this supports Final Doom I can see if my PC map conversion thing actually works. I'll give this a try whenever I get some time! I am pretty excited about this!

Share this post


Link to post
8 hours ago, Chris0neilson said:

Error:

Doom.cue or Fdoom.cue

 

Psydoom Error1.png

It's sensitive as to how the game was ripped.

 

For Doom, the first one I found on archive.org worked.  For Final Doom, I needed to manually edit the cue file to remove a PREGAP line and then it worked.

Share this post


Link to post

Dumb question. I have the original disc for both games. What's the process for ripping them for use in PsyDoom? Are there any special parameters I need to ensure during the process?

Share this post


Link to post
3 hours ago, Job said:

Dumb question. I have the original disc for both games. What's the process for ripping them for use in PsyDoom? Are there any special parameters I need to ensure during the process?

I think just a typical BIN/CUE works fine.

 

IIRC there was some wackiness over a multi-track BIN, though regarding music. Just rip it as a one-track BIN with a CUE and you'll apparently be okay.

Share this post


Link to post
1 hour ago, Dark Pulse said:

IIRC there was some wackiness over a multi-track BIN, though regarding music. Just rip it as a one-track BIN with a CUE and you'll apparently be okay.

 

Yep that's a bug which needs to be fixed. For now the preference is for a single .bin + .cue.

 

16 hours ago, Chris0neilson said:

Error: Doom.cue or Fdoom.cue

 

Hey @Chris0neilson would you be able to share your .cue file which generated this error (just the .cue, not the .bin files) and the size (in bytes) of each of your .bin files? You can DM me if you like. It seems to be complaining that your .cue file is pointing to data that does not exist on disk, but I need to check the logic to make sure nothing wacky is happening.

Share this post


Link to post
Quote

Hey @Chris0neilson would you be able to share your .cue file which generated this error (just the .cue, not the .bin files) and the size (in bytes) of each of your .bin files? You can DM me if you like. It seems to be complaining that your .cue file is pointing to data that does not exist on disk, but I need to check the logic to make sure nothing wacky is happening.

 

Doom.cue

FILE "DOOM.BIN" BINARY
REM SESSION 01
  TRACK 01 MODE2/2352
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 01 07:59:14
  TRACK 03 AUDIO
    INDEX 01 11:10:33
  TRACK 04 AUDIO
    INDEX 01 13:08:27
  TRACK 05 AUDIO
    INDEX 01 17:06:31
  TRACK 06 AUDIO
    INDEX 01 20:34:42
  TRACK 07 AUDIO
    INDEX 01 22:44:44
  TRACK 08 AUDIO
    INDEX 01 23:40:31

 

Share this post


Link to post

Something helpful I've noticed.

 

1. Start the game as normal, with your controller connected.

2. Win+G to bring up Xbox Game Bar.

3. Alt+Tab to go back to PsyDoom.

 

The Windows mouse pointer is now at the location where a crosshair would be.

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
×