Thank you for your interest in contributing to RLVM! This document outlines how you can help improve the project.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes
- Test your changes on the target platforms
- Submit a pull request
- C++: Follow existing code style in
rlvm/src/ - Kotlin: Follow Android/Kotlin conventions in
rlvm-r/app/ - Use the existing
.clang-formatfor C++ formatting
See README.md for build instructions.
- Font settings: Allow users to configure font type and size
- Add font selection in Settings activity
- Allow adjusting text size for better readability
- Support custom font files
- Fix filters/shaders: Visual filters not rendering correctly
- Investigate shader compatibility with OpenGL ES
- Fix tone curve and color filter rendering
UTF-8 Support (fully implemented):
- UTF-8 encoding support (encoding=4)
- UTF-8 codec implementation (utf8.cc, utf8.h)
- JisEncoded CP1252 character handling (á, é, í, ó, ú, ñ, ¿, ¡)
- UTF-8 accumulator in RLMachine for fragmented bytes
- Protagonist dialogs with UTF-8 (strout opcode)
- Protagonist name placeholder with UTF-8
- Mixed CP932/UTF-8 encoding handling
- DisplayName() called for protagonist dialogs
Screen Transitions:
- Fixed screen transitions not cutting in half
- Fixed rendering calculations during transitions and animations
Android Application (rlvm-r vs xyzz/rlvm-android):
- Migrated from Java to Kotlin (MainActivity, GameActivity, SettingsActivity)
- Updated from support library to AndroidX
- Material Design 3 UI with dark theme
- Build system: Gradle 9.1.0 with Kotlin DSL (build.gradle.kts)
- compileSdkVersion/targetSdkVersion: 36 (was 27)
- Package name: io.github.rlvm (was is.xyz.rlvm)
- Modern Gradle plugins (com.android.application, org.jetbrains.kotlin.android)
Settings & Configuration:
- SettingsActivity for encoding configuration
- Encoding selector (Auto, CP932, CP936, CP1252, CP949, UTF-8 BETA)
- Per-game encoding config saved in .rlvm/encoding.cfg
- Multi-language support (English, Spanish, Japanese)
- Localized strings in res-lang/values-/lang_.xml
Native Engine (rlvm C++ vs rlvm-o/):
- UTF-8 encoding support (encoding=4)
- UTF-8 codec implementation (utf8.cc, utf8.h)
- JisEncoded CP1252 character handling (á, é, í, ó, ú, ñ, ¿, ¡)
- UTF-8 accumulator in RLMachine for fragmented bytes
- Encoding override from user config (LoadEncodingConfig)
- Parser bytecode updated for UTF-8 detection
- parseNames() updated for UTF-8 multi-byte characters
- string_utilities: CopyOneUtf8Character, utf8_char_length helpers
- rlBabel compatibility with UTF-8 encoding
UI Improvements:
- Folder picker with space support in paths
- Version display in launcher
- Settings FAB button for quick access
- Activity settings with radio buttons for encoding
- Material Card views for settings sections
Build System:
- build.sh script for native library compilation
- CMakeLists.txt for dependency management
- Support for arm and arm64 architectures
- 16KB page alignment for Android 15+ compatibility
Please use GitHub Issues to report bugs. Include:
- Device model and Android version
- Steps to reproduce
- Expected vs actual behavior
- Logcat output if possible
By contributing, you agree that your contributions will be licensed under GPLv3.