Russian-Doom / russian-doom

A limit-removing source port of Doom, Heretic and Hexen. It has numerous vanilla bug fixes, enhanced 640x400 and 1280x800 rendering resolutions, improved game palettes and offers many optional aesthetic game enhancements along with the maximum possible translation to the Russian language.
GNU General Public License v2.0
80 stars 13 forks source link

Russian Doom 4.7: Bug reports & suggestions #235

Closed cubebert-github closed 3 years ago

cubebert-github commented 3 years ago

Hey everyone; it's been a while since I've touched Github and with the new release of Russian Doom (yay! :smiley:), I wanted to give out some reports regarding any errors and some things that might improve quality of life.

  1. Doom 4 Vanilla seems to runs perfectly on Russian Doom as is, but loading it with the extra weapons provided with the download link causes some issues not encountered on other source ports. For example, loading "4_HAR.deh" will cause the weapon on the fourth slot to instantly fire on select until no more bullets are left. Holding the fire button speeds up the rate of fire, which is something that can't be done on other ports. Loading "1_VORTEX" also does the same thing, only it won't deselect when out of ammo, which makes the player stuck on that weapon. Perhaps the most fatal error occurs with loading "7_GAUSS.deh"; when firing the weapon, the game crashes and the message "R_DrawPSprite: invalid sprite frame 14 : 9" shows up. The link to the mod: https://www.doomworld.com/forum/topic/108725-doom-4-vanilla-v32/

  2. I noticed that even though the M_DOOM bug was fixed, it's possible for the status bar to have frozen remnants from the options menu. As far as I know, it's impossible to achieve this with the regular status bar, but the Jaguar status bar is tall enough to get this effect by going to "Display" from the options menu.

  3. Speaking of the Jaguar recreation, I notice that you can't load pwads with them; it instead gives an error saying that russian-doom.exe crashed. I know that the inability to load wads with -jaguar enabled is part of the design, but is it intentional for it to give out that message? I feel like it would be more user-friendly to have a message telling the user that loading wads is not allowed with -jaguar.

  4. Again with the Jaguar stuff, but I notice that the pistol flash is off compared to its' vanilla counterpart. I don't remember how the Jaguar version looked like, but I don't think it's supposed to be like that.

  5. In vanilla Doom, getting the chainsaw means that you can't use your fists unless you get a Berserk Pack. However, Russian Doom lets the user switch between the two weapons, even with the -vanilla parameter activated. Is there a way to add an option for this or disallow the player to switch between them if -vanilla is activated?

  6. Is it possible for some of the gameplay features to be documented in the readme file? Some of them, like "More Aggressive Lost Souls" or "Lethal Pellet of a Point-Blank SSG" aren't easily understandable.

  7. This isn't Doom-related, but it's concerning a bug with Russian Hexen. If you save a game just as lightning strikes and load that save, the entire level will be as bright as when you first saved the game.

That's all I have to say for this report. If you want, I could close the other report since there hasn't been any activity for three months now.

cubebert-github commented 3 years ago

A quick update: I've discovered that by using the Level Select Menu and changing the starting health value, it's possible to either die with more then 1% health or become a zombie player (for lack of a better word to describe it). The first screenshot is from setting the health to 200% and dying to a self-inflicted rocket blast, and the second one is from setting the health to 1% and getting hurt.

image image

JNechaevsky commented 3 years ago

Hello @cubebert-github! Sorry, I'm not very responsive last days, but thank you for your time!

  1. Doom 4 Vanilla seems to runs perfectly on Russian Doom as is, but loading it with the extra weapons provided with the download link causes some issues not encountered on other source ports.

Oh, all the problems comes from mods! :sweat_smile: But that's really odd, just tried to run D4V with "4_HAR.deh" and then with "7_GAUSS.deh" in Crispy Doom (where from all of Dehacked improvements came from) - errors are absolutely same. :anguished:

  1. I noticed that even though the M_DOOM bug was fixed, it's possible for the status bar to have frozen remnants from the options menu.

