Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package prboom-plus for openSUSE:Factory 
checked in at 2021-05-08 22:07:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/prboom-plus (Old)
 and      /work/SRC/openSUSE:Factory/.prboom-plus.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "prboom-plus"

Sat May  8 22:07:48 2021 rev:14 rq:891546 version:2.6um+g81

Changes:
--------
--- /work/SRC/openSUSE:Factory/prboom-plus/prboom-plus.changes  2021-04-12 
12:39:59.381552373 +0200
+++ /work/SRC/openSUSE:Factory/.prboom-plus.new.2988/prboom-plus.changes        
2021-05-08 22:09:04.189313304 +0200
@@ -1,0 +2,10 @@
+Sat May  1 13:01:20 UTC 2021 - Jan Engelhardt <[email protected]>
+
+- Update to snapshot 2.6um+git81 (15431b3a9aac)
+  * Fix sky scaling for non-standard sky sizes
+  * Support widescreen assets
+  * Add OpenGL sprite fuzz options
+- Update prboom-hbar-all.diff, prboom-hbar-gradient.diff
+  from project.
+
+-------------------------------------------------------------------

Old:
----
  prboom-plus-2.6um+g69.tar.xz

New:
----
  prboom-plus-2.6um+g81.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ prboom-plus.spec ++++++
--- /var/tmp/diff_new_pack.bj3Aqg/_old  2021-05-08 22:09:04.725310983 +0200
+++ /var/tmp/diff_new_pack.bj3Aqg/_new  2021-05-08 22:09:04.725310983 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           prboom-plus
-Version:        2.6um+g69
+Version:        2.6um+g81
 Release:        0
 Summary:        DOOM source port with demo compatibility
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.bj3Aqg/_old  2021-05-08 22:09:04.753310862 +0200
+++ /var/tmp/diff_new_pack.bj3Aqg/_new  2021-05-08 22:09:04.753310862 +0200
@@ -2,9 +2,7 @@
        <service name="tar_scm" mode="disabled">
                <param name="scm">git</param>
                <param 
name="url">https://github.com/coelckers/prboom-plus</param>
-               <param name="exclude">data/sounds/dsdg*</param>
-               <param name="exclude">data/sprites/dogs*</param>
-               <param 
name="revision">07925d634cc4d5a8847f76ca4c4f2ce236ba6de8</param>
+               <param 
name="revision">15431b3a9aac0800c72276aa8dabb13a8f12632e</param>
                <param name="versionformat">2.6um+g@TAG_OFFSET@</param>
        </service>
        <service name="recompress" mode="disabled">

++++++ prboom-hbar-all.diff ++++++
--- /var/tmp/diff_new_pack.bj3Aqg/_old  2021-05-08 22:09:04.765310810 +0200
+++ /var/tmp/diff_new_pack.bj3Aqg/_new  2021-05-08 22:09:04.765310810 +0200
@@ -1,29 +1,80 @@
-From a0bae535928cbce4eb9da8dd5d33b473776c9693 Mon Sep 17 00:00:00 2001
+From f8dc397539f27c601aa6f1f3ea0f6c1f177efd97 Mon Sep 17 00:00:00 2001
 From: Jan Engelhardt <[email protected]>
 Date: Wed, 1 May 2013 09:53:49 +0200
-Subject: [PATCH 1/2] Show health bar for all destructible mobjs
+Subject: [PATCH 1/2] Add option to show health bar for all destructible mobjs
 References: https://github.com/coelckers/prboom-plus/pull/274
 
-Show the health bar for all destructible items, especially so
-including barrels and Lost Souls.
+The current health bar fails to show for Lost Souls.
+In addition, showing it for other destructible objects (such as
+barrels - or DEH modifications in that spirit) can be used to gauge
+the objects' remaining life.
 ---
- prboom2/src/gl_main.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ prboom2/src/gl_main.c  | 10 +++++++++-
+ prboom2/src/m_misc.c   |  2 ++
+ prboom2/src/r_things.c |  1 +
+ prboom2/src/r_things.h |  1 +
+ 4 files changed, 13 insertions(+), 1 deletion(-)
 
 diff --git prboom2/src/gl_main.c prboom2/src/gl_main.c
-index 20712b7e..e2402e16 100644
+index 20712b7e..763bcbae 100644
 --- prboom2/src/gl_main.c
 +++ prboom2/src/gl_main.c
-@@ -2328,7 +2328,8 @@ static void gld_DrawSprite(GLSprite *sprite)
+@@ -2326,9 +2326,17 @@ static void gld_DrawSprite(GLSprite *sprite)
+   }
+ }
  
