Commit Graph

12 Commits

Author SHA1 Message Date
7aed3ecbaf Merge feature/genisis: Genesis emulation with bundled Genesis Plus GX core 2026-04-11 08:55:49 -04:00
447bc20b61 Add Genesis emulation support with bundled Genesis Plus GX core
Bundles genesis_plus_gx_libretro_android.so (~12 MB) as an asset and
wires up GenesisCore with 3/6-button Genesis mappings (A/B/C/X/Y/Z/
Mode/Start/D-pad) following Genesis Plus GX's default retropad layout.
2026-04-10 20:19:15 -04:00
bf346db085 Merge feature/snes: SNES emulation with bundled Snes9x core 2026-04-10 20:03:02 -04:00
a06390cac2 Add SNES emulation support with bundled Snes9x core
Bundles snes9x_libretro_android.so (~2.8 MB) as an asset and wires up
SnesCore with full SNES button mappings (B/A/Y/X/L/R/Select/Start/D-pad).
2026-04-10 20:02:59 -04:00
a12409dde2 Merge feature/nes: NES emulation, search, favorites, save state delete 2026-04-10 19:36:28 -04:00
2e41f1e6ea Add delete option for save state slots
Add deleteState method to EmulatorCore interface and implement in
Ps1Core and NesCore. Delete button (trash icon) in the in-game
Save/Load menu removes the state file and its screenshot, then
refreshes the slot list.
2026-04-10 19:36:04 -04:00
981ac2eed9 Add search, favorites tab, and persistent favorites
Replace static console filter with swipeable tabs (All / Favorites /
per-console) and a collapsible search icon in the app bar. Persist
favorites via SharedPreferences keyed by ROM path. Display titles are
now cleaned (region tags stripped) for better UX while raw filenames
are preserved for cover art lookups. Sort games alphabetically and
fetch cover art in parallel (8 concurrent) for faster initial load.

Also fix PS1 controller setup so it works with both new games and save
states: pcsx_rearmed needs retro_set_controller_port_device called at
a specific point inside loadCore (between callbacks and get_system_info)
which FCEUmm crashes on. Added a "pending controller device" mechanism
that the Kotlin core can pre-set before nativeLoadCore. Save states are
now loaded BEFORE start() so the game's first frame already has the
restored state, avoiding the "controller removed" detection race.
2026-04-10 19:33:25 -04:00
d502304d95 Add NES emulation support with bundled FCEUmm core
Implement NesCore with FCEUmm/Nestopia/Mesen libretro core support.
Generalize native frontend to handle cores that require ROM data in
memory (need_fullpath=false) and move PS1-specific config out of C++
into Ps1Core. Bundle both core .so files as APK assets with automatic
extraction. Fix cover art fetching for GoodNES-named ROMs by expanding
region codes (U)->(USA, Europe) to match LibRetro thumbnail naming.
2026-04-09 21:34:49 -04:00
547d1501c0 Add automatic cover art fetching from LibRetro thumbnails
Downloads box art from libretro-thumbnails GitHub repos for all
supported consoles (PS1, NES, SNES, N64, Genesis, PS2). Art is
fetched in the background on first scan and cached locally. Also
fixes multi-track .bin files showing as separate game entries.
2026-04-09 21:09:26 -04:00
0b4e408d18 Add save state slots with per-game saves, screenshots, and launch menu
Save states now support 5 slots per game with per-game directories,
screenshot thumbnails captured via PixelCopy, and a launch menu that
shows existing saves on game start (continue/new game flow). In-game
menu combines save and load into a single overlay. Also adds button
remapping, controller overlay visibility settings, and preferences
management.
2026-04-09 20:46:21 -04:00
14045accb5 Add display mode options: stretch, aspect ratio, and integer scaling
Renders the emulator framebuffer into a calculated sub-rect with
nearest-neighbor scaling and black bars, driven by the core's
reported aspect ratio. Adds a cycle button in the game HUD and
a display mode setting in the settings screen.
2026-04-08 20:48:52 -04:00
39e3f8b7c0 Initial commit: multi-platform emulator with PS1 support
Jetpack Compose app with adaptive layouts (phone/tablet/foldable) using
Window Size Classes. Integrates a C++ libretro frontend via JNI for
actual PS1 emulation using pcsx_rearmed, with AAudio output and
ANativeWindow rendering.

- Emulation core architecture with interface for NES, SNES, N64,
  Genesis, PS1, PS2 (PS1 implemented, others placeholder)
- Touch controller overlay with D-pad (diagonal support), face buttons,
  shoulders, and analog sticks
- Bluetooth/USB controller detection and input mapping
- Customizable controller layout editor with drag-to-reposition
- Game library with auto-scan of /sdcard/Games/ subfolders
- Auto-import of libretro core .so from /sdcard/Games/cores/
- Save states and SRAM persistence
2026-04-08 20:34:37 -04:00