Jump to content

Chocorenderlimits/CRL 1.8 (May 19, 2024)


Recommended Posts

Unfortunately, I have almost zero knowledge of MIDI code. Current MIDI implementation comes directly from Chocolate Doom where it was written by @ceski and @rfomin, so perhaps they can give an advice about this case? Or maybe even better to do such check in Chocolate Doom itself, as this case seems to be related to accurate emulation of DOS executable. I'm merging latest changes from Chocolate code base from time to time to keep everything in sync.

 

And could you please provide a testing MIDI or WAD?

Share this post


Link to post

We have only written native Windows MIDI, it is only part of Chocolate Doom's MIDI system. Indeed, Chocolate Doom converts MUS files to MIDI unlike vanilla Doom which converts MIDI to MUS. The MIDI2MUS code that vanilla Doom uses is not perfect, but I think it can convert MIDI type 0. So I'm interested in this MIDI file as well.

Share this post


Link to post

I chatted with Arsinikk earlier. Here's a quick way to reproduce the vanilla bug:

  1. Extract oww.mid from ROTT (darkwar.wad).
  2. Vanilla Doom (via the built-in DMX midi2mus) messes up the pitch bends in the unmodified .mid, so attempt to convert it to .mus with midi3mus (yes "3").
  3. Add the converted .mus to a wad with SLADE. This seems to work fine in vanilla Doom.
  4. Convert the .mus back to .mid with SLADE. Save the wad. This crashes vanilla Doom with "Z_CT at w.wad.c:510".

I haven't looked any closer than that yet.

Share this post


Link to post
  • 1 month later...

For starters, thanks a lot of working on this! All the added features are amazing.

 

Would it be possible to get a hotkey for toggling the statistics overlay on/off? Probably so that it shows/hides all the configurable stats, and not just the rendering stuff. This way it'd be easier to take screenshots on the go, without having to go to the menu to turn everything off.

Share this post


Link to post

Absolutelly possible, and it's planned, thank you for suggestion. Should be very easy to implement, just need to come to conclusion. If I'm getting everyting right, it should be...

  • Bindable hotkey on "CRL Controls" section, named "Toggle all Widgets" or "Toggle extended HUD", with no default bind.
  • Along with hotkey, it should exist as a variable, so there will not be needed to turn HUD off every time the game is restarted.
  • It should togle all possible widgets: render, playstate, counters, as well as FPS and demo timers. All of them.
  • When widgets are off by using this bind, small text note should appear in "Widgets and Automap" menu, so user won't be confused to changing widgets and don't get them on the screen.

Share this post


Link to post

CRL 1.7 is out! Phew, a lot of changes. I have composed a small Wiki to keep descriptions of render and playstate counters, game modes and cheat codes in one place, so please feel free to take a look.

 

Downloaь:

Changelog:

Spoiler

 

First things first

  • If render counters are set to "Overflows only", visplanes counter will still blink if MAX value has an overflow value.
  • Pressing USE key on DR special type's 1-sided linedef no longer aborts with an error, but prints an in-game warning instead.
  • Added check for MIDI type 0, and If found, a console and in-game warning will be printed. This is rare, but critical case for Vanilla Doom, see reference (thanks @Arsinikk for heads up and @ceski for investigation and fix!).

New cheat codes

  • IDKA gives only all keys.
  • MDK kills monster on target (thanks @Alaux).
  • Cheat code TNTEM explodes all monsters on level (turns into "xdeath" state), KILLEM just kills them.

New keyboard binds

  • Game modes: No Momentum mode.
  • Cheat shortcuts: MDK cheat.
  • Movement: 180° degree turn (thanks @fabian).
  • CRL Controls: Toggle extended HUD (all on-screen widgets and demo bar, thanks @Catoptromancy and @Aurelius).

Please note, no default binds were provided for these actions.

 

Existing features

  • Extended "Report revealed secrets" to new "Centered" position.
  • Extended screen wipe effect to new "Fast" speed.