++static int gld_EvaluateShowBar(mobj_t* thing)
++{
++  if (health_bar_shootables)
++    return thing->flags & MF_SHOOTABLE;
++  return (thing->flags & (MF_COUNTKILL | MF_CORPSE)) == MF_COUNTKILL;
++}
++
  static void gld_AddHealthBar(mobj_t* thing, GLSprite *sprite)
  {
 -  if (((thing->flags & (MF_COUNTKILL | MF_CORPSE)) == MF_COUNTKILL) && 
(thing->health > 0))
-+  if ((thing->flags & MF_SHOOTABLE) && thing->info->spawnhealth > 0 &&
-+      thing->health > 0)
++  if (thing->info->spawnhealth > 0 && thing->health > 0 &&
++      gld_EvaluateShowBar(thing))
    {
      GLHealthBar hbar;
      int health_percent = thing->health * 100 / thing->info->spawnhealth;
+diff --git prboom2/src/m_misc.c prboom2/src/m_misc.c
+index 0bf3f5b9..e819ad61 100644
+--- prboom2/src/m_misc.c
++++ prboom2/src/m_misc.c
+@@ -1045,6 +1045,8 @@ default_t defaults[] =
+    def_bool,ss_stat},
+   {"health_bar_full_length", {&health_bar_full_length}, {1},0,1,
+    def_bool,ss_stat},
++  {"health_bar_shootables", {&health_bar_shootables}, {0},0,1,
++   def_bool,ss_stat},
+   {"health_bar_red", {&health_bar_red}, {50},0,100,
+    def_int,ss_stat},
+   {"health_bar_yellow", {&health_bar_yellow}, {99},0,100,
+diff --git prboom2/src/r_things.c prboom2/src/r_things.c
+index c537dd5e..fd1215fd 100644
+--- prboom2/src/r_things.c
++++ prboom2/src/r_things.c
+@@ -73,6 +73,7 @@ int sprites_doom_order;
+ 
+ int health_bar;
+ int health_bar_full_length;
++int health_bar_shootables;
+ int health_bar_red;
+ int health_bar_yellow;
+ int health_bar_green;
+diff --git prboom2/src/r_things.h prboom2/src/r_things.h
+index 2267cb83..52e5beea 100644
+--- prboom2/src/r_things.h
++++ prboom2/src/r_things.h
+@@ -75,6 +75,7 @@ extern int sprites_doom_order;
+ 
+ extern int health_bar;
+ extern int health_bar_full_length;
++extern int health_bar_shootables;
+ extern int health_bar_red;
+ extern int health_bar_yellow;
+ extern int health_bar_green;
 -- 
 2.31.1
 

++++++ prboom-hbar-gradient.diff ++++++
--- /var/tmp/diff_new_pack.bj3Aqg/_old  2021-05-08 22:09:04.777310758 +0200
+++ /var/tmp/diff_new_pack.bj3Aqg/_new  2021-05-08 22:09:04.777310758 +0200
@@ -1,4 +1,4 @@
-From 6566b0489164957581d091119bdf480d66e9ca20 Mon Sep 17 00:00:00 2001
+From be1128c66a342ca381532ac3c6bcd286d871fdc3 Mon Sep 17 00:00:00 2001
 From: Jan Engelhardt <[email protected]>
 Date: Wed, 1 May 2013 09:53:49 +0200
 Subject: [PATCH 2/2] Implement color gradient for health bar
@@ -23,12 +23,14 @@
    float x1, x2, x3;
    float z1, z2, z3;
 diff --git prboom2/src/gl_main.c prboom2/src/gl_main.c
-index e2402e16..0a257ecf 100644
+index 763bcbae..8dcb03fd 100644
 --- prboom2/src/gl_main.c
 +++ prboom2/src/gl_main.c
-@@ -2334,15 +2334,23 @@ static void gld_AddHealthBar(mobj_t* thing, GLSprite 
*sprite)
+@@ -2340,16 +2340,24 @@ static void gld_AddHealthBar(mobj_t* thing, GLSprite 
*sprite)
+   {
      GLHealthBar hbar;
      int health_percent = thing->health * 100 / thing->info->spawnhealth;
++    int yr = health_bar_yellow - health_bar_red;
  
 -    hbar.cm = -1;
 -    if (health_percent <= health_bar_red)
@@ -43,10 +45,9 @@
 +      hbar.g = 0.0f;
 +    } else if (health_percent <= health_bar_red) {
 +      hbar.r = 1.0f;
-+      hbar.g = (double)health_percent / (health_bar_yellow - health_bar_red);
++      hbar.g = yr == 0 ? 0 : (float)health_percent / yr;
 +    } else if (health_percent <= health_bar_yellow) {
-+      hbar.r = (double)(health_bar_yellow - health_percent) /
-+               (health_bar_yellow - health_bar_red);
++      hbar.r = yr == 0 ? 1 : (float)(health_bar_yellow - health_percent) / yr;
 +      hbar.g = 1.0f;
 +    } else if (health_percent <= health_bar_green) {
 +      hbar.r = 0.0f;
@@ -54,11 +55,11 @@
 +    }
  
 -    if (hbar.cm >= 0)
-+    if (hbar.r >= 0)
++    if (hbar.r >= 0 && hbar.g >= 0)
      {
        float sx2 = (float)thing->radius / 2.0f / MAP_SCALE;
        float sx1 = sx2 - (float)health_percent * (float)thing->radius / 100.0f 
/ MAP_SCALE;
-@@ -2366,7 +2374,6 @@ static void gld_AddHealthBar(mobj_t* thing, GLSprite 
*sprite)
+@@ -2373,7 +2381,6 @@ static void gld_AddHealthBar(mobj_t* thing, GLSprite 
*sprite)
  static void gld_DrawHealthBars(void)
  {
    int i, count;
@@ -66,7 +67,7 @@
  
    count = gld_drawinfo.num_items[GLDIT_HBAR];
    if (count > 0)
-@@ -2377,11 +2384,7 @@ static void gld_DrawHealthBars(void)
+@@ -2384,11 +2391,7 @@ static void gld_DrawHealthBars(void)
      for (i = count - 1; i >= 0; i--)
      {
        GLHealthBar *hbar = gld_drawinfo.items[GLDIT_HBAR][i].item.hbar;

++++++ prboom-plus-2.6um+g69.tar.xz -> prboom-plus-2.6um+g81.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/ICONS/icons.rc 
new/prboom-plus-2.6um+g81/prboom2/ICONS/icons.rc
--- old/prboom-plus-2.6um+g69/prboom2/ICONS/icons.rc    2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/ICONS/icons.rc    2021-04-26 
22:46:22.000000000 +0200
@@ -25,6 +25,8 @@
 
 #ifdef _MSC_VER
 1                       24      MOVEABLE PURE   "prboom-plus.exe.manifest"
+#else
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST  "prboom-plus.exe.manifest"
 #endif
 
 IDD_LAUNCHERSERVERDIALOG DIALOGEX 0, 0, 187, 245
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/prboom-plus-2.6um+g69/prboom2/ICONS/prboom-plus.exe.manifest 
new/prboom-plus-2.6um+g81/prboom2/ICONS/prboom-plus.exe.manifest
--- old/prboom-plus-2.6um+g69/prboom2/ICONS/prboom-plus.exe.manifest    
2021-04-08 13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/ICONS/prboom-plus.exe.manifest    
2021-04-26 22:46:22.000000000 +0200
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <!-- What's this??? It's for WinXP. See bug#466423 if you're interested -->
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" 
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 <assemblyIdentity
     version="1.0.0.0"
     processorArchitecture="*"
@@ -20,4 +20,13 @@
         />
     </dependentAssembly>
 </dependency>
+
+  <!-- Declare app as DPI aware, so that Windows Vista and later will not
+       apply DPI virtualization. -->
+
+  <asmv3:application>
+    <asmv3:windowsSettings 
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings";>
+      <dpiAware>true</dpiAware>
+    </asmv3:windowsSettings>
+  </asmv3:application>
 </assembly>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/prboom-plus-2.6um+g69/prboom2/data/lumps/-prbhud-.lmp 
new/prboom-plus-2.6um+g81/prboom2/data/lumps/-prbhud-.lmp
--- old/prboom-plus-2.6um+g69/prboom2/data/lumps/-prbhud-.lmp   2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/data/lumps/-prbhud-.lmp   2021-04-26 
22:46:22.000000000 +0200
@@ -139,3 +139,15 @@
 ;medict_icon_custom 232 -197
 ;health_big -302 -198
 ;medict_percent -318 -198
+
+hud 13
+tracers 2 151
+hudadd 2 159
+keys 24 168
+weapon 24 177
+ammo_icon 4 -197
+ammo 24 186
+health -297 168
+medict_icon_small -315 -179
+armor -297 186
+armor_icon_small -316 -197
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/doc/umapinfo.txt 
new/prboom-plus-2.6um+g81/prboom2/doc/umapinfo.txt
--- old/prboom-plus-2.6um+g69/prboom2/doc/umapinfo.txt  2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/doc/umapinfo.txt  2021-04-26 
22:46:22.000000000 +0200
@@ -65,17 +65,19 @@
 endgame = false
 
 ; Ends the game after this level, showing the default post-game screen for the
-; current episode.
+; current episode. Skips the 'entering level' screen.
 endgame = true
 
 ; Ends the game after this level, showing the specified graphic as an end
-; screen.
+; screen. Skips the 'entering level' screen.
 endpic = "graphic"
 
-; Ends the game after this level, showing the bunny scroller.
+; Ends the game after this level, showing the bunny scroller. Skips the
+; 'entering level' screen.
 endbunny = true
 
-; Ends the game after this level, showing the cast call.
+; Ends the game after this level, showing the cast call. Skips the 'entering
+; level' screen.
 endcast = true
 
 ; Currently only working for levels that end the game: When true skips the
@@ -307,10 +309,21 @@
     PlasmaBall2
     EvilSceptre
     UnholyBible
+    MusicChanger
+    Deh_Actor_145
+    [...]
+    Deh_Actor_249
 
 
 Revisions:
 
+Rev 1.6 (@fabiangreffrath, Apr 19 2021)
+ * Skip the 'entering level' screen if one of endgame, endpic, endbunny or
+   endcast is set.
+
+Rev 1.5 (@Shadow-Hog, Apr 17 2021)
+ * Add in all the additional actor names for DEHEXTRA.
+
 Rev 1.4 (@rfomin, Mar 23 2021)
  * Clarify the 'episode' field in the case of Doom 2 and Chex Quest.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/SDL/i_sound.c 
new/prboom-plus-2.6um+g81/prboom2/src/SDL/i_sound.c
--- old/prboom-plus-2.6um+g69/prboom2/src/SDL/i_sound.c 2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/SDL/i_sound.c 2021-04-26 
22:46:22.000000000 +0200
@@ -94,11 +94,11 @@
 static dboolean first_sound_init = true;
 
 // Needed for calling the actual sound output.
-static int SAMPLECOUNT =   512;
 #define MAX_CHANNELS    32
 
 // MWM 2000-01-08: Sample rate in samples/second
 int snd_samplerate = 11025;
+int snd_samplecount = 512;
 
 // The actual output device.
 int audio_fd;
@@ -678,8 +678,7 @@
     /* Initialize variables */
     audio_rate = snd_samplerate;
     audio_channels = 2;
-    SAMPLECOUNT = 512;
-    audio_buffers = SAMPLECOUNT*snd_samplerate/11025;
+    audio_buffers = snd_samplecount * snd_samplerate / 11025;
 
     if (Mix_OpenAudio(audio_rate, MIX_DEFAULT_FORMAT, audio_channels, 
audio_buffers) < 0)
     {
@@ -690,9 +689,8 @@
     }
     sound_inited_once = true;//e6y
     sound_inited = true;
-    SAMPLECOUNT = audio_buffers;
     Mix_SetPostMix(I_UpdateSound, NULL);
-    lprintf(LO_INFO," configured audio device with %d samples/slice\n", 
SAMPLECOUNT);
+    lprintf(LO_INFO," configured audio device with %d samples/slice\n", 
audio_buffers);
   }
   else
 #else // HAVE_MIXER
@@ -707,7 +705,7 @@
     audio.format = AUDIO_S16LSB;
 #endif
     audio.channels = 2;
-    audio.samples = SAMPLECOUNT * snd_samplerate / 11025;
+    audio.samples = snd_samplecount * snd_samplerate / 11025;
     audio.callback = I_UpdateSound;
     if ( SDL_OpenAudio(&audio, NULL) < 0 )
     {
@@ -718,8 +716,7 @@
     }
     sound_inited_once = true;//e6y
     sound_inited = true;
-    SAMPLECOUNT = audio.samples;
-    lprintf(LO_INFO, " configured audio device with %d samples/slice\n", 
SAMPLECOUNT);
+    lprintf(LO_INFO, " configured audio device with %d samples/slice\n", 
audio.samples);
   }
   if (first_sound_init)
   {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/d_main.c 
new/prboom-plus-2.6um+g81/prboom2/src/d_main.c
--- old/prboom-plus-2.6um+g69/prboom2/src/d_main.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/d_main.c      2021-04-26 
22:46:22.000000000 +0200
@@ -552,9 +552,9 @@
   // proff - added M_DrawCredits
   if (pagename)
   {
-    V_DrawNamePatch(0, 0, 0, pagename, CR_DEFAULT, VPT_STRETCH);
     // e6y: wide-res
     V_FillBorder(-1, 0);
+    V_DrawNamePatch(0, 0, 0, pagename, CR_DEFAULT, VPT_STRETCH);
   }
   else
     M_DrawCredits();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/f_finale.c 
new/prboom-plus-2.6um+g81/prboom2/src/f_finale.c
--- old/prboom-plus-2.6um+g69/prboom2/src/f_finale.c    2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/f_finale.c    2021-04-26 
22:46:22.000000000 +0200
@@ -298,8 +298,8 @@
   if (gamemapinfo && W_CheckNumForName(finaleflat) != -1 &&
       (W_CheckNumForName)(finaleflat, ns_flats) == -1)
   {
-    V_DrawNamePatch(0, 0, 0, finaleflat, CR_DEFAULT, VPT_STRETCH);
     V_FillBorder(-1, 0);
+    V_DrawNamePatch(0, 0, 0, finaleflat, CR_DEFAULT, VPT_STRETCH);
   }
   else
     V_DrawBackground(finaleflat, 0);
@@ -593,11 +593,11 @@
   int                 lump;
   dboolean             flip;
 
+  // e6y: wide-res
+  V_FillBorder(-1, 0);
   // erase the entire screen to a background
   // CPhipps - patch drawing updated
   V_DrawNamePatch(0,0,0, bgcastcall, CR_DEFAULT, VPT_STRETCH); // Ty 03/30/98 
bg texture extern
-  // e6y: wide-res
-  V_FillBorder(-1, 0);
 
   F_CastPrint (*(castorder[castnum].name));
 
@@ -618,22 +618,49 @@
 static const char pfub2[] = { "PFUB2" };
 static const char pfub1[] = { "PFUB1" };
 
-static void F_BunnyScroll (void)
+void F_BunnyScroll (void)
 {
   char        name[10];
   int         stage;
   static int  laststage;
+  static int  p1offset, p2width;
+
+  if (finalecount == 0)
+  {
+    const rpatch_t *p1, *p2;
+    p1 = R_CachePatchName(pfub1);
+    p2 = R_CachePatchName(pfub2);
+
+    p2width = p2->width;
+    if (p1->width == 320)
+    {
+      // Unity or original PFUBs.
+      p1offset = (p2width - 320) / 2;
+    }
+    else
+    {
+      // Widescreen mod PFUBs.
+      p1offset = 0;
+    }
+
+    W_UnlockLumpName(pfub2);
+    W_UnlockLumpName(pfub1);
+  }
 
   {
     int scrolled = 320 - (finalecount-230)/2;
     if (scrolled <= 0) {
       V_DrawNamePatch(0, 0, 0, pfub2, CR_DEFAULT, VPT_STRETCH);
     } else if (scrolled >= 320) {
-      V_DrawNamePatch(0, 0, 0, pfub1, CR_DEFAULT, VPT_STRETCH);
+      V_DrawNamePatch(p1offset, 0, 0, pfub1, CR_DEFAULT, VPT_STRETCH);
+      if (p1offset > 0)
+        V_DrawNamePatch(-320, 0, 0, pfub2, CR_DEFAULT, VPT_STRETCH);
     } else {
-      V_DrawNamePatch(320-scrolled, 0, 0, pfub1, CR_DEFAULT, VPT_STRETCH);
+      V_DrawNamePatch(p1offset+320-scrolled, 0, 0, pfub1, CR_DEFAULT, 
VPT_STRETCH);
       V_DrawNamePatch(-scrolled, 0, 0, pfub2, CR_DEFAULT, VPT_STRETCH);
     }
+    if (p2width == 320)
+      V_FillBorder(-1, 0);
   }
 
   if (finalecount < 1130)
@@ -682,6 +709,8 @@
     F_TextWrite ();
   else
   {
+    // e6y: wide-res
+    V_FillBorder(-1, 0);
     switch (gameepisode)
     {
       // CPhipps - patch drawing updated
@@ -701,7 +730,5 @@
            V_DrawNamePatch(0, 0, 0, "ENDPIC", CR_DEFAULT, VPT_STRETCH);
            break;
     }
-    // e6y: wide-res
-    V_FillBorder(-1, 0);
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/f_finale2.c 
new/prboom-plus-2.6um+g81/prboom2/src/f_finale2.c
--- old/prboom-plus-2.6um+g69/prboom2/src/f_finale2.c   2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/f_finale2.c   2021-04-26 
22:46:22.000000000 +0200
@@ -49,6 +49,7 @@
 
 void F_StartCast (void);
 void F_TextWrite(void);
+void F_BunnyScroll(void);
 
 void WI_checkForAccelerate(void);    // killough 3/28/98: used to
 float Get_TextSpeed(void);
@@ -139,6 +140,9 @@
                                        if (!stricmp(gamemapinfo->endpic, 
"$BUNNY"))
                                        {
                                                S_StartMusic(mus_bunny);
+                                       }
+                                       else if (!stricmp(gamemapinfo->endpic, 
"!"))
+                                       {
                                                using_FMI = false;
                                        }
                                }
@@ -161,10 +165,14 @@
        {
                F_TextWrite();
        }
+       else if (strcmp(gamemapinfo->endpic, "$BUNNY") == 0)
+       {
+               F_BunnyScroll();
+       }
        else
        {
-               V_DrawNamePatch(0, 0, 0, gamemapinfo->endpic, CR_DEFAULT, 
VPT_STRETCH);
                // e6y: wide-res
                V_FillBorder(-1, 0);
+               V_DrawNamePatch(0, 0, 0, gamemapinfo->endpic, CR_DEFAULT, 
VPT_STRETCH);
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/g_game.c 
new/prboom-plus-2.6um+g81/prboom2/src/g_game.c
--- old/prboom-plus-2.6um+g69/prboom2/src/g_game.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/g_game.c      2021-04-26 
22:46:22.000000000 +0200
@@ -3548,6 +3548,9 @@
 
   if (fwrite(demostart, 1, demo_p-demostart, demofp) != 
(size_t)(demo_p-demostart))
     I_Error("G_BeginRecording: Error writing demo header");
+
+  R_DemoEx_ResetMLook();
+
   free(demostart);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/gl_main.c 
new/prboom-plus-2.6um+g81/prboom2/src/gl_main.c
--- old/prboom-plus-2.6um+g69/prboom2/src/gl_main.c     2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/gl_main.c     2021-04-26 
22:46:22.000000000 +0200
@@ -127,6 +127,14 @@
 int gl_sprite_blend;  // e6y: smooth sprite edges
 int gl_mask_sprite_threshold;
 float gl_mask_sprite_threshold_f;
+/* Note: These must be identically-indexed,
+ * including the spritefuzzmode enum */
+spritefuzzmode_t gl_thingspritefuzzmode;
+spritefuzzmode_t gl_weaponspritefuzzmode;
+const char *gl_spritefuzzmodes[] = {"darken", "shadow", "transparent", 
"ghostly"};
+GLenum gl_fuzzsfactors[] = {GL_DST_COLOR, GL_ZERO, GL_ONE, GL_SRC_ALPHA};
+GLenum gl_fuzzdfactors[] = {GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
+    GL_ONE_MINUS_SRC_ALPHA, GL_ONE};
 
 GLuint gld_DisplayList=0;
 int fog_density=200;
@@ -153,6 +161,7 @@
   {1.00f ,1.00f, 1.00f, 1.00f}, //CR_LIMIT
 };
 
+
 void SetFrameTextureMode(void)
 {
 #ifdef USE_FBO_TECHNIQUE
@@ -666,6 +675,10 @@
     topoffset = gltexture->topoffset;
   }
 
+  // [FG] automatically center wide patches without horizontal offset
+  if (gltexture->width > 320 && leftoffset == 0)
+    x -= (float)(gltexture->width - 320) / 2;
+
   if (flags & VPT_STRETCH_MASK)
   {
     stretch_param_t *params = &stretch_params[flags & VPT_ALIGN_MASK];
@@ -885,7 +898,8 @@
   // when invisibility is about to go
   if (/*(viewplayer->mo->flags & MF_SHADOW) && */!vis->colormap)
   {
-    glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA);
+    glBlendFunc(gl_fuzzsfactors[gl_weaponspritefuzzmode],
+            gl_fuzzdfactors[gl_weaponspritefuzzmode]);
     glAlphaFunc(GL_GEQUAL,0.1f);
     //glColor4f(0.2f,0.2f,0.2f,(float)tran_filter_pct/100.0f);
     glColor4f(0.2f,0.2f,0.2f,0.33f);
@@ -2249,7 +2263,8 @@
     {
       glGetIntegerv(GL_BLEND_SRC, &blend_src);
       glGetIntegerv(GL_BLEND_DST, &blend_dst);
-      glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA);
+      glBlendFunc(gl_fuzzsfactors[gl_thingspritefuzzmode],
+            gl_fuzzdfactors[gl_thingspritefuzzmode]);
       //glColor4f(0.2f,0.2f,0.2f,(float)tran_filter_pct/100.0f);
       glAlphaFunc(GL_GEQUAL,0.1f);
       glColor4f(0.2f,0.2f,0.2f,0.33f);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/gl_sky.c 
new/prboom-plus-2.6um+g81/prboom2/src/gl_sky.c
--- old/prboom-plus-2.6um+g69/prboom2/src/gl_sky.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/gl_sky.c      2021-04-26 
22:46:22.000000000 +0200
@@ -159,12 +159,12 @@
   if (!mlook_or_fov)
   {
     sx = sx / (float)wall->gltexture->buffer_width;
-    sy = 200.0f / 160.0f;//wall->gltexture->buffer_height;
+    sy = 200.0f / (wall->gltexture->buffer_height * 1.25f);
   }
   else 
   {
     sx = sx * skyscale / (float)wall->gltexture->buffer_width;
-    sy = 127.0f * skyscale / 160.0f;
+    sy = 127.0f * skyscale / (wall->gltexture->buffer_height * 1.25f);
   }
 
   *scale_x = sx;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/gl_struct.h 
new/prboom-plus-2.6um+g81/prboom2/src/gl_struct.h
--- old/prboom-plus-2.6um+g69/prboom2/src/gl_struct.h   2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/gl_struct.h   2021-04-26 
22:46:22.000000000 +0200
@@ -205,6 +205,10 @@
 
 //sprites
 typedef enum { spriteclip_const, spriteclip_always, spriteclip_smart } 
spriteclipmode_t;
+typedef enum { fuzz_darken, fuzz_shadow, fuzz_transparent, fuzz_ghostly, 
fuzz_last } spritefuzzmode_t;
+extern spritefuzzmode_t gl_thingspritefuzzmode;
+extern spritefuzzmode_t gl_weaponspritefuzzmode;
+extern const char *gl_spritefuzzmodes[];
 extern spriteclipmode_t gl_spriteclip;
 extern const char *gl_spriteclipmodes[];
 extern int gl_spriteclip_threshold;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/i_sound.h 
new/prboom-plus-2.6um+g81/prboom2/src/i_sound.h
--- old/prboom-plus-2.6um+g69/prboom2/src/i_sound.h     2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/i_sound.h     2021-04-26 
22:46:22.000000000 +0200
@@ -131,6 +131,7 @@
 extern int mus_card;
 // CPhipps - put these in config file
 extern int snd_samplerate;
+extern int snd_samplecount;
 
 extern int use_experimental_music;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/m_menu.c 
new/prboom-plus-2.6um+g81/prboom2/src/m_menu.c
--- old/prboom-plus-2.6um+g69/prboom2/src/m_menu.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/m_menu.c      2021-04-26 
22:46:22.000000000 +0200
@@ -487,9 +487,9 @@
   inhelpscreens = true;
   if (gamemode == shareware)
   {
-    V_DrawNamePatch(0, 0, 0, "HELP2", CR_DEFAULT, VPT_STRETCH);
     // e6y: wide-res
     V_FillBorder(-1, 0);
+    V_DrawNamePatch(0, 0, 0, "HELP2", CR_DEFAULT, VPT_STRETCH);
   }
   else
     M_DrawCredits();
@@ -507,9 +507,9 @@
     M_DrawCredits();
   else
   {
-    V_DrawNamePatch(0, 0, 0, "CREDIT", CR_DEFAULT, VPT_STRETCH);
     // e6y: wide-res
     V_FillBorder(-1, 0);
+    V_DrawNamePatch(0, 0, 0, "CREDIT", CR_DEFAULT, VPT_STRETCH);
   }
 }
 
@@ -3423,12 +3423,14 @@
   {"Sector Light Mode",         S_CHOICE, m_null, G_X, G_Y+ 8*8, 
{"gl_lightmode"}, 0, 0, M_ChangeLightMode, gl_lightmodes},
   {"Allow Fog",                 S_YESNO,  m_null, G_X, G_Y+ 9*8, {"gl_fog"}, 
0, 0, M_ChangeAllowFog},
   {"Simple Shadows",            S_YESNO,  m_null, G_X, G_Y+10*8, 
{"gl_shadows"}},
+  {"Thing Sprite Fuzz",         S_CHOICE, m_null, G_X, G_Y+11*8, 
{"gl_thingspritefuzzmode"}, 0, 0, 0, gl_spritefuzzmodes},
+  {"Weapon Sprite Fuzz",        S_CHOICE, m_null, G_X, G_Y+12*8, 
{"gl_weaponspritefuzzmode"}, 0, 0, 0, gl_spritefuzzmodes},
 
-  {"Paper Items",               S_YESNO,  m_null, G_X, G_Y+12*8, 
{"render_paperitems"}},
-  {"Smooth sprite edges",       S_YESNO,  m_null, G_X, G_Y+13*8, 
{"gl_sprite_blend"}},
-  {"Adjust Sprite Clipping",    S_CHOICE, m_null, G_X, G_Y+14*8, 
{"gl_spriteclip"}, 0, 0, M_ChangeSpriteClip, gl_spriteclipmodes},
-  {"Item out of Floor offset",  S_NUM,    m_null, G_X, G_Y+15*8, 
{"gl_sprite_offset"}, 0, 0, M_ChangeSpriteClip},
-  {"Health Bar Above Monsters", S_YESNO,  m_null, G_X, G_Y+16*8, 
{"health_bar"}},
+  {"Paper Items",               S_YESNO,  m_null, G_X, G_Y+13*8, 
{"render_paperitems"}},
+  {"Smooth sprite edges",       S_YESNO,  m_null, G_X, G_Y+14*8, 
{"gl_sprite_blend"}},
+  {"Adjust Sprite Clipping",    S_CHOICE, m_null, G_X, G_Y+15*8, 
{"gl_spriteclip"}, 0, 0, M_ChangeSpriteClip, gl_spriteclipmodes},
+  {"Item out of Floor offset",  S_NUM,    m_null, G_X, G_Y+16*8, 
{"gl_sprite_offset"}, 0, 0, M_ChangeSpriteClip},
+  {"Health Bar Above Monsters", S_YESNO,  m_null, G_X, G_Y+17*8, 
{"health_bar"}},
 #endif
 
   {"<- PREV",S_SKIP|S_PREV, m_null,KB_PREV, KB_Y+20*8, {gen_settings4}},
@@ -4520,8 +4522,8 @@
 
   if (helplump >= 0 && lumpinfo[helplump].source != source_iwad)
   {
-    V_DrawNumPatch(0, 0, 0, helplump, CR_DEFAULT, VPT_STRETCH);
     V_FillBorder(-1, 0);
+    V_DrawNumPatch(0, 0, 0, helplump, CR_DEFAULT, VPT_STRETCH);
   }
   else
   {
@@ -4582,8 +4584,8 @@
   inhelpscreens = true;
   if (creditlump >= 0 && lumpinfo[creditlump].source != source_iwad)
   {
-    V_DrawNumPatch(0, 0, 0, creditlump, CR_DEFAULT, VPT_STRETCH);
     V_FillBorder(-1, 0);
+    V_DrawNumPatch(0, 0, 0, creditlump, CR_DEFAULT, VPT_STRETCH);
   }
   else
   {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/m_misc.c 
new/prboom-plus-2.6um+g81/prboom2/src/m_misc.c
--- old/prboom-plus-2.6um+g69/prboom2/src/m_misc.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/m_misc.c      2021-04-26 
22:46:22.000000000 +0200
@@ -268,6 +268,8 @@
 int gl_shadows_maxdist;
 int gl_shadows_factor;
 int gl_blend_animations;
+spritefuzzmode_t gl_thingspritefuzzmode;
+spritefuzzmode_t gl_weaponspritefuzzmode;
 
 #endif
 
@@ -431,6 +433,7 @@
   {"pitched_sounds",{&pitched_sounds},{0},0,1, // killough 2/21/98
    def_bool,ss_none}, // enables variable pitch in sound effects (from id's 
original code)
   {"samplerate",{&snd_samplerate},{44100},11025,48000, def_int,ss_none},
+  {"slice_samplecount",{&snd_samplecount},{512},32,8192, def_int,ss_none},
   {"sfx_volume",{&snd_SfxVolume},{8},0,15, def_int,ss_none},
   {"music_volume",{&snd_MusicVolume},{8},0,15, def_int,ss_none},
   {"mus_pause_opt",{&mus_pause_opt},{1},0,2, // CPhipps - music pausing
@@ -1173,6 +1176,10 @@
    def_int,ss_none},
   {"gl_blend_animations",{&gl_blend_animations},{0},0,1,
    def_bool,ss_none},
+  
{"gl_thingspritefuzzmode",{(int*)&gl_thingspritefuzzmode},{fuzz_darken},fuzz_darken,fuzz_last-1,
+      def_int, ss_none},
+  
{"gl_weaponspritefuzzmode",{(int*)&gl_weaponspritefuzzmode},{fuzz_darken},fuzz_darken,fuzz_last-1,
+      def_int, ss_none},
 
   {"Prboom-plus emulation settings",{NULL},{0},UL,UL,def_none,ss_none},
   {"overrun_spechit_warn", {&overflows[OVERFLOW_SPECHIT].warn},  {0},0,1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/r_demo.c 
new/prboom-plus-2.6um+g81/prboom2/src/r_demo.c
--- old/prboom-plus-2.6um+g69/prboom2/src/r_demo.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/r_demo.c      2021-04-26 
22:46:22.000000000 +0200
@@ -450,6 +450,11 @@
   return (pitch << 16);
 }
 
+void R_DemoEx_ResetMLook(void)
+{
+  mlook_lump.tick = 0;
+}
+
 void R_DemoEx_WriteMLook(angle_t pitch)
 {
   if (!use_demoex_info || !demorecording)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/r_demo.h 
new/prboom-plus-2.6um+g81/prboom2/src/r_demo.h
--- old/prboom-plus-2.6um+g69/prboom2/src/r_demo.h      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/r_demo.h      2021-04-26 
22:46:22.000000000 +0200
@@ -116,6 +116,7 @@
 extern dboolean use_demoex_info;
 void R_DemoEx_WriteMLook(angle_t pitch);
 angle_t R_DemoEx_ReadMLook(void);
+void R_DemoEx_ResetMLook(void);
 
 dboolean D_TryGetWad(const char* name);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/r_draw.c 
new/prboom-plus-2.6um+g81/prboom2/src/r_draw.c
--- old/prboom-plus-2.6um+g69/prboom2/src/r_draw.c      2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/r_draw.c      2021-04-26 
22:46:22.000000000 +0200
@@ -1076,18 +1076,18 @@
       only_stbar = screenblocks >= 10;
     }
 
-    if (only_stbar)
+    if (only_stbar && ST_SCALED_OFFSETX > 0)
     {
       int stbar_top = SCREENHEIGHT - ST_SCALED_HEIGHT;
 
       V_FillFlat(grnrock.lumpnum, 1,
-        0, stbar_top, wide_offsetx, ST_SCALED_HEIGHT, VPT_NONE);
+        0, stbar_top, ST_SCALED_OFFSETX, ST_SCALED_HEIGHT, VPT_NONE);
       V_FillFlat(grnrock.lumpnum, 1,
-        SCREENWIDTH - wide_offsetx, stbar_top, wide_offsetx, ST_SCALED_HEIGHT, 
VPT_NONE);
+        SCREENWIDTH - ST_SCALED_OFFSETX, stbar_top, ST_SCALED_OFFSETX, 
ST_SCALED_HEIGHT, VPT_NONE);
       
       // line between view and status bar
-      V_FillPatch(brdr_b.lumpnum, 1, 0, stbar_top, wide_offsetx, 
brdr_b.height, VPT_NONE);
-      V_FillPatch(brdr_b.lumpnum, 1, SCREENWIDTH - wide_offsetx, stbar_top, 
wide_offsetx, brdr_b.height, VPT_NONE);
+      V_FillPatch(brdr_b.lumpnum, 1, 0, stbar_top, ST_SCALED_OFFSETX, 
brdr_b.height, VPT_NONE);
+      V_FillPatch(brdr_b.lumpnum, 1, SCREENWIDTH - ST_SCALED_OFFSETX, 
stbar_top, ST_SCALED_OFFSETX, brdr_b.height, VPT_NONE);
 
       return;
     }
@@ -1153,18 +1153,19 @@
 
   // e6y: wide-res
   if ((ratio_multiplier != ratio_scale || wide_offsety) &&
+      ST_SCALED_OFFSETX > 0 &&
      ((SCREENHEIGHT != viewheight) ||
      ((automapmode & am_active) && ! (automapmode & am_overlay))))
   {
     for (i = (SCREENHEIGHT - ST_SCALED_HEIGHT); i < SCREENHEIGHT; i++)
     {
-      R_VideoErase (0, i, wide_offsetx);
-      R_VideoErase (SCREENWIDTH - wide_offsetx, i, wide_offsetx);
+      R_VideoErase (0, i, ST_SCALED_OFFSETX);
+      R_VideoErase (SCREENWIDTH - ST_SCALED_OFFSETX, i, ST_SCALED_OFFSETX);
     }
   }
 
   if ( viewheight >= ( SCREENHEIGHT - ST_SCALED_HEIGHT ))
-    return; // if high-res, don?t go any further!
+    return; // if high-res, don't go any further!
 
   top = ((SCREENHEIGHT-ST_SCALED_HEIGHT)-viewheight)/2;
   side = (SCREENWIDTH-scaledviewwidth)/2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/s_advsound.c 
new/prboom-plus-2.6um+g81/prboom2/src/s_advsound.c
--- old/prboom-plus-2.6um+g69/prboom2/src/s_advsound.c  2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/s_advsound.c  2021-04-26 
22:46:22.000000000 +0200
@@ -59,15 +59,27 @@
 //
 void S_ParseMusInfo(const char *mapid)
 {
-  memset(&musinfo, 0, sizeof(musinfo));
-  musinfo.current_item = -1;
-
-  S_music[NUMMUSIC].lumpnum = -1;
 
   if (W_CheckNumForName("MUSINFO") != -1)
   {
     int num, lumpnum;
     int inMap = false;
+    int load_muslump = -1;
+    /* musinfo item zero is initialized
+     * before we reach the parser and it must be
+     * saved and restored */
+    int itemzero = musinfo.items[0];
+
+    /* don't restart music that is already playing */
+    if (mus_playing &&
+        mus_playing->lumpnum == S_music[NUMMUSIC].lumpnum) {
+        load_muslump = S_music[NUMMUSIC].lumpnum;
+    }
+
+    memset(&musinfo, 0, sizeof(musinfo));
+    musinfo.items[0] = itemzero;
+    musinfo.current_item = load_muslump;
+    S_music[NUMMUSIC].lumpnum = load_muslump;
 
     SC_OpenLump("MUSINFO");
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/s_advsound.h 
new/prboom-plus-2.6um+g81/prboom2/src/s_advsound.h
--- old/prboom-plus-2.6um+g69/prboom2/src/s_advsound.h  2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/s_advsound.h  2021-04-26 
22:46:22.000000000 +0200
@@ -35,6 +35,7 @@
 #define __S_ADVSOUND__
 
 #include "p_mobj.h"
+#include "sounds.h"
 
 #ifdef __GNUG__
 #pragma interface
@@ -55,6 +56,7 @@
   int items[MAX_MUS_ENTRIES];
 } musinfo_t;
 
+extern musicinfo_t *mus_playing;
 extern musinfo_t musinfo;
 
 void S_ParseMusInfo(const char *mapid);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/s_sound.c 
new/prboom-plus-2.6um+g81/prboom2/src/s_sound.c
--- old/prboom-plus-2.6um+g69/prboom2/src/s_sound.c     2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/s_sound.c     2021-04-26 
22:46:22.000000000 +0200
@@ -95,7 +95,7 @@
 static dboolean mus_paused;
 
 // music currently being played
-static musicinfo_t *mus_playing;
+musicinfo_t *mus_playing;
 
 // music currently should play
 static int musicnum_current;
@@ -207,6 +207,7 @@
          int muslump = W_CheckNumForName(gamemapinfo->music);
          if (muslump >= 0)
          {
+                 musinfo.items[0] = muslump;
                  S_ChangeMusInfoMusic(muslump, true);
                  return;
          }
@@ -533,6 +534,7 @@
   // current music which should play
   musicnum_current = musicnum;
   musinfo.current_item = -1;
+  S_music[NUMMUSIC].lumpnum = -1;
 
   //jff 1/22/98 return if music is not enabled
   if (!mus_card || nomusicparm)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/st_stuff.c 
new/prboom-plus-2.6um+g81/prboom2/src/st_stuff.c
--- old/prboom-plus-2.6um+g69/prboom2/src/st_stuff.c    2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/st_stuff.c    2021-04-26 
22:46:22.000000000 +0200
@@ -56,6 +56,7 @@
 int ST_SCALED_HEIGHT;
 int ST_SCALED_WIDTH;
 int ST_SCALED_Y;
+int ST_SCALED_OFFSETX;
 
 // Palette indices.
 // For damage/bonus red-/gold-shifts
@@ -311,7 +312,7 @@
 static patchnum_t faceback; // CPhipps - single background, translated for 
different players
 
 //e6y: status bar background
-static patchnum_t stbarbg;
+static patchnum_t stbarbg = {0};
 patchnum_t grnrock;
 patchnum_t brdr_t, brdr_b, brdr_l, brdr_r;
 patchnum_t brdr_tl, brdr_tr, brdr_bl, brdr_br;
@@ -398,6 +399,36 @@
 
 static void ST_Stop(void);
 
+// [FG] support widescreen status bar backgrounds
+
+void ST_SetScaledWidth(void)
+{
+  int width = stbarbg.width;
+
+  if (width == 0)
+      width = ST_WIDTH;
+
+  switch (render_stretch_hud)
+  {
+    case patch_stretch_16x10:
+      ST_SCALED_WIDTH  = width * patches_scalex;
+      break;
+    case patch_stretch_4x3:
+      ST_SCALED_WIDTH  = width * WIDE_SCREENWIDTH / 320;
+      break;
+    case patch_stretch_full:
+      ST_SCALED_WIDTH  = width * SCREENWIDTH / 320;
+      break;
+  }
+
+  ST_SCALED_WIDTH = (ST_SCALED_WIDTH + 3) & (int)~3;
+
+  if (ST_SCALED_WIDTH > SCREENWIDTH)
+      ST_SCALED_WIDTH = SCREENWIDTH;
+
+  ST_SCALED_OFFSETX = (SCREENWIDTH - ST_SCALED_WIDTH) / 2;
+}
+
 static void ST_refreshBackground(void)
 {
   int y = ST_Y;
@@ -420,7 +451,7 @@
            displayplayer ? CR_LIMIT+displayplayer : CR_DEFAULT,
            displayplayer ? (VPT_TRANS | VPT_ALIGN_BOTTOM) : flags);
       }
-      V_CopyRect(BG, FG, ST_X + wide_offsetx, SCREENHEIGHT - ST_SCALED_HEIGHT, 
ST_SCALED_WIDTH, ST_SCALED_HEIGHT, VPT_NONE);
+      V_CopyRect(BG, FG, ST_X + ST_SCALED_OFFSETX, SCREENHEIGHT - 
ST_SCALED_HEIGHT, ST_SCALED_WIDTH, ST_SCALED_HEIGHT, VPT_NONE);
     }
 }
 
@@ -1010,6 +1041,9 @@
     }
   R_SetPatchNum(&faces[facenum++], "STFGOD0");
   R_SetPatchNum(&faces[facenum++], "STFDEAD0");
+
+  // [FG] support widescreen status bar backgrounds
+  ST_SetScaledWidth();
 }
 
 static void ST_loadData(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/st_stuff.h 
new/prboom-plus-2.6um+g81/prboom2/src/st_stuff.h
--- old/prboom-plus-2.6um+g69/prboom2/src/st_stuff.h    2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/st_stuff.h    2021-04-26 
22:46:22.000000000 +0200
@@ -52,6 +52,9 @@
 extern int ST_SCALED_HEIGHT;
 extern int ST_SCALED_WIDTH;
 extern int ST_SCALED_Y;
+extern int ST_SCALED_OFFSETX;
+
+void ST_SetScaledWidth(void);
 
 //
 // STATUS BAR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/umapinfo.cpp 
new/prboom-plus-2.6um+g81/prboom2/src/umapinfo.cpp
--- old/prboom-plus-2.6um+g69/prboom2/src/umapinfo.cpp  2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/umapinfo.cpp  2021-04-26 
22:46:22.000000000 +0200
@@ -191,6 +191,113 @@
        "PlasmaBall2",
        "EvilSceptre",
        "UnholyBible",
+       "MusicChanger",
+       "Deh_Actor_145",
+       "Deh_Actor_146",
+       "Deh_Actor_147",
+       "Deh_Actor_148",
+       "Deh_Actor_149",
+       // DEHEXTRA Actors start here
+       "Deh_Actor_150", // Extra thing 0
+       "Deh_Actor_151", // Extra thing 1
+       "Deh_Actor_152", // Extra thing 2
+       "Deh_Actor_153", // Extra thing 3
+       "Deh_Actor_154", // Extra thing 4
+       "Deh_Actor_155", // Extra thing 5
+       "Deh_Actor_156", // Extra thing 6
+       "Deh_Actor_157", // Extra thing 7
+       "Deh_Actor_158", // Extra thing 8
+       "Deh_Actor_159", // Extra thing 9
+       "Deh_Actor_160", // Extra thing 10
+       "Deh_Actor_161", // Extra thing 11
+       "Deh_Actor_162", // Extra thing 12
+       "Deh_Actor_163", // Extra thing 13
+       "Deh_Actor_164", // Extra thing 14
+       "Deh_Actor_165", // Extra thing 15
+       "Deh_Actor_166", // Extra thing 16
+       "Deh_Actor_167", // Extra thing 17
+       "Deh_Actor_168", // Extra thing 18
+       "Deh_Actor_169", // Extra thing 19
+       "Deh_Actor_170", // Extra thing 20
+       "Deh_Actor_171", // Extra thing 21
+       "Deh_Actor_172", // Extra thing 22
+       "Deh_Actor_173", // Extra thing 23
+       "Deh_Actor_174", // Extra thing 24
+       "Deh_Actor_175", // Extra thing 25
+       "Deh_Actor_176", // Extra thing 26
+       "Deh_Actor_177", // Extra thing 27
+       "Deh_Actor_178", // Extra thing 28
+       "Deh_Actor_179", // Extra thing 29
+       "Deh_Actor_180", // Extra thing 30
+       "Deh_Actor_181", // Extra thing 31
+       "Deh_Actor_182", // Extra thing 32
+       "Deh_Actor_183", // Extra thing 33
+       "Deh_Actor_184", // Extra thing 34
+       "Deh_Actor_185", // Extra thing 35
+       "Deh_Actor_186", // Extra thing 36
+       "Deh_Actor_187", // Extra thing 37
+       "Deh_Actor_188", // Extra thing 38
+       "Deh_Actor_189", // Extra thing 39
+       "Deh_Actor_190", // Extra thing 40
+       "Deh_Actor_191", // Extra thing 41
+       "Deh_Actor_192", // Extra thing 42
+       "Deh_Actor_193", // Extra thing 43
+       "Deh_Actor_194", // Extra thing 44
+       "Deh_Actor_195", // Extra thing 45
+       "Deh_Actor_196", // Extra thing 46
+       "Deh_Actor_197", // Extra thing 47
+       "Deh_Actor_198", // Extra thing 48
+       "Deh_Actor_199", // Extra thing 49
+       "Deh_Actor_200", // Extra thing 50
+       "Deh_Actor_201", // Extra thing 51
+       "Deh_Actor_202", // Extra thing 52
+       "Deh_Actor_203", // Extra thing 53
+       "Deh_Actor_204", // Extra thing 54
+       "Deh_Actor_205", // Extra thing 55
+       "Deh_Actor_206", // Extra thing 56
+       "Deh_Actor_207", // Extra thing 57
+       "Deh_Actor_208", // Extra thing 58
+       "Deh_Actor_209", // Extra thing 59
+       "Deh_Actor_210", // Extra thing 60
+       "Deh_Actor_211", // Extra thing 61
+       "Deh_Actor_212", // Extra thing 62
+       "Deh_Actor_213", // Extra thing 63
+       "Deh_Actor_214", // Extra thing 64
+       "Deh_Actor_215", // Extra thing 65
+       "Deh_Actor_216", // Extra thing 66
+       "Deh_Actor_217", // Extra thing 67
+       "Deh_Actor_218", // Extra thing 68
+       "Deh_Actor_219", // Extra thing 69
+       "Deh_Actor_220", // Extra thing 70
+       "Deh_Actor_221", // Extra thing 71
+       "Deh_Actor_222", // Extra thing 72
+       "Deh_Actor_223", // Extra thing 73
+       "Deh_Actor_224", // Extra thing 74
+       "Deh_Actor_225", // Extra thing 75
+       "Deh_Actor_226", // Extra thing 76
+       "Deh_Actor_227", // Extra thing 77
+       "Deh_Actor_228", // Extra thing 78
+       "Deh_Actor_229", // Extra thing 79
+       "Deh_Actor_230", // Extra thing 80
+       "Deh_Actor_231", // Extra thing 81
+       "Deh_Actor_232", // Extra thing 82
+       "Deh_Actor_233", // Extra thing 83
+       "Deh_Actor_234", // Extra thing 84
+       "Deh_Actor_235", // Extra thing 85
+       "Deh_Actor_236", // Extra thing 86
+       "Deh_Actor_237", // Extra thing 87
+       "Deh_Actor_238", // Extra thing 88
+       "Deh_Actor_239", // Extra thing 89
+       "Deh_Actor_240", // Extra thing 90
+       "Deh_Actor_241", // Extra thing 91
+       "Deh_Actor_242", // Extra thing 92
+       "Deh_Actor_243", // Extra thing 93
+       "Deh_Actor_244", // Extra thing 94
+       "Deh_Actor_245", // Extra thing 95
+       "Deh_Actor_246", // Extra thing 96
+       "Deh_Actor_247", // Extra thing 97
+       "Deh_Actor_248", // Extra thing 98
+       "Deh_Actor_249", // Extra thing 99
        NULL
 };
 
