EasyRPG Player 0.5.3 “Stimulant”

We continue our one release per quarter-cycle and release “Stimulant”. Besides initial RPG Maker 2003 1.12 support this is a pure bugfix release.

Unfortunately most of the issues cannot be illustrated this time, expect a less visual blog post than usual :(.

Regressions fixed

Listed here are bugs that were introduced between 0.5.1 and 0.5.2 and have been fixed in 0.5.3.

  • The Player crashes when attempting to use a healing item outside of the battle (#1221).
  • The last-minute “battle encounters based on terrain tag” patch in 0.5.2 contained a bug for the default case: When the terrain tag array is shorter than the current terrain ID, it defaults to true instead of false. This broke battle encounters in Vampires Dawn completely (#1218).
  • A change in the logic whether characters or tiles are drawn for events resulted in a rendering error in Yume 2kki: It uses event tiles with no name. They were rendered as black boxes but must be rendered transparently instead (#1228).
  • The \N[X] actor name function didn’t work correctly anymore (#1229).
  • We reworked the name input scene to match the RPG_RT behaviour and only show two pages per language, e.g. Hiragana and Katakana for Japanese and Latin alphabet and ExFont for Western Europe. Unfortunately this broke a riddle in Ib, because the English translation by vgperson was auto-detected as Japanese and this made it impossible to input the solution (#1272).
  • Battlers are affected by screen shake again (#1280).

A few hours before release another regression was noticed which was introduced in 0.5.2 when placeholder support for the official RPG Maker 2000 English version was implemented: The actor name is shown by default in “critical hit” messages which causes grammatical errors. Because this is only a cosmetic bug and we are already in code freeze we decided to delay a fix to the next release.

RPG Maker 2003 1.12

A few weeks ago a new version of RPG Maker 2003 was released which heavily extends ShowPicture with new functionality like spritesheets and pictures in battle.

EasyRPG Player already implements most of the new picture features except pictures in battle and affected by Tone, shake or flash (#1273).

Additionally “This Event” can be used in Common events now. We support this now for all versions of the engine except for “Erase Event” because this event command results in a no-op instead of an error. We had to keep it disabled for old engine versions because this breaks games otherwise (#1265).

A look in the future

In an attempt to make the Player more stable, all RPG Maker data will be sanitized to detect out of bounds access and invalid data. The main motivation for this is to catch new game bugs more easily but as a side-effect it will also make the Player more exploit-safe.

EasyRPG Player will come to two additional platforms: iOS and ChromeOS through a Chrome App. The Chrome app is mostly finished and the iOS app still lacks some parts of the GUI, especially the layout editor. We will announce when any of the apps is ready but do not expect the iOS app to be submitted to the App Store because the yearly fee is expensive and Apple will very likely reject us.

A virtual filesystem is under development, this allows e.g. running games from ZIP archives or games that are embedded in the Android APK. Together with the optional dependency PhysFS, more archive formats like 7zip will be supported, too. But due to solid compression (full decompression of one file requires decompression of additional files) RAR and 7zip will usually be too slow.

Fixes

A visual error in El Heredero del Rey was caused by handling the character orientation after a page change incorrectly: When both pages contain the same default direction the current direction of the actor is not altered (#1226).

Correct character shown in EHR

Battle2 animations (the large ones) were handled incorrectly. The original logic looked for a normal battle animation and afterwards for a large one but there is a field in the database which indicates if the large battle animation is to be used. This fixes a visual error after defeating the knife-monkeys in El Heredero del Rey and simplifies the code (#1234).

The elevator in HOME was not working. A workaround was to smash the enter button but the proper fix was to disable action events when an autostart event is pending (#1109).

Key Input handling had two bugs (#1217):

  • When “Wait for input” was active the variable that contains the time until the input happened was not reset to 0 at the beginning.
  • When key input was non-blocking the time variable was still reset to 0 instead of ignoring it.

The Violated Heroine became stuck when walking through the East Gate. This was caused by another timing issue: An event with a lower ID than the last running event started in the same frame instead of the next one (#1132).

Aurora Wing: did not continue after the first enemy turn.  Intro has a skippable hang and first battle gets stuck after enemy turn. The game checks if a variable contains 999,999 which is the maximum variable value in RPG Maker 2000. Unfortunately, our Player defaulted to the RPG Maker 2003 maximum 9,999,999. Resulting in the variable being higher than the game expected (#1002).

In the dungeon crawler 題名のない竜退治 the interpreter got stuck after collecting an item. This was caused by an “Erase Event” call in a map event that was called by a parallel process. The interpreter continues now correctly after this case (#1243).

Celestial Silfade Story (シルフェイド幻想譚) froze sometimes after using an attack command in the custom battle system. This was caused by a misalignment of the screen which was off by 2 pixels (#1064).

Additionally, this game uses timers to show the current time of the day. The rendering was off by one frame resulting in heavy flickering (#1245).

When the Teleport or Escape skills target an area instead of a map the area is replaced with the map it belongs to. This fixes the game DQ2悪霊の勇者・製品版ver1.50 (#1253).

We found a game that abuses an implementation detail in the event comment “Set Vehicle Position”: When the party is not in a vehicle the vehicle ID of the party is -1. When -1 is used as the vehicle to move the party is moved around instead (#1257). Furthermore an intended behaviour was not implemented: When the party is in a vehicle the party is moved to together with the vehicle.

The interpreter was not refreshed when a move route altered a switch. This fixes a cutscene in Desolate City (#1232).

Misc

The hero name input scene supports now Simplified Chinese (#1239) and Russian (#1278). Additionally, the name input scene code was modified in order to always show the Latin alphabet and ExFont pages (#1284).

Chinese name input
Russian name input

Sound effects stop now when the Player returns to the title screen (#1147).

The background for battles started with the “Start Battle” event command were wrong when a random encounter happened before. This was caused by an incomplete variable reset when the former battle ended (#1224).

All RPG Maker 2003 backgrounds filled the log with “Image size out of bounds” messages because the check used RPG Maker 2000 background sizes which are smaller (#1223).

When switching back to Window mode under Linux the Window sometimes stayed fullscreen with the window rendered in a corner. This was fixed for the F4 and F5 case, but using your window manager to go to fullscreen and back still may not work as expected (#383).

Android

When the screen was rotated while the Player was running in the background the viewport was partly offscreen after returning. This was fixed by updating to the latest version of SDL2 (#1185).

Deprecation of the Windows RT port

To make the Windows maintenance easier, we are going to switch to the vcpkg tool for compiling our dependencies after this release. This tool does not support ARM Desktop Apps which were required for the unsuccessful Windows RT. Therefore this will be the last version of EasyRPG Player that runs on the Windows RT platform.

UWP for ARM is supported by vcpkg, so if we ever release a Windows Store version of the Player, it will run on ARM, too.

liblcf

The new RPG Maker 2003 1.12 picture chunks were added to liblcf (#213).

The system graphic stretch setting (tiled or stretched) was not correctly restored from savegames created by RPG_RT (#214).

A bug in liblcf was fixed which resulted in corrupted LDB files (Stream read error). The error was quite trivial: We wrote one zero-byte too much at the end of the file… Now lcf2xml can finally be used to modify databases properly (#209).

The input/output API uses now C++ iostreams instead of filenames. This makes the library suitable for the planned Player VFS and will fix unicode related problems under Windows (#206).

The liblcf code generator uses now Jinja2. This will make extending liblcf easier (#202).

EasyRPG Player 0.5.2 “Miracle Candy”

Only three months after the last release we have another update for you before we take a development break for the summer.

This time with a fix for a critical bug that snuck in right before 0.5.1 and corrupted savegames of non-English games. This was especially bad in Yume Nikki because it completely broke the Save and the Player was stuck at the loading screen of the game.

Map

Hero graphics are always reset now when they were changed by a move route command and a teleport happens. Before the reset only occurred when the teleport was to a new map. (#1111)

The birds in a quite cruel minigame in Deep 8 play now the dead animation properly. This was a bug in our interpreter: The movement pattern of the new event page was not applied under all conditions. (#1112)

We handled timers incorrectly. Some games had code that checked e.g. for “Timer >= 1s” followed by “Timer <= 0s”. By looking at it both cases should be false for the time between 0.99s and 0.01s but RPG_RT rounds up the timer checks to the next second and EasyRPG does the same now. (#1165)

The timer functions of “Control Variable” wrote the frame count into the variable, not the seconds. This broke the intro of The Sacred Tears: TRUE. (#1166)

A regression introduced in 0.5.2 which broke horizontal parallax scrolling was fixed. (#1148)

The algorithm of movement type “cycle” matches now closer the RPG_RT behaviour:

  • When the character is ready to move, he will first try moving forward (or in the default direction if we are facing the wrong way: Right for Left-Right, Down for Up-Down)
  • If that failed for 20 frames, keep trying to move forward, but if it fails, now try moving the opposite way too.
  • If that fails for 40 more frames, try going forward and if it fails, now move (do not just try to move) in the opposite way, and reset.

As you can see in the video of Deep 8 below, Chloe walks now in the correct direction. Since it is a looping map, she passes by multiple times in the incorrect version which looks funny. (#1167)

Additionally the video illustrates the new font we support (mentioned further below).

Tile 0 is now always drawn, before our code assumed that this tile is always transparent. (#1169)

Tile ID 0 is rendered now. No mice anymore ;)

Pan screen commands that go out of bounds are ignored now. Before the Player calculated the offset which went out of bounds, e.g. when the camera is at the right map border and the screen is panned by 3 right and 3 left nothing happens, but in reality the screen must scroll 3 tiles to the left as RPG_RT does. This fixes the incorrect camera in the Razas intro. (#1169)

Correct screen panning in Razas

The hero jumps now in the correct direction after touching a “!”-switch in Super Mario RPG – The Seven Sages. Jumping did not respect the turn commands before. (#1171)

The collision check based on the tile id in Schmetterlinkskuh-Flugsimulator-Simulation 2k did not work, because the tile id command did not handle looping maps correctly. (#1176)

Our message box code crashed when a hero name (indirectly) referenced itself with a message command, e.g. Hero 1 with name \N[1] would endlessly substitute the first hero name with itself. (#1145)

Battle

The English release of RPG Maker 2000, v1.61 is detected now and the message substitution by placeholders and automatic linebreak feature was implemented. (#588)

Text substitution is supported now in the RPG2k v1.61 battle system.

The well hidden “Appear Randomly” option in the troop context menu of RPG Maker 2003 was implemented. (#987)

The battle against the nurse in 7thjojo was not winnable, because the battle ended when all party members were removed. This was introduced to fix The Huntress of the Hollow in the last version but the behaviour was wrong: Only RPG Maker 2003 ends the event execution immediately when the enemy party is defeated. For the ally party case and RPG Maker 2000 the victory/lose check happens after the event execution finishes. (#1180)

Battle encounters respect now the current tile – sea monsters will not appear on land anymore.

The “Change Enemy HP” command did not end the RPG2k battle when the last monster died when the event was executed at the beginning of a new battle turn. (#1191)

Conditions for enemies in RPG2k battle which prevent them from attacking are respected now (#1204).

Internationalization

In RPG Maker it is possible to choose between two different fonts: In the unofficial translation by Don they are called RMG2000 and RM2000 and in the Japanese version they are MS Gothic and MS Mincho. (#352)
For non-CJK (Chinese, Japanese and Korean) languages a new font as a replacement for RM2000 was added: ttyp0. The look and feel is similar to Don’s RM2000 font.
The RMG2000 uses a font similar to Shinonome (which is the font we already used before).
For CJK-games not much changes, our already built-in Shinonome Gothic and Mincho are used but with the following changes compared to RMG2000:

  • ` (grave accent) is an opening quote
  • ' (straight apostrophe) is a closing quote
  • " (straight double quote) is a closing double quote
  • Cyrillic and Greek characters are double-width
  • ellipsis … is in the middle of the line
Illustrated are the old font and the new font. Both fonts are supported and they depend on the font setting of the game.
Illustrated are the old font and the new font. Both fonts are supported and they depend on the font setting of the game.
Support for additional scripts: Greek and Armenian. Though we are not aware of any games with these languages :(

The “Enter Hero Name” scene does not show Hiragana and Katakana anymore when playing a non-Japanese game. This caused a lot of confusion for years. We plan to add custom pages with glyphs related to the current language later. (#364)

The Korean RTP was added to our built-in RTP table. This means when you have the Japanese RTP installed it is possible to play Korean RTP games, too. (#452)

The Japanese name input scene shows now ヴ instead of を or ヲ which are very uncommon in Japanese names. (#1193)

Audio

The Opus audio codec is now supported for both music and sound. This is especially useful for the web player because it reduces the filesize a lot. (#1159)

Misc

The output system, consisting of the on-screen console and the log file writer was improved: (#1199)

  • The message overlay can now collect all messages since startup and shows them when the graphic system is ready (e.g. the DSP firmware missing message on the 3DS), before they were only written to the logfile and usually not noticed by the user.
  • For file-log and on-screen similar messages increment now a counter which is appended to the line. For the file-log a message is always written twice: The 1st time it happens and a 2nd time how often it was duplicated (this is to ensure that something is logged in case of crashes)
  • The console does now automatic line breaking with the code written for the RPG Maker 2000 v1.61 battle system which requires this feature, too.
  • Path components outside of the game path are stripped now (see screenshot, look at the filenames reported). When the path is outside the game path it does nothing, so RTP paths are not touched.
The new on-screen console automatically inserts linebreaks now.

The “–load-game-id” command line argument ignored the “–save-path” option. This remained mostly unnoticed because the save path matches usually the project path except for the web player where it resulted in “File not found” errors. (#1174)

The Z index values which are used to define the rendering order of everything on the screen were refactored and all magic numbers are gone. This makes the code more maintainable and actually fixed a bug which resulted in heavy flickering because the rendering order of Pictures and battle animations was below the Screen effects. (#1062, #1195)

Android

The fast forward button was not rendered on all platforms, because some default fonts did not include it. (#1124)

The text is now properly centered in our on-screen buttons and hopefully does not overflow over the border anymore. (#1146)

The fast forward mode can be switched from “hold” to “tap” and the multiplier can be configured. (#1146)

Web Player

The file system used by the web player can be replaced through Module.EASYRPG_FS. This is useful to implement a server-backed savegame system and was implemented upon request of rmarchiv.de where you can see it in action. (#1173)

Using “Fast forward” in the web player skipped map loading and resulted in “Map not found” errors. (#1174)

Arrow keys do not scroll the browser window anymore. The F-buttons are filtered, too (not supported by all browsers). (#1188)

OSX

The project path was not correctly set when EasyRPG Player was executed from the command line. (#1175)

3DS

The Nintendo 3DS version does not crash anymore when the DSP firmware is missing and displays a visual warning instead. (#1142)

Similar to the Wii port the RTP is now searched in “/data/rtp/”.

The touchscreen reported the incorrect button since the beginning and nobody noticed it :(. A nice outline was added which highlights the currently pressed button.

PSVita

An unnecessary thread scheduling was removed in the rendering thread. However, this probably has no noticeable performance impact. (#1158)

EasyRPG Player 0.5.1 “Magic Water”

Half a year after the 0.5 release we provide the first bugfix release which brings interpreter fixes (as usual), a few new features and resolves a crash we encountered in 0.5.

Crashes fixed

Unfortunately our Tone performace improvements had a bug which resulted in a crash when the ChipSet is smaller than the default size and the tone is changed. This broke at least Aëdemphia and Mystic Star (#1037, #1048).

Audio changes

This time the audio subsystem changes are not as significant as for 0.5.0. For the normal user basicly nothing changed. The audio system uses now a generic code which handles all the mixing of music and sound effects. This allows us to heavily simplify the code of our ports.

SDL mixer is now an optional dependency. For the Wii version we dropped SDL mixer completely, the same will happen soon for the Android version. The 3DS and Vita code were improved and the 3DS version finally supports MIDI playback and all noise-bugs when playing sound effects should be gone. The new Vita audio code results in a much better performance and less lag (#968, #1100).

Map interpreter

Screen shake, a very elementary feature of RPG Maker, got implemented. Besides Video playback this was the last event command that wasn’t supported (#565). You can see a screen shake in the video below.

The move command “Change graphic” incorrectly changed the current movement frame to “middle”. The frame is now untouched which fixes a visual issue in the intro scene with the red haired woman in Velsabor (#658) and a glitchy door open animation in Deep 8 (#1114).

The PicPointer patch got implemented (#1033). This is a quite popular modification of RPG_RT which allows using Variables to point at pictures. This fixes the games Aëdemphia, Sternenkindsaga and probably many more.

The ship in Dunkle Schatten never arrived to rescue the party. Movement event commands for vehicles were simply not working (#1050).

The method “Remove all equipment” of event command “Change Equipment” was not implemented. (#1050).

Picture rotations and sine wave effects were not stopping when a “Move Picture” command didn’t contain any effect. Additionally rotations take care of the remaining rotation time now and stop the image always when it is at the initial position, if there is not enough time left for another full rotation. (#1046, #1063)

The custom battles in Razas did not start because they are invoked through a parallel event which does a teleport followed by a transition. Parallel events of old maps stop executing forever when they are interrupted, which was the case for transitions. We fixed this behaviour (#1032).

Due to a bug in our performance improvement code of 0.5 we broke the transparency when rotating images that had no alpha channel. This affected the UFOs in Yume Nikki (#1077).

UFOs in Yume Nikki fixed in 0.5.1

The room “SH1” in HOME hanged our Player, because the code to move events away lacked a sanity check and this room contained more then 10 cows which push each other (#1082).

The boat minigame in Wolfenhain did not start because boarding of vehicles during a teleport resulted in a hang (#1079).

When the hero is placed directly on a “Same level as hero” touch event the event is not executed anymore. This fixes a softlock in Rip-The-Blood’s Ford in Space Funeral (#1084) and allows further progress in the game Sternenkindsaga (#1086).

Touhou Alive (東方ALIVE) did a huge amount of out-of-bounds reads in the variable array. This array is dynamically resized but our code was not optimized for this many resizes resulting in a significant framedrop (#920).

Events that are above or below the hero and have start condition “Hero Touch” don’t trigger anymore while a move route is executed. This fixes incorrect teleports into cities while travelling with the airship (which is a scripted airship, not a vehicle) in Mystic Star (#1051).

The event command “Change Event Location” supports now changing of the facing direction for the “Constant location”-case (#1118).

The tutorial of The Huntress of the Hollow was impossible to continue because a bug in the handling of “Change Class” resulted in the Scout skill being removed, which must be invoked once to proceed in the tutorial battle (#1131). Additionally we fixed the “level up” and “skill learned” message box behaviour when using “Change Class” to match RPG_RT.

Battle interpreter

The “Enable Combo” battle command was implemented (#945). Skill reflection and Skill (de)buff are supported now by the battle system (#1069).

A really annoying bug in our RPG Maker 2000 battle system resulted in actors executing multiple attacks per turn. We were aware of this bug since a year but had no idea what was causing it. In the end the cause was that we removed actions from the wrong side of the action list (#933).

The hit rate calculation for normal attacks and the calculation of fatigue were incorrect (#1055). The escape algorithm was fixed, escaping is much more unlikely and escape correctly plays a sound effect now (#1103).

The skill “Eule” was not working in Wolfenhain due to a bug in the check for “BattleCommand used” (#1080).

Two additional game breaking bugs in The Huntress of the Hollow were fixed. We didn’t handle the “Abort Battle” command correctly and executed the Victory handler instead which resulted in an incorrect cutscene (#1127). The battle interpreter halts now immediately when any battle end condition (Victory or Lose) is fulfilled. This game called a common event after killing all enemies and this event hanged the interpreter. Now the event is not called anymore because killing of the enemies is a victory condition (#1129). Note that this is actually a game bug… ;-)

The “Preemptive Attack” setting is now respected when starting battles in RPG Maker 2000 (#1137).

Other improvements

Our built-in font Shinonome got a proper Wave dash (〜) for japanese and missing glyphs are now indicated by a replacement glyph. Additionally some glyphs were visually improved (#1045, #1047).

Here you can see the replacement glyph � and the correct wavedash.
Here you can see the replacement glyph � and the correct wavedash.
Visual improvements to the glyphs
Visual improvements to the glyphs

The WenQuanYi font was added to Shinonome. This allows proper rendering of most chinese glyphs (#1058).

Chinese glyphs are now available in our embedded Shinonome font
Chinese glyphs are now available in our embedded Shinonome font

The FPS counter got a semi-transparent background to make it easier readable on bright backgrounds (#1049).

The keys Page Up and Page Down are supported now in single column selections (like the game browser or the menu). This makes scrolling in long lists more convenient (#1049).

When the map was looping, event tiles appeared half a tile too late (#716).

Due to an error in our rendering code, parallax backgrounds jumped sometimes (#761). The same issue resulted in an incorrect background in the designer room in Embric of Wulfhammer’s Castle (#961).

The rendering order of Pictures and Battle Animations depends on the version of RPG Maker used. Currently EasyRPG renders battle animations behind pictures but since RPG Maker 2003 1.05 and RPG Maker 2000 1.50 the order was swapped. We added additional heuristic to handle this edge case (#1031). This is mostly noticable in the battle system of Live Together.

The monster (which is a picture) is correctly rendered behind the menu (which is a battle animation)
The monster (which is a picture) is correctly rendered behind the menu (which is a battle animation)

VX-Ace like charset behaviour (width and height are calculated based on the image proportions) can be enabled now by prefixing the filename with a $ (#1067). This is just a visual change, the Player won’t adjust the rendering order for too large CharSets.

Support for large charsets in 0.5.1

The “redo” function in the infamous reordering scene was broken and cancel correctly removes the last selected actor now (#1072).

The calculation of the string length when writing LSD files was incorrect when the strings contained non-ascii characters. This was no problem for our Player, but RPG_RT refused to read these savegames and reported “Stream read error” (#1090).

A very rudimentary input record and replay functionality was implemented. This functionality is not useful for general use yet and is used for testing purposes (#1096).

The random number generator (RNG) uses modern C++11 random APIs now which should improve the randomness and the RNG is now portable which means you get the same sequence of random numbers on any platform. This is important to get deterministic replays (#1104).

The item usage count (for items with more then one use) was handled incorrectly which resulted in infinitely usable items when loading a RPG_RT savegame (#1087).

It is now possible to speed up the game (3x) by pressing “F” or through a new touch button on Android (#1010). Because the music speed stays normal this can break a very small amount of games which use the music position in events.

Shop merchants payed the full price when selling items. The deal is now more in the interest of the merchant: The price is halved (#1110).

Event IDs were not correctly restored when loading a savegame. This resulted sometimes in the warning “Event ID 10005 is invalid” because ID 10005 refers to the current event and for this lookup you need a proper event ID. This resulted in minor issues in Yume 2kki that were fixable by leaving the virtual computer (#1131).

Panoramas were not correctly rendered when a savegame created by RPG_RT was loaded (#1071).

Improvements to RTP handling (#1139):

  • The environment variables for adding RTP paths support now multiple directories (delimited by “;” on Windows and “:” everywhere else).
  • The official English RPG Maker 2000 RTP is now supported.
  • Our EasyRPG RTP is now supported (though, still quite incomplete).

Basic support for mouse and touch input was added. This is currently opt-in and must be enabled through the command line arguments “enable-mouse” and “enable-touch”. These features are the first step for a multi-platform touch UI (#1057).

Android

The Android game browser supports displaying of title images in XYZ format now (#1074).

Our Android gamebrowser with XYZ-image support. Ara Fell uses the "Skip title scene" feature of newer RPG Maker versions and has no image in the title folder at all.
Our Android gamebrowser with XYZ-image support. Ara Fell uses the “Skip title scene” feature of newer RPG Maker versions and has no image in the title folder at all.

The “Report a bug” function crashed on Android 7 due to changes in the security model (#1105).

Wii

The Wii version finally supports automatic encoding detection through the ICU library. The Wii version was the only one that lacked ICU, due to the CPU of the Wii which is a PowerPC. PowerPC is “Big endian” and most other platforms (like PC or Android) are “Little Endian”. The endianess influences how bytes are stored, e.g. Big stores as AA BB CC DD and Little as DD CC BB AA, so you have to swap the data (we do this when reading LDB and other files). To compile for Wii we “cross compile”, that means we use a compiler on our PC, that generates PowerPC code for the Wii (that’s faster and more convenient), but ICU doesn’t support mixed endian builds (because their build system involves running some tools on the PC which don’t support byte swapping). But we were finally able to find the bug in the ICU build system and now have a working version for the Wii (#1095).

PSVita

The Vita version supports now shaders. To toggle them you have to use the 4 corners of the screen. This may not be very intuitive but we still lack a generic settings Ui :). The rendering runs now in an extra render thread, this means the framerate slightly improves and shader effects will not slow down the Player at all (#1078).

liblcf

A heap corruption bug in “ReadString” was fixed (#194). The usual safety rule apply: Don’t run content from untrusted sources through liblcf or in EasyRPG Player. The Player is probably easy to exploit using a malformed file but we try to keep liblcf safe :).

The calculation of the event size for non-ascii strings was wrong. This was the same bug as in the Player but in this case it fixes the problem in other tools like xml2lcf (#196).

The XML converter for LMU (Map) files doesn’t write an empty ID field anymore (#186), which was never intended to be used anyway and caused confusion.

A Chinese translation of Wadanohara was detected as encoding GB18030 which is not included in the ICU version used by most of our ports and resulted in an error. This encoding is now handled as Simplified Chinese (codepage 936) (#187). This game is a really bad mojibake-offender: To get correct filenames you have to extract the japanese Wadanohara archive with a Simplified Chinese encoding.

liblcf doesn’t update the timestamp value of savegames anymore. This was problematic because lcf2xml wrote a new timestamp each time the files were converted instead of using the original one. EasyRPG Player sets the timestamp correcty during save now (#195).

The default value for a Battle2 animation_id is now “1”. This fixes an invalid animation error (e.g. in Space Funeral: Legend of Earth Birth) when the first animation is used as Battle 2 (#193).

EasyRPG Player 0.5 “Potion”

It took a long time but we finally reached a new milestone 0.5 with codename “Potion” and we promise you: The waiting time was totally worth it. Initially we planned to do a 0.4.2 release in-between, but we were busy adding too many new cool features. Therefore we wanted to integrate them properly before doing another release. If you can’t wait go directly to our download section.

Two of the bigger achievements in this milestone are a completely new audio interface and huge performance improvements. These changes had the biggest impact on the Wii version, for the first time you can experience completely working audio and a constant frame rate (in most situations). EasyRPG Player runs now as homebrew on the Nintendo 3DS and the PlayStation Vita, raising our supported system count to nine! Another long awaited addition is the new user interface for the Android version, which should finally run properly on Android 6.0 and features a beautiful game browser.

Alongside these additional features we fixed tons of interpreter problems, improved the accuracy of both map and battle interpreter, which are now very close to RPG_RT, and implemented many missing battle commands. When your game did not run in 0.4.1: It should run now, otherwise please file a bug ;).

Table of Content

Audio Interface

One of the worst parts of EasyRPG Player was the Audio system. We use a library called SDL2_mixer for this, but it has some serious shortcomings for us: The problem is that we have to support arbitrary audio files, because any game uses different formats (Stereo, Mono, compressed WAV (ADPCM), uncompressed WAV (PCM), MP3, …) with different sample rates (e.g. 8 kHz, 44.1 kHz, 48 kHz) and SDL2_mixer does not support arbitrary resampling of these formats, which usually resulted in noise. The worst was the MP3 playback, most files were not even detected as MP3 because the MP3 format has no magic (common byte sequence) in the header and the heuristic often failed. Furthermore some features like pitch changes (playback speed) were impossible to implement.

We are happy to announce that all audio problems are now completely solved! The solution to all these problems is our new Audio Decoder. We still use SDL2_mixer for the playback, but the whole decoding and resampling is now done by our own code.

The libraries and their purpose:

  • WAV: Using libsndfile (#859) and a built-in WAV decoder for PCM files on platforms with slow file access (embedded systems like PSVita and 3DS, #984)
  • MP3: Using libmpg123. Additionally we added an heuristic to detect the MP3 files which were previously not playing at all for example because they had an empty frame (0-bytes) at the beginning (#818).
  • MIDI: As a built-in MIDI decoder we use FmMidi which synthesizes the audio on-the-fly. This has the advantage that it is very small (we use it now for Emscripten, saves you 16 MB of download) but quite resource heavy (#752). Alternatively we support WildMidi, which is compatible to the files Timidity in SDL2_mixer used before (#923).
  • OGG: Using libogg and libvorbis. OGG is an EasyRPG extension, the only game we know that uses OGG is Oneshot, but this game is so heavily modified that it does not work in our Player at all (#923).
  • MOD: Using xmp or xmp-lite. Tracker files are supported in RPG_RT through Audioremony and very few games (e.g. AE) use them (#967). This is currently only enabled for Linux, Android and the Wii. Other platforms follow later (Windows and MacOS already support MOD through SDL).

All the resampling magic in the background and the pitch (playback speed) is handled by libspeexdsp or libsamplerate (#908).

Additionally we added a caching system for sound effects, this fixes many lags that happened on slow hardware (mainly a problem on Wii, #1016).

The worst system concerning audio was the Wii. It had no working resampling at all, everything played too fast or too slow. But all these changes allowed us, after waiting for three years, to provide a Wii version with correctly working audio!

tl;dr Audio is the smallest of our worries now…

Performance

Another annoyance in EasyRPG Player on slow embedded hardware (especially the Wii) was the rendering performance and the startup time. At the beginning starting Yume Nikki on the Nintendo 3DS took more than 5 minutes (the Wii had similar problems). The reason for this is that our FileFinder did an extra system call to get the filetype for each file it encountered, but this information is actually already provided when iterating the directory. Removing this unnecessary function call improved the startup time by almost infinity% (#846).

The next problem we had to deal with on the old 3DS was that it only reached 25 FPS. Due to many small improvements in the rendering code (e.g. not rendering the background when no transparent tile is on the screen or not using a Blit that respects alpha when the bitmap is opaque), we were able to reach 60 FPS on the TestGame map. These changes gave a ~25% gain on all platforms, which means the Player performs much better everywhere and gives a much smoother experience.

Even worse were Tone changes (coloring the whole screen) and Saturation changes (Greyscale and Oversaturation), these were the biggest performance killers in the whole Player. Besides that oversaturating was never rendered correctly, we improved the performance of all screen effects by at least 50%. And even better: When the fading part of the effect is finished and the colorization stays constant the speed penalty is zero due to an improved caching strategy which only renders the tone effect once per Sprite and Tilemap tile (#855, #1017).

And the last addition is an improved Bitmap caching strategy which keeps loaded graphics longer in the memory, this improves the performance for commonly accessed graphics (#1018).

Map and event interpreter

RPG Maker 2000/2003 has an interesting feature for event movement: When events walk behind each other in a row and an event that is not at the front of the row is blocked in movement it will ask the event in front to make way by preempting it’s update routine. When this was successful the event continues it’s move. This is completely different behavior to all other interpreter situations where it goes from lowest to highest ID and no way to change it (#884). Implementing this fixed the caterpillar system (#703) in Pom Gets Wi-Fi and resolved a hang that happened after “Stop!” message. That Stop situation was another corner case of that corner case: The event asked the other to make way but with another side effect: When the collided event executes a Wait event the wait will go down twice as fast! This quirk is now implemented (#937) and it doesn’t hang anymore. A hang in the intro of Aurora Wing got fixed in the same way. This was related to diagonal movement and the order of movements (#1030). Unfortunately the game hangs a few minutes later after the enemy finished his move and is still unplayable.

The Events “Set Teleport/Escape Place” and “Enable/Disable Teleport/Escape” got implemented. These commands are quite unloved, only a few Japanese people reported them missing (#690). Together with this we fixed another oversight: Items that invoke skills that toggle switches were not working.

When visiting an Inn the screen fades out, the BGM plays exactly once and the screen fades in again. When the Inn music failed to load the “Played once” flag was never set and the game froze (#956).

Classes in RPG Maker 2003 are a really strange feature and their handling is not intuitive at all. We noticed that class modifiers (Curves, Single/Dual Weapon, …) are not applied at all on startup, but only when “Change Class” in executed. This behavior is correctly implemented now, but the “Change Class” command itself still behaves wrong for some cases. We plan to fix this in the next release (#921).

Battle encounters are not triggered anymore when the Player is in the airship (#928).

The amount of snow got heavily reduced, the effect was adjusted and the snowflakes are smaller. This matches now better the amount of snow RPG_RT renders (#901).

In PeuterisGrey The heroine did two steps instead of one when moving. This was a problem in our handling of the remaining steps, these were decreased one frame too late (#872). Furthermore this game simulates deleting of characters in the message box by using instant speed commands “\>”. Instant speed was not correctly handled in all cases. The flickering in the message box is normal and happens in RPG_RT, too (#871).

We are aware of another bug in this game which results in strange screen scrolling, this is not fixed by now.

Multiple issues in Embric of Wulfhammer’s Castle got resolved: The Post-credits scene appeared twice. This was a bug in KeyInput handling when a message box was visible (#963). A paper note in the game was not displayed at all because we ignored the “Wait for Input” option supported by picture commands (#831). The battle animations used for the battlers were not correctly saved in the Player, resulting in a load error when using them in RPG_RT (#602).

Ib had problems with statues in the Yellow space which randomly disappeared and a hang in the disturbing doll room (#946).

Dragon Quest IV: The Legend of Rivast got stuck after displaying the custom menu. This was due to a race condition between events, because our message boxes rendered too fast. The rendering speed is now on-sync with RPG_RT behavior (#989).

The cursor was not moving in Dhux Scar when using the navigation map. The Key input event waits now when a message is visible (#929).

When opening the custom menu system in Calm Falls the normal RPG Maker menu opened instead (#940). Something similar happened in Vampires Dawn, the RPG Maker menu opened after the custom menu got closed.

A popular patch in the German Community is Ineluki’s MP3 patch. This adds MP3 support to very old versions of RPG Maker 2000 by replacing the harmony.dll with a custom version. The patch works through “link-files”, these are text files in the Music folder with name “audiofile.link.wav” and the first line in these files points to the path of the MP3 file. We provide limited support for this now, the linked Audio file (for doesn’t matter, but is only used for MP3) is played now as the BGM. Multiple BGMs and disabling of looping (no loop statement in 2nd line of the link file) are unsupported. This results in working audio in Calm Falls (#939).

The game 葬 (Sou) hanged after entering a new map. This was caused by an auto-starting event that takes 1 frame to complete and Player wasted one frame when restarting this event, which resulted in timing problems (#927).

Leaving of some maps was impossible in Echoes of the Past, they were automatically re-entered. This game uses a parallel event to trigger teleports based on the Player position and after leaving the map the Player continued his movement and triggered the on-touch teleport to the old map again (#903).

Dragonball Z: Legend of Z resulted in a buffer overflow in the Player. For debugging purposes we write the map name and the LMT path in a logfile and the write function uses a predefined buffer which is usually big enough, but this game used such a deep tree that it exceeded the limit and overflowed the buffer. We added a sanity check (#891).

.flow is a RPG Maker 2000 game, but it got converted to a RPG Maker 2003 game. Player detected it incorrectly and the menu was empty. This doesn’t happen in the original game because it still uses a RPG_RT from RPG Maker 2000. We improved our engine detection to handle this corner case correctly (#885).

flow-0.5-fixedAn interpreter hang in (修正版)のび太戦記~導かれし者達~ got fixed (#860).

The extremely long intro cutscene in もえ~伝 crashed because of invalid weather effects (#860).

Bullets stayed in the air and didn’t move in Desolate City (#860).

The picture commands in サ イコ・プラトーン(PsycoPlatoon) behaved incorrectly (#906).

もしもスマブラだったら: This is a really awesome Super Smash Bros. clone. A problem we observed here was that characters couldn’t fall out of the bottom of the arena. This was a problem in our screen code, the scrolling was off by two pixels (#892).

The gun in Doraemon: Nobita’s Resident Evil 2 did not hit enemies more than one tile away. Additionally the gun was always shooting downwards. This was due to a problem with move events that changed the orientation follwed by an event page change (#1019).

Message commands can contain command codes in \N hero names. Player did not interpret them before, which resulted in incorrect message rendering in The Longing Ribbon and other games (#460).

The Longing Ribbon: Fixed in 0.5Vampires Dawn: Skills that toggle switches (e.g. “Fledermausverwandlung”) were not consuming SP (#816).

When entering the bed in the spaceship in Yume Nikki the screen scrolled incorrectly (#801). The same happened at the beginning of Ara Fell when jumping over the first gap.

The bullets in the bullet hell game 特に理由のない暴力がウォーターⅠを襲う where not moving towards the player but got stuck or moved to the right making this game incredible easy (#1023). This was a bug in the handling of switch and variable events that only modify a single switch/variable. These event commands support setting of a range and the Player used the range code for the single case because start equals end in this case, but these games had invalid values for end.

Win’ Wind’ Windy’: The first intro screen was not rendering correctly. A similar bug was in stage 3-6: The Vampire was not moving at all (#1024). This was the same bug as explained above the video.

The game Razas got stuck before the start menu appeared because of incorrect handling of “Erase Event” in Parallel events (#1022).

Battle system and Interpreter

In previous versions the state of the battle system was very basic. The event interpreter was unfinished, states (Blind, Berserk & co.) were not correctly implemented and modifiers (e.g. SP halved, immune to some elemental attacks and others) were unsupported. Most of the battle improvements were tested against Ara Fell, this game should run (almost) error-free now (#897, #905).

For the battle system we used a different interpreter due to different event commands, but in RPG Maker 2003 you can invoke all the map event commands through a common event. Most event commands (Except the ones that make no sense in battle at all) were moved to our shared interpreter mode and run properly in battle now (#788). Another problem in the 2003 version is the strange execution order of event pages compared to RPG Maker 2000 battles where the pages are executed in a total logical order. The event page order got changed to:

  1. The Turn counter is increased (global battle and current actor counter)
  2. Pages with turn-based (doesn’t matter if battle or actor-based) event triggers or battle action triggers run
  3. The Battle action is executed
  4. Pages with other event triggers run

This replicates now the observed behaviour in the original interpreter (#488).

Variable Operations for Battles got added to the interpreter, the conditional branch “Monster is Target” was implemented, the enemy action condition “Party size” was added and the event command “Force Flee” got implemented.

The algorithm used for choosing the enemy actions got fixed. It selects now the candidate with the highest probability and then adds further candidates that are up to 9 less in probability and then picks one of them randomly. Before it used all candidates in the random pick. Furthermore enemy actions can toggle switches now.

The battler animations reflect a new state now immediately, before it was only updated when the battlers had a turn or got hit. Event commands can kill or revive battlers now and the sprites correctly switch to the proper state (#380).

The actor placement in Space Funeral: EARTH BIRTH was wrong because we used an incorrect default value for X and Y position (#851).

SpaceFuneral fixed in 0.5Monsters use now the battle animation with ID 1 when doing normal attacks. Battle animations that targeted the whole group were displayed incorrectly. Unterwegs in Düsterburg uses this when a battle starts to display the actors in the party (#782).

Terrain settings for battles were not correctly applied, resulting in incorrect background images being used (#789).

Heal items that heal or revive give now the correct amount of HP (#568). Automatic healing of states (e.g. X% heal chance when hit or Heals with X% chance after Y turns) is implemented now.

Formula improvements:

  • The Skill formula was wrong and usually resulted in too much damage making battles really easy
  • The Skill formula respects the flag “Ignore Defense” now.
  • Elements of the used weapon or skill are considered now in the damage calculation
  • When an actor wears an item with flag “increased dodge rate” the dodge rate is now 90%, not 70%
  • The handling of critical hit probability was completely wrong. We interpreted it as “X percent of attacks”, not as “1 out of X attacks”. Critical hits are now much more unlikely.
  • The defense command displays now the defending state correctly and the defense state is considered in the damage calculation.

The item modifiers “SP costs halved”, “Preemptive” (Gauge is full on battle start), “Using item costs SP” and “Increased dodge rate” are implemented now.

The gauge is not updated anymore for actors that can’t act (Sleeping).

This short video of Ara Fell is a perfect summary of many obvious improvements in the battle system since 0.5: The background is correct, the animations of the battler are fixed, multi target skills show animations on all targets and the damage calculation is correct.

New Android User Interface

The Android interface got a huge pile of improvements. The old interface used old legacy UI (for Android 2.3.3) everywhere and this caused many incompatibilities especially on Samsung devices. The most frustrating problem was the non-working menu which made Layout editing impossible. Thanks to the Android App Compat library we are able to provide a modern looking interface on all Android versions and solve all usability problems in one go (#919, #925, #982).

The new Android Gamebrowser
The new Android Gamebrowser
The new Android menu
The new Android menu

Another new functionality is the possibility to disable sounds in the application settings (#835).

Emscripten (Player for the Web)

Our latest version of Emscripten does not need PHP on the server anymore. Instead we use a JSON-based index file to resolve file references (#833). Please see the tutorial for setup instructions.

The first game using this new version is Dogengam which is hosted on itch.io. How about presenting your own game on a website, too?

Dogengam offers an exceptional, artistic style.
Dogengam offers an exceptional, artistic style

Timidity got removed and replaced by FmMidi, this reduces the startup time because you only have to download 4 MB now instead of 20.

We fixed a bug in the URL encoding, % and # were not properly encoded (#894).

Ports for PS Vita and Nintendo 3DS

Thanks to Rinnegatamante the Player runs now on PlayStation Vita and Nintendo 3DS (#863, #973). The compatibility is similar to all other versions and they are regularly recompiled in our nightly build section.

A few issues are not fixed yet: The 3Ds version has no working Midi and a few sound effects are broken (loud static noise). The PSVita version has a bit of lag when too many sound effects are played and lacks the sound effect cache.

Please see the dedicated articles for PS Vita and Nintendo 3DS.

PS Vita Video (Direct link):

Nintendo 3DS Video (Direct link). Warning: Don’t use headphones, loud static noise!

Misc

Yume2kki used invalid initial equipment which resulted in having some items after startup which you were not supposed to have. The problem here was that the hero had items of invalid type equipped (e.g. a Sword that was actually Armor). These items are now filtered and we noticed that many games had the same problem (#977). Another problem was that this game tries to save memory by referencing images outside of the expected path, e.g. they access a Title image as Panorama by using “../Title/Title”. Our FileFinder understands such paths now, traversal outside of the game directory is still prohibited (#976).

Nepheshel contained an invalid system graphic in the title scene, this resulted in a libpng error (IDAT: invalid distance too far back) and a termination of the game. We improved all picture related error handling and they fall back gracefully now and only show a warning (#856).

Bitmaps with a depth of less then 8 bit crashed. RPG_RT didn’t support them, see this as an enhancement in our superior RPG_RT replacement (#432).

Mac OS X does not set the working directory when being double clicked from the File browser, we added additional code which adjusts the startup directory. The Player behaves now like in all other operating systems when started this way (#705).

The encoding detection algorithm got improved, it detects now the language of Yume Nikki and Yume2kki correctly but still fails for .flow (#986).

While in TestPlay mode the Debug menu (F9) is now reachable through the menu. Besides editing variables and switches it supports now saving and loading, too. For quicker save access press F11. (#966)

New Debug Menu
New option Debug with access to the debug menu

The Windows RT version is currently broken, we are working on a fix and provide this release later.

The GCW Zero version is unmaintained and there will be no 0.5 release in it’s current state. If you want to help, please contact us.

For developers

Our code is now completely free of Boost dependencies. Any boost-related code got replaced with the C++11 equivalent (#842).

Our audio system got heavily changed and has many new dependencies. Please see the library list under “Audio Interface” for additional information. New libraries: libsndfile, libmpg123, libogg, libwildmidi, libxmp OR libxmp-lite, libspeexdsp OR libsamplerate.

We updated the CMake File, it is now on-par with autoconf again (#952).

EasyRPG Player 0.4.1 “Blind Attack”

It’s time for the first bug fix release since December. The new release features a heavily improved event interpreter, many fixes to the battle system and other minor improvements.

But at first something completely different: In December one of our developers held a lightning talk at the 32c3. Check out the article and the slides. And there is the lightning talk:

One port that is not maintained by us, is for the Pandora. The user “Ingo Reis” has a Youtube channel where he showcases all the homebrew for the Pandora. Check out running “Zelda Links Awakening” (Inofficial RPG Maker version) on the Pandora:

(If you don’t see a video follow this link)

Now back to the changelog. As usual we group the detailed changes in our blog post in “Interpreter”, “Battle system” and “The other stuff” ;).

Interpreter

The way how interpreter updates are executed in the original engine was figured out via many hours of testing and using a tool we invented (“event tracer”). This probably fixed hundreds of games. The games we are aware of the got fixed are Doraemon: Nobita’s Resident Evil (#692), Dungeoneer: A Beautiful Escape (#677), the combat system of Violated Heroine and speaking with Marin in Zelda: Link’s Awakening. Read the details in the linked issue if you want to know, how chaotic the interpreter is: #753

Event movement speed/acceleration was too high due to a script bug (#762), which made the school hunt event in .flow unplayable:

Above/Below hero events that collide with the Player character are now triggered. This fixes the game Dyhortfight. (#661)

After defeating Orca the game Wadanohara did not continue properly. This was a bug in the way how win-handlers are executed. (#702)

Orca was defeated
Orca was defeated

Nyria can rescue her mother now in Vampires Dawn 2. This was caused by a quirk in the way how RPG Maker encodes events. (#724)

The game Embric of Wulfhammer’s Castle got many issues resolved:

  • The “Frame” (a strange RPG Maker 2003 feature which overlays a frame over the map and is not scriptable) got implemented (#694)
  • Tile opacity was not restored after loading a savegame (#695)
  • Scripted events did not continue properly after losing a fight. We are not sure how this got fixed, probably same issue as Wadanohora. (#682)
embric
Left: Old version without frame and incorrect transparency. Right: New, corrected version

After using an Inn in 7thjojo a black screen appeared. #769

The Sacred Tears: TRUE crashed in the savegame scene. This was due a bug in the reencoding of strings in movement commands. This bug got fixed in liblcf. (#556)

Issues in Doraemon: Nobita’s Resident Evil got fixed by improvements to the event interpreter and by implementing “Condition: Started by Action Key”

Ara Fell heavily relies on variable changes for the fade-in effect on the title screen. This way we found a performance bug: The Player always refreshed common events when variables were updated. This doesn’t make sense because common events are only influenced by switches. Now the title screen in Ara Fell is fading in smoothly. Another title crash was caused by another data structure optimization of RPG Maker, this time in terrain data. (#785)

Events can now jump onto the field of the Player when they are above or below the hero. This fixes a game breaking bug at the end of のび太戦記ACE (Nobisen ACE). (#822)

Picture rotations calculates the angle now correctly. (#722)

The interpreter holds execution now when a vehicle is (un)boarded. (#768).

The ATB flag for RPG Maker 2003 battles is now saved and toggling and checking via event commands works now. (#796)

Calling a non-existant Event page shows a warning now instead of crashing. (#689)

When a message contained a “kill” (\^) command and a choice the kill flag was not reset and killed the next message. (#783)

Using of “*.script.wav” files result in a more descriptive warning now because they require Ineluki’s Key Patch which is not implemented (#731).

Exit Game (RPG Maker 2k3 1.11 feature) returns now to the Game Browser (if available) instead of closing the Player (#791).

Battle system

The using of skills and items in battle was improved. This fixes problems in Vampires Dawn 2 and Embric of Wulfhammer’s Castle. This affected especially equipment (swords & co.) which contained a skill. (#732). Equipped equipment is also listed now in the item window and usable as a skill. (#745)

Battle music did not play in Embric of Wulfhammer’s Castle (#600). This was again a liblcf issue, the battle music was not correctly set after loading a savegame created with the original engine (RPG_RT).

Spell drain (e.g. Blut saugen/sucking blood in Vampires Dawn) was draining HP and not SP due to a typo (#808)

Inflicting states (e.g. Poison) broke due to a bug invented months before 0.4. This works again now and additional effects (HP drain when poisoned) got invented. (#815) Furthermore RPG Maker 2003 battles did not apply states at all (#764)

The “0” (zero) was not always rendered in the Gauge battle system (RPG Maker 2003) because we failed in math (#678), e.g. in Vampires Dawn 2:

Missing numbers in the gauge battle style
Missing numbers in the gauge battle style

Another problem with Vampires Dawn 2 was, that it does not use cursors for actor selections. Therefore it was not possible to see which actor is highlighted for items or skills. The highlighted actor flashes now like in the original engine.(#825).

A crash was fixed in OFF when fighting with an enemy group which spawned additional enemies. Also the gauge of invisible enemies is not updated anymore and heal skills invoked by enemies don’t deal damage to them anymore. #723

The “Rundumschlag” Skill always missed in Unterwegs in Düsterburg because it had a base damage of zero (#766)

Return of Touhou Mother locked up in battles because it uses “Get Midi Ticks” for timing (#744). This is still not 100% reliable, at least the combo system won’t work.

The “End battle” command was not ending battles (#741, #739)

After reviving a character the dead state was not correctly removed when the item/skill had a power of 0. The revived actor gets now 1 HP instead (#825).

We fixed many deadlocks (battle hangs and you must close the Player) many happening because of death in the battle system (#825):

  • After reviving an actor the dead animation was not reset to the idle animation, which resulted in a hang because the battle system waits until the actor returns to the idle animation.
  • When an enemy and an actor reached a full gauge the same time and the enemy does the turn and kills the actor the dead actor will get the turn and hang the battle. Dead actors get now a gauge of 0.
  • The algorithm for picking the next movable actor had an error in the way how it looped over the party resulting in dead actors being selected which hangs the battle like in the previous case.
  • Enemy Self Destruct and Enemy Escape actions hang the RPG Maker 2003 battle. (#763)
  • The GameOver event command resulted in an hang when used in battles, too. (#771)

The algorithm for battles got improved and supports now the following features (#826):

  • Attribute multiplier and resistance are supported now (e.g. Fire skills that are weak to water enemies)
  • Weapons respect the “Attack attributes” now for getting damage multipliers
  • Weapons can increase the critical hit rate
  • Weapons can inflict conditions
  • Weapon can ignore the target’s dodge rate
  • Weapons consume SP now when they have a SP cost and are used as a normal weapon.
  • Atk, Def & co. changes as results of skill/item damaged are applied now in battle. (#767)

Save

Saving the next script line instead of the current one as the next executable line. This resulted in problems in loops because this way loops got exited when the saving occurred while an interpreter was on the “Continue Loop” command. (#770)

The way how states (Dead, Poison, …) are saved by RPG Maker was incompatible to the way we stored them. This was adjusted and we write more proper savegames now. Together with other minor fixes savegames created by EasyRPG Player are usable in RPG Maker Runtime (RPG_RT) now (though, in some cases, we found more incompatibilities)! (#670)

Android

Starting from Android 4.4 (KitKat) the SdCard is not writable anymore by default. This rendered our additional game directory implementation almost useless. The save directory is redirected now to a directory on the internal storage to work around this issue. (#534, #726)
The architectures armeabi, x86 and mips are supported now. (#413)

Our App is now also available in Korean language (#790).

The buttons enter/cancel/shift were not usable anymore in the layout editor, because their names were not translated. (#777)

You can now send bug report emails from the in-game menu. This feature is heavily used since then and we already got hundreds of emails. Thank you for your help improving the Player!

Emscripten

Player Emscripten failed to download sound effects invoked via “Play Sound” in movement commands (#509)

Because the emscripten version downloads game resources asynchronous race conditions can occur when assets finish downloading out of order. This was resolved now by rewriting the downloader to abort requests, that are not required anymore (e.g. because they were on the previous map or the BGM was already stopped).

OS X

OS X had a tearing issue in fullscreen (#704)

Wii

The Wii port got some love, too. Debug log messages are not spammed on the screen anymore (#742) and overscan issues got fixed. (#743)

Misc

System background mode “tiled” got implemented (#479), now the menus render correctly in AE:

ae041
Correct, tiled rendering mode in the background

Fixed equipment can’t be changed anymore in the Equip scene (#800)

The savegame path stayed at the toplevel directory when using the game browser (#750). When launching multiple games from the gamebrowser, the first engine of the first was used for all (#755).

Rendering issues for HP/MP got solved in RPG Maker 2003 games (#715), for example in El Heredero del Rey:

ehr041
The numbers are now readable

“F12” and “end game” stop now the music playback when returning to the title scene (#756).

The ICU data file got updated to support Thai. Thai itself is currently unusable in Player due to missing font support. But this is a first step. (#746) Another encoding problem got resolved in Nobita’s Biohazard (Korean version). Some files were not found (#649).

The Player is now packaged via the Open Build Service. (#499). You can download packages for your favourite Linux distributions.

We support now Windows RT. Read the previous blog post for additional information (#728).

We work around a bug in the audio library (SDL2_mixer) we use, which fixes MS ADPCM playback (#710).

liblcf

As mentioned earlier savegames in Sacred Tears broke due to an encoding bug in liblcf. (#155)

The message stretch settings was not written to the save game data. (#170)

Battle and other music effects were not correctly loaded from a savegame. (#173)

The ATB (for RPG 2003 battle) field was added. One field less to go. The savegame compatibility gets better and better! (#171)

The savegame parser is now more fault tolerant and should crash less when encountering bad savegames (#175)

For developers

  • The CMake build passes the C++11 flag now #737
  • Autotools generates proper (not tainted) tarballs now. #712
  • The “platform” subfolder got removed and the files are now stored in the src directory like all other files #772

EasyRPG Player 0.4.0 “Poison Attack”

If you are celebrating christmas: Merry christmas! For everybody else: Today is your lucky day!

Today we release version 0.4.0, Codename “Poison Attack”.

This version introduces a simple game browser for all platforms (except Android, which already has a native one) and fixes lots of important issues in the game interpreter and battles. Furthermore the new conditions and events of RPG Maker 2003 v1.11 (The official English release) are supported now.

The new version codename refers to the next database tab (skills), and “Poison Attack” is the first skill in the list.

Battle

The battle against Sylvia in Unterwegs in Düsterburg resulted in a hang because battle animations were repeated endlessly (#656).

Fixed a divide by 0 crash during battles in Mystic Sunrise because some battlers had zero MP (#653).

Battle event pages with start condition “actor turn” or “enemy turn” don’t run multiple times now in the same turn. This fixes repeated message issues in OFF (#674).

Boss battles finally working better in OFF
Boss battles finally working better in OFF

Fix hang in battles in Monigote Fantasy when using idle animation states (#608).

Pending battle events were not correctly cleared in RPG Maker 2003 battle system when the battle ended. The next battle deadlocked the game (#652).

Loading a save from RPG_RT didn’t restore RPG 2003 battle commands correctly, rendering battles impossible (#601).

Pressing F12 during a RPG Maker 2000 battle crashed the game the next time a battle started (#419).

Interpreter

There were many fixes to the interpreter which are a bit difficult to explain. Most of them are related to the execution order of events and special corner cases of the RPG_RT interpreter. In short: Many games will work better.

Ib: Interpreter hanged in the sketchbook bucket house (#629).

Ib: Picking of one piece of the Guertena painting was not possible. The reason for this was that there were two events that started when pressing “Enter” but Player only started one (#669).

Ib: Pressing decision/cancel key in the Mirror was closing it mostly instantly. This issue was also affecting Wadanohara (#645).

The “Measure time until key is pressed” method of “Process Key Input” incremented the counter ten times faster than RPG_RT, affecting Clock of Atonement (#659)

Mimicry Man: Message Window was not closing (#589).

Monigote Fantasy. Entering houses required touching the tile twice (incorrect handling of “On Touch” events) (#654).

Unterwegs in Düsterburg. A bug in move route handling  (Event command: Proceed with Movement) resulted in a hang in Grandys house (#650).

Unterwegs in Düsterburg. The interpreter froze in Grandys Zimmer at Königsberg (#665).

The Sacred Tears: TRUE and Standstill Girl
The main character was not able to move because these games used move routes that could finish in one update tick (e.g. commands like “Change sprite” or “Face left”). RPG_RT will not block the movement in such cases but Player did. This fixed movement in The Sacred Tears: TRUE and Standstill Girl. Which is quite ironic because of Standstill :D.

Standstill Girl is not standing still anymore
Standstill Girl is not standing still anymore
The hero in Sacred Tears can walk now
The hero in Sacred Tears can walk now

The cursor in the title scene of Sacred Tears: TRUE was not displayed (#559).

Switching from charset to tileset graphics was broken. This resulted in a hang in the library of Boy Ichiro’s Modesty (#667).

Support for music loop condition in conditional branch. This fixes a hang in the intro cutscene of のび太戦記ACE (#655).

The rain sound effect was played hundreds of times in Vampires Dawn. Parallel common events are now suspended when the start condition is not met anymore (instead of reset) (#453).

Incorrectly render order (Z value) when tiles were substituted in Æ:  (#620).

The new event commands and conditional branch conditions introduced with RPG Maker 2003 v1.11 (English release) are supported now (#587).

The “Change Equipment” was not working correctly (#688)

When an event contained multiple battle encounters the interpreter jumped to the condition handler (win/lose) of the last one (#610).

The call inn command was not working properly, it was not recovering the party and this was making games much harder to play (#631).

Fixed KeyInputProc for games that were created with RPG Maker 2000 and later converted to RPG Maker 2003 (#604).

Events on the map were not refreshed by all events that altered variables (#590).

Screen flash timing was not working properly (#644).

F12 (Return to title) did not reset all values (#651).

Web

Web Audio issues were resolved and now supports MIDI and MOD playback (#641).

Fixed Ogg Vorbis noisy audio playback (#672).

Android

Many improvements for Android (they were already available in the PlayStore since months, but to sum it up):

The buttons are resizable and multiple layouts can be saved. Also portrait orientation is now supported. You can get vibration feedback when you press a button (#598, #597, #591).

Support for systems with x86 CPU (before: only ARM). If it was crashing on start up on your device: Try again.

“EXFONT” rendering  (glyph symbols rendered when using $a-$z and $A-$Z codes) finally works. It was broken because our lazy Android maintainer did not update our library for PNG rendering since years :P .

Wadanohara with ExFont on Android
Wadanohara with ExFont on Android

Hungarian translation (#648). Thanks to Farkas Ürdüng.

Japanese translation (#642). Thanks to Mephisto.

Portuguese translation (#686). Thanks to Kennedy Cirino da silva and Daniel Paim de Mattos!

Other fixes/improvements

XP support was dropped, sorry!

A Game browser was added (#664). This allows loading games from the current directory. Navigating in other directories is not yet possible, but is useful for embedded devices.

Game Browser showing the many games our developers have
Game Browser showing the many games our developers have

Vehicles displayed on wrong map (#593).

Tile substitution did not correctly update the terrain ID (#638).

Files with names starting with “.” were ignored (#637).

The money window (“\$” command) was broken (#632).

Sometimes \c[0] returned the wrong color (#612).

Weather effects were not persisting between maps (#592).

NOT included in this release

Some features were planned for 0.4 but couldn’t be finished error free in time: Screen shake and tiled rendering mode for system graphics. They will come in a later release a few months later.

For developers:

This version started using C++11 features to make development more pleasant.

Windows: Because of C++11 you need to build Player with Visual Studio 2015 and because older versions are already unsupported (#595).

EasyRPG Player 0.3.2 “Hornet”

This was a quick one. In 0.3.1 we found a critical bug that hung the Player when loading some maps. This version is codenamed “Hornet” because that’s the 3rd enemy in the official English RPG Maker 2000, in Don’s translation the 3rd one is “Spider”.

Besides this crash fix we also introduced some other improvements that didn’t finish on time before 0.3.1: Battle animations finally work as expected everywhere, this includes animations on the whole screen and animation on targets, additionally sound effects and flash effects are executed now (#365, #574)

Another interesting one broke ゆめ2っき (Yume2kki). This game faded out the screen at the beginning and then showed a message box which got instantly closed using “\^” and showed the screen again. So this message box was never visible and completely useless (same for the fade out/in), but the Player had a bug that had the closing logic of the window in the drawing code which was never called because it is faded out. Now the closing logic is in the normal update loop and the game finally starts. It seems this game was designed on purpose to break the Player :D. (#577)

Music was not playing in the battle in OFF. The cause for this was that many parts of the Player code used the Database default music/sound effects and not the ones in the savegame data (the ones that can be altered via events). A gigantic “Search & Replace” resolved this issue everywhere. (#581)

Another annoying bug that crashed the Player randomly after ending a battle since a long time and nobody ever found a reason for is #580. But the cause is finally found: It happens when a battle animation plays on the map while the battle is started. But this is finally resolved so you must not be afraid of that crash anymore :)

Games that used bitmaps with a width that was not a multiple of four were rendered incorrectly. This affected the game “Mimicry Man”. (#583)

liblcf got some more chunks documented. These chunks are not yet used by the Player, but will be in a future release. Thanks to Cherry for the help! (#152)

 

EasyRPG Player 0.3.1 /\../\

The hot days are over and the developers move from outside to inside again. The result is the next bugfix release 0.3.1 (Codename: /\../\ (Bat), the flying friend of slime).

The most significant changes are as usual: Interpreter and battle improvements resulting in the best version of EasyRPG Player by now.

Another guy who likes bats is the main protagonist, “The Batter” in OFF. This game is now compatible with EasyRPG Player. Bat (0.3.1) makes the battles with The Batter and his bat better. Everything is better with Batter. Sorry for the bat puns :)

Besides OFF the following popular games got fixed: The battle against Sal in Wadanohara, drinking blood in Vampires Dawn, the intro of Vampires Dawn 2 (rescue your mother).

Yeah we know that the German community says that Vampires Dawn is overrated but for testing the battle system of the Player it’s great.

Just retest your favourite game, maybe it works now, too?

Events

In terms of events some really significant features were implemented.

  • Fix issues with Change Tilemap command (#495)
  • Characters on lower layer can pass the Hero now. (#486)
  • When using more then 50 pictures the picture data got corrupted and the Player crashed (#485)
  • Message command “\!” (pause) printed sometimes the next character (#515)
  • The ESC key was not recognized by Ahriman’s prophecy (#433)
  • The command “Continue event execution” when combined with a Move command does not result in random dead locks anymore, this happened e.g. in Unterwegs in Düsterburg before fighting any random encounters. (#344)
  • When the hero is moved by an event and touches “On touch” events on his route these touch events are now executed when the event that executed the move route ends (#331)
  • Another game that got fixed thanks to these changes is “Vampires Dawn 2”. When Nyria comes back to her house at the beginning you got an instant game over before because the timer did not start.
    Basicly these improvments fixed probably hundreds of games.

Battle System (#482, #552)

General battle improvements

  • Normal attacks can hit critical now
  • The enemy can now use skills that target a single battler
  • The enemy can now use the abilities: Escape, Charge and Defend (#330)
  • Probability calculations are respected [A]-[E]
  • States are partially supported
  • Support for “States auto heal after X turns”
  • Multi-target skills only cost the MP once, not for each target (#399)
  • Correct battle interpreter page execution order for RPG2k (#483), RPG2k3 is more complex and still executing incorrectly
  • Visual bugs in battle animations fixed
  • Actors with auto attack (condition) auto attack now ;)
  • Support for skills doing absorb

RPG2k3 battle related battle improvements

  • Support for battle styles alternative and gauge in RPG2k3
  • Actors with animation type “battle animation” work now (before only “Character pose” was working)
  • The actor animations respect the state now
  • Automatic placement of actors improved, was before totally wrong, but is still not correct :(
  • Interpreter supports Fork conditions “Last action” and “Actor/Enemy turn”, this fixes the tutorial battle in the game “OFF” and the battle against Sal in “Wadanohara”. (#529)
Gauge battle style and actors are displayed as battle animations
Gauge battle style and actors are displayed as battle animations
The judge is happy about the new battle interpreter
The judge is happy about the new battle interpreter

Other changes

  • RTP of the official English RPG Maker 2000 release is now used when installed
  • Tone change “Saturation” looks now correct and is faster then before. (#357)
  • Medicine and material items supported in Item scene (#524, #525)
  • Fixed a regression that resulted in rendering errors of the bottom window frame (#544)
  • Render priority for Star (☆) tiles fixed (#333, #546). This was a very old one, you probably noticed it while walking under trees, the character sometimes appeared over the tree for a few frames.
  • Minor bugs in the Ordering and the Shop scene fixed (#547)
  • The Filefinder on non-Windows systems failed to find files that were in subdirectories. Placing files in subdirectories is not officially supported by the RPG Maker editor (#543).
  • Remove bottom-half transparency from RPG Maker 2003 1.10 (English release) (#539)
  • The maximal values for HP is now 9999 for 2003 (was 999). Same for Exp (now: 9,999,999, was 999,999)

Android

  • Improved game browser, changing the encoding is now more obvious
  • Prevent screen from shutting down resulting in a hang (#493)
  • Because of inconsistent behaviour among devices the menu is now called with the Back-button instead of the Menu-button. (#511)
  • How-to-Use Popup on first run (#512)
  • .nomedia file added to prevent that RPG Maker graphics and music appear in Gallery or Music app (#532)

Emscripten (the web version)

  • Website redesign (#504)
  • Games with non-ASCII (e.g. Japanese) file names work now (#508)

Mac OSX

  • The OSX-build is now distributed via homebrew.

Nintendo 3DS Version?

Maybe you saw the video we linked on twitter but we don’t have any new announcements to make about this port, it’s still not usable, sorry.

liblcf

  • Nothing special here, some incorrect default values were adjusted and some fields renamed.

EasyRPG Player 0.3 “Slime”

We are happy to announce the next major EasyRPG Player release. We want to thank all our developers for the huge amounts of time they invested in improving the Player. The new release is called “slime” everyones favourite enemy. You can get it in our download section. But what is the 2nd most popular enemy? You will see when 0.3.1 comes out.

Official RPG Maker 2003 release

Before we write about the new features we have an annoucement to make. It was a really unexpected news for all of us: An official English version of RPG Maker 2003 was released. Instead of using an illegal fan translation you can buy a legal version now. This is basicly your only option because our own editor is still far away from being in a usable state. (No we were never in contact with Enterbrain and are not payed for this statement). We read that the sourcecode got lost. Therefore they have to use binary patches. This means the risk that gigantic new features are provided is reduced – Which is good for us. The new English RTP is automatically detected by the Player (#454), games made with the new version will work as good as the old ones.

New features

Now back to the new major release. It brings many important features, some of them were completely missing before, these are:

Vehicles

Vehicles (#219) was one of most important missing feature, breaking many games depending on them. A well known game broken directly at the beginning by this was Don Miguels Sample Game, you can now cross the lake together with Marcus! The implementation includes boarding/unboarding, vehicle teleport, on board music change, save and load position support, airship terrain based landing check and system graphics based airship shadow (#434, #436, #441).

Don crossing the sea
Don crossing the sea

Map loop

Another important feature implemented is the endless scroll map, vertical, horizontal or both. This was required by some games to work properly and some of them didn’t work without this at all. The implementation includes support of special movements, like jumping between loop edges, and takes care of event picture, panorama and camera movement. This change makes the dreams in Yume Nikki finally completely enjoyable. (#455, #457)

Battle improvements

The battle system is one of the most complex and most commonly used parts of RPG Maker. We added further additions to our implementation, including: Items dropped by defeated enemies are now added to the party’s inventory (#398) and multi-use items are really multi-use now (#420). Some skills crashed the game when used (#405).

When a timer reaches 0:00 the battle ends now. This is a strange behaviour because there is no way to call a timer based event in battle. But that’s the RPG2k way.

The event interpreter got some bug fixes: The command “End battle” is now supported (#393) and weather/tone effects are visible now on-screen (#396). The condition checks “Monster/Hero can act” and “enemy hp” were broken (#367)

We also fixed a deadlock that sometimes occured in the RPG2k3 battle system. (#474)

Save

As you know RPG Maker uses a binary format and we try to figure out the fields to improve compatibility. Our main problem is still the save file because we are the only ones who try to figure out the format. We don’t provide our own format but are compatible with the original RPG Maker savefiles. There were many new fields discovered, some statistic:

In 0.2.2 release we had 1103 chunks in all binary formats (LDB, LMU, …) of which 81 were unknown (92.66% known). Now with 0.3 new chunks were discovered resulting in a total of 1122, of which 31 are unknown (97.24% known). Yes, 19 new chunks were discovered, it’s possible that we discover even more. (#128, #132 and #133)

  • A nasty bug preventing parallel events from continuing after loading got resolved. (#474)
  • Fix savegame corruption for Russian games when encoding was specified in RPG_RT.ini file (#139)

Android

If you checked the PlayStore the last weeks you probably noticed that we made some updates to the Player. Thanks to a new developer (BlisterBoy) the Android version got significant improvements. He added support for the long-awaited button mapping, now you can enjoy all RPG Maker 2000/2003 because all buttons are available on the screen if you want. (#443)

Besides these there were some minor improvments:

  • Accessing the settings for changing encoding crashed the program when the INI file was missing (#435)
  • Support for Joysticks (#392)
  • German and French translation (#412)

Further extensions like support for different game directories and game/engine dependend will come later because our Android developer is currently busy with real life.

Run in the Web

As already mentioned in an earlier blog post EasyRPG Player runs now inside your web browser. This port was further improved and supports now asynchronous loading of assets. That means not the whole game is downloaded during start up which significantly improves the loading times. All images and music is downloaded on demand and map files are downloaded while the transition plays. Save files are locally stored, they are lost when you clear the local storage of your browser (#389, #417, #425 and #462).

How about playing a round of Ib? More games will come! We can also help you in releasing your own RPG Maker games to the web. Just contact us!

You will need an up-to-date browser. Firefox runs the games a bit better then Chrome. This could change when new versions of the web browser are released.

Other

Now about other fixes that don’t fit anywhere else:

The most funny one is probably a Polish fan translation of RPG Maker that translated a bit too much. The “stop music” event specified by file name “(OFF)” was translated as “(Brak)”. The Player accepts now both strings. (#391)

  • Frame skipping is now more smooth (FPS stay constant). Before frameskip was speeding up and slowing down the game which felt strange (#287)
  • PNG transparency was incorrectly applied in some cases. (#358, #430)
This is me reading the libpng docs
This is us reading the libpng docs
    • Referencing a variable indirectly via another variable wasn’t working correctly (#387)
    • Transparent textshadow color in Wadanohara fixed. (#394)
    • Common events were reset during map change. In Vampires Dawn this resulted in recasting of transformations after each map change (#402)
    • Switch items (e.g. save stones in VD) were not consumed. Same for skills of type switch. (#403, #404)
    • Timers are now visible on screen (#406)
    • Support for ThisEvent in CommonEvent (references callee of CommonEvent instead of crashing) (#412)
    • RPG2k VALUE (a newer version of RPG2k) uses a different way to encode the Key Input Event (“Enter password” in Don’s translation).  (#424)
    • Rendering of some sprites/tiles was off-by-one pixel (#428)
    • MoveForward moves now always correctly, map passability fixes and animation speeds more consistent with RPG_RT (#451)
    • Too many games relied on RPG Maker ignoring access to switch/variable 0, which is an invalid index. EasyRPG doesn’t warn about this access on-screen anymore. (#458)
    • 32 new chinese characters and Wong sign added to built in shinonome font (#464)
    • Bush depth (Character bottom becomes transparent over bush tiles) implemented (#468)
    • KeyInput command was improved. The game NASU (included with YumeNikki) is now playable! (#469)

liblcf

Most changes in our lcf parsing library were support for new chunks mentioned earlier under “Saves”.

  • We fixed a bug in the number parsing code that broke a few games (because the database failed to parse) (#128)

EasyRPG Player 0.2.2 “Brian”

After some months, here is a new maintenance release of the RPG Maker 2000/2003 game interpreter. This release has been focused on bugfixes though it adds some new features.

What is new for users?

Hangul support for Korean games. Before this release, all games using Korean characters were unreadable. The Baekmuk Gulim font glyphs have been added to cover them (#336). Nobody of the team speaks Korean, however we want to support all games possible written in any language.

Gray Garden Korean translation
Korean translation of the Gray Garden game

There is also initial work to add missing Traditional Chinese glyphs, designed by Dmytro Kushnariov (#359)

Fixed major bug regressions introduced in previous releases:

  • Fixed shop’s invalid item bug and refresh sell window when opening it (#305)
  • Fixed sprite flashing (#300)

Fixed picture rotation (position and initial angle) (#310)

Implemented rest (fade out and fade in) in the inn (#313)

Fixed Battle related features:

  • Battle: Added fatigue trigger, fixed hp trigger and cleaned battle_calling to make battle command interpreter work (#326)
  • Battle: Fixed the acquisition of battle backgrounds (#304)

Maps and tile related:

  • Implemented Save (Allow/Forbid/As in parent) map property (#293)
  • Improved tile animation speed (#306)
  • Regenerate autotiles cache after a new chipset is setup (#313)

Messages:

  • Fixed message flags clearing (#313)
  • Show gold window during inn prompt, skip prompt if price is 0 (#313)
  • Implemented closing windows animation (#313)
  • Fixed face not cleared after the event execution ends (#340)
  • Fixed font color when changing game system graphics (#345)
Wadanohara and the Great Blue Sea
Fixed font color was affecting Wadanohara game

Multiple fixes and implementations in the event interpreter:

  • Improve animation speed (#235)
  • Fixed hero facing when triggered (#235)
  • Use the prelock direction for spinning animation like in RPGM (#235)
  • Use middle frame pattern when changing a character’s graphic (#235)
  • Update self movements when GetContinueEvents is true and reset move_route_repeated flag when a new move route is forced (#280)
  • Update interpreter after each autostarting event is set up (#280)
  • Stop event processing during transitions (#313)
  • Prevent destruction of parallel interpreters when map is refreshed and that interpreter is currently running (#325)
  • Fixed delayed deallocation when there are multiple parallel interpreters (#327)
  • Use the through-bool only for Through mode in movement events (#321)
  • Implemented transparent flag for Events (#302)
  • Implemented bush depth for character sprites and fix screen center (#326, #361)

Fixes to menu related issues:

  • Fixed segfault when item ID > max ID in Equip menu (#337)
  • Don’t play menu sound on cancel if menu access is not allowed (#289)
  • Always draw equipment stats (even when ’empty’ item is chosen) (#329)

Added Keypad 0 as Cancel button (#301)

Added MIDI support in OpenAL backend (#308)

Improved loading performance for some games by avoiding recursive folder mapping when not needed (#326)

Building: Patches for SDL and SDL_mixer were backported from Hg for Windows and Android to fix audio and wave issues (#353)

liblcf: Fixed various crashes when loading invalid data size blocks from some games (#120, #121)

Android: Added external gamepad device support.

What is new for developers?

Added code documentation generation option (Doxygen) to Autotools build (#323)