Official libretro/RetroArch support for EasyRPG Player

RetroArch is a frontend for emulators, game engines and media players which is powered by the libretro API that provides an abstraction layer to connect other applications (so called  “cores”) to RetroArch.

EasyRPG Player is now supporting libretro including all features you know from our other ports, which means you can decide if you want to use any RetroArch specific features not (yet) provided by our standalone version.

We will continue maintaining and improving our standalone version. See libretro support as a bonus feature. We don’t see RetroArch as a competitor, you can decide which version you prefer :).

For stability and maintenance reasons the release schedule will be, when 0.6.1 is released, linked to our official schedule which means the core is always updated after a new official release is announced in the blog.

Features

Notable features compared to the normal version:

  • Gamepad button remapping
  • Better file browser
  • Touch UI on any platform
  • Shaders
  • Simple install of WildMidi instruments via the built-in content downloader
  • Everything else RetroArch offers ;) (when applicable, EasyRPG Player is not an emulator)

Download & Platform support

We don’t provide our own builds for it, instead use the core updater of RetroArch or download it from the libretro buildbot.

The core is available for the following platforms/architectures:

  • Windows (32 and 64bit)
  • Linux (64bit, ARM hardfloat and ARM Neon)
  • macOS
  • Android (only ARM, not for x86 due to build issues but your smartphone/tablet is usually ARM-based)
  • iOS (the only platform we don’t really support yet, due to lack of a touch UI)
  • SNES Classic & co. (Maintained by ModMyClassic)

A port for Vita and Switch is possible but due to lack of hardware for testing these are currently unsupported. Use our standalone ports instead. The 3DS is out of scope because of hardware limitations (our official port which is optimized for the 3DS already runs badly). Support for Wii and WiiU is not planned because these platforms are using big-endian byte ordering and compiling some libraries to these platforms really causes a headache. You can use our official Wii port instead. The same applies to emscripten, the web version requires many modifications to run properly, please use our own version of the web player instead.

Controls

Except for some functionality that is already provided by RetroArch (Reset, Fast Forward, Screenshot and FPS toggle) the keyboard mapping is the same as in the standalone EasyRPG Player.

RetroPad:

  • A: Confirm
  • B: Cancel
  • Y: Shift
  • Start: Confirm
  • Select: Reset game
  • X, R1-3, L1-3: RPG Maker games can use more buttons than the RetroPad has. You can map these 7 buttons in the core options.

Core options

  • Remapping of RetroPad X, R1-3 and L1-3.
  • You can decide whether the keyboard (normal EasyRPG Player button mapping), the RetroPad or both are used. Due to possible button mapping conflicts you can disable one of them here.
  • Debug/TestPlay mode can be toggled. This allows you to walk through walls by holding left CTRL or opening the debug menu with F10 (you can map them to the RetroPad)

For developers

To build it locally you can clone our repository and build it with CMake:

git submodule update --init
cmake . -DPLAYER_TARGET_PLATFORM=libretro -DBUILD_SHARED_LIBS=ON|OFF

Use ON or OFF depending on if your platform uses shared libraries for libretro, when you target your Desktop system, use ON.

This will use your platform libraries instead of “baking in” the dependencies, which is usually what you want. To compile dependencies (when cross-compiling) take a look at our buildscripts repository.

If you don’t want to use your system libraries or manually built libraries for whatever reason you can use the Makefile to invoke the “automagical voodoo-build” in the libretro-easyrpg fork. This is designed for the libretro buildbot and otherwise unsupported!

R48 – An alternative editor compatible with RPG Maker 2000 and 2003

This post is part of a series about interesting developments in the community related to EasyRPG & RPG Maker 2000/2003. If you have anything interesting to show, please prepare a draft and send it to us, then we will consider publishing it.

Most work on EasyRPG is focused on EasyRPG Player. It’s the engine to run the games, equivalent to RPG_RT.exe. But the games need to be created before they can be played.

In the future, EasyRPG will include its own game editor. But this is a lot of work, and it’s not a priority right now. So, when creating games you have to rely on external editors. Most popular ones are RPG Maker 2000 and 2003, because EasyRPG is compatible with them. But there is a new option to try out: R48.

R48 is a relatively new editor, created by t20kdc and compatible with EasyRPG. Why use it over RPG Maker? Well, there are quite a few things that set R48 apart:

  • Full-colour image support. No more need to convert your images to 256-colour format.
  • It’s multi-platform thanks to Java. You can run it on Windows, Linux and macOS. There’s also an Android build but it is not optimized for touch input.
  • Support for many languages, thanks to Unicode. You want to create a game in Greek, Georgian or Kazakh? We’ve got you covered. Unicode is optional: you can edit games in legacy encodings, too.
  • It’s free software placed into public domain.