Fixed in https://github.com/JNechaevsky/russian-doom/commit/1a2a9d15d5a54404be4808731f1aa052c1c8f1d1, my oversight.

  1. Speaking of the Jaguar recreation, I notice that you can't load pwads with them; it instead gives an error saying that russian-doom.exe crashed.

Hmm, -file seems to be working for me, even BlackOps.wad working. What exactly pwad you are loading?

  1. Again with the Jaguar stuff, but I notice that the pistol flash is off compared to its' vanilla counterpart. I don't remember how the Jaguar version looked like, but I don't think it's supposed to be like that.

Well, this is complicated. In vanilla Doom, pistol is using 1st attacking state: https://github.com/JNechaevsky/russian-doom/blob/master/src/doom/d_items.c#L63

    {
        // pistol
        am_clip,
        S_PISTOLUP,
        S_PISTOLDOWN,
        S_PISTOL,
        S_PISTOL1, <----- This one
        S_PISTOLFLASH
    },  

In Jaguar Doom, for some reason this state was changed to 2nd, despite of 1st one is still available in IWAD: https://github.com/JNechaevsky/jaguar-doom/blob/master/p_pspr.c#L166

    {   /* pistol */
/* ammo         */  am_clip,
/* upstate      */  S_PISTOLUP,
/* downstate    */  S_PISTOLDOWN,
/* readystate   */  S_PISTOL,
/* atkstate     */  S_PISTOL2, <----- This one
/* flashstate   */  S_PISTOLFLASH
    },

Interestingly, because of this most console source ports have also different looking pistol attack, PSX Doom for sure. The problem is, Jaguar weapons are recreated via Dehacked in RD. Not 100% accurate, but It was far easier than having a bunch of conditions inside the program code. If I remember correctly, I was not lucky with implementing 2nd state same to Jaguar and done in "at least looks like" way. Worth to try again, of course.

  1. In vanilla Doom, getting the chainsaw means that you can't use your fists unless you get a Berserk Pack

Fixed in https://github.com/JNechaevsky/russian-doom/commit/286cfdb0da5ea4f4a312db7a60b31738e9258e2d, and by the way, backpack no longer will be given by ID(K)FA in -vanilla. :smiling_imp:

  1. Is it possible for some of the gameplay features to be documented in the readme file?

Must say honestly, it's a most boring part for me to making changelog/documentation. Features aren't documented even in Russian, and I still can't find a will to start it... :disappointed: But anyways:

"More Aggressive Lost Souls" - it's a complex feature that fixes few vanilla bugs:

"Lethal Pellet of a Point-Blank SSG" - there is a chance of gibbing small monsters by point-black attack from Super Shotgun.

  1. This isn't Doom-related, but it's concerning a bug with Russian Hexen. If you save a game just as lightning strikes and load that save, the entire level will be as bright as when you first saved the game.

I see, possible to reproduce right in a first map. I'm not sure it is easy to fix as easy as it was with fire flicker in Doom. But the real problem is - I've totally lost interest for both Heretic and Hexen development, as well as Strife.

A quick update: I've discovered that by using the Level Select Menu and changing the starting health value, it's possible to either die with more then 1% health or become a zombie player

Fixed in https://github.com/JNechaevsky/russian-doom/commit/8243bbc18b60326241623eb8b96be8630a92f28a, I totally forgot that there are, briefly speaking, two player health values: one is using for status bar indication, another is real player health.

P.S. Are the silent crashes from #215 gone for you? I was trying to reproduce it in many different ways, even on real Windows 7 machine - no luck.

cubebert-github commented 3 years ago

Oh, all the problems comes from mods! :sweat_smile: But that's really odd, just tried to run D4V with "4_HAR.deh" and then with "7_GAUSS.deh" in Crispy Doom (where from all of Dehacked improvements came from) - errors are absolutely same.