Other improvements

  • Slightly tightened up CRL menu for better matching up with widgets and menu lines. Added "Display Options" submenu with few new options like optional menu background shading.
  • Better color translation from cyan to green (thanks @fabian and @liPillON).
  • Player movement and camera rotation no longer possible while active game menu in multiplayer.
  • Improved messages ticker handling.
  • Improved support for DEHACKED lump loading from PWAD (#1101, thanks @fabian and @plums).

Demos

  • Playing demos with multiple levels is now possible with Pistol Start game mode enabled.
  • Gameplay-unsafe cheats now disabled while demo playing/recording. Safe ones IDMUS, IDDT and IDMYPOS are still allowed (thanks @fabian).
  • Improved "Special Keys" handling while demo playback:
  • Pressing "Restart restart level/demo" now restarts demo and keeps it playing.
  • Pressing "Go to next level" now goes to next level of demo and keeps it playing.
  • Frame rate no longer forcefully uncapped after using demo warp (i.e. like -playdemo demo.lmp -warp 18) if vertical sync is enabled.
  • IDCLEV cheat code now working while demo playing (thanks @fabian). Additionally, it is possible to go previous levels, not just next ones.
  • Demo warping should be a little bit faster now.
  • Demo bar colors now more compatible with possible custom palettes.

Hi Z_Malloc, bye Z_Malloc

  • Removed "Prevent Z_Malloc errors" feature. It's not related to render limits and should not happens normally, unless some extreme cases is invoked, like walking through NUTS.wad with no clipping mode. This is also needed to be in sync with Chocolate Doom, see issue and pull request.

Setup executable

  • Converted to multiplayer launcher on same manner as in Woof and Inter-Doom. Since all options and are available in game menu, it will get rid of big amount of further double work.

Windows OS only

  • Windows 11: Snipping Tool no longer appears after pressing PrintScreen key (thanks @bradharding). Win+Shift+S combination will work as usual for this case.

Libraries update

  • Updated SDL to version 2.28.5.

 

Compiled using GCC 13.2.0 under MSYS environment.

 

 

Share this post


Link to post
  • 4 months later...

Is there a reason why this isn't a pinned source port?

 

I feel like it's important enough to be so.

Especially since I use CRL way more than "Chocolate Doom", and that's pinned.

Share this post


Link to post
Posted (edited)

Also a bug report. RUST uses large text characters for the text screen. For some reason CRL crops them when Vanilla/Chocolate and other source ports do not. (blurred text for spoiler reasons).

 

Vanilla/Chocolate (and other ports):

RUST-Text-Screen-Choco.jpg

 

CRL:

RUST-Text-Screen-CRL.jpg

Edited by Arsinikk

Share this post


Link to post

I just wanna say that I really think CRL has changed the game for vanilla. This port is absolutely excellent and makes sniffing out vanilla quirks a total breeze!

 

I didn't really appreciate vanilla mapping until CRL, because using chocorenderlimits felt kinda clunky and not very enjoyable. It might honestly be my new favorite format and that wouldn't have happened if CRL wasn't such a joy to use :)

Share this post


Link to post

Hello @Arsinikk, I have fixed it, thank you for pointing out! Absolutely lovely and incredible effect with loading bar, I'm speechless. 💚

 

Speaking of CRL, it's still active and already have a couple of very small improvements, mostly for usability and handling. I'll gladly provide development builds with changelog and fixed case from above tomorrow (it's 2:07AM here, I'm falling asleep...). They should be stable enough, but perhaps, there will be some extra ideas or suggestions before 1.8 release.

Share this post


Link to post

Good morning. 🙂 Just as promised, a development build: crl-pre-1.8-win64.zip. There are no "WIP" things, so it should be stable enough. Full changelog:

 

Spoiler

 

Arch-Vile Fly

  • New key function available in Keyboard Bindings / Movement. Like Arch-Vile Jump, it gives the player vertical momentum, but works as a hold key and does not require repeated key presses. It also provides movement control while in the air.

Spectator mode: Go to Camera Position

  • New key function available in Keyboard Bindings / Game modes. It teleports player to Spectator camera position, and it is safe to teleport above ceiling level or below floor level.

Colorblind

  • Updated original ChocoRenderLimits coloring code. This should fix small fps drops in uncapped framerate when using colorblind and/or colored visplanes drawing, but most importantly this provides better and broader support for colorblind modes. Special thanks to Brad Harding for the I_SetPalette() function which helped a lot with this implementation!

Fixes

  • Fixed very large, optionally shadowed patches weren't able to be drawn (thanks Arsinikk).

Usability improvements

  • Mouse clicks are now slightly more responsive in the menu, Y-type actions can be confirmed with the left mouse button, N-type actions with the right mouse button.
  • Empty savegame file slots now always pre-filled with level number when edited.
  • Automap can be zoomed using the mouse wheel, zoom interpolation added for '+' and '-' keys.
  • Monsters will forget the player after going into No Target mode.
  • Added "Smooth Pixel Scaling" to Video Options.
  • Added dedicated bind for toggling vertical mouse movement, available in Keyboard Bindings / Movement (thanks plums).
  • Save/Load menu now showing savegame date and time (thanks Fabian).
  • Added automap overlay shading feature, available in Widgets and Automap.
  • Chosen by F12 player now kept between level changes while multiplayer demo playback. Non-fullscreen status bar background showing correct player color.
  • Implemented "On Death Action" feature, available in Gameplay Features menu.
  • Background shading now covers all game menus, blinking no longer happening while active menu and uncapped game state (thanks NightFright).
  • Any sounds no longer audible on ExM8 and MAP08 when SFX volume is set to zero.
  • Using -warp without spaces now possible for Doom 1, i.e. -warp 38 will warp to episode 3 map 8 (thanks Fabian).
  • Added savegames_path, screenshots_path config variables and -shotdir (thanks liPillON).
  • Mouse movement while the mouse button is held down in the active menu is no longer considered an extra button press.
  • "Mark secret sectors" will now always show secret sectors after they've been found on the automap, and optionally before as well (by plums, thanks!).
  • Extended "Show ENDOOM" to "PWAD only".
  • Added -4 command line parameter to quad up the game window to 4x of its normal size.

Other updates

  • Pulled latest changes from Chocolate Doom codebase.
  • Updated SDL library to version 2.30.3 and SDL Mixer to version 2.8.

Compiled using GCC 14.1.0 under MSYS environment.

 

 

Share this post


Link to post
22 hours ago, Arsinikk said:

Is there a reason why this isn't a pinned source port?

 

I feel like it's important enough to be so.

Especially since I use CRL way more than "Chocolate Doom", and that's pinned.

Probably nobody asked but i agree. Chocorenderlimits was a great tool already and CRL is just that much better. If you map in Vanilla, i'd say its a must to have.

 

Now, if only UDB had a run in CRL tab... ;)

