EasyRPG Player 0.6.2 “Pincer Attack”

Look what Alex found while treasure hunting: A new version of EasyRPG Player! (Animation by @Lord_Schoko, thanks!)

Here we go again. The forced home office gave us some time to do the final polishing and testing for the next minor release of EasyRPG Player. As promised it contains many accuracy improvements for the interpreter and move routes. Most games should work now (if they don’t use any patching, DynRPG, etc.).

Unfortunately we were not able to work a lot on the RPG Maker 2003 battle system: Many features are still buggy/unimplemented and you have to wait for another release. But the interpreter part should be fully working – Most limitations are visual.

RPG Maker 2000 has been released 20 years ago this month. And here we are, letting you run its games and saving its legacy for the future.

Get it from the Download page (or the Android Play Store), enjoy some RPG Maker games and #StayAtHome. :)

Crash fixes

Empty shops don’t crash any more. (#1844)

Fixed crashes when starting a battle in Home. When a battle event does an animation as the first command, which also triggers a flash effect on the first frame, the game crashed. (#1929, #1933)

Known regressions in this release

When a message with a face is shown there will be a short 1-frame flicker of the face when a new page is displayed. This is resolved as a part of another huge message code rewrite which we didn’t want to add to this release as it needs more testing.

Regressions fixed

Here you will find games that worked in older versions of the Player but were broken in newer releases of the Player.

Pictures disappeared after a flash effect when they had an alpha channel / transparency. (#1575)

Battlers with Battle Animations (RPG Maker 2003 only) were not displayed until they made an action. This affected Captain Novolin RPG and Vampires Dawn 2. (#1826)

The RPG Maker 2000 battle crashed when self destruct was used. (#1880)

The tilemap renderer optimisation invented for the 3DS was not handling a few edge cases resulting in black tiles being rendered: Lower layer tiles can be in some cases above Upper tiles (when they are tiles with star attribute). Most of the optimisations were disabled, in favour of correct rendering. Fixes the intro of Cumbound – The War against Gayass. (#1577, #1857, #1898)

A previous patch disabled resetting of text colour after a line break which is correct for messages but this broke the rendering of the Stay option in Inns when not having enough money. (#1904)

Performance

Because the compatibility of the Player is really good by now, we can focus on performance improvisations.

Much faster (2-3x) database parsing. Games load now much faster. This is a liblcf (our parser library) optimisation but this is so significant that we mention it here because it affects the Player. (liblcf#343)

This Player release received many significant performance improvements that speed up the start-up, the interpreter and the renderer. Furthermore the FPS handling was refined and recovers better from lag spikes. (#1780)

Common events are not reinitialized any more when they completed – Instead their index is only reset to 0 making common event restarts a very cheap and fast operation in common event heavy games. (#1764) A similar optimisation is available for Parallel processes. (#1884)

Faster text processing and rendering. (#1956, #1964)

The Player supports various pixel formats. Moving the most common formats (RGBA) to the start of the list gives a minor speedup in every drawing operation. (#1959)

Faster handling of Drawables (our abstraction for everything you see on the screen). (#1975)

Much faster reading of Switches/Variables and faster range operations. Single writes could not be optimized further. (#1984)

Slightly faster rendering and Flip blit is now noticeable faster (but flip is only used by the FaceSet, therefore not noticeable in real workloads). (#1990)

Optimized weather rendering. (#1991)

Optimized cache lookup. (#1993)

Intel VTune, a performance and gpu rendering profiler, is now supported. (#2021) Additionally benchmark programs such as #1987 were added that allow the detection of performance regressions easily.

The FPS logic was refactored and runs now much smoother in low FPS situations. Long freezes at 0 FPS are completely gone now. Additionally the FPS are not locked to 60 FPS any more, they can be changed to any arbitrary value or sync to the refresh rate of your display. (#2017)

Optimized tilemap rendering. (#2028)

Some math (e.g. square root) operations run now slightly faster because the compiler flags were tuned. (#2139)

Audio

When switching the audio source (e.g. from speaker to headphone) the audio playback stopped. This was a SDL2 bug fixed in a later release. (#1596)

Lime’s minigame in Witch’s Heart does not lag any more. To reduce slow disc reads sound effects were completely decoded, resampled and cached when being played for the first time. The problem here was that the SE file played is very long – Decoding it took 100 ms. Now the Player only decodes on load and resamples in the audio thread – The file loads now in 7 ms. (#1833, #2086)

The Forest World Music continued playing when returning to the Nexus in Yume Nikki. (#1874)

Playing Opus audio (not natively supported by RPG_RT, needs a custom patch) does not crash any more on Intel Celeron and Intel Pentium processors. The library was compiled with features (instruction set AVX) not supported on these CPUs. (#2059)

Event/Interpreter (#1707)

The accuracy of the interpreter was significantly improved resolving many bugs that were caused by minor timing issues. (#1707, #1871)

The interpreter state is now properly preserved in and restored from savegames. Before it was possible that the interpreter skipped a command after loading. (#757, #1740, #1742)

CommandChangeClass is now fully supported. RPG_RT has multiple bugs that we fixed: (#759)

  • Unsetting the class combined with “Set level to 1” crashes with “Invalid Job specified”
  • When the target class is the same with “Learn skills” enabled RPG_RT forgets to learn the skills available at level 1

The Change Tileset command was not updating the tileset of events. Fixes the look of the time gauge in the final battle of Seraphic Blue. (#1060)

Calling multiple scenes on the same frame has now the correct behaviour, e.g. a battle start will cancel a pending menu call. (#1642)

Death handlers are now supported in the RPG Maker 2003 battle system. (#1648)

The black screen after the Amusement Park Clown Hell Event and other events that force a wakeup in Yume2kki (ゆめ2っき) is fixed. (#1777)

Maybe you remember the obscure feature of Set Vehicle Location discussed in previous blog posts: You can do instant teleports, even across maps, when the vehicle ID -1 is used. By now we emulated this via a normal teleport but this was not enough for Yume2kki (ゆめ2っき): It needed a better emulation and this better emulation fixed many bugs (actually all we know about in this but feel free to find new ones). (#1782, #1861, #1862, #2043)

  • The music room failed with “Unknown Event 10005” (#1778). Contrary to normal teleports, vehicle teleports don’t reset the event IDs. This means that This Event references were expected to still work.
  • You can now save tracks as favourites. This was broken before because the game does a Vehicle Teleport to the main room and immediately teleports back. Before the Player incorrectly executed a clean up auto-start event. (#1864)
  • The second music room you can enter from the first room works now. (#2049)
  • The wallpaper selection was almost unusable because it auto-selected the first item automatically. (#1641)

Vehicle teleports from parallel events are now forbidden – In RPG_RT they fail with an error message. (#1877)

If both a common event and a map event are auto-start and can
run on the current frame, RPG_RT will push both of them onto
the stack and execute the interpreter. This is very similar to
as if the common event called the map event. (#1779)

Lufia V: For the Savior soft locked during the intro. (#1840)

Modifiers for ATK/DEF/etc. are now clamped correctly. Fixes distributing EXP in the Inn of Three Magic Girl (TMG). (#1865) Content warning: Hentai. The video was censored by us.

Fixed black screen after selecting Jehridan on the world map in Dhux’s Scar.  (transition bug, #1913)

CommandStoreEventID always returns the highest ID – even when the event was deleted. (#1915)

Correct timing for waits during screen pan operations. (#1932)

The transparency option of Change Actor Graphic is now supported. (#2030)
Labels: Event/Interpreter, Patch available

Fix hang in 月藍傳奇2 after walking through a secret door. (#2038)

The key input in the scene selection of ケツアクメ120連発 ケツアヘ傑作選 (2012紅白No.016) was not working: The game is a RPG2k Value! game but the Key Input Processing command looked like a RPG2k3 command. Because 2k and 2k3 have incompatible Key Input Processing commands this failed. 2k3 key inputs are unsupported by 2k and were disabled for this engine. (#2126)

Fixed the key input in the “Improve” menu of Saint Seiya Densetsu. This is another type of strange Key Input Processing behaviour: The command was not processed like RPG2k3 <1.05 command but like as RPG2k Value! command. All strange edge cases of this command are now fully supported. This game also breaks the size record: The former leader was Äedemphia with 1.2 GB, this game has 1.6 GB. (#2140)

Setting the sail in Still Mate does not soft lock any more. Here we discovered a bug in the Change Variable event command, it is surprising that a bug in such a commonly known command went unnoticed for years: When a variable range is the target of the operation the result of the operation must be reevaluated for each element. This game generated random numbers through this command and waited until the numbers were different. Because our implementation only picked one random number and assigned it to all elements in the range this check failed forever. (#2155)

In 進めアレックス a treasure chest, that is actually a vehicle, appeared when fighting an enemy. We don’t know about the purpose of the vehicle but we found a bug in RPG Maker 2000: Events always have a Map ID of 0. This game stored location of the attacked monster and applied it to the vehicle. Because the map ID is 0 the vehicle should never appear on the map. (#2156)

Time Traveler continues at the end of chapter 6 when playing the piano. When and how this was fixed is unknown. But who cares, it is fixed :).

Move Routes

In Mondschein the kid will not run away from the mother any more (move speed too high). As with many resolved issues that is related to when events update depending on how a teleport was invoked. (#1261)

The soft lock in the dancing scene of Killer Bear is resolved. Repeating move routes were not properly marked as finished when the last move command was a non-move command such as Turn. (#1853)

Fixes for jumping:

  • Turn commands are now ignored while jumping. (#1936)
  • The height of the jump does not affect the sprite rendering order (#1937) or the position of battle animations any more. (#1938)

Battle

We planned to fix all the known bugs in the RPG Maker 2003 battle but we found no time for it. Sorry :(.

Battle animation can now shake the screen in RPG Maker 2003. (#1767)

Pictures and Weather are now fully supported in battle scenes (#1488, #2003). The picture support was the final step to fully supporting RPG Maker 2003 v1.12. (#1263)

The battle in DQ2 悪霊の勇者・製品版 didn’t end after defeating the Bomb Rock (#1875)

The Boss battle in Eternal Legends ended after the 1st phase. (#1998)

Correct interaction of battle end conditions with running events: RPG Maker 2000 finishes the current event, RPG Maker 2003 stops execution immediately. (#2001)

In すでに私たちは地獄のまっただ中でした hidden enemies were hit by attacks that target the entire party. This affected any game that used hidden enemies. (#2102)

Defend and Charge are now properly reset. Before they stayed persistent for the entire battle or when the action was cancelled. (#2107)

When party members were added or removed by an event during the battle turn the attack order is now correct. (#2123)

Savegames

Loading RPG_RT savegames sometimes resulted in a screen shake. This was caused by an incorrect interpretation of the shake continuous flag: The relevant one is actually shake time left that is initialized to 65336. This means a continuous shake ends after 18.2 seconds.  (#1668)

Support for a bug to detect savegame loading via the Key Input Processing event command. This bug works by using a variable >255 as the target variable for Time until key input and saving the game. When saving, the field for storing this variable is too small causing an integer overflow. By checking whether the new variable reached via overflow is set to 0 after loading, the game can determine whether it was just loaded. (#1674)

RPG_RT compatible handling of Game System chunks. (#1842)

The title image was sometimes lost when resetting with F12. We are still aware of issues concerning incomplete clean-up. When you encounter issues after starting a new game simply restart the Player as a workaround. (#2023)

The Save window failed to render when party members had no face graphic (#2034)

RPG_RT compatible transition chunk values. (#2054)

RPG_RT compatible escape/teleport target values. (#2056)

When the savegame had a different system graphic than the title screen the new system graphic was already visible for a short moment while fading out from the load scene. (#2111)

Messages

In Ahriman’s Prophecy the text overlapped with the face graphic after a teleport. (#1781)

The text rendering in shops is now correct when a face is displayed. (#1844)

Improved message and window animation timings. (#1900)

Some choices were incorrectly displayed in Yume2kki (ゆめ2っき). (#2048)

Window/Scenes

The shop scene rendered Charsets incorrectly when the image file had non-default dimensions. (#1315)

The debug scene learned how to call common events. (#1832)

Control characters like newlines in messages are not processed anymore. They caused incorrect text rendering. They can be inserted by game developers by accident through copy-paste from a text editor. (#1873)

The Gold Window ignored message opacity settings. (#1908)

When a japanese game is executed the equipment scene shows a different arrow to match RPG_RT better. (#1918)

The fade delay for New Game / Load Game / Back to Title matches now RPG_RT. (#1939)

Pressing F12 will display a countdown before returning to the title screen. This solves issues in applications such as Steam that bind screenshots to F12. (#2010)

Scrollable windows display now animated up/down arrows. (#2109)

FileFinder

The Official “Traditional Chinese” RTP is now supported. (#1888)

Symbolic links are now valid project paths on Linux. (#1906)

The RTP search on Linux follows now the XDG standard. (#1924)

Faster start-up on Linux when Wine is installed and the registry scanned for RTPs. (#1916)

The RTP path contained trailing “/” which broke RTP loading on some platforms. (#2064)

The detection whether the operating system exposes the file type directly when enumerating directories was improved (initial start-up on macOS and BSD is now faster). (#2065)

Pictures (#1703)

Spritesheets use now a subimage of the original picture. This saves memory and is much faster because no copying is needed any more. This sounds like an obvious optimisation but the blocker was that other parts of the picture became visible before while rotating. (#1093)

Pictures are now updated before events. (#1125)

Pictures stop moving now while a message is visible except on RPG Maker 2003 English where non-blocking is the default. It is possible that this breaks games patched with the UnlockPicPatch. (#1168)

Support for the “affected by flash” picture setting. (#1362)

Pictures are correctly loaded from savegames. (#1582)

In Destined the boss picture moved upwards when damaged. This is solved by emulating a picture bug in old engine versions: Move Picture is ignored when the picture is fixed to the map. (#1741, #1969)

Use correct flash color. (#1944)

Picture wave effect is more accurate. (#1946, #1949)

The outdated bitmap format used by Aëdemphia is now supported. (#2016)

Weather

Sandstorm and Fog are now looking perfect. As you can see from all the linked issues this was a huge effort and the math behind it is worth another blog post. (#1737, #1945, #1992, #2011, #2114)

More accurate Rain and Snow effects. (#2005, #2069)

Transitions (#1715)

ShowScreen-Transitions are ignored when the screen is already visible. Instant transitions are now really instant. (#1600, #1931)

In RPG_RT transitions will execute in-place (code wise they execute a loop that will return when the transition is finished) but we can’t do it this way because some of our platforms – emscripten and libretro – require that we return from the main loop every frame otherwise they will hang. After a huge refactoring we can now simulate this behaviour through asynchronous transitions. What does this mean for you as a gamer? The compatibility took a huge step forward again, e.g. Amillusion (#1819) works now! (#1445, #1783, #1784, #1787, #1887)

Transitions look more correct when changing maps in COLORS: Lost Memories. (#1801)

Random blocks up/down were down/up. (#1947)

Transitions looked incorrectly when tiles on the tilemap had transparency. (#2117)

Animations

Battle animations are now frame accurate and saved in a RPG_RT compatible way. (#1372, #1757)

Battle animations that affect the entire map were rendered at the wrong position. (#1951)

Animations affecting the map were clipped when moving. (#2006)

Web Player (Emscripten)

The web player got a huge speed gain by switching to the new web technology web assembly (WASM). Contrary to asm.js which was always a bit experimental and had some limitations, WASM is an official web standard and is twice as fast in some games. (#1625, #1917)

The web player does not fail to start any more when the game name matches a directory in the virtual file system (bin, home, etc…) (#1255)

Newer Chrome versions prevent audio playback unless there is user interaction because of abuse by advertising companies. The audio initialisation is now delayed. (#1868)

Games with non-canonical paths (e.g. “../Pictures/PicFile”) are now supported. (#1896)

Other platforms

Android:

  • We dropped the armeabi architecture and ship now x86_64 libraries. According to Google Play the device compatibility changed by 0, we only replaced an outdated architecture with an up-to-date one. (#1911)
  • When the landscape orientation is forced in the settings both landscape orientations (as you know it from the Youtube app, #2121)
  • The touch button labels were too large on some Android systems. (#2121)

Switch:

  • Update to a newer libnx version, making it compatible with firmware 9.0.0. (#1894, #1994)
  • Support for the left thumbstick (#2082)
  • Due to a bug the B button was not working properly (#2082)

3DS:

  • BGM does not play too fast any more. (#1275)
  • Fix RTP loading. (#2063)
  • Faster sound effect loading. (#2086)

For Developers

The namespace Game_Temp that contained various global variables was removed and the variables moved to more appropriate locations. (#1240, #1867, #2025)

We require now the C++ language standard C++14. The lowest GCC compiler supporting this fully is GCC5 (#1561, #1882). This allows optimisations such as #1960, #1963 and #1981. (constexpr)

File and Directory access code was refactored to make implementing IO for different platforms easier. (#1910, #2008)

The Windows toolchain was updated from Visual Studio 2017 to 2019. The latest version of the 2019 update is the only version we support. (#1965)

Many compiler warnings were resolved. (#1966)

Fixed linking against SDL 2.0.10 on Windows. (#1971)

The unit tests use now a single executable instead of individual executables per test set. This improves the linking speed significantly. (#1976)

Many short functions moved to header with inline attribute to avoid function calls. (#1977)

Fixed Windows Debug assertion failures. (#2045)

In an ongoing approach to get rid of all the auxiliary Makefiles to build all our different ports and to improve build times the additional platform files were reorganized in subdirectories. (#2160)

Other

Experimental feature:  Multi-Game Save Importing (#1854, #1860). The Player supports now importing of savegames from other games directly through the title scene. For example Legion Saga and The Way accept the saves of there predecessors. To enable this feature you have to provide a easyrpg.ini in the game directory.

When an image is missing the amount of warnings reported was reduced. (#2092)

liblcf (RPG Maker File parser)

Support for Maniac Patch Event commands. These are just names that can be referenced in the Player later, it does not improve game compatibility. (#271)

Fixed incorrect defaults for savegame chunks: system (#333), event flash colors, vehicle sprites (#334), death handler (#338), pictures (#346) and transitions (#357).

As with Player the liblcf requires now at least a C++14 compatible compiler (GCC5, #339)

Much faster database parsing (#343)

EasyRPG Player 0.6.1 “Surprise Attack”

Before we all leave into the summer vacation we want to announce the next release: EasyRPG Player 0.6.1 “Surprise Attack”. Our journey through the battle systems continues and we are happy to announce: The RPG Maker 2000 Battle System is fully implemented! For Player 0.6.2 we plan to achieve the same goal for the RPG Maker 2003 battle system.

Of course we didn’t ignore the world outside of the battle system: We developed a method to get a frame-per-frame dump of the game state: We create a test case and combine it with a Parallel Event which opens the Save scene once per frame. With this simple idea we get a frame-per-frame dump of the game state. The saving is automatically detected by a script when the savegame changes and the relevant savegame data extracted and displayed. This made it possible to implement many, before almost impossible to debug, timing fixes and bringing the interpreter closer to perfection! Unfortunately we won’t be able to explain them all to you because we are talking here about corner cases which result in a difference of 1 frame in the execution timing. For many of these cases we don’t even know games that depend on them, which means no pictures or videos in the blog for this :(. Additionally for 0.6.2 there are already many patches in the queue which will improve the accuracy of the interpreter and savegames even more but we decided to delay them because they are very complex.

We also added made some quality of life improvements. It doesn’t matter anymore which RTP you install (we recommend the Official English versions from rpgmakerweb.com), the Player will detect the installed RTP and the RTP used by the game and load the correct assets. Additionally the Debug scene learned new features: The page you had open is remembered and you can now heal the party and teleport across the map.

We also want to remind you that EasyRPG Player is now available as a libretro core which means the Player can run as part of RetroArch. More exotic platforms like the SNES Mini are not maintained by us, please tell the corresponding maintainers to update the Player to the latest version :).

Vehicle Glitch Exhibition

First lets have some fun: Here you can see four vehicle glitches now supported by EasyRPG Player.

Fixed regressions

Our previous release, 0.6.0, had a huge amount of regressions. We improved the procedure how we test our releases, e.g. by pushing APKs for testing to Google Play and waiting for feedback. This way we are optimistic that no significant regression are in 0.6.1.

Here are the fixed regressions:

As promised the picture zoom in the Smash Bros. clone もしもスマブラだったら works again. (#1662)

The immersive fullscreen mode in Android resulted in the rendering of a white bar at the bottom. (#1667)

The actors had only 1 HP in DBZ: The Legend of Z due to a bug in our new scene calling code. This also affected other games because the event command right after the battle call was executed. (#1685, #1705)

The Windows registry was not searched anymore for RTPs. (#1673)

Assets were not found in the RTP folder anymore when they were not listed in the rtp translation table. (#1709, #1754)

When using a potion or any other healing item from the menu the amount was not decrementing. (#1744)

Fixes delayed for the next release (0.6.2)

We are aware of two issues in Yume2kki:

  • The music room is broken in newer versions of the game
  • The “Amusement park clown hell event” and other events that force a wakeup get stuck in a blackscreen (this worked before, we broke it in 0.5.4)

We already have fixes for them but they depend on another complex interpreter accuracy rewrite. For releases we need to decide when we stop to accept complex patches and move to pre-release testing.  Because these fixes depend on this delayed patch these fixes are delayed, too.

We will announce on Twitter when our continuous build ships these patches and additionally provide a Beta APK via the Google Play Beta program.

On slower systems Lime’s minigame in Witch’s Heart has significant lags which make it unplayable. A workaround is disabling the audio during the minigame. We learned very late about this issue therefore we couldn’t fix it on time.

Sorry for the inconvenience.

Crash fixes

Everything which terminates or freezes (must be terminated through the task manager) the Player without showing an error message is considered a crash. Usually the fix consists of showing an error message and closing the Player afterwards because the problem is a fatal game bug. This will still cause the lose of all unsaved data but at least the user knows why.

Using Enter Hero Name with an invalid actor shows now an error message instead of crashing. (#1719)

When entering “The Depths” in Yume2kki the Player does not run out of memory anymore and crash. (#1755)

When an invalid ExFont picture is loaded a warning is displayed and the built-in fallback is used. (#1756)

The message when a map file was not found is now more helpful and closes the Player with an error message. (#1730, #1756)

Our SDL1.2 renderer falls back to windowed mode when the requested fullscreen mode is unavailable but the logic was wrong and it executed an endless loop instead. We don’t use SDL1.2 anymore on any major platform, therefore this probably never affected you. (#1692)

Map

Using a huge amount of test cases the timing of the interpreter was further analyzed and reworked which fixed a significant amount of bugs. It is not possible to determine which games were fixed by which patch but when a known game issue was fixed you find it mentioned later in this section. (#1623, #1628, #1664)

The execution order of parallel map events that show message boxes is now correct. (#662)

The moment events with “Player touch” or “Event touch” start trigger execute now at the correct moment: Player touch when the Player is about to enter the tile and Event touch when the Player is on the tile (#886, #1697).

In Doraemon: Nobita’s Resident Evil (のび太のBIOHAZARD) the sound effect of the zombies was quickly repeated when they were stuck while walking against a wall. This spammed hundreds of “No free channel” warnings and was very noisy. (#998)

The game COLORS: Lost Memories does not get stuck in an infinite loop anymore when reading a sign. (#1247)

The endless intro loop in Final Tear 3 was fixed. (#1316)

A 8-way movement script (by pressing two arrows at the same time) created by a M3Kat was not working correctly in EasyRPG Player. (#1346)

The color handling for choices in messages was incorrect: The colors are not reset when the color command is part of a choice. (#1361)

A strange interaction of teleports while opening the menu is now properly implemented. (#1457)

Bombs explode now in Grimps: Squeaking of the Dead. (#1595)

Events have a limit of 10000 commands per frame before they are interrupted. The behaviour in the Player was incorrect: The End-case of a conditional branch didn’t count to this limit. (#1613)

Correctness changes when calling a scene: (#1642, #1658)

  • Event execution continues in the current frame when a scene is called (except for the caller) but each event only runs one command (this is an obscure RPG_RT behaviour/bug we must support)
  • When multiple events call a scene only the last called scene is respected

The airship is now always drawn above the tilemap. (#1683)

Various accuracy improvements for the teleport commands. (#1624, #1694)

Events with negative coordinates are not rendered anymore on non-looping maps. (#1676)

Move to Variable location on the same map behaves now like a normal teleport instead of moving the party directly. (#1693)

Screen X and Screen Y of player and events were wrong on looping maps. (#1699)

The accuracy of timers was improved, they match now exactly the RPG_RT behaviour. (#1702)

Panoramas are now frame perfect to RPG_RT, including all strange “background jumps” bugs when changing the Panorama on looping maps. (#1704)

Scene calls are not possible anymore when a message box is visible. (#1705)

The menu opening is now correctly delayed until the Player finished moving on the next tile and until an active move route is finished. (#1714)

Transition fixes:

  • Sometimes, when changing the map in the game OFF, showed the next map too early in the first frames which resulted in an ugly flicker. (#1505)
  • The transition timings between the different scenes are now correct
  • When the screen is erased by an event the Map will stay black even when you open and close the menu
  • The debug scene can’t interrupt scene calls anymore, before it was possible to cancel random encounters with this. (#1717)

When a game was converted from RPG Maker 2000 to 2003 the shake event was incorrectly handled resulting in infinite screen shake which made the game unplayable. (#1743)

Equipment with Escape or Teleport skill is not usable from the menu anymore and items with skills play now the skill sound effect. (#1745)

Battle animations are now affected by screen flash (#1774)

States that heal while walking (RPG Maker 2003 feature) are now supported but we are not sure if any game uses this. (#1804)

While a move route is active, states don’t inflict damage or heal while moving. (#1805, #1806)

Vehicles can be unboarded on tiles which contain events that have no active event page. (#1828)

The XO-Puzzle in Die Reise ins All can be completed. There was a bug in obtaining the Terrain ID when tile substitution was used. (#1834)

Battle

We are happy to announce that the RPG Maker 2000 Battle system is complete. Algorithm wise the RPG Maker 2003 battle system is also complete but animations, timings etc. are still off. The final implemented features are (#821):

  • Equipment states. RPG Maker 2003 contains a feature we call “Equipment states”. Equipment can automatically invoke skills when equipped. This appears to be only usable for cursed equipment which can’t be unequipped because states are auto-healed when the equipment is removed. We also emulate the bug that states which are removed after battle are invoked after a full recovery or after sleeping in an Inn. (#1770)
  • The same applies for Skills where the inflict and the recover option can be inverted. This is now also supported (#1490)

When starting a new game or teleporting via a Parallel event and starting a battle directly the transition in RPG_RT looks glitchy. This behaviour is now replicated in EasyRPG Player. (#1382)

When a battle event page disables a switch that is a start condition for another battle event page the next page is not executed anymore. This fixes the “Steal” skill in Heaven and Hell Episode 3, which stole three times from the enemy instead of one. (#985, #1652)

The timings of the RPG Maker 2000 Battle Console/Message Box are now, with some minor exceptions, frame accurate. This was again a time consuming task, basically all frame timings during battle were recorded in RPG_RT and exactly replicated in our Player. Now the battles feel much more natural. (#1677, #1725, #1726, #1785)

The screen shake when a character receives damages matches now the RPG_RT shake. (#1678)

The magic point calculation for skills that cost a percentage instead of a fixed value is now correct. (#1684)

In RPG Maker 2003 weapons can invoke skills. Even when the weapon is equipped it will appear in the skills list. This was already partially supported  but we missed on corner case: When the equipped weapon is the only weapon of this type, casting skills simply failed. (#1722, #1797)

Screen shake of monsters was off by 1 frame and not fully on sync with the background. (#1735)

Items that revive battlers work in RPG Maker 2003 battle. We are 99% sure this worked before but no idea when we broke this. (Reported for “Trank der Ewigkeit” in Vampires Dawn 2, #1748)

Contrary to RPG Maker 2003 the flags for dual wield etc. are not saved in RPG Maker 2000 savegames. The Player ignores this information now when loading a 2000 savegame. This fixes dual wield in Phantasia Gaiden and probably other RPG Maker 2000 games after loading a savegame. (#1789, #1794)

The rendering order of monsters was wrong. (#1791)

The inventory is now sorted by the ID of the item. The inventory of old savegames  is sorted upon load. (#1799)

When the battle starts with a “First strike” escape always succeeds on the first turn. (#1830)

Enemies can now use skills which turn switches on or off. (#1830)

Movement

The main game changer which fixed 10 movement issues at once is #1601 (they are explained below in this section). It’s too difficult to explain all the nuances of this pull request but to sum it up: Via careful testing of movement behaviour in RPG_RT and the goal to reach frame perfect animations, movements and stop count (frames to wait between moves) many timing issues were resolved.

And the second game changer was a huge refactor for the “Make Way” algorithm. When an event walks into another event, then the event that was walked into gets a chance to run the interpreter early and move away. This had many small inaccuracies and was broken e.g. for jump and crossing of map borders. (#1606, #1675, #1687)

RPG_RT has a funny side effect in the movement handling which allows to step in place: Create a parallel event which does:

SetMoveRoute: Player, Decrease Speed, Decrease Speed
Wait for Movement
SetMoveRoute: Player, Increase Speed, Increase Speed
Wait for Movement

When this event executes the hero will step in place and this is now supported. (#663)

Get On/Off Vehicle failed when the Vehicle is entered while a move route is active. (#1267, #1429)

The movement accuracy improvements fixed minor visual issues in Ascendence. (#1293)

Spinning events don’t reset there spinning direction anymore when you talk to them. (#1585)

When entering a ramp in Lakria Legends the hero doesn’t enter an endless up-down-movement anymore. Events with “On Collision” trigger don’t execute while a move route is active. (#1593)

Move towards player move commands behave now correctly. (#1604)

Events were unable to jump on tiles that were occupied by events on different layers. (#1612)

MoveType toward/away movement type behaves now as in RPG_RT. (#1644)

When an event has a cycle move type (horizontal or vertical) and an “Event Touch” start condition the event stops now the movement when the Player is in it’s path instead of inversing the direction. (#1659)

More, highly specific issues, fixed in the unreleased minigame Kanga Punch: #1587, #1654 and #1671

Savegames

The flash color of a screen/character flash effect is now saved. (#1772)

Vehicle types were not correctly written into savegames. Fortunately we save a version information since 0.6.0 which allows us to add compatibility hacks for fixing old savegames. (#1796)

Android

The menu text is not purple anymore on newer Android versions. (#1670)

Emscripten (Web Player)

When the screen is faded out the web player will wait now until all currently pending images are downloaded. This makes map changes look much nicer because the assets won’t pop in anymore after the transition is finished. (#1694)

libretro/RetroArch

We officially support the libretro core of EasyRPG Player now. Read the dedicated blog post for more information. (#1464)

Other

The title scene renders now a black background when no title graphic is specified in the editor, before the system graphic was used (as hide title does). (#1728)

Almost since the beginning we supported RTP lookup for Japanese to Other and Other to Japanese. This avoided many issues because you were not required to figure out how to install the Japanese RTP but other common lookups like Don Miguel English RTP (the inofficial RPG Maker 2000 RTP) to Official RPG Maker 2000 were not supported. This changes now! Player detects now all installed RTP and the game RTP and will do a RTP-to-RTP lookup. Additionally, for our Linux users, detecting of the installed RTP in a 64-bit Wine Prefix was fixed. (#802, #1754)

For a smoother game play experience the Player is caching recently used assets in memory. The cache had no upper limit and only removed resources from the cache if they were not used for a certain amount of time. This strategy required a huge amount of memory which were unavailable on some of our ports. The new cache is now much smarter and even supports the caching of effects (Screen Tone) which gives a speedup on maps which have many events. A notable speedup happens in “The Depths” in Yume2kki, before the map was almost unplayable. (#1760)

The Game Browser (shown when no game is found in the current folder) shows now the Player version in the about page. (#1843)

We noticed that some games contain the same folder twice in the archive, e.g. TITLE and Title. This is no problem on Windows because the system is case insensitive and will simply merge the folder but on other systems assets will fail to load. We emit now a warning on startup when a game has such a folder structure. (#1594)

Improved Debug Scene (#1813, #1817):

  • You can now teleport across maps
  • The party can be completely healed
  • The indices of the various options are remembered, even when you close the scene

We listened to your feedback: In 0.6.0 we added a noisy warning that always popped up when a RTP asset is used reminding you that the RTP is not installed. Unfortunately this warning resulted in many users giving us bad ratings because of “Yellow text”, even more bad ratings than we got before for “Silence” (because the audio file is missing). We disabled the warning for missing Music/Sound, enjoy the silence instead. (#1672)

Building

Various build fixes for MorphOS and AmigaOS4. (#1682, #1686)

CMake supports now both resamplers: speexdsp and libsamplerate. (#1746)

The tarball of 0.6.1 contains now all files necessary to build with CMake. (#1835)

 

 

EasyRPG Player 0.6.0 “Preemptive Attack”

It is this time again! After 30 months since 0.5.0 we present you: The next major release: 0.6.0 “Preemptive Attack”. As the codename tells you already: This release focuses on battles and battles were always really lacking in EasyRPG Player – until now.

First we have to tell you: We are sorry! This blog post will not do 0.6 justice. In these 4 months more code was added more than in the previous 12 months. There were so many minor detail changes especially in battle and the savegame system, you can’t write this all down without getting burned out, because typing this is pretty boring and reading it is even worse. That means sometimes this blog post will simply sum up 10 minor changes in one sentence. If you are curious about more details, simply write us a message or read the linked GitHub issues.

Especially the battle system was in an interesting situation: In August we received ca. 100 commits by a new developer and they fixed many issues in the battle system and the algorithms but unfortunately this developer had no time anymore and left us alone with these commits. How shall we handle this? Luckily a new developer appeared shortly after and helped us fighting through the mess. We had many long discussions spread over 3 months, some commits were simple, some controversial (will this break games?) and some just wrong. Getting all these patches in was a nightmare and we could not wake up by pressing “9” but in the end we got them all in and now and you can enjoy them in this release!

New startup logo

You know the EasyRPG Player Logo from day one! For the first time we updated it and gave it a more modern look that is consistent with other well-known engines. (#624)

The EasyRPG Player Logo as of 0.6

Known regressions in this release

This new release of EasyRPG Player contains lots of savegame compatibility improvements with RPG_RT, but this also means the Player is now incompatible with saves of old versions! You can still load them, but you will see visual glitches: To fix them, simply change the map. If this doesn’t help: You must restart the game, sorry. This should be the first and last time such a compatibility nightmare occurs, because from now on we save the EasyRPG Player version in all savegames. This allows us to ensure savegame compatibility, because we can determine exactly which version created the savefile (#1656) and fix incompatibilities while loading.

When in a battle it is possible that battle animations created with the “Show Battle Animation” event command are not properly working, because the interpreter is not waiting for completion. We believe that this is more correct than the previous behaviour, but it breaks the animations in the game Alter A.I.L.A. Genesis.

Pictures are now updated before the events. By comparing with RPG_RT we are sure this behaviour is correct but it completely breaks picture zoom in the Smash Bros. clone もしもスマブラだったら. This will be fixed in 0.6.1 when a new, more accurate interpreter is implemented.

Regressions fixed

  • The ChangeEquipment event command crashed when a two-handed actor got the weapon in the first slot removed while the second slot was empty. This broke many effects in Yume2kki.
  • On some platforms all events on the map flickered while scrolling
  • The Android version crashed when attempting to report a bug (how ironic!) (#1477)
  • Our internal RTP translation table which maps Japanese to other RTP versions didn’t work anymore. (#1579)
  • Removing the Class with ChangeClass command did not work anymore. (#1657)

Events/Interpreter

The RPG Maker 2000 demo for the Tokyo Demo Fest 2018 Wild compo (search for tdf2018wildcompodemo) was hanging or skipping parts of the demo sequence. If you are familiar with the Demo scene you know that the synchronisation of video with audio is very important. Therefore this game used an undocumented feature: “Get MIDI Ticks” of the Change Variable command works for non-MIDI files: It returns the track position in seconds. With this implemented the demo plays perfectly. (#1517, #1523)

Enjoy the demo in our web player

Sprites are now properly rendered at borders of small looping maps (20×15, which is the minimal map size) . When a sprite overlaps the border of a looping map it is rendered two times or four times, depending on the corner. Before Player only rendered the sprite once. Contrary to RPG_RT we support proper looped rendering for the airship and fixed a visual glitch: When the Pan is locked events on the most bottom row become invisible. (#1216, #1541).

This video is a glitch exhibition of RPG_RT panning bugs. We don’t emulate them, EasyRPG Player will behave correctly in all these cases.

Screen/Picture Tint, Shake and Flash:

  • The “affected by Tint” flag is now fully supported for Pictures. (#1545, #1546)
  • The screen shake effect is now fully implemented and matches RPG_RT completely. (#1547)
  • The “affected by flash” flag is now partially supported for Pictures. When the Picture is below the weather plane the screen flash will be always applied, we plan a fix for a later release. (#1549)
  • All screen effects were applied one frame too late, you probably never noticed this but as we become more compatible we care more about timing.

With these bugs fixed the game Desolate City: The Bloody Dawn (Enhanced Edition) becomes fully enjoyable.

Panoramas are now matching RPG_RT completely. There are too many ugly details to explain here, just try it. They work perfectly! Try it with pan or on looping maps or on maps with scrolling backgrounds, it will work everywhere. Additionally the new savegame fields panorama X/Y from RPG Maker 2003 English edition are now supported which means the panorama position is preserved in savegames. Pan is also correctly saved and restored now. (#1485, #1498, #1531, #1534, #1551, #1554)

The Change HP command didn’t work when the whole party was being damaged. (#1558)

RPG_RT only does Game Over checks after certain event commands executed. We already supported this but lacked some commands, e.g. Change EXP, Change Level and Change Equipment. (#1583)

Parallel events did not halt execution when an “Input Number Message` Command was used resulting in the number input being skipped. (#1598)

Move event related fixes (Spoiler: 0.6.1 will have a gigantic amount of movement fixes, we postponed them because they need testing first):

  • The facing direction is now correctly calculated for jumps. (#1113)
  • Menu calls through event commands (Menu, Shop, etc.) happen now immediately instead of waiting until a movement finishes. (#1559)
  • Movement commands targeting vehicles that are not on the map are now queued until the vehicle appears on a map, before the Player would hang when Proceed with movement was used. (#1580)

ChangeHP, AddState and RemoveState match now the RPG_RT behaviour: (#1481)

  • HP changing is not possible when an actor is dead
  • If ChangeHP kills a character, it adds the Death state to that battler
  • When Death state is cured it always sets the HP to 1
  • When a character dies, all the other states are erased, the defense, charge, gauge and stat modifiers are reset, and the current attribute shifts erased.
  • When a state is added, all states with priority <= max_priority – 10
    are cleared. (#1489)

When the default cancel option in a `Show Choice` is an unused choice, e.g. when you have a Yes/No Answer and Cancel is the 3rd, non-existing, the Player does not crash anymore (#1634).

The ChangeClass command removes now the equipment. (#1657)

Battle

This release features a gigantic amount of battle changes especially to the algorithms and the RPG Maker 2000 battle UI. The RPG Maker 2003 battle UI did not receive many improvements. We want to handle 2003 in a later release but all the algorithm changes also apply to RPG Maker 2003 battles.

List of issues / pull requests: #1102, #1371, #1447#1448#1449#1451#1539

RPG Maker 2000 only

There was a gigantic amount of cosmetic changes to the RPG Maker 2000 battle system, so we cannot list all of them:

Dual attack and dual weapons are now implemented (#480#1540)

The victory message has correct amount of delays.

In some cases the amount of SP recovered reported -1 instead of the real value.

When an ally receives damage the screen shakes now.

Dead enemies cannot attack anymore.

When you hold Cancel while a battle executes the battle will stop.

The battle message box was completely rewritten. All the messages generated should now match the RPG Maker 2000 behaviour. including most of the delays. We won’t list them here as the old message box was completely incorrect.

When an ally is targeted no battle animation is displayed. Instead the sound effects of the first 20 frames are played, everything else is cut off. (#1377)

The battle state machine we use to handle the battle state execution was completely refactored. This makes the code more maintainable. (#1573)

The word-wrapping algorithm of RPG Maker 2000 v1.61 hung the game when the word was longer than the line. (#1570)

Auto battle supports now attack-all weapons. (#1540)

The Defend command ignores the agility and is executed first. (#1560)

Restriction changes are now applied even during turns. This means an actor who just received a “No Move” restriction won’t attack in this turn anymore. The same applies when the actor runs out of SP before invoking a selected skill. (#1538#1560)

When a state was healed right before an attack the state can be caused again.

While holding the Decision key the battle execution speed will be doubled.

RPG Maker 2003 only

States which resulted in the inability to move (Sleep, paralyse, etc.) never auto-healed because the turn count was not increased. This made many games, OFF and Mother: Cognitive Dissonance among them, much harder. This already worked in 2k. (#1276)

Various visual fixes for the RPG Maker 2003 Battle system improve the experience in Mother: Cognitive Dissonance: (#1605)

  • Battle backgrounds are now animated
  • Background or Terrain loading is now correctly handled, including battle tests
  • The traditional battle style shows now a SP box in the skill selection and hides the SP in the actor list
Both

When a monster is killed by an event command the death sound plays now. (#1439)

Battles, victories, escapes and defeats are counted now. (#1439)

The skill “Life gift” heals now the correct amount in Vampires Dawn. (#1128) A similar issue with incorrect MP recovery was fixed in DBZ: The Legend of Z. (#1374, #1480)

Status effect immunity of items is now supported.

Battle Animations don’t block the battle interpreter anymore.

Battle music starts playing now when the transition from the map starts, before it started after.

In many places the sound effects were wrong, some examples:

  • Confirm and cancel sounds were missing or played twice
  • Confirm sound was played when you pressed enter while a battle action was executed
  • Items didn’t play the item use sound

The custom skill name of the actor is only displayed when the “rename skill” checkbox is selected.

Weapons that inflict states inflicted the wrong states.

The Skill menu remembers now the cursor position.

Buffs and Debuffs stack now correctly.

Items and Skills that affect groups only reduce the SP once.

State probability respects now the armor resistance.

The battle is over when the whole party has a “No Move” restriction and the chance of recovery is 0%.

When having an ability that halves SP cost the halved SP are rounded up.

Equipment that protects against an element works now like a buff and shifts the attribute.

All states with a recovery rate of >0% autoheal now after a battle is finished even if they can persist on the map. (#1392)

Attacks that target all enemies do not hit hidden enemies anymore.

The battle windows are now animated and slide from left to right.

Self-destruct shows now a zoom-fade-out. (#1452)

Medicine is now usable by any actor in battle, but when the target cannot use the medicine it will silently fail. (#1482)

Automatic state heal happened one turn too early. (#1504)

The Random Encounter algorithm was redone and matches now the RPG_RT implementation. (#1455)

The critical hit algorithm combines now the critical percentage for actor and weapon correctly and equipment that prevents critical hits is supported. (#1487)

The algorithm for physical attacks matches now the RPG_RT algorithm. (#1511)

The RPG Maker 2000 battle uses now the correct algorithm to determine the turn order. (#1519)

The SP required to use a weapon or a skill are now correctly calculated. (#1511)

The skill window remembers now the last selection per actor. (#1525)

Fixed equipment (curse) is now implemented for items and states. (#1562)

States that grant 100% dodge are supported now. (#1563)

Savegames

Jump and Crouch didn’t work anymore in Ara Fell after loading a RPG_RT savegame in Player. (#787)

After loading a savegame in Peuteris Grey the scrolling began to induce motion sickness (#1026).

The save count fields are now respected: When the database save count mismatches all common events are reloaded from the database and when the event save count mismatches all map events are reloaded from the map. (#1203, #1441)

Saving of tile substitution is now supported. (#1266)

Reading switches or variables does not resize the array anymore. Only write operations will do this. This fixes Witch’s Heart when the savegame was written by RPG_RT. (#1360, #1475

Steps are now counted and stored in the savegame. They are only used for applying damage when an actor is poisoned. (#1472)

Continuous Flash effects are supported now and the flash state is correctly saved and restored. (#1501)

Many party and event related fields are now correctly saved. This is the main cause of the regressions in loading old Player saves. (#1499, #1502#1522)

The player character was not visible in Makoto Mobius because the last actor in the savegame was not initialized. (#1514)

When loading a savegame that had no events running the event running on the main interpreter was not deleted. (#1565)

When the title screen was disabled in a RPG Maker 2003 v1.10+ game pictures were not restored when loading a savegame. (#1571)

Various gameplay changes

The ExFont resource is now automatically extracted from RPG_RT.exe and used as the ExFont graphic in Player. This will help a lot of games that use custom ExFont like Alter A.I.L.A. Genesis and Mother: Cognitive Dissonance and (#605)

The debug scene, accessible through F9 when TestPlay mode is active, got new features: Besides variables and switches you can now change gold, items, start battles (#1431) and it is now accessible in battles. (#1432)

The improved debug scene is full of new features for your testing (and cheating) pleasure.

Many minor text alignment issues across many scenes were resolved. (#1512, #1520)

The load/save screen has now animated scrolling. (#1520)

Escape & Teleport play now the skill sound. (#1591)

The window showing a description at the top in many scenes has a special behaviour: Whitespace is only half the normal size. (#1611)

The Shop scene received multiple fixes:

  • FaceSets are now displayed in the message window (#1614)
  • It was possible to sell items in an empty inventory which crashed the Player (#1615)
  • The arrows which indicate if a new equipment is better or worse use now the correct algorithm (#1590, #1615)

The unpopular 2k3 Status scene uses now the terms from the official RPG Maker 2003 release instead of the RPG advocate translation. (#1616)

Vehicle BGM plays now correctly: When you enter a vehicle the old map BGM is stored and when you switch the map the vehicle BGM continues playing. After leaving the vehicle the stored BGM is restored, except when the map changed, then the map BGM plays. (#1619)

The Equipment scene shows now a “>”-arrow between the old and the new parameter value. (#1660)

Items that invoke skills behave now correctly in the menu. (#1526)

Moving the entire party in the back row is not allowed anymore. (#1444)

The Items Tab in the RPG Maker Editor has a very obscure behaviour: The equipment settings where you can choose between Actor and Class are a global setting! This means when you change it to Class, the class check applies to all items (same for Actors). We find this highly counter-intuitive but support it now for compatibility reasons. (#1438)

The radio button in the red circle is a global setting! This changes the usability for all skills to either actor or class.

The logic for skill usability on the map and in battles is very chaotic and we should document it someday. We found one more edge cases: Skills that only affect states which end after battle are not usable on the map anymore. (#1439)

Changes to the Walk through wall (hold CTRL) feature in Test Play mode (#1439):

  • You can’t walk out of the map bounds anymore
  • While an event move route is active the feature is disabled
  • The feature is disabled while in vehicles

The bush transparency effect only applies to characters on the “same as hero” layer.  (#1465)

Our image cache didn’t differentiate between transparent and non-transparent images: When a picture was loaded twice, once with transparency and once without, both were transparent. (#1576)

When a map has save/escape/teleport flags set to “inherit from parent” and the map is moved to the root of the tree the flags are now handled like “enabled” even though there is no parent. (#1597)

FileFinder

Because Windows is case insensitive we must emulate this behaviour on all platforms, otherwise files are not found when the case doesn’t match. Until now we only supported this for A-Z, but the game Blue Star Story required it for Ś->ś. We switched from our naive algorithm to the ICU library which supports lower-casing for the whole Unicode range. (#839)

More fun with Unicode: There are multiple ways to store many glyphs in Unicode, e.g. ä can be stored as the codepoint ä or as a+” and OSX uses the second option which breaks loading of almost all files because the game and the filesystem name mismatch. The Player normalizes now all strings, again using ICU. (#1530)

The popular game Violated Heroine was unable to load assets in subdirectories on Windows because the directory separator was handled incorrectly. (#1383)

The macOS version will not crash anymore when a directory is accessed that is not readable. (#1476)

Via hex editing it is possible to put assets in subdirectories or even navigate upwards with “..”. The Player attempts to convert these to a canonical path by removing redundant path components. The VIPRPG game エターナリ草 referenced “Picture\map\\block01” and we did not to convert \\ into \ before, resulting in “image not found” errors. (#1542)

When the path to pictures contained a slash “/” (only possible with hex editing) the path separator was not properly transformed on Windows which meant many assets failed to in Violated Heroine. (#1629)

When the RTP is not installed or only partially installed the Player will always emit now a noisy warning when any RTP asset is requested. The warning displayed on Player start is gone. (#1630)

Building

Building for Windows (with vcpkg) is now supported by our CMake script. Which means this is the only supported way to build for Windows now. The Visual Studio project files were removed. (#1270, #1536, #1537)

The install path for manpages on UNIX is now customizable. (#1533)

The Android port was updated to SDL 2.0.9. This fixes startup crashes on multiple devices with broken Adreno GPU drivers. (#1609)

Ports

BSzili ported the Player to AROS (#1492). Check out his website for obtaining the Player.

The Nintendo Switch port received a major update: The port compiles now with the latest version of devkitA64 and supports hardware acceleration which gives a huge performance boost. Debug tracing is now possible with nxlink. (#1607)

Other

On certain hardware configurations the audio on Windows was broken when the WASAPI backend was used. This only affected our nightlies after 0.5.4, because for this release we used an older version of SDL. (#1405)

The seed used to initialize the Random number generator is now written into the logfile, making game recordings/replays more deterministic. (#1446)

The WildMidi library searches now first for /etc/wildmidi/wildmidi.cfg because the timidity.cfg contains soundfonts on many distributions which WildMidi does not support. (#1467)

liblcf

Our library for reading and writing RPG Maker files got major updates! When you load any RPG Maker file (there are LDB – Database, LMU – Map, LMT – Map Tree or LSD – Savegame) with liblcf and save them without modifications the result will be now perfect down to the byte for 99.9% of all files. The exceptions are files with custom modifications due to patches. We cannot handle them, but we support custom headers and they are preserved.

The reading and writing was tested against 1500 games and we hope that this gave us enough coverage to say: Our read and write code is now perfect!

Additionally we handle now all the default value corner cases, e.g. there is in some cases a difference between a missing and an empty field. E.g. when the party field is missing it means that Actor 1 is in the party, when it is empty it means the party is empty. (#229, #234, #242, #268, #277, #279, #283, #284)

liblcf will not choke anymore on corrupted chunks. This makes a few games playable for the first time in EasyRPG Player, because when liblcf cannot parse it, Player will not play it. Games that start now are Der Sinn des Lebens, Devil or Angel, Kroetenstuhl, Rick Jones Hunters and Monster World RPG. (#249, #250)

All chunks are now identified which means there is no field left anymore whose purpose is unknown. This allows us to make saving in EasyRPG Player match RPG_RT behaviour but we are not fully there yet! (#261, #264)

Music and sound effects are now correctly restored from savegames. Before pitch and volume changes were ignored. (#262)

String parsing was optimized which gives a minor parsing speedup mostly noticeable on slow systems. (#273)

This affects some users and developers: Our gigantic RAM eater reader_struct was split in smaller files. This means you will not run out of memory anymore when building e.g. on a Raspberry Pi and the compile speed was increased. (#289)

The new animation type “Step frame fix” added in RPG2k3E is supported now. (#306)

liblcf for Developers

A new helper function PrepareSave was added which can be used before writing LDB, LMU and LSD to increase the save count. (#266)

Most of our liblcf code is generated through scripts but one part still used a boost preprocessor macro. This was now replaced with a jinja2-template, too which removes the last usage of boost in our code. (#238)

When the CMake version used for compiling liblcf is older than 3.10 the bundled EXPAT and ICU CMake files are now used for finding the libraries. In newer versions of CMake they are provided by the host system. (#275)

The Save chunks for Player, Event and Vehicle inherit now from a common base class SaveMapEventBase. This matches the RPG_RT behaviour and allowed us to remove many code duplication in Player. (#282)

Our code generator supports now emitting of constants. (#287)

All liblcf structs are now equality comparable. (#291)

As for Player building for Windows (with vcpkg) is now supported by our CMake script. Which means this is the only supported way to build liblcf for Windows now. The Visual Studio project files were removed. (#294)

The tarball created by autotools contains now the CMakeLists.txt. (#297)

Headers and Sources are now sorted and listed in both Makefile.am and CMakeLists. The CMake generator supports now creating of logical groups you should know from the Visual Studio project. (#298)

Mimetypes are now provided and install for the RPG Maker files on GNU/Linux. (#301)