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

On 8/30/2020 at 7:44 AM, NightFright said:

Simple question and probably even easier to answer, but asking anyway since it's driving me nuts right now: How to get back to the menu once you are ingame?

 

The procedure is the same as the original game, which I guess might be a little strange compared to most PC games. Basically you just pause the game and execute what PsyDoom calls the 'Menu Back' action, which essentially does the same thing in most cases as the 'Select' button on the original PSX version. After that the options menu will open, with the 'Main Menu' option being at the bottom.

 

The default binds for 'Pause' and 'Menu Back' are:

Toggle_Pause = P, Pause, Return, Gamepad Start
Menu_Back = Escape, Tab, Mouse Right, Gamepad B, Gamepad Back

Usually I just hit 'Return' and 'Esc' since that's the most convenient for me.

 

7 hours ago, fenderc01 said:

@intacowetrust Do you have any plans to fix map-specific bugs like the one linked below? I know it's technically an issue with the map itself and not the engine, but I'm assuming you could patch it in memory upon loading the map.

 

Bugs like that will be left alone. I would consider fixing an original map bug via a patch if it was a showstopper/game-breaker (i.e blocks all progress) but as far as I know there are no instances of that in either Doom or Final Doom.

Share this post


Link to post
3 hours ago, intacowetrust said:

Bugs like that will be left alone. I would consider fixing an original map bug via a patch if it was a showstopper/game-breaker (i.e blocks all progress) but as far as I know there are no instances of that in either Doom or Final Doom.

The one he just mentioned is indeed a showstopper. :P

 

Quote

On the Automap you'll see a pair of parallel yellow lines at that west-side opening. Walk up to the eastern-most of those two lines and try to activate it like a door or switch. (The line can be activated from either direction.) Once activated, the room's ceiling and walls will drop down to floor level, while making a typical door-moving sound. If you're standing under that ceiling, it will bounce off you and rise back up again temporarily. If you're outside this room and the ceiling reaches the floor, it will remain down permanently. The sides of the lowered ceiling will block access to the room, and display a darkened, scrambled surface texture.

I just double-checked myself, and it's this whole roughly T-shaped sector that lowers. It's only if you use this specific line - if you walk past that to the other one and try to use it, nothing happens.

 

ps19bugm.gif

 

The teleporter pad doesn't lower, nor does anything past the yellow lines. If you go on to that part of the level, you have zero way of getting back in to that chunk - if you try to open the "door" it will play the sound but not raise. There's usually little reason to actually go back here though, since all that's back past that would be the opening chunk of the level.

 

If you go back the red teleporter instead, however, this will bring you back to the start area, and you will be trapped in here (completely) once the sector has lowered - going into the teleporter yet again meets you with the same glitched wall that you can't raise, and since you can't step off the teleporter pad, you can't teleport back out (though even if you could, all you've got is the start section - the rest of the map is past the sealed-off sector that's lowered).

 

