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

dsda-doom source port [v0.24.3]

Recommended Posts

Rather than bend over backwards to support the demo attract reel, seems like it'd be more sensible to hash-check the demos and blacklist the ones that are "known" to be broken (i.e. just skip 'em) -- that way it at least won't look broken to a casual eye. It's definitely a bit strange to the layperson that the first thing the player sees when firing up the demo-compatible Heretic port is a broken demo reel. :P

Share this post


Link to post

Love the ability to store and recall key-frames while recording. A console emulator would call this a save state.

 

I think my first demo with this tool will be a re-run of Anagnorisis, followed by actually finishing my okumap run. I finished okumap, but my demo de-synced after about two minutes from the 116:00 mark. This is where I changed from prboom-plus 2.5.1.5.r4553 to dsda-doom 0.12.1. I still have the file if the de-sync is in fact caused by a bug and someone wants to look. Perhaps when the new features are more complete I'll try again.

 

While recording, would it be possible when recalling a keyframe to have the demo go into replaying the inputs like a -recordfromto command until Join (Q) is pressed? This might prevent de-syncs in really long demos by having actual inputs to read from before the player wants to record new input. Would also like to be able to change speed with -solo-net.

Share this post


Link to post

Key-frames are not stable right now - you shouldn't use them for recording unless you want to check syncing frequently.

 

Having it replay the demo up to the key frame makes no sense...that would be identical to using recordfromto like normal.

Share this post


Link to post

Hello!  I've encountered a very strange issue with the latest version.  I wanted to use IDCLEV to warp to a particular level in-game, but every time I type as much as ID, I get advanced to the next sequential level, so it seems I can't use IDCLEV or any other classic DOOM cheat codes.  Has anyone else encountered this?

Share this post


Link to post

Knowing key-frames are still unstable, I do exit out every two in-game minutes and do a recordfromto to make sure things are still in sync. I think what may have happened is I saved a manual key-frame, rewind past the manual key-frame then restore the manual key-frame. Game logic wouldn't care as it's just a save state. Demo, not so much.

 

I certainly don't want to replay the demo from the beginning up to the key-frame. I want the demo to play from the key-frame in recordfomto until Join is pressed.

Share this post


Link to post

Could you develop screen melt feature for -viddump?

Thanks.

 

That could make prboom obsolete.

Share this post


Link to post
38 minutes ago, L0l1nd3r said:

Knowing key-frames are still unstable, I do exit out every two in-game minutes and do a recordfromto to make sure things are still in sync. I think what may have happened is I saved a manual key-frame, rewind past the manual key-frame then restore the manual key-frame. Game logic wouldn't care as it's just a save state. Demo, not so much.

 

I certainly don't want to replay the demo from the beginning up to the key-frame. I want the demo to play from the key-frame in recordfomto until Join is pressed.

Ah ok I see what you mean now.

To make it so the game doesn't auto-join when going back to a key frame -> yes, this is something I'd like to add when I get to refining the feature. The fact that key-frames work at all while recording is kind of just "accidental" in the sense that I didn't do anything special to make it work and didn't see any reason to disable it - so that's why some obvious QoL stuff isn't implemented - it just wasn't the focus. But I also want to make them more stable so I can say "key frames are stable and now a great tool for tasing" when the time comes. There are a lot of things I want to do with key frames, so this is definitely a wider topic that will be touched "soon".

Share this post


Link to post
21 minutes ago, kokrean said:

Could you develop screen melt feature for -viddump?

Thanks.

 

That could make prboom obsolete.

This should probably be brought to prboom+. I'd recommend asking about that in the associated thread.

Share this post


Link to post
9 hours ago, kraflab said:

Did you set I or D to the next level button?

It was set to D, but I actually never set that myself; that was the default value.  Interesting to have a shortcut for that; I'll have to see if I ever end up using it.  Thanks for the guidance!

Share this post


Link to post
17 minutes ago, Bytefyre said:

It was set to D, but I actually never set that myself; that was the default value.  Interesting to have a shortcut for that; I'll have to see if I ever end up using it.  Thanks for the guidance!

