Coder Social home page Coder Social logo

bradharding / doomretro Goto Github PK

View Code? Open in Web Editor NEW
625.0 28.0 77.0 197.05 MB

The classic, refined DOOM source port. For Windows PC.

Home Page: https://www.doomretro.com

License: GNU General Public License v3.0

Makefile 0.02% C 99.32% CMake 0.16% Objective-C 0.19% Shell 0.01% C++ 0.30%
doom retro source-port windows c sdl2 gpl gplv3 sdl sdl2-mixer

doomretro's Introduction

Hello there! I’m Brad, your friendly neighbourhood code monkey!

I’m the guy who works on DOOM Retro, the “classic, refined DOOM source port for Windows PC”. It’s been somewhat of a passion project of mine over these past few years, and as you can no doubt tell, I kinda work on it quite a lot. I’ve poured my absolute heart and soul into this fucking thing, and coding isn’t even my day job (for better or for worse)! If my persistent efforts happen to please you, would you then perhaps be ever so kind in 🩷sponsoring DOOM Retro? Or at the very least don’t hesitate to reach out if you have any suggestions or bugs you wish to share.

doomretro's People

Contributors

alexey-lysiuk avatar alunbestor avatar atsb avatar blitzy avatar bradharding avatar chungy avatar derek57 avatar derekmd avatar devnexen avatar duganchen avatar ericcurtin avatar fabiangreffrath avatar fragglet avatar ismagilli avatar jnechaevsky avatar jonathanicholas avatar jwoodie avatar lunixoid avatar manuel-k avatar mfrancis95 avatar michael-truscott avatar mr160h avatar rfomin avatar ryan-sg avatar some1namednate avatar thelonerd avatar tobiasbohnen avatar vanfanel avatar whouishere avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doomretro's Issues

Crash with 1.5 on startup

Hi Brad, finally decided to give v1.5 a whirl, and it crashes on me immediately. 1.4.3 works fine. I have a very old PC with no SSE2 support, so that could be the issue right there, and I can understand not fixing it if that is the problem.

Here's the info from drwtsn32.log

Application exception occurred:
        App: C:\Games\Doom\ports\doomretro\doomretro.exe (pid=2780)
        When: 7/28/2014 @ 07:18:33.640
        Exception number: c000001d (illegal instruction)

*----> System Information <----*
        Computer Name: COMPUTER-7084
        User Name: user
        Terminal Session Id: 0
        Number of Processors: 1
        Processor Type: x86 Family 6 Model 8 Stepping 1
        Windows Version: 5.1
        Current Build: 2600
        Service Pack: 3
        Current Type: Uniprocessor Free
        Registered Organization: Unknown Organization
        Registered Owner: Unknown User

*----> Task List <----*
   0 System Process
   4 System
 648 smss.exe
 720 csrss.exe
 752 winlogon.exe
 796 services.exe
 808 lsass.exe
 968 svchost.exe
1052 svchost.exe
1144 svchost.exe
1196 svchost.exe
1644 spoolsv.exe
1900 Explorer.EXE
1984 CTHELPER.EXE
2000 vsc32cnf.exe
2008 vscvol.exe
2020 ctfmon.exe
 172 QuickGammaResume.exe
1700 alg.exe
1888 svchost.exe
 992 notepad++.exe
3564 firefox.exe
3468 rxvt.exe
1600 bash.exe
3208 plugin-container.exe
2780 doomretro.exe
2140 dwwin.exe
1308 drwtsn32.exe