Share this post


Link to post
Posted (edited)

CRL 1.8 is out! There are a few additional changes since pre-release, marked with a 🔵 symbol in the changelog below. In general, this version has very few new features and a lot of small, if not say tiny, usability improvements.

 

Downloaъ:

Changelog:

Spoiler

 

Fail-safe

  • 🔵 Added in-game and console warnings while level loading for linedefs without first sidedef. Such situation will work in DOS version of vanilla Doom, but leads to a silent crash of Windows version of Chocolate Doom (issue #1305, thanks @plums and @fabian).

Arch-Vile Fly

  • New key function available in Keyboard Bindings / Movement. Like Arch-Vile Jump, it gives the player vertical momentum, but works as a hold key and does not require repeated key presses. It also provides movement control while in the air.

Spectator mode: Go to Camera Position

  • New key function available in Keyboard Bindings / Game modes. It teleports player to Spectator camera position, and it is safe to teleport above ceiling level or below floor level.

Colorblind

  • Updated original ChocoRenderLimits coloring code. This should fix small fps drops in uncapped framerate when using colorblind and/or colored visplanes drawing, but most importantly this provides better and broader support for colorblind modes. Special thanks to @bradharding for the I_SetPalette() function which helped a lot with this implementation!

Fixes

  • Fixed very large, optionally shadowed patches that couldn't be drawn. (thanks @Arsinikk).
  • 🔵 IWADs with heavily modified PLAYPAL lumps now showing correct colors for text shadows. Notably in Harmony Standalone or simply in any custom built IWAD.

Usability improvements

  • Mouse clicks are now slightly more responsive in the menu, Y-type actions can be confirmed with the left mouse button, N-type actions with the right mouse button.
  • Empty savegame file slots now always pre-filled with level number when edited.
  • Automap can be zoomed using the mouse wheel, zoom interpolation added for '+' and '-' keys.
  • Monsters will forget the player after going into No Target mode.
  • Added "Smooth Pixel Scaling" to Video Options.
  • Added dedicated bind for toggling vertical mouse movement, available in Keyboard Bindings / Movement (thanks @plums).
  • Save/Load menu now showing savegame date and time.
  • Added automap overlay shading feature, available in Widgets and Automap.
  • Chosen by F12 player now kept between level changes while multiplayer demo playback. Non-fullscreen status bar background showing correct player color.
  • Implemented "On Death Action" feature, available in Gameplay Features menu.
  • Background shading now covers all game menus, blinking no longer happening while active menu and uncapped game state (thanks @NightFright).
  • Any sounds no longer audible on ExM8 and MAP08 when SFX volume is set to zero.
  • Using -warp without spaces now possible for Doom 1, i.e. -warp 38 will warp to episode 3 map 8 (thanks @fabian).
  • Added savegames_path, screenshots_path config variables and -shotdir (thanks @liPillON).
  • Mouse movement while the mouse button is held down in the active menu is no longer considered an extra button press.
  • "Mark secret sectors" will now always show secret sectors after they've been found on the automap, and optionally before as well (by @plums, thanks!).
  • Extended "Show ENDOOM" to "PWAD only".
  • Added -4 command line parameter to double up the screen to 4x of its normal size.
  • 🔵 Allowed quickload before quicksave (thanks @fabian).

-complevel N command line parameter

  • 🔵 Added -complevel N command line parameter to emulate a specific version of Doom engine executable. Supported numbers are 0, 1, 2, 3, 4. You can use either number or name, please refer to this table.

Other updates

  • Pulled latest changes from Chocolate Doom codebase.
  • Updated SDL library to version 2.30.3 and SDL Mixer to version 2.8.

Compiled using GCC 14.1.0 under MSYS environment.

 

Small afterword --

 

To be honest, I'm not the right person to ask about pinning this port, better ask the vanilla map creators if they need it or not. According to the download statistics, CRL has never been an overly requested source port, and this is completely understandable. Probably only a small group of people need it, but I love those people with all my heart, love this port as well as everything vanilla-related. Nowadays, when we have a BOOM/MBF/MBF21 or just limit-removing mapping standards, Vanilla is something special, a "Scene" that requires both art and knowledge. And I'm just happy to do some good things to support this scene. 🙂

 

Quote

Now, if only UDB had a run in CRL tab... ;)

 

