diff --git a/README.md b/README.md index 69450a3..b6450d3 100644 --- a/README.md +++ b/README.md @@ -245,10 +245,12 @@ Usage Version History =============== -Next release +1.47 (2021-11-27) ------------ -- Really fixed first-sample dropping on Sound Blaster this time -- it seems to be caused by a driver problem that throws a stream-continue interrupt too early when the interrupt is masked and subsequently unmasked. The workaround was to defer playing of full samples until after the first interrupt. +- Really fixed first-sample dropping on Sound Blaster this time (I hope) -- it seems to be caused by a driver problem that throws a stream-continue interrupt too early when the interrupt is masked and subsequently unmasked. The new workaround defers playing of full samples until after the first interrupt. - Added COMP 128 to revert the enemies-closing-unclosable-doors glitch. Also fixed more cases where the glitch can happen (e.g., when two or more enemies step on all the corpses that block the door from closing with perfect timing) and a related glitch where a door that has been blocked open for more than 32767 tics (7.8 minutes) would not close for another 7.8 minutes even if unblocked. +- Fixed so that Esc and function keys are inaccessible when the game is already in a special playstate (e.g., player dying, level completion, etc.). This fixes many succeeding bugs such as the player dying immediately after a quick load (which happens when the player was killed at the exact moment they press F9), or saving at the exact moment of death and reloading to find yourself alive but with zero health. +- Reverted stereo separation formula -- the change was too jarring for players used to the original formula. The sound queuing system is retained, however. 1.46 (2021-11-25) ----------------- diff --git a/WOLFSRC/ID_SD.C b/WOLFSRC/ID_SD.C index 369e2e5..c834a66 100644 --- a/WOLFSRC/ID_SD.C +++ b/WOLFSRC/ID_SD.C @@ -891,20 +891,8 @@ SDL_PositionSBP(int leftpos,int rightpos) if (!SBProPresent) return; -#ifdef WOLFDOSMPU - // sound blaster pro's volume attenuation curve is too steep, - // making far sounds practically inaudible; since non-pro SB - // plays everything at full volume, the softest sounds should - // at least be audible on pro SB to be "fair" (and to prevent - // users from thinking that sounds are just being turned off - // all of a sudden, when in reality, very soft/far sounds are - // overriding very loud/near sounds) - leftpos = 15 - (leftpos >> 1); - rightpos = 15 - (rightpos >> 1); -#else // WOLFDOSMPU leftpos = 15 - leftpos; rightpos = 15 - rightpos; -#endif // WOLFDOSMPU v = ((leftpos & 0x0f) << 4) | (rightpos & 0x0f); asm pushf diff --git a/WOLFSRC/VERSION.H b/WOLFSRC/VERSION.H index 15e06fa..35babb1 100644 --- a/WOLFSRC/VERSION.H +++ b/WOLFSRC/VERSION.H @@ -7,6 +7,6 @@ //#define DEBCHECK #define CARMACIZED //#define UPLOAD -#define VERSION 1.46 +#define VERSION 1.47 #define WOLFDOSMPU #define WASD diff --git a/WOLFSRC/WL_MENU.C b/WOLFSRC/WL_MENU.C index 93d3fd7..e302ea2 100644 --- a/WOLFSRC/WL_MENU.C +++ b/WOLFSRC/WL_MENU.C @@ -788,6 +788,10 @@ int CP_CheckQuick(unsigned scancode) #endif // WOLFDOSMPU DrawPlayScreen (); +#ifdef WOLFDOSMPU + VW_FadeIn (); + StartMusic (); +#else // WOLFDOSMPU if (!startgame && !loadedgame) { VW_FadeIn (); @@ -801,8 +805,6 @@ int CP_CheckQuick(unsigned scancode) if (MousePresent) Mouse(MDelta); // Clear accumulated mouse movement -#ifdef WOLFDOSMPU -#else // WOLFDOSMPU PM_CheckMainMem (); #ifndef SPEAR @@ -885,13 +887,12 @@ int CP_CheckQuick(unsigned scancode) if (loadedgame) playstate = ex_abort; +#ifdef WOLFDOSMPU +#else // WOLFDOSMPU lasttimecount = TimeCount; if (MousePresent) Mouse(MDelta); // Clear accumulated mouse movement - -#ifdef WOLFDOSMPU -#else // WOLFDOSMPU PM_CheckMainMem (); #ifndef SPEAR diff --git a/WOLFSRC/WL_PLAY.C b/WOLFSRC/WL_PLAY.C index 3315d60..db272e7 100644 --- a/WOLFSRC/WL_PLAY.C +++ b/WOLFSRC/WL_PLAY.C @@ -2223,6 +2223,7 @@ void PlayLoop (void) { #endif // WOLFDOSMPU VW_FadeIn (); + #ifdef WOLFDOSMPU // clear pending inputs LastScan = sc_None; @@ -2230,8 +2231,10 @@ void PlayLoop (void) Mouse(MDelta); // Clear accumulated mouse movement lasttimecount = TimeCount; // don't frameskip } -#endif // WOLFDOSMPU + // do not check keys when the game is already in a transitory play state + if (! playstate) +#endif // WOLFDOSMPU CheckKeys(); // diff --git a/WOLFSRC/_WVER.H b/WOLFSRC/_WVER.H index 57192fe..64409f4 100644 --- a/WOLFSRC/_WVER.H +++ b/WOLFSRC/_WVER.H @@ -1 +1 @@ -#define VERSION 1.46 +#define VERSION 1.47