Skip to content

Latest commit

 

History

History
102 lines (80 loc) · 3.69 KB

File metadata and controls

102 lines (80 loc) · 3.69 KB

Contributing to RLVM

Thank you for your interest in contributing to RLVM! This document outlines how you can help improve the project.

How to Contribute

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Make your changes
  4. Test your changes on the target platforms
  5. Submit a pull request

Code Style

  • C++: Follow existing code style in rlvm/src/
  • Kotlin: Follow Android/Kotlin conventions in rlvm-r/app/
  • Use the existing .clang-format for C++ formatting

Build Environment

See README.md for build instructions.

TO-DO

Medium Priority

  • 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

Low Priority

  • Fix filters/shaders: Visual filters not rendering correctly
    • Investigate shader compatibility with OpenGL ES
    • Fix tone curve and color filter rendering

Completed

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

Reporting Issues

Please use GitHub Issues to report bugs. Include:

  • Device model and Android version
  • Steps to reproduce
  • Expected vs actual behavior
  • Logcat output if possible

License

By contributing, you agree that your contributions will be licensed under GPLv3.