Oh no - no - nooooo...! 😱

Edited by Julia Nechaevskaya

Share this post


Link to post
2 hours ago, Julia Nechaevskaya said:

Added -complevel N command line parameter to emulate a specific version of Doom engine executable. Supported numbers are 0, 1, 2, 3, 4. You can use either number or name, please refer to this table. 

The link here leads nowhere.

 

Also wanted to say thanks for picking up the development of this port, it's a really useful tool for vanilla mappers!

Share this post


Link to post
Posted (edited)

Made a small experement: "sound propagation mode" for automap. Inspired by same mode from Doom Builder, except here everything is happening in real time mode. Probably could be useful for some purposes?

 

Example video (implementation no longer experemental, yay):

Spoiler



 

 

Edited by Julia Nechaevskaya

Share this post


Link to post
7 minutes ago, Julia Nechaevskaya said:

Made a small experement: "sound propagation mode" for automap. Inspired by same mode from Doom Builder, except here everything is happening in real time mode. Probably could be useful for some purposes?

 

Current implementation is very clanky and needs polishing, but in general, it's something like this:

Seems like a nice feature!

Share this post


Link to post

Here, a development build with implemented Sound Propagation mode for automap: crl-pre-1.9-win64.zip

 

Should be working fine now, and no other changes have been made since the last 1.8 release. I need to give a few explanations as this feature is something rather unusual:

  • "Sound Propagation mode" is available when the Automap is open, and to activate it just press P (default bind, in the same way as Overlay and Rotate modes). It is also available in 'Widgets and Automap' and can be rebinded in 'Keyboard bindings'.
  • When the player is attacking, sectors that are affected by sound propagation will be colored with bright green for a small moment, no matter if sectors lines were mapped for drawing or not. It seems possible to use a different colors for one-sided, two-sided, or sound-blocking lines, but I honestly not sure if it is worth adding too much cosmetics for that. Also, this green color is used by revealed secret sectors, which is not very good.
  • Should be friendly with IDDT mode and automap powerup.
  • Implementation is quite fast, but I think there is still some small potential for optimization, not to make it faster, but to make it just more effective. But let it be my headache.
  • I've made a few comparisons with Doom Builder and it seems to be the same, except that since the game world is always active, drawing takes into account gaps like open doors and any other possible sound holes.
  • There is no difference if sector already have sound target or not. Probably not worth to make this feature too complicated and unclear.
  • Funny enough, chainsaw is quite useful for constant propagation drawing, so at least here it's not a complete bollocks. 🎃
  • Finally, I highly recommend to check out decino's video about sound propagation in Doom, if you haven't already. It's really interesting topic and extra level of complexity indeed. 

Comments, recommendations and suggestions are always welcome!

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...