(Unrelated: I found out that in the shotgun secret area not far from the start, the collision detection makes it impossible to grab the box of shells, and possibly the stimpack inside it as well. Not sure if it's due to the shellbox being too close to the walls/corners, or me cheating and putting on God Mode made it so that the collision checking bounced out once it tried to make me pick up the stimpack, if its collision overlaps the shellbox - but I don't think it does, I think it's the wall proximity.)

Edited by Dark Pulse

Share this post


Link to post
3 hours ago, Dark Pulse said:

The one he just mentioned is indeed a showstopper. :P

 

You're right, yes - looks like the devil's in the details. If you go out into the large series of hallways after activating those lines then it's not a problem, since it doesn't it doesn't prevent you from reaching the end of the map, just the starting point. If you go through the teleporter however you're done for however and completely stuck.

 

Maybe in this instance a patch could be considered, though lower priority I'd say since you'd really have to be going out of your way to make this one a problem. It could be fixed by simply removing the special from those two offending lines.

Share this post


Link to post
16 hours ago, intacowetrust said:

You're right, yes - looks like the devil's in the details. If you go out into the large series of hallways after activating those lines then it's not a problem, since it doesn't it doesn't prevent you from reaching the end of the map, just the starting point. If you go through the teleporter however you're done for however and completely stuck.

 

Maybe in this instance a patch could be considered, though lower priority I'd say since you'd really have to be going out of your way to make this one a problem. It could be fixed by simply removing the special from those two offending lines.

Yeah, no need to get real fancy when the simple solution will work. (Especially since that's extremely unlikely to break any demos.)

 

What would probably be good would be to go through all the original maps and check for errors like this that may be unnoticed. I tried loading up some of the straight PSX Doom maps in the GEC Builder, but it seemed to not want to load them at all, even when I changed the header to PWAD and eliminated the null byte padding after the ENDOFWAD marker.

 

EDIT: Actually, I was tired when I wrote that. The maps on-disc have compressed lumps inside the WADs; the ones produced by the GEC builder don't until they're finalized, so the GEC Builder won't load them "straight."

Edited by Dark Pulse

Share this post


Link to post

Hi @intacowetrust, runs great for me, thanks for all your hard work putting this together, it's appreciated!

 

Even works with multiple .bin files for me as well, although no music at start menu/level complete screen (music plays in game though, no biggie!)

 

As optional extras, would there be any scope in future for:

 

  • Initial option to select between both Doom and Final Doom, can have .cue & .bin files in the same folder
  • Saves
  • Smooth door & enemy animations
  • Higher resolution options
  • Widescreen support (both field of view and status bar, remove the black boxes either side for example)
  • Bit more user friendly way of changing options would be great - was a bit tricky to locate the folder where they are stored, then editing .ini files correctly is quite difficult for a novice user

 

I also like the PS Startup sound and Williams pages pre main menu, appreciate I'm probably in the minority and for copyright purposes etc is likely not going to happen.

 

Can anyone help -  I'm playing on Windows and trying to get this to work with a new Playstation Classic controller (USB) for that authentic old school feel, as for nostalgia purposes this is my favourite way to play compared to mouse/keyboard or Xbox Controller.

 

With regards to amending the control_bindings.ini file, I'm a little unsure where to start.

 

As per the original PSX Doom manual, and then mapping the controller in GZDoom for example, it recognises the inputs as follows:

 

Fire = Triangle = JOY1

Use / Open = Circle = JOY2

Move Forward = Dpad Up = AXIS1MINUS

Move Backwards = Dpad Down = AXIS1PLUS

Strafe Left = L1 = JOY7

Strafe Right = R1 = JOY8

Turn Left = Dpad Left = AXIS2MINUS

Turn Right = Dpad Right = AXIS2PLUS

Run = Square = JOY4

Strafe = X = JOY3

Next Weapon = R2 = JOY6

Previous Weapon = L2 = JOY5

Toggle Automap = Select = JOY9

 

PSX Doom Controls.png

Edited by francis247uk

Share this post


Link to post

@francis247uk

 

Map the buttons using the Xbox 360 Controller Emulator (https://www.x360ce.com) and use the control_bindings.ini below.

 

Untitled.png.3d20b5051acea44e8c8edeb267fc82ac.png

 

Spoiler

#---------------------------------------------------------------------------------------------------
# Control bindings: available input source names/identifiers.
#
# Assign these inputs to actions listed below to setup control bindings.
# Separate multiple input sources for one action using commas (,).
#
# Notes:
#   (1) All input source names are case insensitive.
#   (2) The following keyboard keys names must be escaped/prefixed with backslash (\) when used:
#         = [ ] # ; ,
#   (3) Similar keyboard keys are collapsed into a range for brevity (e.g A-Z).
#   (4) For a full list of available keyboard key names, including very uncommon ones, see:
#         https://wiki.libsdl.org/SDL_Scancode
#
# Mouse Buttons:
#       Mouse Left              Mouse X1
#       Mouse Right             Mouse X2
#       Mouse Middle
#
# Mouse Wheel axis, normal and inverted (-N to +N range):
#       Mouse Wheel
#       Inv Mouse Wheel
#
# Mouse Wheel axis, positive or negative sub-axis only (0 to +N range):
#       Mouse Wheel+
#       Mouse Wheel-
#
# Gampad axes with a -1.0 to +1.0 range: normal & inverted
#       Gamepad LeftX           Gamepad RightX          Inv Gamepad LeftX       Inv Gamepad RightX
#       Gamepad LeftY           Gamepad RightY          Inv Gamepad LeftY       Inv Gamepad RightY
#
# Gamepad trigger axes and positive or negative axis subsets with a 0.0 to 1.0 range:
#       Gamepad LeftTrigger     Gamepad RightTrigger
#       Gamepad LeftX-          Gamepad LeftX+          Gamepad LeftY-          Gamepad LeftY+
#       Gamepad RightX-         Gamepad RightX+         Gamepad RightY-         Gamepad RightY+
#
# Gamepad buttons:
#       Gamepad A               Gamepad DpUp            Gamepad LeftStick
#       Gamepad B               Gamepad DpDown          Gamepad RightStick
#       Gamepad X               Gamepad DpLeft          Gamepad LeftShoulder
#       Gamepad Y               Gamepad DpRight         Gamepad RightShoulder
#       Gamepad Back            Gamepad Start           Gamepad Guide
#
# Keyboard keys (commonly used, see link above for full list):
#       A-Z                     Return                  Backspace               Home
#       0-9                     Escape                  Pause                   End
#       Keypad 0-9              Space                   PageUp                  Insert
#       F1-F12                  Tab                     PageDown                Delete
#       Left                    Right                   PrintScreen             CapsLock
#       Up                      Down                    ScrollLock              Numlock
#       Left Ctrl               Left Shift              Left Alt                Application
#       Right Ctrl              Right Shift             Right Alt               Menu
#       Left GUI                Right GUI               VolumeUp                VolumeDown
#       -                       \=                      \[                      \]
#       \                       \#                      \;                      '
#       \,                      `                       .                       /
#       Keypad /                Keypad *                Keypad -                Keypad +
#       Keypad Enter            Keypad .
#---------------------------------------------------------------------------------------------------


#---------------------------------------------------------------------------------------------------
# Analog movement and turning actions: these must a gamepad axis with a -1.0 to +1.0 range.
# Note: analog turn sensitivity is specified by the gamepad sensitivity values in input_cfg.ini.
#---------------------------------------------------------------------------------------------------
Analog_MoveForwardBack = 
Analog_MoveLeftRight = 
Analog_Turn = 

#---------------------------------------------------------------------------------------------------
# Digital movement and turning actions. Turn sensitivity and acceleration are based on the original
# PSX values, though greater precision can be achieved if using uncapped framerates.
#---------------------------------------------------------------------------------------------------
Digital_MoveForward = Gamepad DpUp
Digital_MoveBackward =  Gamepad DpDown
Digital_StrafeLeft = Gamepad LeftShoulder
Digital_StrafeRight = Gamepad RightShoulder
Digital_TurnLeft = Gamepad DpLeft
Digital_TurnRight = Gamepad DpRight

#---------------------------------------------------------------------------------------------------
# In-game actions & modifiers
#---------------------------------------------------------------------------------------------------
Action_Use = Gamepad B
Action_Attack = Gamepad Y
Action_Respawn = Gamepad A, Gamepad B, Gamepad X, Gamepad Y, Gamepad LeftShoulder, Gamepad RightShoulder, Gamepad LeftTrigger, Gamepad RightTrigger
Modifier_Run = Gamepad X
Modifier_Strafe = Gamepad A

#---------------------------------------------------------------------------------------------------
# Pause & Automap toggle
#---------------------------------------------------------------------------------------------------
Toggle_Pause = Gamepad Start
Toggle_Map = Gamepad Back

#---------------------------------------------------------------------------------------------------
# Weapon switching: relative and absolute
#---------------------------------------------------------------------------------------------------
Weapon_Scroll = 
Weapon_Previous = Gamepad LeftTrigger
Weapon_Next = Gamepad RightTrigger
Weapon_FistChainsaw = 
Weapon_Pistol = 
Weapon_Shotgun = 
Weapon_SuperShotgun = 
Weapon_Chaingun = 
Weapon_RocketLauncher = 
Weapon_PlasmaRifle = 
Weapon_BFG = 

#---------------------------------------------------------------------------------------------------
# Menu & UI controls
#---------------------------------------------------------------------------------------------------
Menu_Up = Gamepad DpUp
Menu_Down = Gamepad DpDown
Menu_Left = Gamepad DpLeft
Menu_Right = Gamepad DpRight
Menu_Ok = Gamepad A, Gamepad B, Gamepad X, Gamepad Y
Menu_Back = Gamepad Back
Menu_Start = Gamepad Start
Menu_EnterPasswordChar = Gamepad A, Gamepad B, Gamepad X
Menu_DeletePasswordChar = Gamepad Y

#---------------------------------------------------------------------------------------------------
# Automap controls
#---------------------------------------------------------------------------------------------------
Automap_ZoomIn = Gamepad LeftShoulder
Automap_ZoomOut = Gamepad RightShoulder
Automap_MoveUp = Gamepad DpUp
Automap_MoveDown = Gamepad DpDown
Automap_MoveLeft = Gamepad DpLeft
Automap_MoveRight = Gamepad DpRight
Automap_Pan = Gamepad A

#---------------------------------------------------------------------------------------------------
# Mappings to the original PlayStation controller buttons for the sole purpose of entering cheat
# code sequences on the pause menu, the original way. For example inputs mapped to the PSX 'Cross'
# button will be interpreted as that while attempting to enter an original cheat code sequence.
#---------------------------------------------------------------------------------------------------
PSXCheatCode_Up = Gamepad DpUp
PSXCheatCode_Down = Gamepad DpDown
PSXCheatCode_Left = Gamepad DpLeft
PSXCheatCode_Right = Gamepad DpRight
PSXCheatCode_Triangle = Gamepad Y
PSXCheatCode_Circle = Gamepad B
PSXCheatCode_Cross = Gamepad A
PSXCheatCode_Square = Gamepad X
PSXCheatCode_L1 = Gamepad LeftShoulder
PSXCheatCode_R1 = Gamepad RightShoulder
PSXCheatCode_L2 = Gamepad LeftTrigger
PSXCheatCode_R2 = Gamepad RightTrigger

 

 

Edited by fenderc01

Share this post


Link to post

Hi @francis247uk thanks for the feedback! On some of the points raised:

 

11 hours ago, francis247uk said:

Even works with multiple .bin files for me as well, although no music at start menu/level complete screen (music plays in game though, no biggie!)

 

Glad to hear! The CD audio music issue (which occurs with multiple .bin files) will be fixed in the next release - I've finally sorted out a lot of the sound related stuff with a new SPU implementation. For now it can be worked around by using a single .bin and .cue file pair.

 

11 hours ago, francis247uk said:
  • Saves
  • Smooth door & enemy animations
  • Higher resolution options
  • Widescreen support (both field of view and status bar, remove the black boxes either side for example)

 

Yeah these are all down on my future list of things to look at: https://github.com/BodbDearg/PsyDoom/blob/master/docs/todolist.txt

 

11 hours ago, francis247uk said:
  • Initial option to select between both Doom and Final Doom, can have .cue & .bin files in the same folder
  • Bit more user friendly way of changing options would be great - was a bit tricky to locate the folder where they are stored, then editing .ini files correctly is quite difficult for a novice user

 

A standalone (or integrated) launcher would be great for these things - I've no concrete plans for such a thing yet but it's on my mind. I think a simple QT based thing might be the way to go on that to avoid the headaches of dealing with all the different windowing systems on Windows, Mac and (eventually) Linux.

 

11 hours ago, francis247uk said:

I also like the PS Startup sound and Williams pages pre main menu, appreciate I'm probably in the minority and for copyright purposes etc is likely not going to happen.

 

I'm planning on adding support for the opening movie (Williams logo) but not the PS startup since a lot of the data for that is stored in the BIOS. The opening sectors of the game disc actually contain the vector graphics for the 'PS' logo as a kind of copyright measure but not the sound data for that sequence AFAIK. I don't think it would be worth adding a PS BIOS dependency back again just for this purpose - I worked very hard to get rid of that :)

 

6 hours ago, fenderc01 said:

@francis247uk

 

Map the buttons using the Xbox 360 Controller Emulator (https://www.x360ce.com) and use the control_bindings.ini below.

 

  Reveal hidden contents


#---------------------------------------------------------------------------------------------------
# Control bindings: available input source names/identifiers.
#
# Assign these inputs to actions listed below to setup control bindings.
# Separate multiple input sources for one action using commas (,).
#
# Notes:
#   (1) All input source names are case insensitive.
#   (2) The following keyboard keys names must be escaped/prefixed with backslash (\) when used:
#         = [ ] # ; ,
#   (3) Similar keyboard keys are collapsed into a range for brevity (e.g A-Z).
#   (4) For a full list of available keyboard key names, including very uncommon ones, see:
#         https://wiki.libsdl.org/SDL_Scancode
#
# Mouse Buttons:
#       Mouse Left              Mouse X1
#       Mouse Right             Mouse X2
#       Mouse Middle
#
# Mouse Wheel axis, normal and inverted (-N to +N range):
#       Mouse Wheel
#       Inv Mouse Wheel
#
# Mouse Wheel axis, positive or negative sub-axis only (0 to +N range):
#       Mouse Wheel+
#       Mouse Wheel-
#
# Gampad axes with a -1.0 to +1.0 range: normal & inverted
#       Gamepad LeftX           Gamepad RightX          Inv Gamepad LeftX       Inv Gamepad RightX
#       Gamepad LeftY           Gamepad RightY          Inv Gamepad LeftY       Inv Gamepad RightY
#
# Gamepad trigger axes and positive or negative axis subsets with a 0.0 to 1.0 range:
#       Gamepad LeftTrigger     Gamepad RightTrigger
#       Gamepad LeftX-          Gamepad LeftX+          Gamepad LeftY-          Gamepad LeftY+
#       Gamepad RightX-         Gamepad RightX+         Gamepad RightY-         Gamepad RightY+
#
# Gamepad buttons:
#       Gamepad A               Gamepad DpUp            Gamepad LeftStick
#       Gamepad B               Gamepad DpDown          Gamepad RightStick
#       Gamepad X               Gamepad DpLeft          Gamepad LeftShoulder
#       Gamepad Y               Gamepad DpRight         Gamepad RightShoulder
#       Gamepad Back            Gamepad Start           Gamepad Guide
#
# Keyboard keys (commonly used, see link above for full list):
#       A-Z                     Return                  Backspace               Home
#       0-9                     Escape                  Pause                   End
#       Keypad 0-9              Space                   PageUp                  Insert
#       F1-F12                  Tab                     PageDown                Delete
#       Left                    Right                   PrintScreen             CapsLock
#       Up                      Down                    ScrollLock              Numlock
#       Left Ctrl               Left Shift              Left Alt                Application
#       Right Ctrl              Right Shift             Right Alt               Menu
#       Left GUI                Right GUI               VolumeUp                VolumeDown
#       -                       \=                      \[                      \]
#       \                       \#                      \;                      '
#       \,                      `                       .                       /
#       Keypad /                Keypad *                Keypad -                Keypad +
#       Keypad Enter            Keypad .
#---------------------------------------------------------------------------------------------------


#---------------------------------------------------------------------------------------------------
# Analog movement and turning actions: these must a gamepad axis with a -1.0 to +1.0 range.
# Note: analog turn sensitivity is specified by the gamepad sensitivity values in input_cfg.ini.
#---------------------------------------------------------------------------------------------------
Analog_MoveForwardBack = 
Analog_MoveLeftRight = 
Analog_Turn = 

#---------------------------------------------------------------------------------------------------
# Digital movement and turning actions. Turn sensitivity and acceleration are based on the original
# PSX values, though greater precision can be achieved if using uncapped framerates.
#---------------------------------------------------------------------------------------------------
Digital_MoveForward = Gamepad DpUp
Digital_MoveBackward =  Gamepad DpDown
Digital_StrafeLeft = Gamepad LeftShoulder
Digital_StrafeRight = Gamepad RightShoulder
Digital_TurnLeft = Gamepad DpLeft
Digital_TurnRight = Gamepad DpRight

#---------------------------------------------------------------------------------------------------
# In-game actions & modifiers
#---------------------------------------------------------------------------------------------------
Action_Use = Gamepad B
Action_Attack = Gamepad Y
Action_Respawn = Gamepad A, Gamepad B, Gamepad X, Gamepad Y, Gamepad LeftShoulder, Gamepad RightShoulder, Gamepad LeftTrigger, Gamepad RightTrigger
Modifier_Run = Gamepad X
Modifier_Strafe = Gamepad A

#---------------------------------------------------------------------------------------------------
# Pause & Automap toggle
#---------------------------------------------------------------------------------------------------
Toggle_Pause = Gamepad Start
Toggle_Map = Gamepad Back

#---------------------------------------------------------------------------------------------------
# Weapon switching: relative and absolute
#---------------------------------------------------------------------------------------------------
Weapon_Scroll = 
Weapon_Previous = Gamepad LeftTrigger
Weapon_Next = Gamepad RightTrigger
Weapon_FistChainsaw = 
Weapon_Pistol = 
Weapon_Shotgun = 
Weapon_SuperShotgun = 
Weapon_Chaingun = 
Weapon_RocketLauncher = 
Weapon_PlasmaRifle = 
Weapon_BFG = 

#---------------------------------------------------------------------------------------------------
# Menu & UI controls
#---------------------------------------------------------------------------------------------------
Menu_Up = Gamepad DpUp
Menu_Down = Gamepad DpDown
Menu_Left = Gamepad DpLeft
Menu_Right = Gamepad DpRight
Menu_Ok = Gamepad A, Gamepad B, Gamepad X, Gamepad Y
Menu_Back = Gamepad Back
Menu_Start = Gamepad Start
Menu_EnterPasswordChar = Gamepad A, Gamepad B, Gamepad X
Menu_DeletePasswordChar = Gamepad Y

#---------------------------------------------------------------------------------------------------
# Automap controls
#---------------------------------------------------------------------------------------------------
Automap_ZoomIn = Gamepad LeftShoulder
Automap_ZoomOut = Gamepad RightShoulder
Automap_MoveUp = Gamepad DpUp
Automap_MoveDown = Gamepad DpDown
Automap_MoveLeft = Gamepad DpLeft
Automap_MoveRight = Gamepad DpRight
Automap_Pan = Gamepad A

#---------------------------------------------------------------------------------------------------
# Mappings to the original PlayStation controller buttons for the sole purpose of entering cheat
# code sequences on the pause menu, the original way. For example inputs mapped to the PSX 'Cross'
# button will be interpreted as that while attempting to enter an original cheat code sequence.
#---------------------------------------------------------------------------------------------------
PSXCheatCode_Up = Gamepad DpUp
PSXCheatCode_Down = Gamepad DpDown
PSXCheatCode_Left = Gamepad DpLeft
PSXCheatCode_Right = Gamepad DpRight
PSXCheatCode_Triangle = Gamepad Y
PSXCheatCode_Circle = Gamepad B
PSXCheatCode_Cross = Gamepad A
PSXCheatCode_Square = Gamepad X
PSXCheatCode_L1 = Gamepad LeftShoulder
PSXCheatCode_R1 = Gamepad RightShoulder
PSXCheatCode_L2 = Gamepad LeftTrigger
PSXCheatCode_R2 = Gamepad RightTrigger

 

 

 

Thanks for taking the time to document all this @fenderc01, this should be helpful for anyone wanting a more original control scheme out of the box.

 

By default the game is optimized for a typical Xbox or PS4 style controller and SDL (which I use for input) deals exclusively in terms of Xbox style inputs. If you have something that doesn't quite fit that mold then it's a matter of making sure your driver (or whatever is used to configure) is setup to map that controller's buttons to sensible Xbox equivalents. Then once that is done adjust PsyDoom's mappings using the available Xbox style inputs listed in the comments.

 

5 hours ago, fenderc01 said:

@intacowetrust When you enter an invalid password, the text is positioned over the password.

 

113270113_Screenshot(81).png.1d3c5efc48ec27c3171bf0426ce3844a.png

 

Ooops... Must have happened with the Final Doom changes. Thanks for pointing out!

 

Share this post


Link to post

If this ever gets quicksave support, it will blow any existing PSX TC out of the water, at least as far as I am concerned. As awesome and accurate some imitations already got, this is (or will be) the real deal. One day.

Share this post


Link to post
1 hour ago, BlueThunder said:

Would it be possible to implement a button to toggle run on/off instead of having to hold a key?

 

Yep, good callout - I'll make a note of this.

Share this post


Link to post

Will it also be possible to restore the original framerate limits for map testers? Just a suggestion, not necessarily important. Like if your map ain't chuggin', it ain't PSX Doom. :P

Share this post


Link to post
1 hour ago, Gregory Stephens said:

Will it also be possible to restore the original framerate limits for map testers? Just a suggestion, not necessarily important. Like if your map ain't chuggin', it ain't PSX Doom. :P

 

PsyDoom can run at the original 30 FPS cap if required; just set the following value in 'game_cfg.ini' to '0':

#---------------------------------------------------------------------------------------------------
# Uncapped framerate toggle.
# Setting to '1' allows PsyDoom to run beyond the original 30 FPS cap of PSX Doom.
# Frames in between the original 30 FPS keyframes will have movements and rotations interpolated.
#---------------------------------------------------------------------------------------------------
UncapFramerate = 0

If you're really feeling like punishment you can even drop the framerate down to the 15 FPS cap used for demo recording and playback. This makes for a very laggy experience. To do this set the following value in 'game_cfg.ini' to '1':

#---------------------------------------------------------------------------------------------------
# Whether to restrict player update logic to a consistent tick-rate that advances at the same speed
# as enemies and the game world; this forced tick-rate will be '15 Hz' when using NTSC timings.
# Normally player logic updates at 30 Hz when using NTSC timings, framerate permitting.
#
# If this mode is enabled ('1') then input lag will be increased, and player physics will feel more
# 'floaty' due to a bug in the original game which causes weaker gravity under lower framerates.
# Generally this setting should be left disabled, unless you are really curious...
# Its main use is to ensure consistent demo recording & playback, where it will be force enabled.
# Note: this setting is ignored during demos and networked games where you are not the host/server.
#---------------------------------------------------------------------------------------------------
UseDemoTimings = 1

If you're looking to emulate the performance characteristics of the PlayStation hardware though (to judge how a map would perform), I would suggest a reasonably accurate emulator for quick prototyping. PsyDoom will always be pretty much sitting at whatever FPS cap you give it since modern hardware is so damn powerful. The real hardware of course is always best for judging performance, but emulators should be able to give you a good estimate.

 

EDIT: one further thing to add. If you use 'UncapFramerate = 1' with 'UseDemoTimings = '1' then you basically get 15 Hz updates/keyframes for the player but with movements interpolated between those 15 Hz keyframes. This is the mode used to play back demos by default since they must be run at 15 FPS for consistency reasons. This is a very odd mode to play in and mainly just drives up your input lag, so probably not a combination you would want.

Edited by intacowetrust

Share this post


Link to post

Managed to play some Final Doom today - plays perfectly, great stuff.

 

Created a shortcut to the settings folder where the .ini's are stored and a shortcut back to the game folder - it helped massively if you want to go in and out trying various changes of the settings quickly, and the simple "QUIT" option in-game on the main screen works great as well, thanks for implementing.

 

When using @Fenderc01 & @Ruritanian solutions for playing with a gamepad, I found that if I bound "Toggle_Map" & "Menu_Back" to the same key/button, when pausing and bringing up the menu functioned the same as I remembered on the Playstation, so might be a suggestion for the default binds potentially? (Would be "Gamepad Back" or "M" or "Tab") - don't think it interferes anywhere having them on the same key.....

 

Long term, to avoid having to use another program to bind the keys either via emulating an Xbox 360 controller or emulating the keyboard (for non Xbox controller), could the game hypothetically be programmed to recognise the generic numbered buttons of a generic game controller - so keep the default binds the same so it doesn't interfere for the majority, but allow for them to be used as options in the control_bindings.ini - so the "# Gamepad buttons:" section looked something like this potentially:

 

# Gamepad buttons:
#       Gamepad A               Gamepad DpUp            Gamepad LeftStick
#       Gamepad B               Gamepad DpDown        Gamepad RightStick
#       Gamepad X               Gamepad DpLeft          Gamepad LeftShoulder
#       Gamepad Y               Gamepad DpRight        Gamepad RightShoulder
#       Gamepad Back           Gamepad Start           Gamepad Guide

#       Gamepad 1                Gamepad 2                 Gamepad 3

#       Gamepad 4                Gamepad 5                 Gamepad 6

#       Gamepad 7                Gamepad 8                 Gamepad 9

#       Gamepad 10              Gamepad 11                Gamepad 12

 

For reference, when you plug in the Playstation Classic Controller, windows recognises it as in the below picture.

 

If too much hassle, then no worries of course!

 

 

 

 

Capture.PNG

Edited by francis247uk

Share this post


Link to post
On 9/5/2020 at 9:02 AM, francis247uk said:

When using @Fenderc01 & @Ruritanian solutions for playing with a gamepad, I found that if I bound "Toggle_Map" & "Menu_Back" to the same key/button, when pausing and bringing up the menu functioned the same as I remembered on the Playstation, so might be a suggestion for the default binds potentially? (Would be "Gamepad Back" or "M" or "Tab") - don't think it interferes anywhere having them on the same key.....

 

Yeah for the Xbox controller I have the default behavior the same as the PSX more or less, the 'back' button functions the same as the 'select' button did originally:

Toggle_Map = Tab, M, Gamepad Back
Menu_Back = Escape, Tab, Mouse Right, Gamepad B, Gamepad Back

 

On 9/5/2020 at 9:02 AM, francis247uk said:

Long term, to avoid having to use another program to bind the keys either via emulating an Xbox 360 controller or emulating the keyboard (for non Xbox controller), could the game hypothetically be programmed to recognise the generic numbered buttons of a generic game controller

 

I think this should be possible to do via SDL using the older 'Joystick' API - that's basically the SDL2 'GameController' API but without all the logic for mapping many different controller types to a standardized Xbox style controller. I believe via that I can get generic 'button 1', 'axis 2' etc. without really knowing what they are.

Share this post


Link to post

@intacowetrust I've been following your GitHub repository for a while now and was wondering what your plans are for the audio tools. Is it going to be a series of command line tools that the end user can use, more for developers, or something else entirely?

Share this post


Link to post
On 9/14/2020 at 8:26 AM, fenderc01 said:

@intacowetrust I've been following your GitHub repository for a while now and was wondering what your plans are for the audio tools. Is it going to be a series of command line tools that the end user can use, more for developers, or something else entirely?

 

Yeah I've been working on some simple command line tools to dump and rebuild audio related stuff for the game. They're developer focused tools but anyone of course can take the source, build and use - or wrap a pretty GUI around them. My goal is to get to a point where new music can be produced via a standard DAW (FL Studio in my case) using a VST instrument/sampler which emulates the PSX Spu and it's sound for a single input .VAG and ADSR envelope settings. I also want to make another VST DSP that can emulate PlayStation's reverb on the FX chain side.

Share this post


Link to post

Cant got key at The Mansion. Plz fix the gravity

 

Psydoom2.png

Edited by Chris0neilson : use UseDemoTimings = 1 weak gravity to got key.

Share this post


Link to post

Hey, can add Mapinfo on doom level in map folder, when load level map and title on doom level.

Add "No Monsters" in command line. when type 'no monsters' on command line then play doom without monsters.

 

Psydoom3.png

Share this post


Link to post
8 hours ago, Chris0neilson said:

Cant got key at The Mansion. Plz fix the gravity

 

Psydoom2.png

 

Yep good callout - it's on my TODO list to fix up the game's gravity inconsistency and have it somewhere between the super floaty 15 FPS strength and 'drop like a rock' 30 FPS strength which makes the key in 'The Mansion' inaccessible, and also the secret jump in 'The Gauntlet'. My thinking is the real hardware often fluctuated between the two extremes, depending on frame timings - resulting in something more in the middle.

 

8 hours ago, Chris0neilson said:

Hey, can add Mapinfo on doom level in map folder, when load level map and title on doom level.

 Add "No Monsters" in command line. when type 'no monsters' on command line then play doom without monsters.

 

Yeah some basic map info is on the agenda too. I like the no monsters idea though, I'll make a note of it.

Share this post


Link to post

Awesome to see this in the works, even as an experiment.

 

MIDI seems pretty serviceable, especially so for music that is more in line with PSX Doom. I wonder if the timing issue noted in the video (I believe you meant the drums after the PSX conversion?) could be alleviated by using separate drum samples and notes, rather than using one long continuous loop. Longer rhythmic samples are bound to be sensitive to pitch and timing variances. It can be a problem even when playback timing is rock solid, eg: a drum loop can fall off-beat if its pitch is not precisely tuned.

 

Like I said way back on page 5, I'd love to see a solution for converting tracker formats (like XM/IT) - if it's at all viable / if the interest is there. I'm also just interested in playing with PSX Doom music tools when they become available, regardless of how they function.

 

1 hour ago, Impboy4 said:

@intacowetrust that's amazing, but imho having upbeat music in levels for a game that's more on the creepy factor would not work.

I agree with this on a general level, but I would also be very happy to figure out how to disprove this.

Share this post


Link to post

There error, when load maps. Something missing.

 

Psydoom5.png

 

 

 

Add chain lamp (Doomednum: 90) ingame maps.

 

Edited by Chris0neilson

Share this post


Link to post
16 hours ago, Impboy4 said:

@intacowetrust that's amazing, but imho having upbeat music in levels for a game that's more on the creepy factor would not work.

 

Yeah it's just a test track and not something I would consider for an actual mod - I wrote this small piece about a month ago (unrelated, just for fun) to experiment a with a particular musical scale. I was curious to see what the process would be like to take an arbitrary track written in a modern DAW and to get that track into the game. This one was a nice test case because it was small and simple.

 

For a proper track you'd likely want to lower the volume and tempo a lot, obviously go with darker and more dissonant set of notes, stick in weird noises, possibly pitch bends and so on... One thing I've noticed as well is that the PlayStation's SPU tends to produce some interesting sounds at lower pitches, probably due to it's own unique sample interpolation which kicks in more at that point, and also sounds great when reverb is layered on top. Some of this stuff is probably part of where the Aubrey magic comes from...

 

Another technique I've also noticed Aubrey using is thickening up pad sounds by layering many instances of the same sound, but with different panning and ADSR envelope settings. This gives pads a very dynamic 'swirling' stereo feel despite using only mono samples. It also explains why occasionally there appear to be issues with monster sounds etc. cutting out... The main pad (which plays at the very start) for the MAP01 music for instance uses 7 voices per note, and in some places does chords of 3 notes - meaning 21 of the PlayStation's 24 hardware voices are gobbled up by a single chord. For the longest time I thought there was a bug in the sequencer system with sounds occasionally cutting out but now knowing this fact, the bug makes perfect sense. The music notes are prioritized higher than most SFX also so it's usually always the in-game stuff that gets muted and not the music itself. PsyDoom can of course eventually fix this limitation by improving the SPU 'hardware' itself and adding more voices ;-)

 

13 hours ago, Lollie said:

MIDI seems pretty serviceable, especially so for music that is more in line with PSX Doom

 

Indeed. The entire Williams sequencer system also seems to be modelled rather heavily on MIDI, even down to the way it encodes delays to the next note in the variable length quantity format. This makes MIDI a natural format choice for importing sequences into the game.

 

13 hours ago, Lollie said:

I wonder if the timing issue noted in the video (I believe you meant the drums after the PSX conversion?) could be alleviated by using separate drum samples and notes, rather than using one long continuous loop.

 

Not sure what the issue is yet, could be the samples, envelopes, a bug in conversions or perhaps the game itself is messing up the timing somehow or perhaps skipping a note here and there. I did have the issues with the drum samples you mentioned (initially) but that was down to my own editing mistake with the loop points. The drift problem isn't too bad because the drum loop is just playing for 1 bar and then being started anew at the next bar again. I also seem to be getting the timing issue when drums aren't playing too.

 

13 hours ago, Lollie said:

Like I said way back on page 5, I'd love to see a solution for converting tracker formats (like XM/IT) - if it's at all viable / if the interest is there. I'm also just interested in playing with PSX Doom music tools when they become available, regardless of how they function.

 

You could probably work in that format if you really wanted to and convert to MIDI. I think using a DAW might be superior though because it could allow for VST instruments to replicate the sound of the PlayStation very accurately - so you'll get a really good idea of how it will sound in game. With just pure samples it's hard to recreate the same SPU interpolation, ADSR behavior, reverb and so on.

 

13 hours ago, Lollie said:

I agree with this on a general level, but I would also be very happy to figure out how to disprove this.

 

While a 'happy' track in general might not fit perhaps the odd fleeting happy chord or melody might serve to contrast nicely against the unrelenting darkness and help to disorient/unsettle the listener - which is kind of what you want for this sort of thing. It would need to be done carefully/sparingly though.

Share this post


Link to post
1 hour ago, Chris0neilson said:

There error, when load maps. Something missing.

 

Psydoom5.png

 

 

 

Add chain lamp (Doomednum: 90) ingame maps.

 

 

Interesting - looked like the GEC Master Edition added support for that unused sprite. I can add support to PsyDoom for it too, will make a note.

Share this post


Link to post
8 hours ago, intacowetrust said:

You could probably work in that format if you really wanted to and convert to MIDI. I think using a DAW might be superior though because it could allow for VST instruments to replicate the sound of the PlayStation very accurately - so you'll get a really good idea of how it will sound in game. With just pure samples it's hard to recreate the same SPU interpolation, ADSR behavior, reverb and so on. 

FWIW: Trackers like OpenMPT and MadTracker can handle VSTs perfectly fine! Classic formats like XM/IT have also long supported envelopes for volume and panning, which can be easily configured to behave like ADSR. I've used trackers and DAWs for over a decade, so I'm confident both can match PS1 capabilities just as well as each other.

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
×