Overview
YeOldeDink is a source port of the 1998 RTSoft game "Dink Smallwood" based upon "GNU Freedink" originally developed by Beuc until 2019 and released under the GNU GPL v3. YeOldeDink contains many new features and fixes many long-standing Freedink bugs while retaining compatibility.
Various Features
A completely rewritten debug interface using Dear ImGui that allows for the viewing and editing of most of the engine's inner state live.
Advanced logging from Ghostknight's repo.
Quick saving/loading, plus autosave.
An inbuilt reimplementation of "Ultimate Cheat" for dealing with poorly-written dmods.
A completely rewritten SFX backend using SoLoud that allows for MP3, FLAC, and Ogg Vorbis sound effects to be loaded through load_sound().
Compiled releases are using MixerX allowing for numerous MIDI output choices.
MP3 support for Joshriot's "Prelude".
Native PNG support without having to resort to file extension hacks.
Improved game controller support with a standard mapping, rumble support, and auto-detected disconnects.
An integrated minimal D-mod launcher.
Phoenix's DinkLua and script abstracter backend.
20 extra tilescreens, up to 61.
Bugs from GNU Freedink resolved
The variable-clearing bug on 64-bit platforms
The sound effect memory clearing bug caused by newer releases of SDL2-Mixer which makes SFX output impossible.
Sound numbers are no longer returned incorrectly by playsound()
Calls to random() with zero as the range will no longer cause a crash, math_mod() called with zero as the divisor will produce an error in the error log, and dividing by zero in DinkC should silently fail.
D-mods that used MapNuke and have more than 768 screens as a result will no longer cause a crash upon visiting those high-numbered screens.
Hard.dat indices for tile screen 41 are now read properly when previously they were lopped off.
Sprites clipped to the point of invisibility will no longer cause a crash in certain cases.
Using show_bmp() in 24-bit mode will cancel a fade rather than leaving you in the dark.
count_magic() and count_item() count properly.
History
In 2022 the Dink Module "Charlie's Legacy" uncovered a bug related to variable-clearing in the existing Freedink source that was only apparent on certain 64-bit platforms.
In the aftermath of this revelation, a Dink Network poster by the name of Ghostknight set out to resolve this bug and managed to implement an improved logging backend while doing so.
A month or so later, Dink Network user Yeoldetoast decided to take Ghostknight's source tree and add some features to it.