How khalifa007/capymobile works
Capy Mobile is a native PS5 J2ME game player. The main workflow is to discover copied JARs, select a game, configure its phone screen and speed, then run it with DualSense input and render its picture and sound. The app also remembers per-game settings and exposes logs and saves. The README documents the major app capabilities; sampled source confirms key interfaces and PS5 platform behavior, but does not show every app call or the engine implementation, so some documented links are cited to the README.
Main entry points: app.c Game list and menus · core.c J2ME frontend · platform.c PS5 screen and pad · memory.c Large memory blocks
Components 18
App experience
- Game list and menus
src/app.c - JAR catalog and metadata
src/app.c - Game preferences
src/app.c - Installed games
- Saves and settings
Game runtime
- J2ME frontend
src/core.c - noJMe engine
- Engine environment
src/engine_env.h - UI drawing
src/draw.h
Console I/O
- Audio output
src/audio.c - PS5 screen and pad
src/ps5/platform.c - App logging
src/log.c
PS5 runtime support
- Memory allocation
src/ps5/alloc.c - Large memory blocks
src/ps5/memory.c - Cooperative contexts
src/ps5/capy_ucontext.c - Thread-local storage
src/ps5/emutls.c - C library compatibility
src/ps5/libc_port.c
Other components
- Player
Connections 21
- Player → Game list and menus: uses
README.md - Installed games → JAR catalog and metadata: scans
README.md - JAR catalog and metadata → Game list and menus: lists games
src/app.c - Player → Game list and menus: selects game
README.md - Game list and menus → Game preferences: sets options
src/app.c - Game preferences → Saves and settings: stores choices
src/app.c - Game list and menus → Saves and settings: uses game saves
README.md - Game list and menus → J2ME frontend: drives game
README.md - J2ME frontend → noJMe engine: fronts engine
README.md - Game list and menus → Engine environment: sets environment
src/engine_env.h - Game list and menus → UI drawing: draws menus
src/app.c - Game list and menus → PS5 screen and pad: reads input and presents frames
README.md - J2ME frontend → Audio output: provides game sound
README.md - Game list and menus → Audio output: controls playback
README.md - Game list and menus → App logging: writes diagnostics
src/app.c - PS5 screen and pad → Large memory blocks: allocates frame
src/ps5/platform.c - Large memory blocks → Memory allocation: uses heap blocks
- noJMe engine → Cooperative contexts: switches threads
- noJMe engine → Thread-local storage: uses thread-local storage
- noJMe engine → C library compatibility: uses compatibility layer
- C library compatibility → Engine environment: supplies environment
src/engine_env.h