It shouldn't be the default, more likely you bound something else to the same key it was using, which causes PrBoom+ to swap the bindings for the two.

Share this post


Link to post
On 2/12/2021 at 5:43 AM, JuanchoES said:

Should i turn on carry fractional tics? It is better?

 

Edit: Mmm, i think it has less input lag.

I downloaded the MarkC fix (a mod that disables acceleration NO MATTER WHAT in windows 10) and now disabling the fractional tics the mouse feels sooo smooth, interesting.

Share this post


Link to post

I ran into an array overrun in the rewind code (P_TrueUnArchiveThinkers) that's flagged as heap corruption in debug builds with MSVC.

 

mobj_count is incremented before indexing into the mobj_p table here - presumably to skip over the special entry at zero: src/p_saveg.c#L1010.

However, the mobj_p table never allocates an additional space for that special entry: src/p_saveg.c#L835 so the final entry is written past the end.

 

Here's a minimal change that addresses the immediate issue:

Spoiler

  diff --git a/prboom2/src/p_saveg.c b/prboom2/src/p_saveg.c
  index ddf99811..fef3fc3b 100644
  --- a/prboom2/src/p_saveg.c
  +++ b/prboom2/src/p_saveg.c
  @@ -832,7 +832,7 @@ void P_TrueUnArchiveThinkers(void) {
         I_Error ("P_TrueUnArchiveThinkers: Unknown tc %i in size calculation", *save_p);

       // first table entry special: 0 maps to NULL
  -    *(mobj_p = malloc(mobj_count * sizeof *mobj_p)) = 0;   // table of pointers
  +    *(mobj_p = malloc((mobj_count + 1) * sizeof *mobj_p)) = 0;   // table of pointers
       save_p = sp;           // restore save pointer
     }

 

 

Share this post


Link to post
On 2/14/2021 at 10:04 PM, PaquoCastor said:

It was funny to see the fuzz effect in Heretic. I also had the chaos device sprite not appear in the inventory bar.

Both of these issues are fixed for the next release, thanks for the report!

Share this post


Link to post

I don't know if this is something specific to this port or not, but I've noticed that some of the sound effects (such as fireball impact and teleportation) are getting cut off before they finish playing in their entirety.  I checked my sound settings and the number of channels is set to 32 (which I understand to be the maximum value allowed).  Has anyone else ever run into this, and if so, what would be the solution?

Share this post


Link to post

The automap scrolling controls aren't working correctly in v0.13.0. The map doesn't stop scrolling when you let go of the button, and when it's stuck in this state of perpetual motion, follow mode is also ignored (though it will still say "follow mode on").

 

I also have a couple patches to share if you don't mind (if you'd prefer PRs on GitHub I can do that too). I only tested these with 0.12.1, but they should work with 0.13.0 as well.

 

1. Hide extended HUD when automap is active in overlay mode. Extended HUD covers the map name in the automap, making both unreadable. Unless you want to get fancy and shift the HUD's position to fit, the simple thing to do would be to hide the extended HUD while the overlay map is active (which is already the case for the non-overlay automap mode).

Spoiler

