Introduction
============

This is YeoldeDink, a fork of GNU Freedink not associated with the GNU Project, derived from Ghostknights repo. All of Ghostknight's improved SDL logging features are included in this release. The changes in this particular fork are as follows:

* Improved PNG support. PNG files should now work properly without a filename change and without having to resize sprites.
* Turned off some of the mouse capture options and touch events.
* Now uses "software renderer" by default.
* Debug mode now uses Dear Imgui, and has some extra features, as well as the potential for new ones.
* Implemented "get_client_fork()" as per Seth's recommendation. Currently returns 3.


0.2 update:
- Got rid of some windows and moved things into the menu bar
- 8-bit mode is now inaccessible
- Added sprite, variable, and script info viewers
- Moved the DinkC console into the floating info window
- Added the ability to pause the game while the console is active
- The game itself is now viewable in a separate window
- The main renderer can now be switched off too
- Expanded "Ultimate Cheat" and the log window a bit more
- Added "map viewer" window showing which screen you're on
- Quick save/load (slot 1337)

0.3 update:
- Added sysinfo window
- Audio control window for SFX and BGM levels
- added a slow mode
- added controller rumble when hurt
- pressing Tab now increases speed only in normal mode
- Added a speed menu.
- Added "play_mod_order(int order)" for tracker modules to DinkC commands. Requires SDL-Mixer 2.6 and up.
- SoundFonts also seem to work now by specifying the SDL_SOUNDFONTS environment variable on the command line. Confirmation is visible in the audio window.
- Added MP3 playback support in case you want to play Prelude properly.
- Added support for PNG tilescreens (that Seth missed ;-))

0.4:
- Didn't release and skipped straight to 0.5
- Fixed that mapnuke map.dat loading bug present in FB2 and others with high screen counts
- Fixed a minor issue where text from say() would appear white upon screen load after warping when it was supposed to be another colour

0.5:
- Reintroduced OpenGL renderer and 8-bit mode
- 8-bit mode only works properly with the -S command line flag (software renderer)
- The OpenGL renderer will always use 24-bit display mode
- Changed a few menus around
- Added variable and sprite editors. Remember you can ctrl+click on slider widgets to manually input a value. May need to turn the console on first for keyboard input.
- Pressing the Tab key in mouse mode resets the cursor to the middle of the screen
- The host mouse cursor only shows in debug mode and otherwise is hidden

0.6:
- Added a standardised gamepad mapping using SDL_Controller
- The mapping is not reassignable
- Added a map sprite editor to complement the live sprite editor
- Added an inbuilt launcher with D-mod support
- Menus moved around again
- Updated to the newest ImGui stable
- Fixed a bug with clipped sprites in the software renderer
- The Dink cursor should no longer move with the mouse while in debug mode
- The info window no longer displays by default in debug mode
- Pressing Alt+U will unfreeze sprite 1

0.7
- Added a colour palette viewer
- Bugfix: random() called with zero as base no longer causes a floating point error (thanks drone1400)
- Added an editor sprite override viewer
- Added get_platform() to dinkC with return values corresponding to RTDink
- Added display stretching beyond 4:3
- Map index viewer now can create screens
- Improved font rendering for the debug interface
- Yedink.ini lives in the resources path and may be used to alter a few parameters
- Rewrote the SFX backend using SoLoud
- Various other improvements and changes

0.75
- Added an option for horrible-sounding speech synthesis for all the game's text
- Gold and stats will now lerp up rather than clattering endlessly and blowing out all the audio channels
- Saves will now show with the date and time, unless the info has been manually modified
- Specifying -c on the command line will allow you to provide a path for yedink.ini
- Updated ImGui to the latest stable release

0.8
- OpenGL renderer partially works again. Added dependency SDL-GPU
- More settings are autosaved using Cereal
- Debug messages are coloured using spdlog, and verbose logging now works as expected.
- SFX output now uses miniaudio rather than SDL2


Installing
==========

Place the exe and DLLs with existing Dink data


Building
======

On Windows:
- Install MSYS2 and install the relevant packages in the Mingw64 environment. The others may work but are untested
- The relevant packages include SDL2, SDL2_image, SDL2_ttf, SDL_gfx, and a few others such as Fontconfig. Install anything else it complains about lacking
- You may also need libintl and Gettext, along with the relevant autotools packages such as autopoint and automake
- You'll also need to compile and install SDL-GPU and MixerX
- run ./bootstrap and then ./configure --disable-tests
- you should be able to run make and have it produce an exe in the src folder
- Package it up with the relevant 64-bit dlls in mingw64/bin

On MacOS
- Install Homebrew from brew.sh
- Install the SDL2, SDL2_image, SDL2_ttf, glm, fontconfig, gettext, autotools, autopoint, automake etc
- Manually install SDL-GPU and MixerX
- Run ./bootstrap then ./configure --disable-tests
- run make and it should output an executable in src

Known Issues
============

* Transparent PNGs used as tilesets will show the tiles of the previous screen underneath.
* The editor will not build
* Running with the sound off will cause a segfault upon exit
* sound_set_vol isn't as loud
* The OpenGL renderer probably won't work.