@@ -523,7 +630,6 @@
                if (parsed.endpic[0] && (strcmp(parsed.endpic, "-") != 0))
                {
                        parsed.nextmap[0] = parsed.nextsecret[0] = 0;
-                       if (parsed.endpic[0] == '!') parsed.endpic[0] = 0;
                }
                else if (!parsed.nextmap[0] && !parsed.endpic[0])
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/v_video.c 
new/prboom-plus-2.6um+g81/prboom2/src/v_video.c
--- old/prboom-plus-2.6um+g69/prboom2/src/v_video.c     2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/v_video.c     2021-04-26 
22:46:22.000000000 +0200
@@ -425,6 +425,10 @@
   if (!trans)
     flags &= ~VPT_TRANS;
 
+  // [FG] automatically center wide patches without horizontal offset
+  if (patch->width > 320 && patch->leftoffset == 0)
+    x -= (patch->width - 320) / 2;
+
   if (V_GetMode() == VID_MODE8 && !(flags & VPT_STRETCH_MASK)) {
     int             col;
     byte           *desttop = 
screens[scrn].data+y*screens[scrn].byte_pitch+x*V_GetPixelDepth();
@@ -559,7 +563,7 @@
       top =  (y < 0 || y > 200 ? (y * params->video->height) / 200 : 
params->video->y1lookup[y]);
 
       if (x + patch->width < 0 || x + patch->width > 320)
-        right = ( ((x + patch->width - 1) * params->video->width) / 320 );
+        right = ( ((x + patch->width) * params->video->width - 1) / 320 );
       else
         right = params->video->x2lookup[x + patch->width - 1];
 
@@ -1683,7 +1687,6 @@
     patches_scaley = MIN(render_patches_scaley, patches_scaley);
   }
 
