Recent posts

#21
Lemmini / Re: [RetroLemmini] MazuLems
Last post by WillLem - April 09, 2026, 12:38:25 AM
Quote from: hrb264 on April 08, 2026, 07:57:23 AMI'm playing through this now and finding 16 very difficult, I think because of the basher checks meaning it always hits the one way arrow really early :(

Send me a replay, I'll take a look at it.

EDIT: Eric has now uploaded a fixed version of this level. Re-download the pack from the OP and that should sort the problem out.
#22
Hello again WillLem,

BAD NEWS: I can confirm the "Could not read editor options" error has returned, even with RC version that I'm using right now.
GOOD NEWS: I think I found what causes it and may have a possible solution.

I believe it may be related to crashed exits and it is most probably connected to the monitor-off crash I reported in the other topic (BUG: Editor crashes when monitor turned off).

Here is my new error log entry, translated to English:

System.NullReferenceException: Object reference not set to an instance of an object.
  at SLXEditor.SLXEditForm.ReadLevelInfoFromForm(Boolean allowWriteBack)
  at SLXEditor.SLXEditForm.CommitLevelChanges()
  at SLXEditor.SLXEditForm.textbox_Leave(Object sender, EventArgs e)
  at SLXEditor.SLXEditForm.chk_Lvl_AutoStart_Leave(Object sender, EventArgs e)
  at System.Windows.Forms.CheckBox.OnCheckedChanged(EventArgs e)
  at System.Windows.Forms.CheckBox.set_CheckState(CheckState value)
  at System.Windows.Forms.CheckBox.set_Checked(Boolean value)
  at SLXEditor.Settings.ReadSettingsFromFile()

The previous crash (Bitmap region already locked / form resize on monitor wake-up) was an abnormal termination. The editor was killed mid-operation without going through its normal shutdown sequence, which means the settings file was almost certainly either left incomplete or not updated at all with the session's final state.

When I launched the editor first time since that crash, ReadSettingsFromFile() attempted to load that potentially corrupt or incomplete SLXEditorSettings.ini. I suspect that when it hits the UseAutostart = True line, it sets chk_Lvl_AutoStart.Checked = true, which fires the OnCheckedChanged > chk_Lvl_AutoStart_Leave > textbox_Leave > ReadLevelInfoFromForm event chain at a point where the form is not yet fully initialized, causing the NullReferenceException.

While the origin of the initial error may still have ties to the "İ" problem, the error seems intermittent because it manifested again after an abnormal shutdown leaves the settings file in a bad state.
So far, under normal operation (clean close and reopen), the settings load fine.

You already solved the other topic by implementing a proper lock guard so the editor does not die mid-operation and leave files in an inconsistent state.
But any future abnormal termination (power cut, OS crash, etc.) can still trigger the same settings-read failure.

So perhaps you may wanna take a look at this;
  • The settings reader ReadSettingsFromFile() should suppress checkbox event handlers while loading, to prevent UI events from firing before the form is ready. Standard WinForms pattern:

chk_Lvl_AutoStart.CheckedChanged -= chk_Lvl_AutoStart_Leave;
chk_Lvl_AutoStart.Checked = value;
chk_Lvl_AutoStart.CheckedChanged += chk_Lvl_AutoStart_Leave;

Hope this helps narrow it down. Happy to provide any further info.
#23
Lemmini / Re: [RetroLemmini] MazuLems
Last post by hrb264 - April 08, 2026, 07:57:23 AM
I'm playing through this now and finding 16 very difficult, I think because of the basher checks meaning it always hits the one way arrow really early :(
#24
In Development / Re: Cheapo Copycat Lemmings (N...
Last post by kaywhyn - April 08, 2026, 04:01:30 AM
Level images of the Cheapo Copycat Lemmings extracted which you might find use for while remaking the levels for NL for the project ;)