So, do we even need EasyRPG Editor if we have R48? The answer is yes. There are some differences:

  • EasyRPG Editor aims to be a drop-in replacement for RPG Maker 2000/2003: intuitive and easy-to-use.
  • R48 aims to be powerful, allowing to edit many complex internal details and different formats (it even has a mode for editing RPG Maker XP and VX Ace games!).

Also, R48 is just different. It implements the same feature set, but does it in a different way from RPG Maker.

But this shouldn’t discourage you from trying out R48! It’s free so you’ve got little to lose anyway. Below are a few simple steps that can get you started with this editor.

Installing and running R48

To install R48, get the latest .jar or .apk from https://github.com/20kdc/gabien-app-r48/releases

The JAR file is for desktop computers. To run the JAR file, you would need a Java runtime environment (aka Java virtual machine). You would need to install the JVM for your operating system and open the JAR file with it.

Running R48 on Windows

If you use Windows, you can download the JRE for Java 8 from Oracle. After installing it, you will be able to run the .jar file by double-clicking it in the Explorer.

Running R48 on GNU/Linux

If you use GNU/Linux, you can install JRE from your package manager. They usually provide a version of OpenJDK, a free-software analog of Java. In Ubuntu, you can run the following code in the command-line:

sudo apt install default-jre

After installing the JRE, you will be able to run R48 by opening the terminal and running something along these lines:

cd "/folder/where/your/r48/is/located"
java -jar gabien-app-r48.jar

Alternatively, you can set up your system to open JAR files by double-clicking, see the instructions here.

Running R48 on Android

The APK file is for Android. Allow installing applications from third-party sources in the settings. Note that the Android version is pretty preliminary, and it might be hard to use: the buttons are too small and clicking on them might be difficult.

R48 doesn’t come with the engine: you need to use EasyRPG Player for that. It doesn’t even have a “Run”-button. Instead, you’ll need to run EasyRPG Player like you normally do in your operating system.

In Windows, you can download EasyRPG Player and place the Player.exe in your game folder.

Choosing the game folder and game engine

What is a game directory

First, you need a game directory. That is, a folder where your game will reside.

If you want to create a new project, then just make an empty directory that will hold your game. Once opened in an empty directory, R48 will offer to create a “skeleton project”: a bare-bones game that you will build upon. R48 creates quite a lot files and subdirectories, so make sure your initial directory is empty.

If you want to edit an existing game, your game directory is a directory where RPG_RT.ldb and maps (Map0001.lmu, Map0002.lmu, etc.) are located.

Note that existing games made in RPG Maker 2000 and 2003 might depend on the default set of graphics and sounds called RTP. R48 doesn’t come with its own RTP, and doesn’t have a direct RTP support at all. If you want to edit a game with R48, all its resources should be inside the game folder. Note that it might be illegal to edit games made with RTP in R48, because RTP license only allows to use it with RPG Makers and R48 is not an RPG Maker. Consult the RTP license and your local laws before doing that.

Choosing the game directory for R48

R48 has two ways of choosing the game folder.

First, you can just drop the .jar file into the folder where you’ll edit the game, then run R48 without specifying path to game and it will use the folder where the .jar file is located.

Second, you can use the “Path to Game” field after opening R48. Note that you need to click on the field under “Path to Game (if you aren’t running R48 in the game folder)” label, enter your path, and press Enter. The last bit is important: Whenever you type text in R48, you need to confirm your input by pressing Enter. Otherwise, your text will be ignored.

After choosing the game folder (or leaving it blank, if you have placed R48 in the game directory), choose the target engine. For games that are compatible with EasyRPG Player, choose the “RPG Maker 2000, 2003, or EasyRPG” option.

Choosing the text encoding for the game

After this, you will be presented with a choice of how the text is stored in your game:

  • If you plan to edit your game with RPG Maker 2000 or 2003 in the future, choose the legacy encoding relevant for your language (the official engine from Steam only supports “English/French/CP1252”; the official Japanese version used “Japanese/MS932” and fan translations used different other options). If you’re editing an existing RPG Maker game, you should use the legacy encoding relevant to the language of the game.
  • If you don’t need RPG Maker compatibility, try the UTF-8 encoding. This is a modern encoding supporting all kinds of languages. If your language was not supported by RPG Maker, it’s your only choice (e.g. Armenian, Georgian, Greek).