I haven't used Crispy Doom in a while, but I think the errors might come from loading .deh files that modify actors already changed in DeHacked. If I may ask, what are the DeHacked improvements?

Hmm, -file seems to be working for me, even BlackOps.wad working. What exactly pwad you are loading?

I've first tried using Scythe, which brought up the error, but I've later tried other wads. Some of them, like Doom 2 The Way Id Did, Doom 64 For Doom 2, and earth.wad don't work at all while others, like D4V, seem to work just fine (though in D4V's case, the status bar is messed up.) I don't know what causes it to crash, but generally, gameplay mods seem to load successfully.

image

Interestingly, because of this most console source ports have also different looking pistol attack, PSX Doom for sure. The problem is, Jaguar weapons are recreated via Dehacked in RD. Not 100% accurate, but It was far easier than having a bunch of conditions inside the program code. If I remember correctly, I was not lucky with implementing 2nd state same to Jaguar and done in "at least looks like" way. Worth to try again, of course.

If it helps out, there are a couple of Jaguar source ports such as Calico that you can look at in order to better recreate the DeHacked code. Link to Calico's p_pspr.c: https://github.com/team-eternity/calico-doom/blob/master/src/p_pspr.c

Must say honestly, it's a most boring part for me to making changelog/documentation. Features aren't documented even in Russian, and I still can't find a will to start it...

If you want, I can help document the optional gameplay features. The only problem is that I can't write them in Russian, so someone will have to do that part.

P.S. Are the silent crashes from #215 gone for you? I was trying to reproduce it in many different ways, even on real Windows 7 machine - no luck.

Do you mean the crashes for the Icon of Sin with the 64 sound channel limit? It no longer crashes for me, but the inability to pickup items after loading a save still occurs. The good news however is that I've discovered a quick fix: Just start a new game and load the affected save. After that, items should be picked up like normal.

Two more things I've discovered while playtesting; first, the spectre is rendered differently than vanilla Doom. Regardless of the video renderer being hardware or software, the spectre seems like it's being duplicated. I've set the graphic detail from my usual setting of low to high in order to demonstrate what it looks like in my end. For context, my graphics card is an NVidia GeForce 960 and my CPU is an Intel Core i5-4690k.

image

The second thing is that if the video renderer is set to software and the frame rate is capped to 35, the game will skip frames. It's not sluggish to play, but it will be choppy and it won't happen if I have an uncapped frame rate.

JNechaevsky commented 3 years ago

I haven't used Crispy Doom in a while, but I think the errors might come from loading .deh files that modify actors already changed in DeHacked. If I may ask, what are the DeHacked improvements?

It's hard to say. I don't see any special code in those .DEH files, but probably standard Dehacked parser just handle it. I have a feeling that extra .DEH was created and tested with GZDoom, which is a far-far-far different engine mostly in every aspect...

Improvements are pretty simple: it's a MBF code pointers / extensions, ability to load long text strings and DEHACKED lumps with potential errors. Ah yes, ability to load DEHACKED lump also comes from Crispy, since RD initially was based on Chocolate Doom which is not allowing to do this.

I've first tried using Scythe, which brought up the error, but I've later tried other wads.

Despite of doom-jaguar.wad is an IWAD and using Doom 2 "game mode", in fact, it's not a full IWAD and don't have all necessary resources to run any Doom 2 content properly (this is a question of both legality and unused resources for Jaguar emulation). More of that, some things like level names are hard-coded into executable and cannot be changed via PWADs.

As about status bar - this not exactly a bug. Jaguar status bar is a 40 pixels tall, while vanilla is strictly 32. It also have a different widget placement, that's why it's totally incompatible with mods and looking screwed up.

In other words: better don't try to use mods with Jaguar, because Jaguar is a mod itself.

Sure, I have tried Calico. It's awesome. :) AFAIR, I was also trying to use ~three different Jaguar console emulators, but none of them was working properly. As about code in p_pspr.c, it's identical to original Jaguar Doom source code. I just need to spend more time to figure out what to do with one frame. 🤤

