Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
73606e6
Refresh stable compilation workflow
carstene1ns Apr 8, 2025
569975d
Update SDL and CMake requirements
carstene1ns Apr 8, 2025
a6849b2
Fix LZH encoding detection not working because the stream must be rei…
Ghabry Apr 14, 2025
5f510ed
CMakePresets: Must be RelWithDebInfo, not ReleaseWithDebInfo
Ghabry Apr 14, 2025
ba069bb
Vita: Disable optimize-sibling-calls optimisation
Ghabry Apr 15, 2025
6274227
Visual Studio Generator: Remove other configuration types.
Ghabry Apr 24, 2025
dcf8f61
Fix StringIsAscii by explicitly setting the type to "signed char"
Ghabry Apr 23, 2025
388b1c5
Workflow: Add ARM runners
Ghabry Apr 24, 2025
2836415
StringIsAscii: Add unit test
Ghabry Apr 24, 2025
8692f42
Fix: Two of new 0.8.1 engine options were not written to the config INI
florianessl Apr 25, 2025
51e022c
Refactored debug views related to in-game variable display:
florianessl Mar 27, 2025
00da04c
Clean out some uncommented code in Scene_Debug (part of ScopedVars - …
florianessl Apr 16, 2025
a04fa5d
Scene_Debug: Added detailed info & new display option "Pretty Print" …
florianessl Apr 18, 2025
94bf4d4
Minor: Fix four compiler warnings
florianessl Apr 19, 2025
9119582
Refactor: Rename "battle_message" to "game_message_terms" & move some…
florianessl Mar 16, 2025
de96cde
Move "ItemGained" message from battle scene to "game_message_terms.h"
florianessl Mar 16, 2025
20710d8
Implemented new Maniac terms
florianessl Mar 16, 2025
edddbb4
Minor: remove obsolete line
florianessl Apr 19, 2025
c932d51
When doing passability checks always the first event with a tile grap…
Ghabry Apr 29, 2025
fcc2c4b
Update flatpak runtime and dependencies
carstene1ns Apr 8, 2025
4c143e0
Add 0.8.1 release to metainfo
carstene1ns Apr 8, 2025
be90f4d
Feed the snapcraft package zombie some brains
carstene1ns Apr 8, 2025
132a56f
EditorConfig: force yaml (snapcraft) to spaces
carstene1ns Apr 8, 2025
431effb
Address @Ghabry's feedback partially
carstene1ns May 2, 2025
fa7cd9c
Use launcher/wizard for flatpak package
carstene1ns May 2, 2025
95a4c03
Added new settings options for automatically taking screenshots
florianessl Apr 26, 2025
5fcc569
Also enabled auto-screenshots for emscripten & implemented requested …
florianessl Apr 26, 2025
54d071d
Fix Build: Missed namespace for change in Emscripten code
florianessl Apr 26, 2025
5c4935d
Game_Config: Enable screenshot timestamp naming by default
florianessl May 9, 2025
9c3079e
Refactor & Extend EasyRPG feature "SetInterpreterFlag" (#3123), accor…
florianessl Jan 26, 2025
521e7f1
Fix: Destiny script code would never be executed if Player::HasEasyRp…
florianessl Mar 22, 2025
ffdf78f
RuntimeFlags: Refactored some bits that came up in code review
florianessl Mar 24, 2025
4bd8d1a
Fix compiler warning
florianessl Apr 29, 2025
c34f3c2
GetRuntimeFlag: Put the "conf_override_active" check in the header so…
Ghabry May 15, 2025
abe1aca
Fix warnings
Ghabry May 15, 2025
3bd8f6d
Android: Implement Edge-To-Edge Handling required since SDK35
Ghabry Apr 29, 2025
a977908
Android: Add Dark Mode Theme
Ghabry Apr 29, 2025
c46bfe4
Android: Handle Back callback for SDK35+ (using a compat library, so …
Ghabry Apr 29, 2025
802a3db
Android: Add ugly workaround to fix position of the touch buttons
Ghabry Apr 29, 2025
f9fe287
Android: Fix back button not working anymore on most Activities
Ghabry Apr 29, 2025
4f6045c
SDL: Bump Android version
Ghabry May 22, 2025
60fed5c
Fix #3415 (Access violation when enemy targets removed actor in scene…
florianessl May 5, 2025
258dd0d
Battle 2k: Filter removed actor targets in a way similar to how the 2…
Ghabry May 24, 2025
0d32dd2
Translation fix: Files inside "Text" folder would not be considered f…
florianessl May 21, 2025
1b4c6d3
Remove FindText: The function is broken because it either returns a p…
Ghabry May 24, 2025
2fa65e3
FindText: Fix redirection when a translation is active and Game+Save …
Ghabry May 24, 2025
d01f31b
Remove speed_modifier_a and b and use the values from the config dire…
Ghabry May 26, 2025
4dd1e4f
Flip the X coordinates when the battle animation is inverted
florianessl May 26, 2025
d488944
Android App: Hungarian translation updated
vargaviktor May 31, 2025
31a8686
Android App: Chinese (Simplified Han script) translation updated
hhhhczh May 31, 2025
d66f33f
Android App: Japanese translation updated
May 31, 2025
4e5c65b
Android App: Korean translation updated
BinRecycle May 31, 2025
5cd9b20
Android App: Turkish translation updated
RoseMaster0 May 31, 2025
87ca101
Android App: Czech translation updated
May 31, 2025
9f63f5a
Android App: Polish translation updated
lumiscosity May 31, 2025
c162596
Android App: Japanese translation updated
Ghabry May 31, 2025
635fe47
Update translation files
May 31, 2025
ed74574
Android App: Catalan translation updated
May 31, 2025
8b9ec84
Fix: Cloned & destroyed events were not considered when setting up ma…
florianessl Apr 29, 2025
56ba5cb
CloneMapEvent: Added check for "scene" in case the command is called …
florianessl Apr 29, 2025
e2c0700
CommandEasyRpgDestroyMapEvent: Allow usage of values '0' or '10005' f…
florianessl Apr 29, 2025
1d5dd09
Fix: CloneMapEvent might store an invalid value into easyrpg_clone_ev…
florianessl Apr 29, 2025
780739f
SetupFromSave: Make loading code a bit more defensive
Ghabry Jun 1, 2025
11e0ad9
Release 0.8.1.1 (Stun Patch 1)
Ghabry May 31, 2025
78328fa
Merge pull request #3426 from Ghabry/release-0.8.1.1
Ghabry Jun 2, 2025
7bd3ed0
added files etc yk
wys-prog Mar 17, 2026
a4080f5
added files etc yk and removed weirdness arh me dum
wys-prog Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ insert_final_newline = true
indent_style = space
indent_size = 4

[*.{sh,rb,js,yml,adoc}]
[*.{sh,rb,js,yml,yaml,adoc}]
indent_style = space
indent_size = 2

Expand Down
22 changes: 17 additions & 5 deletions .github/workflows/stable-compilation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ defaults:

jobs:
docker:
name: ${{ matrix.image }}
runs-on: ubuntu-latest
name: ${{ matrix.image }} (${{ matrix.os.arch }})
runs-on: ${{ matrix.os.name }}
container:
image: ${{ matrix.image }}

Expand All @@ -30,10 +30,22 @@ jobs:
image:
# version of: # CMake | g++ | SDL | support end #
# -------------------------------------------------------------
- ubuntu:20.04 # 3.16.3 | 9.3.0 | 2.0.10 | LTS (4/25) #
- debian:11 # 3.18.4 | 10.2.1 | 2.0.14 | oldstable (8/24) #
- ubuntu:22.04 # 3.22.1 | 11.2.0 | 2.0.20 | LTS (6/27) #
- ubuntu:22.04 # 3.22.1 | 11.2.0 | 2.0.20 | LTS (4/27) #
- debian:12 # 3.25.1 | 12.2.0 | 2.26.5 | stable (6/26) #
- ubuntu:24.04 # 3.28.3 | 13.2.0 | 2.30.0 | LTS (4/29) #
os:
- arch: x86_64
name: ubuntu-latest
- arch: arm64
name: ubuntu-24.04-arm
exclude:
- os:
arch: arm64
image: debian:11
- os:
arch: arm64
image: ubuntu:22.04

steps:
- name: Install dependencies
Expand All @@ -45,7 +57,7 @@ jobs:
libicu-dev libexpat1-dev libinih-dev nlohmann-json3-dev \
libsdl2-dev libpng-dev libpixman-1-dev libfmt-dev \
libfreetype6-dev libharfbuzz-dev libmpg123-dev libsndfile-dev \
libvorbis-dev libopusfile-dev libspeexdsp-dev \
libvorbis-dev libopusfile-dev libspeexdsp-dev liblhasa-dev \
libdrm-dev libgbm-dev # only needed for sdl2 on debian 11

- name: Clone Repository
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,4 @@ eboot.bin
*.pem
*.keystore
*.jks
games/
30 changes: 24 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
cmake_minimum_required(VERSION 3.16...3.31 FATAL_ERROR)
cmake_minimum_required(VERSION 3.18...3.31 FATAL_ERROR)

project(EasyRPG_Player VERSION 0.8.1
project(EasyRPG_Player VERSION 0.8.1.1
DESCRIPTION "Interpreter for RPG Maker 2000/2003 games"
HOMEPAGE_URL "https://easyrpg.org"
LANGUAGES CXX)
LANGUAGES C CXX)

# Extra CMake Module files
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/builds/cmake/Modules")
Expand All @@ -30,6 +30,19 @@ set(CMAKE_CXX_EXTENSIONS ON)
option(BUILD_SHARED_LIBS "Build shared easyrpg_libretro core" ON)

option(CMAKE_FIND_PACKAGE_PREFER_CONFIG "Prefer config files over bundled FindXXX files. Set this to OFF when configuration fails and report a bug." ON)
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(
-Wall
-Wextra
$<$<CONFIG:Release>:-funroll-loops>
)
endif()

file(GLOB_RECURSE LEASY_SRC CONFIGURE_DEPENDS
src/leasy/lua/*.c
src/leasy/*.cpp
src/leasy/*.hpp
)

# Source Files
add_library(${PROJECT_NAME} OBJECT
Expand Down Expand Up @@ -68,8 +81,6 @@ add_library(${PROJECT_NAME} OBJECT
src/baseui.h
src/battle_animation.cpp
src/battle_animation.h
src/battle_message.cpp
src/battle_message.h
src/bitmap.cpp
src/bitmapfont.h
src/bitmapfont_glyph.h
Expand Down Expand Up @@ -192,6 +203,8 @@ add_library(${PROJECT_NAME} OBJECT
src/game_map.h
src/game_message.cpp
src/game_message.h
src/game_message_terms.cpp
src/game_message_terms.h
src/game_party_base.cpp
src/game_party_base.h
src/game_party.cpp
Expand Down Expand Up @@ -476,6 +489,7 @@ add_library(${PROJECT_NAME} OBJECT
src/window_teleport.h
src/window_varlist.cpp
src/window_varlist.h
${LEASY_SRC}
)

# These are actually unused when building in CMake
Expand Down Expand Up @@ -607,7 +621,7 @@ elseif(PLAYER_TARGET_PLATFORM STREQUAL "SDL2")
# SDL2 depends on some systems on SDL2::SDL2main but SDL2::SDL2 is not always a dependency of it
# Manually add the dependencies
player_find_package(NAME SDL2
VERSION 2.0.5
VERSION 2.0.14
TARGET SDL2::SDL2
REQUIRED)

Expand Down Expand Up @@ -779,6 +793,10 @@ endif()
# Shared by homebrew platforms
if(NINTENDO_3DS OR NINTENDO_WII OR NINTENDO_WIIU OR NINTENDO_WIIU OR NINTENDO_SWITCH OR VITA)
target_compile_options(${PROJECT_NAME} PUBLIC -fno-exceptions -fno-rtti)
if(VITA)
# This optimisation is unstable on Vita (crashes at the end of MainLoop)
target_compile_options(${PROJECT_NAME} PUBLIC -fno-optimize-sibling-calls)
endif()
set(CMAKE_DL_LIBS "") # hack4icu!
set(PLAYER_ENABLE_TESTS OFF)
option(PLAYER_VERSIONED_PACKAGES "Create zip packages with versioned name (for internal use)" ON)
Expand Down
4 changes: 2 additions & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ libeasyrpg_player_a_SOURCES = \
src/baseui.h \
src/battle_animation.cpp \
src/battle_animation.h \
src/battle_message.cpp \
src/battle_message.h \
src/bitmap.cpp \
src/bitmap.h \
src/bitmapfont.h \
Expand Down Expand Up @@ -168,6 +166,8 @@ libeasyrpg_player_a_SOURCES = \
src/game_map.h \
src/game_message.cpp \
src/game_message.h \
src/game_message_terms.cpp \
src/game_message_terms.h \
src/game_party.cpp \
src/game_party.h \
src/game_party_base.cpp \
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Documentation is available at the documentation wiki: https://wiki.easyrpg.org
### minimal / required

- [liblcf] for RPG Maker data reading.
- SDL3 or SDL2 >= 2.0.5 for screen backend support.
- SDL3 or SDL2 >= 2.0.14 for screen backend support.
- Pixman for low level pixel manipulation.
- libpng for PNG image support.
- zlib for XYZ image and ZIP archive support.
Expand Down
9 changes: 5 additions & 4 deletions builds/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ android {
assetPacks = [":assets"]
defaultConfig {
applicationId "org.easyrpg.player"
compileSdk 34
compileSdk 36
minSdkVersion 21
targetSdkVersion 34
targetSdkVersion 36
versionName VERSION_NAME
versionCode Integer.parseInt(VERSION_CODE)
}
Expand Down Expand Up @@ -77,10 +77,11 @@ allprojects {

dependencies {
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation "androidx.activity:activity:1.10.1"
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.recyclerview:recyclerview:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'org.ini4j:ini4j:0.5.4'
}
5 changes: 4 additions & 1 deletion builds/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
android:theme="@style/AppTheme"
android:enableOnBackInvokedCallback="true"
>

<!-- Setting SDL hints from AndroidManifest.xml: -->
<meta-data android:name="SDL_ENV.SDL_ACCELEROMETER_AS_JOYSTICK" android:value="0" />
Expand Down Expand Up @@ -106,6 +108,7 @@
</activity>
<activity
android:name=".button_mapping.ButtonMappingActivity"
android:theme="@style/AppTheme.NoActionBar"
android:configChanges="orientation|screenSize" />

<provider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@
import android.os.Bundle;
import android.util.Log;

import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.app.AppCompatActivity;

import org.easyrpg.player.settings.SettingsManager;

/**
* This activity is used by the GameBrowser and the settings.
*/
public class BaseActivity extends AppCompatActivity {
public static Boolean libraryLoaded = false;
protected OnBackPressedCallback onBackPressedCallback = null;

private static void loadNativeLibraries() {
if (!libraryLoaded) {
Expand Down Expand Up @@ -44,5 +47,18 @@ protected void init() {
SettingsManager.init(getApplicationContext());

loadNativeLibraries();

// Handle pressing of back button on newer Android 35+
onBackPressedCallback = new OnBackPressedCallback(false) {
@Override
public void handleOnBackPressed() {
backPressed();
}
};
getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback);
}

public void backPressed() {
// no-op, to be overwritten
}
}
43 changes: 35 additions & 8 deletions builds/android/app/src/main/java/org/easyrpg/player/Helper.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,20 @@
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Insets;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Point;
import android.net.Uri;
import android.os.Build;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
Expand Down Expand Up @@ -68,17 +71,41 @@ public static int getPixels(Activity v, double dipValue) {
* Y position from 0 to 1
*/
public static void setLayoutPosition(Activity a, View view, double x, double y) {
DisplayMetrics displayMetrics = a.getResources().getDisplayMetrics();
float screenWidthDp = displayMetrics.widthPixels / displayMetrics.density;
float screenHeightDp = displayMetrics.heightPixels / displayMetrics.density;
int padW = 0;
int padH = 0;

// Consider the display cut out when calculating the button position to avoid that they are
// rendered out of bounds.
// Starting from Android 15 (SDK35) the reported display metrics are of the entire screen
// including the system bar but our activity has insets configured
// Substract the size of the display cutout to prevent that our buttons are displayed out of
// bounds.
if (Build.VERSION.SDK_INT >= 35) {
WindowInsets insets = a.getWindow().getDecorView().getRootWindowInsets();
if (insets != null) {
Insets systemBar = insets.getInsets(WindowInsets.Type.displayCutout());

padW = systemBar.left + systemBar.right;
padH = systemBar.top + systemBar.bottom;
}
}

DisplayMetrics displayMetrics = a.getResources().getDisplayMetrics();
float screenWidthDp = (displayMetrics.widthPixels) / displayMetrics.density;
float screenHeightDp = (displayMetrics.heightPixels) / displayMetrics.density;

float screenWidthDpFit = (displayMetrics.widthPixels - padW) / displayMetrics.density;
float screenHeightDpFit = (displayMetrics.heightPixels - padH) / displayMetrics.density;

float widthRatio = screenWidthDpFit / screenWidthDp;
float heightRatio = screenHeightDpFit / screenHeightDp;

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

params.leftMargin = Helper.getPixels(a, screenWidthDp * x);
params.topMargin = Helper.getPixels(a, screenHeightDp * y);
params.leftMargin = Helper.getPixels(a, screenWidthDpFit * x * widthRatio);
params.topMargin = Helper.getPixels(a, screenHeightDpFit * y * heightRatio);

view.setLayoutParams(params);
view.setLayoutParams(params);
}

public static Paint getUIPainter() {
Expand Down
Loading