*----> Module List <----*
(0000000000400000 - 00000000005d9000: C:\Games\Doom\ports\doomretro\doomretro.exe
(0000000010000000 - 0000000010024000: C:\WINDOWS\system32\vstmididrv.dll
(000000005ad70000 - 000000005ada8000: C:\WINDOWS\system32\uxtheme.dll
(0000000061700000 - 000000006174f000: C:\Games\Doom\ports\doomretro\SDL_mixer.dll
(00000000629c0000 - 00000000629c9000: C:\WINDOWS\system32\LPK.DLL
(0000000068100000 - 0000000068159000: C:\Games\Doom\ports\doomretro\SDL.dll
(0000000069f00000 - 0000000069f19000: C:\WINDOWS\system32\vscapi.dll
(0000000074720000 - 000000007476c000: C:\WINDOWS\system32\MSCTF.dll
(0000000074d90000 - 0000000074dfb000: C:\WINDOWS\system32\USP10.dll
(0000000076390000 - 00000000763ad000: C:\WINDOWS\system32\IMM32.DLL
(00000000763b0000 - 00000000763f9000: C:\WINDOWS\system32\COMDLG32.dll
(0000000076b40000 - 0000000076b6d000: C:\WINDOWS\system32\WINMM.DLL
(00000000773d0000 - 00000000774d3000: C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\COMCTL32.dll
(00000000774e0000 - 000000007761e000: C:\WINDOWS\system32\ole32.dll
(0000000077b40000 - 0000000077b62000: C:\WINDOWS\system32\Apphelp.dll
(0000000077c00000 - 0000000077c08000: C:\WINDOWS\system32\VERSION.dll
(0000000077c10000 - 0000000077c68000: C:\WINDOWS\system32\msvcrt.dll
(0000000077dd0000 - 0000000077e6b000: C:\WINDOWS\system32\ADVAPI32.DLL
(0000000077e70000 - 0000000077f03000: C:\WINDOWS\system32\RPCRT4.dll
(0000000077f10000 - 0000000077f59000: C:\WINDOWS\system32\GDI32.dll
(0000000077f60000 - 0000000077fd6000: C:\WINDOWS\system32\SHLWAPI.dll
(0000000077fe0000 - 0000000077ff1000: C:\WINDOWS\system32\Secur32.dll
(0000000078520000 - 00000000785c3000: C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.6313_x-ww_329c6c0c\MSVCR90.dll
(000000007c800000 - 000000007c8f6000: C:\WINDOWS\system32\kernel32.dll
(000000007c900000 - 000000007c9b2000: C:\WINDOWS\system32\ntdll.dll
(000000007c9c0000 - 000000007d1d8000: C:\WINDOWS\system32\SHELL32.dll
(000000007e410000 - 000000007e4a1000: C:\WINDOWS\system32\USER32.dll

*----> State Dump for Thread Id 0xe08 <----*

eax=00000008 ebx=ffffffff ecx=00000008 edx=0000003a esi=7e42deb2 edi=00484e0c
eip=0040ff4b esp=0012fe28 ebp=0012fe58 iopl=0         nv up ei pl zr na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246

*** ERROR: Module load completed but symbols could not be loaded for C:\Games\Doom\ports\doomretro\doomretro.exe
function: doomretro
        0040ff2a 33ff             xor     edi,edi
        0040ff2c d6               ???
        0040ff2d 5e               pop     esi
        0040ff2e 8be5             mov     esp,ebp
        0040ff30 5d               pop     ebp
        0040ff31 c3               ret
        0040ff32 a128244600       mov     eax,[doomretro+0x62428 (00462428)]
        0040ff37 f30f7e0538244600 movq  xmm0,qword ptr [doomretro+0x62438 (00462438)]
        0040ff3f 8b0d30244600     mov     ecx,[doomretro+0x62430 (00462430)]
        0040ff45 8b1534244600     mov     edx,[doomretro+0x62434 (00462434)]
FAULT ->*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\USER32.dll - 
0040ff4b 660fd6442418 movq qword ptr [esp+0x18],xmm0 ss:0023:0012fe40=7e42df107e44048f
        0040ff51 f30f7e0540244600 movq  xmm0,qword ptr [doomretro+0x62440 (00462440)]
        0040ff59 89442410         mov     [esp+0x10],eax
        0040ff5d a12c244600       mov     eax,[doomretro+0x6242c (0046242c)]
        0040ff62 660fd6442420     movq    qword ptr [esp+0x20],xmm0
        0040ff68 f30f7e0548244600 movq  xmm0,qword ptr [doomretro+0x62448 (00462448)]
        0040ff70 89442414         mov     [esp+0x14],eax
        0040ff74 894c2408         mov     [esp+0x8],ecx
        0040ff78 8954240c         mov     [esp+0xc],edx
        0040ff7c 660fd6442428     movq    qword ptr [esp+0x28],xmm0
        0040ff82 a801             test    al,0x1

*----> Stack Back Trace <----*
WARNING: Stack unwind information not available. Following frames may be wrong.
ChildEBP RetAddr  Args to Child              
0012fe58 0041017c 00000000 00484e0c 0015233e doomretro+0xff4b
7c90fe21 408b0000 9090c334 8b909090 ec8b55ff doomretro+0x1017c
0018a164 00000000 00000000 00000000 00000000 0x408b0000

*----> Raw Stack Dump <----*
000000000012fe28  b2 de 42 7e 01 00 00 00 - 01 00 00 00 20 fe 12 00  ..B~........ ...
000000000012fe38  0d 00 00 00 b0 ff 12 00 - 8f 04 44 7e 10 df 42 7e  ..........D~..B~
000000000012fe48  ff ff ff ff 06 df 42 7e - 75 01 41 00 32 00 00 00  ......B~u.A.2...
000000000012fe58  21 fe 90 7c 7c 01 41 00 - 00 00 00 00 0c 4e 48 00  !..||.A......NH.
000000000012fe68  3e 23 15 00 b0 fe 12 00 - 00 00 00 00 f3 d5 43 00  >#............C.
000000000012fe78  01 00 00 00 c0 fe 12 00 - 64 6f 6f 6d 72 65 74 72  ........doomretr
000000000012fe88  6f 00 12 00 2c d5 43 00 - 09 00 00 00 5d d5 43 00  o...,.C.....].C.
000000000012fe98  80 fe 12 00 2d b0 8f d8 - 01 00 00 00 80 fe 12 00  ....-...........
000000000012fea8  09 00 00 00 80 fe 12 00 - 30 ff 12 00 81 d8 43 00  ........0.....C.
000000000012feb8  01 00 00 00 c0 fe 12 00 - d1 fe 12 00 00 00 00 00  ................
000000000012fec8  01 00 00 00 4e d8 43 00 - 22 43 3a 5c 47 61 6d 65  ....N.C."C:\Game
000000000012fed8  73 5c 44 6f 6f 6d 5c 70 - 6f 72 74 73 5c 64 6f 6f  s\Doom\ports\doo
000000000012fee8  6d 72 65 74 72 6f 5c 64 - 6f 6f 6d 72 65 74 72 6f  mretro\doomretro
000000000012fef8  2e 65 78 65 00 20 00 00 - 10 23 15 00 04 d8 43 00  .exe. ...#....C.
000000000012ff08  c0 fe 12 00 d0 fe 12 00 - ad b1 8f d8 00 00 76 73  ..............vs
000000000012ff18  00 00 00 00 10 23 15 00 - d0 fe 12 00 c0 fe 12 00  .....#..........
000000000012ff28  2f 00 00 00 01 00 00 00 - c0 ff 12 00 ec cd 43 00  /.............C.
000000000012ff38  00 00 40 00 00 00 00 00 - 3e 23 15 00 01 00 00 00  ..@.....>#......
000000000012ff48  5d b1 8f d8 37 00 39 00 - 30 00 34 00 00 90 fd 7f  ]...7.9.0.4.....
000000000012ff58  44 00 00 00 98 50 15 00 - b0 52 15 00 60 50 15 00  D....P...R..`P..

Crash when entering NW area in NOVA.WAD's MAP19

NW area in NOVA.WAD's MAP19 is ridiculously complex, and causes a crash when entering it. DOOM RETRO is limit removing for most limits, but some limits still exist and have been risen. Investigate what limit is being reached (assuming that's the problem), remove the limit or at least raise it further.

ftp://ftp.fu-berlin.de/pc/msdos/gam...gawads/nova.zip

image

Some suggestions for next versions

Hi, I have tried DOOM RETRO a few days ago and I must say you did a very good job at creating a cool Classic-like source port, yet modern at same time. ;) I've got some suggestions for the next version (sadly there was already a new version released a couple of hours ago and I haven't got time to play it or to make suggestions before it was released) but anyway, here are my suggestions for the next (1.7?) version:

  1. Automap stats. I want to know how many monsters I have killed and how many secrets I have found. Since I plan to replay all Doom games but this time finding all secrets and killing all monsters in all maps (exceptions are E4M3, E4M7, MAP15 and MAP27, in these maps it is impossible to get all secrets without cheating and I don't want that), I am probably gonna use Doom Retro and I want to have this feature added.

  2. Remove black edges on screen. I have noticed that when classic HUD is selected, I have black edges on screen. Why? It has been like that since first version. But when I tried widescreen HUD, the screen was normal. Yes I have a widescreen monitor but I hate those black edges on screen. Other source ports don't do this.

  3. Weapon centering when firing. Somehow this feature found it's way in BOTH Crispy Doom and Doom Retro (versions 1.5). I hate to say but I don't like this feature. I liked the old vanilla behavior when shooting, the weapon remained in same angle but in ZDoom-like source ports (and now both Crispy Doom & Doom Retro), it goes automatically to center. I never understood why 2 "classic" source ports change this. I understand the reason ZDoom did this but I don't understand why Crispy and Retro do this. Well Fabian explained to me when I reported this in Crispy Doom github but is there any reason why it was also "fixed" in Doom Retro? What was exactly wrong with that old feature? Yes it's not a big problem and it's a very minor change but for me it matters and takes away vanilla experience.

  4. Maybe merge all changes from newer versions of Chocolate Doom? The code is based off Chocolate Doom 1.7.0 but there have been many changes since then and I would like Doom Retro to be fully updated and based off Chocolate Doom 2.0.0. I understand that you wanted to coincide Doom Retro 1.0 with Doom's 20th Anniversary (at that time latest version of Chocolate Doom was 1.7.0) but perhaps when you will release Doom Retro 2.0, will you make it based off Chocolate Doom 2.0.0? Sorry if it's a confusing question but I tried to be as clear as possible.

  5. Possibly adding Heretic, Hexen and Strife support in future with all the wonderful changes you made into Doom? I see you added Chex Quest support but the game was based directly off Doom source code and it was easier to add. But I would still like to see Heretic Retro, Hexen Retro and Strife Retro in future. :)

Thanks and I hope you reply!
-FistMarine

Graphical setup/launcher program

With the lack of Chocolate's setup program being distributed here, there are some important settings that can now only be changed by directly editing the config file. Things like resolution and control bindings come to mind. Having a simple IWAD/PWAD launcher might fit such a program too.

Of course, it shouldn't look like DOS text mode. Perhaps it could use the Doom menu and message fonts against a nice looking background. I put together a concept for such a background: http://i.imgur.com/SS3kVIO.png

Cacodemon death frame cropped

At some point a bug has crept in that causes the initial death frame of a Cacodemon to be cropped, as follows:
image
This issue didn't occur in DOOM RETRO v1.4.2, so a change since then has caused this. I am yet to determine what though. Thanks to @FunkyDarkKnight on Twitter for raising this issue.

Doom 3 BFG Edition WADS - Health Packs don't work

When using DOOM.wad acquired from Doom 3 BFG Edition (in base/wads), the modified (Pill icon) medpacks and stimpacks don't work. They show up in-game and in the widescreen HUD, but they cannot be picked up.

Access Violation in LoadDefaultCollection() in VS2013

"First-chance exception at 0x00E97697 in doomretro.exe: 0xC0000005: Access violation reading location 0xADF00DBE.
Unhandled exception at 0x00E97697 in doomretro.exe: 0xC0000005: Access violation reading location 0xADF00DBE.

doomretro.exe!LoadDefaultCollection(default_collection_t * collection) Line 636" (m_config.c)

Compiled in VS2013 Pro update 2. Violation occurs while using SDL 1 and 2.

Exception raised by call to Mix_OpenAudio()

An exception is raised by the following call to SDL's Mix_OpenAudio() in i_sdlsound.c:

if (Mix_OpenAudio(snd_samplerate, AUDIO_S16SYS, 2, GetSliceSize()) < 0)
{
    ...
}

The following error message is given:

First-chance exception at 0x953e0000 in doomretro.exe: 0xC0000005: Access violation.

This error only occurs in the debug configuration.

1.1 style pitch shifting

Though it was never officially removed, a bug in DMX later broke it. Perhaps it could be an option to use? Other Chocolate-based ports have implemented it, so you could use those as a reference.

Weapon selection quirk with berserk and chainsaw

If the player has a berserk pack and a chainsaw, they can toggle between fists and chainsaw. Without the berserk, but with the chainsaw, the chainsaw is the only choice. But Doom Retro saves the last-used weapon of those two and brings it when you press 1.

In this way, a player with berserk, who loses it by exiting the level, can bring up the fists on the next level, but only until the chainsaw is selected, at which point it's back to chainsaw only.

I personally like being able to use the fists at any time, but resetting the state of the 1 weapon on a new level is also viable.

BTW, is the player's punching distance increased in Doom Retro at all? (Directly or by changing the thing radius code.) I felt like I had an easier time punching things than in Chocolate Doom. Could've been my imagination though.

Switching to fullscreen with ALT+ENTER fails with SDL.dll v1.2.15

Since upgrading the SDL binaries in commit 4a664b7, switching to fullscreen with ALT+ENTER fails. Replacing the newer binaries with the older ones fixes the issue, but that's not ideal, as the newer binaries give increased performance.
The code that fails in i_video.c is:

screen = SDL_SetVideoMode(desktopwidth, desktopheight, 0,
                          SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF | SDL_FULLSCREEN);

No error is returned with SDL_GetError(), and desktopwidth = 1920 and desktopheight = 1200 (which are the correct dimensions for the desktop). The game simply sets a windowed mode with dimensions 1600x1200. Setting the first two parameters to 0 instead does go to fullscreen, but uses the current dimensions of the window to set the screen resolution.

(It's worth noting I guess that SDL.dll, as downloaded at http://www.libsdl.org/release/SDL-1.2.15-win32.zip, incorrectly gives its version as 1.2.14.)

Sprites sometimes disappear when on sector boundaries

I've found a few instances where sprites are sometimes completely disappearing when on a linedef between two sectors. It seems to depend on the viewing angle of the player. Easier to notice with corpses (since they stay still), but have seen it happening to moving monsters. An example of this issue is in MAP01 of No Rest For The Living. Kill the imps in front of the exit from the oval room below them in front of the blue door, and if their corpses happen to fall at the right place, their sprites can disappear.
After a bit of experimentation, it doesn't appear to be anything in r_things.c. In fact, R_ProjectSprite() isn't called at all when the offending sprite is hidden, meaning the sprite isn't being added to (either?) sector's "thinglist".

Reproducable crash when player is under heavy fire

It seems that if the player enters an area where they can sustain heavy fire (not necessarily damage), the game will eventually crash.

thefocus

This is easy to reproduce in Doom II, MAP04: The Focus (on Ultra-Violence difficulty). Enter the final room before the Exit, pick up the Yellow key, and drop down into the lower floor to receive a storm of bullets from many chaingunners. Use God mode to stay alive long enough for the crash to occur, it should only take about ten seconds.

Problem signature:
Problem Event Name: APPCRASH
Application Name: doomretro.exe
Application Version: 1.1.0.0
Application Timestamp: 52e1e949
Fault Module Name: doomretro.exe
Fault Module Version: 1.1.0.0
Fault Module Timestamp: 52e1e949
Exception Code: c0000005
Exception Offset: 0002c73e
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 3081
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

It is possible to trigger the crash with far fewer enemies/fire, though less reliably and seemingly through chance. The only variation in this crash has been the Exception Offset, otherwise all variables are reported as identical. (I crashed three times in MAP03, same difficulty, in the final room with demons, specters, and imps)

Exception Offset: 0002c80d


Just in case: I'm running Windows 7 Professional 64-bit, Service Pack 1.

Music volume not set correctly at startup

Regardless of what music_volume is set to in doomretro.cfg, music will be played at full volume at startup (the default of 15), unless the player then proceeds to adjust the music volume in the options menu.
The value of music_volume is being set and saved correctly. It doesn't occur to the sfx volume. Checking previous versions of DOOM RETRO, this issue has been present since v1.0. The issue does not occur in the latest release of Chocolate DOOM. It would seem that the initial call to SDL's Mix_VolumeMusic() does nothing, but successive calls to the same function later work fine.
Thanks to @jeffdoggett for picking up on this one. I was hoping a fix could have made it into v1.5, but I have no idea what's causing it. What I may try doing is completely revamping the sound code to match the latest Chocolate DOOM build, since the code I'm using is still based on Chocolate DOOM v1.7.

Remove blockmap limit

Having no idea how to do this on my own, I've looked at implementations from other source ports, starting with PrBoom+ and WinMBF, without much success. Next step is Doom Legacy.

Deaf monsters don't see player until shot at

Deaf monsters seem not to react to the player on sight at all until the player shoots them. This issue was raised by Platinum Shell in the Doomworld forums. It occurs in at least the start of MAP01 in FRAGPORT.WAD, which I can confirm myself. The problem does not occur when testing the same WAD in Chocolate DOOM.

Crash On Loading E2M4

When attempting to enter E2M4 normally via the E2M3 exit, or via the idclev cheat, the game instantly crashes as soon as the game would normally do the screen-wipe effect to transition to the level.

Game randomly and silently exits on startup

When loading a single IWAD using the launcher, the game will occasionally exit silently. Looking at the task manager, CPU usage goes to 0%, the process lasts for a couple of seconds, and then exits. I can't seem to replicate the issue in debug mode, which is making it difficult to determine the source of the problem. It seems to be due to something in I_ChooseIWAD(), but only when one IWAD is selected (but not NERVE.WAD). So, somewhere here:

    OPENFILENAME ofn;
    char         szFile[4096];
    int          iwadfound = false;

    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = szFile;
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "IWAD/PWAD Files (*.wad)\0*.WAD\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = wadfolder;
    ofn.Flags = OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_ALLOWMULTISELECT
                | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
    ofn.lpstrTitle = "Where\u2019s All the Data?\0";

    if (GetOpenFileName(&ofn))
    {
        // only one file was selected
        if (!ofn.lpstrFile[strlen(ofn.lpstrFile) + 1])
        {
            char *file = M_ExtractFilename(ofn.lpstrFile);

            wadfolder = strdup(M_ExtractFolder(ofn.lpstrFile));

            // if it's NERVE.WAD, try to open DOOM2.WAD with it
            if (!strcasecmp(M_ExtractFilename(ofn.lpstrFile), "NERVE.WAD"))
            {
                ...
            }

            // otherwise make sure it's an IWAD
            else if (!strcasecmp(file, "DOOM.WAD")
                    || !strcasecmp(file, "DOOM1.WAD")
                    || !strcasecmp(file, "DOOM2.WAD")
                    || !strcasecmp(file, "PLUTONIA.WAD")
                    || !strcasecmp(file, "TNT.WAD")
                    || W_WadType(ofn.lpstrFile) == IWAD)
            {
                ...
            }
        }

A empty savegame slot should be emptied when it is selected

When there's no savegame in a slot, DoomRetro should remove the " -" when the user has pressed 'enter' on the slot. There's two spaces that a user might not see and he might let them there, so it would be better to empty the field before someone writes something.

Large number of blood splats causes overflow

The blood splat queue I implemented in commit 5b61310 isn't working as intended, and causes overflows and crashes in large levels such as MAP20 in DOOM2.WAD. Although these blood splats look great, this is not the most efficient way to implement them, and if I can't get this blood splat queue working exactly as I want it to, I may as well remove the whole feature altogether.

Endless loop in NERVE.WAD's MAP09

Unable to replicate the issue anywhere else yet other than this map. To quickly cause it to happen, warp to MAP09, enable god mode, all weapons, switch to rocket launcher, flick the first switch and when the door opens immediately to your left, fire at the Demons. The game will go into an endless loop, with music continue to play. Type of weapon doesn't matter. You don't have to kill the Demons.
Here's a screenshot of where it freezes (taken with my phone, because the printscreen key wouldn't work):
image
The reason for raising this issue rather than just debugging it myself, is I can't replicate the freeze in the debug build, only for the release build. 😕
BTW, this issue is not caused by the latest commit, ec41324. It was occurring before that.

Unpausing causes music to be disabled

As recently reported by Seeker_of_Truth on the Doomworld forums (http://www.doomworld.com/vb/post/1262544):

I think I found a bug. When I started the game, I started e1m1 and pressed pause right away to look at the gray scale on the pause menu. When paused, the music continued to play. When I unpaused, the music stopped playing as though it were paused. I exited out of the game and went back in. Same thing. Music plays when paused, but stops when playing. I then went into Doom II, and again, the same thing. As of this post, I cannot figure out how to get the music playing normally again.

I'm able to replicate this issue, once I uninstalled Timidity++. Problem does not occur in Chocolate DOOM.

Make it Boom-compatible

It would be awesome for Doomretro to support Boom levels while keeping its Vanilla feeling. Although, it may take some time to implement because it has many new features.

Boom has silent teleporters, translucent walls, new linedefs types, friction effects, more scrolling walls, configurable switches, fog, etc.

Some of these are not necessary to make Boom levels work. The main idea would be to make the switches and lifts from Boom-compatible levels work. Freedoom will then be compatible with your port.

This file contains helpful documentation: https://github.com/rlsosborne/doom/blob/master/doc/boomref.txt

Key variables saved incorrectly in default.cfg.

Since v1.1, when saving settings to default.cfg, many values are substituted for easier to read "aliases". But when default.cfg is created for the first time, it seems that for the keyboard values, there is no substitution (eg. key_up is still 72 and not up, and key_up2 is still 17 and not 'w'). It is not until further saves to default.cfg that these substitutions are made.

PSX-style reverb

The Playstation 1 version of Doom applied reverb to the sound effects whenever the player was not in a sector with F_SKY1 as a floor and/or ceiling texture. The exact amount and type of reverb would need to be researched, though Quasar might know, or at least be able to investigate, as he's reverse engineered the PSX version down to the assembly code.

Crash

I'm not sure how to get a comprehensive crash report but this is what I got. It happened roughly around the same place as last time, in map Central Processing E1m6. Last time it happened right before the exit room after all the monster closets opened, this time it crashed soon as I crossed the door before going down the stairs.

Keep up the good work! You have a bonafide port here.

Problem signature:
Problem Event Name: APPCRASH
Application Name: doomretro.exe
Application Version: 1.1.0.0
Application Timestamp: 52e1e949
Fault Module Name: doomretro.exe
Fault Module Version: 1.1.0.0
Fault Module Timestamp: 52e1e949
Exception Code: c0000005
Exception Offset: 0002c80d
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Additive blending requires fine-tuning for blue and black sprite colors/opaque blue surfaces

Power-ups with blue features blend strangely against brown surfaces, while black features are rendered transparent against all surfaces. (example images taken from Ultimate Doom)

nuclearplant
E1M2 Nuclear Plant
Poor blending against brighter surfaces.

toxinrefinery
E1M3 Toxin Refinery
Top image is a best-case scenario, as the Soul sphere sits in a very dark grey room, yet it still appears to have transparency issues as a result of additive blending.
Also note near-transparent blending for the outer edge and mouth of the Soul sphere, and the center of the Partial Invisibility sphere.


The Invulnerability sphere blends well against brown and red tones, but runs into problems when set against opaque blue. Darker features are lost against bright surfaces.

spawningvats
E2M7 Spawning Vats
Blends fine in dark environments, very minor transparency issues just below the center of the sphere. (around the nose/upper mouth regions)

houseofpain
E3M4 House of Pain
Note the speckled transparency in the bottom left of the sphere.


I haven't had the opportunity to test blending for the Megasphere against blue surfaces, but I presume that it'd suffer from the same "speckled" effect as the Invulnerability sphere.

Crash when shooting an enemy being resurrected by an Arch Vile

When shooting through an enemy (a shotgun zombie in this case I believe) in the process of being resurrected by an Arch Vile (shooting through the resurrecting enemy AT the Arch Vile), the game crashed. It occured a second time so I felt it was worth reporting. I was playing on Map 3(Aztec) of Plutonia if that makes any difference.

Cannot assign action to 'i' key due to eating keypresses on cheats

Because of the way Doom Retro eats key presses when entering a cheat (an otherwise great feature), it is impossible to assign an action to the 'i' key, because it will always get eaten since cheat sequences all start with ID. I think the proper thing to do would be to not start eating keypresses until a key with no action is pressed.

(Tested with the non-SSE2 1.5 build you posted a little while ago, apologies if it's since been fixed.)

Difficulty change?

For some reason after I beat Central Processing it seems the difficulty changed. I had it on ultra violence and suddenly it was down to hurt me plenty. Figured I'd let ya know.

Distortion on weapon's sprite

Weapon's sprite are a bit distorted while the screen size is smaller than the biggest one where the status bar is displayed. In other words, when screenblocks < 10, this bug can be seen.

This can be seen on the shotgun's sprite, as well as other weapons. It's easier to see on the shotgun because it as a horizontal line on each sides that are almost the same color (white).

line-distortion2

Window border problem when starting game from WAD dialog

When DOOM RETRO is loaded using the new WAD dialog, and opens directly into windowed mode, an additional white border appears as follows:

image

This is not caused by any existing code i_video.c. Resizing or even just moving the window will fix the problem.

Some PWADs won't load through open WAD dialog

PWADs such as BTSX_E1.WAD (Back to Saturn X) and B2B.WAD (Back to Basics) won't load through the open WAD dialog, along with the appropriate IWADs. You get a "Flats section not found in IWAD" error. They work fine if you specify them from the command line, and PWADs such as SID.WAD (Suspended in Dusk) and HR.WAD (Hell Revealed) load fine from the dialog.

Crash on parsing configuration.

Doom Retro currently segfaults when you try to run it on Linux. A backtrace reveals the culprit, on line 962 of m_config.c it appears that you are copying a string to videodriver, which is a char* and thus marked read-only by the compiler.

Changing videodriver's type to a char[] of an arbitrarily-large fixed length (and also changing the extern in m_config.c to match) was enough to proceed past this obstacle. However, there's probably multiple ways of handling this correctly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.