If you want, I can help document the optional gameplay features. The only problem is that I can't write them in Russian, so someone will have to do that part.

Only and exclusively if you have a time and mood for this! Thank you very much!

the spectre is rendered differently than vanilla Doom

image

Oh my, fuzz effect is drunk... Fixed in https://github.com/JNechaevsky/russian-doom/commit/f132924035ed0b7030f03cff084bdc2b7d3dee1c, there is nothing wrong with hardware specs., I've just messed up screen width ratios for fuzz.

The second thing is that if the video renderer is set to software and the frame rate is capped to 35, the game will skip frames. It's not sluggish to play, but it will be choppy and it won't happen if I have an uncapped frame rate.

There is nothing I can do about it, sadly. Software rendered (but in proper words it's just a "calculate video output via CPU/GPU") is a hack of SDL library, and choppy framerate is a consequence. Pretty much same to Chocolate Doom 2.x versions, which were using SDL1.

Do you mean the crashes for the Icon of Sin with the 64 sound channel limit? It no longer crashes for me, but the inability to pickup items after loading a save still occurs.

I was meaning item pickups bug. Honestly, sad to hear that it still occurs on your side, but now I'm completely out of ideas what do.

JNechaevsky commented 3 years ago

Looks likes I finally handled Jaguar pistol, was messing with wrong frame. Have a look please: https://youtu.be/BzWXcf6BB74 Or you even could try it in original Doom, here's a .DEH patch: jag-pistol.zip

Timing may be potentially different (slightly), because Jaguar version have a different tic rate: 15 frames per second, while in original Doom it's 35. This explains why states array have a mostly doubled speed according to vanilla: https://github.com/JNechaevsky/jaguar-doom/blob/master/info.c#L52

I believe decreasing tic rate was a huge optimization back in a day. In short words, Jaguar's CPU was needed to count everything 15 times per second, not 35.

JNechaevsky commented 3 years ago

To summarize, what do we have to care about:

Better I make a small point-release soon, because having a "drunk" fuzz effect certainly not a good thing to have. I've also made a few small improvements, like saving game window position and option to make a HUD background scaled (https://github.com/JNechaevsky/russian-doom/issues/236).

cubebert-github commented 3 years ago

In other words: better don't try to use mods with Jaguar, because Jaguar is a mod itself.

Ah, got it. That does make me wonder if custom maps are doable, so long as they follow the restrictions and resources for using the -jaguar parameter.

I was meaning item pickups bug. Honestly, sad to hear that it still occurs on your side, but now I'm completely out of ideas what do.

Don't worry too much about it. :smile: Since I've discovered a method of getting past it, it isn't that big of an issue now. Plus, since I apparently am the only one who reported it, it's possible that it's just something on my end for whatever reason; I would say go ahead and cross it off the buglist.

  • Something not right with extended .DEH weapon files in D4V. Probably nothing I can do about it, because it seems to be crashing same way in RD-friendly ports.

I think this is likely the only option to take, as that issue seems to be from the mod's side, not Russian or Crispy Doom. The alternate weapons for D4V seems to be build around Chocolate Doom's more rigid DeHacked code and by the time Crispy Doom updated the code, it inadvertently broke the weapons. Looks like Noiser will have to take account for this when the next update rolls...

I'm afraid I'm out of interest for Hexen completely.

I've heard that Nash Muhandes was almost complete with a new version of WidePix that would include assets for Heretic and Hexen. If you want, I could be willing to add them into Russian Heretic and Hexen for you since Doom is already covered.

JNechaevsky commented 3 years ago

ENDOOM font seems to be fine now, I just need to add some comments into the code and merge it: image

The logics is fairly simple:

JNechaevsky commented 3 years ago

Small font now appear on ENDOOM, if game window is below 640 pixels in width or 480 pixels in height.

image

Have to say that having an English-only characters if game language is English is absolutely right thing to do.

JNechaevsky commented 3 years ago

Looks likes everything is done here.