-  ST_SCALED_WIDTH = ST_WIDTH * patches_scalex;
   ST_SCALED_HEIGHT = ST_HEIGHT * patches_scaley;
 
   if (SCREENWIDTH < 320 || WIDE_SCREENWIDTH < 320 ||
@@ -1702,7 +1705,6 @@
     break;
   case patch_stretch_4x3:
     ST_SCALED_HEIGHT = ST_HEIGHT * WIDE_SCREENHEIGHT / 200;
-    ST_SCALED_WIDTH  = WIDE_SCREENWIDTH;
 
     ST_SCALED_Y = SCREENHEIGHT - ST_SCALED_HEIGHT;
     
@@ -1711,7 +1713,6 @@
     break;
   case patch_stretch_full:
     ST_SCALED_HEIGHT = ST_HEIGHT * SCREENHEIGHT / 200;
-    ST_SCALED_WIDTH  = SCREENWIDTH;
 
     ST_SCALED_Y = SCREENHEIGHT - ST_SCALED_HEIGHT;
     wide_offset2x = 0;
@@ -1725,6 +1726,9 @@
   SCREEN_320x200 =
     (SCREENWIDTH == 320) && (SCREENHEIGHT == 200) &&
     (WIDE_SCREENWIDTH == 320) && (WIDE_SCREENHEIGHT == 200);
+
+  // [FG] support widescreen status bar backgrounds
+  ST_SetScaledWidth();
 }
 
 void V_GetWideRect(int *x, int *y, int *w, int *h, enum patch_translation_e 
flags)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prboom-plus-2.6um+g69/prboom2/src/wi_stuff.c 
new/prboom-plus-2.6um+g81/prboom2/src/wi_stuff.c
--- old/prboom-plus-2.6um+g69/prboom2/src/wi_stuff.c    2021-04-08 
13:00:15.000000000 +0200
+++ new/prboom-plus-2.6um+g81/prboom2/src/wi_stuff.c    2021-04-26 
22:46:22.000000000 +0200
@@ -423,11 +423,11 @@
   else
     sprintf(name, "WIMAP%d", wbs->epsd);
 
-  // background
-  V_DrawNamePatch(0, 0, FB, name, CR_DEFAULT, VPT_STRETCH);
-
   // e6y: wide-res
   V_FillBorder(-1, 0);
+
+  // background
+  V_DrawNamePatch(0, 0, FB, name, CR_DEFAULT, VPT_STRETCH);
 }
 
 
@@ -1073,6 +1073,13 @@
       WI_drawOnLnode(wbs->next, yah);
   }
 
+  if (gamemapinfo != NULL &&
+      gamemapinfo->endpic[0] &&
+      strcmp(gamemapinfo->endpic, "-") != 0)
+  {
+    return;
+  }
+
   if (gamemission == pack_nerve && singleplayer && wbs->last == 7)
     return; // MAP08 end game
 

Reply via email to