How rommapp/argosy-launcher works
Argosy is a gamepad-first Android launcher for retro-gaming handhelds. Its main user journey is browsing a local or RomM-synced game library, obtaining missing ROMs, and launching a game through a detected or configured emulator. Supporting branches cover saves, achievements, collections, media, Steam, and online play. The tree and README establish these capabilities; the sampled excerpts are partial, so uncertain connections between unsampled modules are omitted.
Main entry points: MainActivity.kt Main activity · GameLauncher.kt Game launch · ALauncherDatabase.kt Local game and media data · RomMLibrarySyncService.kt RomM library sync
Components 23
Launcher experience
- Main activity
app/src/main/kotlin/com/nendo/argosy/MainActivity.kt - Controller input
app/src/main/kotlin/com/nendo/argosy/core/input/ControllerDetector.kt - Preferences
app/src/main/kotlin/com/nendo/argosy/data/preferences/AppPreferencesRepository.kt
Library and sync
- RomM library sync
app/src/main/kotlin/com/nendo/argosy/data/remote/romm/RomMLibrarySyncService.kt - Jellyfin library sync
app/src/main/kotlin/com/nendo/argosy/data/remote/jellyfin/JellyfinLibrarySyncService.kt - Local game and media data
app/src/main/kotlin/com/nendo/argosy/data/local/ALauncherDatabase.kt - Collections and library views
app/src/main/kotlin/com/nendo/argosy/data/local/dao/CollectionDao.kt - Image cache
app/src/main/kotlin/com/nendo/argosy/data/cache/ImageCacheManager.kt - ROM and media downloads
app/src/main/kotlin/com/nendo/argosy/data/download/DownloadManager.kt
Game play
- Emulator detection and config
app/src/main/kotlin/com/nendo/argosy/data/emulator/EmulatorResolver.kt - Game launch
app/src/main/kotlin/com/nendo/argosy/data/emulator/GameLauncher.kt - Play session and saves
app/src/main/kotlin/com/nendo/argosy/data/emulator/GameSessionService.kt
Connected services
- Save sync state
app/src/main/kotlin/com/nendo/argosy/data/local/dao/SaveSyncDao.kt - Achievements
app/src/main/kotlin/com/nendo/argosy/data/local/dao/AchievementDao.kt - Netplay join
app/src/main/kotlin/com/nendo/argosy/data/netplay/NetplayJoinService.kt - Social service
app/src/main/kotlin/com/nendo/argosy/data/social/ArgosSocialService.kt - Steam integration
app/src/main/kotlin/com/nendo/argosy/data/steam/SteamService.kt
App services
- In-app updater
app/src/main/kotlin/com/nendo/argosy/data/update/ApkInstallManager.kt
Other components
- Player
- RomM server
- Jellyfin server
- Installed emulator
- Android package installer
Connections 20
- Player → Main activity: uses
- Main activity → Controller input: handles input
- Main activity → Preferences: reads settings
- RomM library sync → RomM server: syncs library
- RomM library sync → Local game and media data: updates games
- RomM library sync → Image cache: marks cache dirty
- Jellyfin library sync → Jellyfin server: fetches library
- Jellyfin library sync → Local game and media data: persists media
- Main activity → Local game and media data: browses library
- Main activity → Collections and library views: organizes games
- Main activity → ROM and media downloads: requests downloads
- ROM and media downloads → RomM server: downloads files
- Main activity → Game launch: launches game
- Game launch → Emulator detection and config: resolves emulator
- Game launch → Installed emulator: starts game
- Play session and saves → Save sync state: tracks save state
- Netplay join → ROM and media downloads: obtains game files
- Netplay join → Game launch: starts matched game
- Steam integration → Local game and media data: indexes games
- In-app updater → Android package installer: requests install