edit April 10, 2026 - Reattached with better level images which show all objects, including OWAs! :thumbsup: Therefore removed small images from the zip files.
#25
In Development / Re: Revenge of the Lemmings - ...
Last post by Proxima - April 08, 2026, 01:31:00 AM
A tiebreaker will not be needed. As I said, the poll isn't binding, it's just to gauge where community opinion lies. If opinions are split, that just means I can follow my own judgement.
#26
In Development / Re: Revenge of the Lemmings - ...
Last post by mobius - April 08, 2026, 01:11:03 AM
if a tie breaker is needed I could change my vote...

As I look over the levels I went through back then I'm reminded of how many good and how many not so good levels there were... as I mentioned before I initially was going to include levels that were present in other large packs but people at the time were against it. I feel like the pack should represent the best of the community, not sure it always does that based on some of the decisions I made; for example I wanted to get as many authors in the pack as possible. Which again seems a bad decision in hindsight, if some of those levels weren't quite as good as ones that got removed.

And as another example; Clam specifically made his 5th pack for this project [not this iteration of it but back in around 2008]. Of course I tried fitting those levels into the early rank of the first version and a lot of people said they felt wonky/too difficult for the first rank.
#27
Help & Guides / RegEx Dictionary
Last post by WillLem - April 08, 2026, 12:35:52 AM
Here's a dictionary of RegEx commands / expressions which you might find useful if you do a lot of level editing using Notepad++ or similar.

1. Look for "maxReleaseRate = n" where "n" is anything other than 99
maxReleaseRate\s*=\s*(?!99\b)\d+

I'll add to this as necessary. If you wish to contribute anything, please do!
#28
Lemmini / Re: [RetroLemmini] DoveLems
Last post by WillLem - April 08, 2026, 12:11:46 AM
DoveLems for RetroLemmini is now available!

Get the latest version of DoveLems here.
#29
Quote from: WillLem on April 07, 2026, 10:39:10 PMAlways happy to accept help wherever offered! It's good to not have to always figure these things out on my own :)

Besides, I figured that some re-rendering prevention guard is what was needed. You helped pin it down to exactly where the guard needed to be - this is much appreciated!
I am SO happy to hear this.
I vigorously follow your commits at;
https://github.com/Willicious/SuperLemmixEditor/commits/master/SLXEditor
and must admit; these may seem some small changes but I really think the editor is becoming such a robust and bulletproof piece of software. This excites me very much while at the same time brining me serenity. I don't know if you experience similar feelings whenever you improve or fix something with your own software...

Thanks for everything...
#30
SuperLemmix Bugs & Suggestions / Re: BUG: Editor crashes when m...
Last post by WillLem - April 07, 2026, 10:39:10 PM
Quote from: roltemurto on April 07, 2026, 09:18:38 PMI hope I don't overstep my boundaries by doing this but I just want to be helpful.

Always happy to accept help wherever offered! It's good to not have to always figure these things out on my own :)

Besides, I figured that some re-rendering prevention guard is what was needed. You helped pin it down to exactly where the guard needed to be - this is much appreciated!

Quote from: roltemurto on April 07, 2026, 09:18:38 PMFix 1 — Re-entrancy guard on ResetLevelImage

Prevent NLEditForm_Resize from triggering a render if one is already in progress

Fixed in SLXEditor commit 8e46406.

Quote from: roltemurto on April 07, 2026, 09:18:38 PMFix 2 — Ensure UnlockBits is always called in BmpModify.DrawOn

The existing DrawOn method almost certainly does LockBits without a try/finally guarantee on UnlockBits. If any exception occurs mid-render, the bitmap stays locked forever for the lifetime of the object. Fix the locking pattern:

Fixed in SLXEditor commit 7f24239.

Quote from: roltemurto on April 07, 2026, 09:18:38 PMFix 3 (optional hardening) — Debounce resize events

Resize events can fire dozens of times per second during a resolution change. Even with the re-entrancy guard, it is worth debouncing to avoid hammering the renderer immediately after wake:

Went ahead with this one as well, but made the interval 50ms so it feels a bit snappier.

Implemented in SLXEditor commit 5cecf63.