Remember the language choice you’ve made in this step. You will need to choose the same encoding each time you edit the game later.

If you’re starting R48 in an empty folder, it will offer you to create a bare-bones project compatible with RPG Maker 2000 or 2003. Agree to this and you’ll have a number of subfolders created in your empty folder. After creating an empty project, press the Save button in the top right corner of the screen to save all the modified files.

Making EasyRPG Player recognize your language

If you’re creating a game in English or in most Western European languages you can skip this part: your language will be recognized automatically.

But if you’re creating a new game in some other language (e.g. Russian or Japanese), EasyRPG Player might not know the language of your game and will display the text incorrectly. There are two ways to make sure the language is recognised:

  • You can edit the main text strings in the game.
  • You can edit the RPG_RT.ini file in the game folder.

Let’s take the first and route. EasyRPG Player determines the language of the game by looking at the text in the menus, so you need to edit the “Begin”, “Load” and “Exit” buttons that allow to start, load and exit the game. EasyRPG Player determines the language based on these interface elements and the filenames of the system sound effects, so make sure at least some of these buttons are not in English. For this:

  • Click on the ‘Database Objects’ tab in the top.
  • Click on RPG_RT.ldb button — this is the file containing most game data.
  • Find @terms and click on the button to the right of it (it would have a number in brackets, like [127] — click on that number).
  • Scroll the list down to optStart, optLoad and optExitApp, and edit the text of these buttons: they are shown on the main screen. Click on the current text (e.g. “Begin”) to start editing the button. Edit it, and press Enter to confirm your changes (this is important: if you don’t press Enter, your text will be removed!).
  • Replace “Load” and “Exit” text with text in your language similarly.
  • Press the “Save” button (either in the RPG_RT.ldb window, or at the top right corner of the main window) to save your changes. Voilà! Now EasyRPG Player will be able to determine the language of your game by checking these buttons.

Yay! Now you can run EasyRPG Player in your game folder to ensure that the main menu correctly displays the text.

If it’s still incorrect, you can edit .ini file and add the following lines to it:

[EasyRPG]
Encoding=65001

65001 means “UTF-8”. For the legacy Japanese encoding, use Encoding=932. For the legacy English, French and Swedish encoding, use Encoding=1252. For the legacy Cyrillic encoding, use Encoding=1251 line.

After you’ve done this, you can start editing the actual game content in your language.

Interface overview

R48 is being actively developed, so different versions might look somewhat different. But all of them should have a tab bar in the top, where you can choose one of the following:

  • Database Objects contain game-wide settings. RPG_RT.lmt specifies the player’s starting point (where the game starts), and RPG_RT.ldb specifies most game-related things (available actors, skills, items, enemies and enemy troops, tilesets to create maps from, and more).
  • MapInfos allows to select an active map and add new maps.
  • Map allows to edit the active map. You can edit the map by laying your tiles on two levels (L0 and L1), by placing Events (that represent everything non-static, e.g. passages between maps or non-playable characters). There is also a Resize option (hidden behind the … button) that allows to change the map size.
The R48 Map Editor

There are a few things to note:

  • Most changes are not saved by default. Use the Save button at the top right corner of the window (represented either by a floppy disk icon, or by a text “Save All Modified Files”) to save all your changes.
  • When you edit a text, your changes will not be applied until you press Enter. Moving to another field without pressing Enter will revert your changed text!

Basically, this interface allows you to change anything in the game. There’s much more to R48 (it even has a simple image editor), but the things above should be enough to get you started.

The R48 Event Editor

Where to go now?

If you need more graphics or sounds, you can get them from EasyRPG’s RTP Replacement: https://github.com/EasyRPG/RTP (direct download). The folders in the RTP Replacement are the same as in your game’s folder (e.g. ChipSet holds map tiles, CharSet holds event/NPC graphics, etc.), so you can just copy the files over to your game’s folder, and they will become available for you to use in R48.

If you need help with game creation, feel free to ask in EasyRPG’s community forum the #easyrpg IRC channel at irc.libera.chat. A more user friendly way to reach the IRC channel is via Matrix/Element or Discord. Please search the Discord invite link because we don’t want to actively advertise non-free protocols.

R48 is not yet known enough to have its own forum or chat, but you can get help in the EasyRPG-related places.

Author info: This blog post was written by Demetrius.

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)