diff --git a/prboom2/src/dsda/hud.c b/prboom2/src/dsda/hud.c
index c00d3995..0e3ab3bc 100644
--- a/prboom2/src/dsda/hud.c
+++ b/prboom2/src/dsda/hud.c
@@ -137,7 +137,7 @@ void dsda_DrawIntermissionTime(void) {
 static dboolean dsda_ExHudVisible(void) {
   return dsda_ExHud() && // extended hud turned on
          viewheight != SCREENHEIGHT && // not zoomed in
-         (!(automapmode & am_active) || (automapmode & am_overlay)); // automap inactive
+         !(automapmode & am_active); // automap inactive
 }
 
 static void dsda_UpdateExHud(void) {

 

 

2. Refresh status bar when rewinding keyframes. This was mentioned as having been fixed in v0.9.1, but I'm still encountering the bug. It occurs when rewinding an automatic keyframe (not loading a manual keyframe, using software renderer (not OpenGL), and having wipe effect enabled (i.e. not disabling it in the options menu). It seems that the dsda_SkipNextWipe function the rewind feature uses skips the wipe effect itself but not the part of wipe_EndScreen that restores the previous frame prior to the wipe effect, resulting in the status bar reflecting the state prior to the rewind. This doesn't happen when using the OpenGL renderer because the OpenGL renderer redraws the status bar every frame.   This also doesn't happen when the wipe effect option is disabled because render_wipescreen skips wipe_StartScreen and wipe_EndScreen, which dsda_SkipNextWipe doesn't do. Applying dsda_skip_next_wipe in all the same places render_wipescreen appears seems to do the trick.

Spoiler

diff --git a/prboom2/src/d_main.c b/prboom2/src/d_main.c
index 8d2086bb..d9b28537 100644
--- a/prboom2/src/d_main.c
+++ b/prboom2/src/d_main.c
@@ -221,7 +221,7 @@ static void D_Wipe(void)
   dboolean done;
   int wipestart = I_GetTime () - 1;
 
-  if (!render_wipescreen || dsda_SkipWipe()) return;//e6y
+  if (dsda_SkipWipe()) return;//e6y
   do
     {
       int nowtime, tics;
@@ -420,6 +420,7 @@ void D_Display (fixed_t frac)
     // wipe update
     wipe_EndScreen();
     D_Wipe();
+    dsda_SkipNextWipeFinish();
   }
 
   // e6y
diff --git a/prboom2/src/dsda/settings.c b/prboom2/src/dsda/settings.c
index 4e21b8fe..c4c7c29c 100644
--- a/prboom2/src/dsda/settings.c
+++ b/prboom2/src/dsda/settings.c
@@ -99,11 +99,10 @@ void dsda_SkipNextWipe(void) {
   dsda_skip_next_wipe = 1;
 }
 
-dboolean dsda_SkipWipe(void) {
-  if (dsda_skip_next_wipe) {
-    dsda_skip_next_wipe = 0;
-    return true;
-  }
+void dsda_SkipNextWipeFinish(void) {
+  dsda_skip_next_wipe = 0;
+}
 
-  return !render_wipescreen;
+dboolean dsda_SkipWipe(void) {
+  return dsda_skip_next_wipe || !render_wipescreen;
 }
diff --git a/prboom2/src/dsda/settings.h b/prboom2/src/dsda/settings.h
index 2377d5ee..894a4f29 100644
--- a/prboom2/src/dsda/settings.h
+++ b/prboom2/src/dsda/settings.h
@@ -41,6 +41,7 @@ int dsda_RealticClockRate(void);
 int dsda_AutoKeyFrameInterval(void);
 int dsda_AutoKeyFrameDepth(void);
 void dsda_SkipNextWipe(void);
+void dsda_SkipNextWipeFinish(void);
 dboolean dsda_SkipWipe(void);
 
 #endif
diff --git a/prboom2/src/f_wipe.c b/prboom2/src/f_wipe.c
index f4108f07..b3c483d7 100644
--- a/prboom2/src/f_wipe.c
+++ b/prboom2/src/f_wipe.c
@@ -47,6 +47,7 @@
 #include "gl_struct.h"
 #endif
 #include "e6y.h"//e6y
+#include "dsda/settings.h"
 
 //
 // SCREEN WIPE PACKAGE
@@ -188,7 +189,7 @@ static int wipe_exitMelt(int ticks)
 
 int wipe_StartScreen(void)
 {
-  if(!render_wipescreen||wasWiped) return 0;//e6y
+  if (wasWiped || dsda_SkipWipe()) return 0;//e6y
   wasWiped = true;//e6y
 
 #ifdef GL_DOOM
@@ -218,7 +219,7 @@ int wipe_StartScreen(void)
 
 int wipe_EndScreen(void)
 {
-  if(!render_wipescreen||!wasWiped) return 0;//e6y
+  if (!wasWiped || dsda_SkipWipe()) return 0;//e6y
   wasWiped = false;//e6y
 
 #ifdef GL_DOOM
@@ -251,7 +252,7 @@ int wipe_EndScreen(void)
 int wipe_ScreenWipe(int ticks)
 {
   static dboolean go;                               // when zero, stop the wipe
-  if(!render_wipescreen) return 0;//e6y
+  if (dsda_SkipWipe()) return 0;//e6y
   if (!go)                                         // initial stuff
     {
       go = 1;

 

 

Share this post


Link to post

Hello @Shepardus

 

Thanks for the report - I'll fix the automap today. Hiding the ex hud while the overlay is up does seem like the straightforward option. Could you open a PR for number 2? 🤠

Share this post


Link to post
11 hours ago, Bytefyre said:

I don't know if this is something specific to this port or not, but I've noticed that some of the sound effects (such as fireball impact and teleportation) are getting cut off before they finish playing in their entirety.  I checked my sound settings and the number of channels is set to 32 (which I understand to be the maximum value allowed).  Has anyone else ever run into this, and if so, what would be the solution?

 

Ah, I think I know what was going on here, and it's something I never had to use before.  I was trying out BtSX E2 and didn't include its Dehacked patch file; I've only ever played it in GZDoom before now and never included it there.  Once I did so here, the teleportation sound played correctly.

Share this post


Link to post
5 minutes ago, Bytefyre said:

 

Ah, I think I know what was going on here, and it's something I never had to use before.  I was trying out BtSX E2 and didn't include its Dehacked patch file; I've only ever played it in GZDoom before now and never included it there.  Once I did so here, the teleportation sound played correctly.

You shouldn't need to load the external .deh file - it's embedded in the wad files and most source-ports (including this one) support loading internal .deh files. Your issue stems from elsewhere (if it's even an issue, from what I understand from your post it's expected behaviour).

Share this post


Link to post
1 minute ago, Andromeda said:

You shouldn't need to load the external .deh file - it's embedded in the wad files and most source-ports (including this one) support loading internal .deh files. Your issue stems from elsewhere (if it's even an issue, from what I understand from your post it's expected behaviour).

 

Yeah, I actually just tried again without it.  It must have been a bug in the 0.12 version, because it seems to be resolved now using 0.13, or maybe my sound just needed to recycle after a restart...hard to say.

Share this post


Link to post

1. It seems right now pressing Zoom In/Out in the automap will make it continuously Zoom In/Out as if you're holding down Zoom In/Out. This seems also apply to moving around and it will continue going the direction you clicked.

 

2. The Max HUD won't save the updated max kill count in the save file. For example, when playing Valiant, you get an Arachnorb to spawn, and max kill count will be increased, but if you loaded a savefile, it will reset to the starting max kill count.

Share this post


Link to post
51 minutes ago, Phytolizer said:

Can anyone provide a windows build for 0.13? I can't get my build system running.

Does the build linked in the start of the thread not work for you?

Share this post


Link to post
4 minutes ago, kraflab said:

Does the build linked in the start of the thread not work for you?

Sometimes I feel really dumb. Thanks.

Share this post


Link to post
2 hours ago, GarrettChan said:

The Max HUD won't save the updated max kill count in the save file. For example, when playing Valiant, you get an Arachnorb to spawn, and max kill count will be increased, but if you loaded a savefile, it will reset to the starting max kill count.

Ya, there are some things that aren't saved right now. I am going to have to do a deep dive in the save logic to get key frames stable, so I'll try to fix things in one go.

Share this post


Link to post
On 11/11/2020 at 4:38 PM, kraflab said:

Completely rewrote the input binding system

  • All inputs can be bound to key / mouse / joy
  • Multiple keys can be bound to the same action
  • You can now cycle between 3 separate input binding profiles
    • Settable in key binding menu & with a key in the dsda section
  • You can unbind joy buttons
  • Random system keys like "volume up" shouldn't cause random effects (at least it is fixed for me)
  • More joy buttons can be configured
  • The key binding configuration format has changed...you'll need to rebind your keys.

 

Does that mean that non vanilla key bind it's now allowed for demo recording?.

Could I bind sr50 for 2 keys?, vanilla only can 3, 1 key for one direction.

 

Also, could be developed a dsda port based on chocolate doom?.

Could be the best port ever.

Share this post


Link to post
Guest
This topic is now closed to further replies.
×