# RomMMobile 🇬🇧 English version: [github.com/pippopapera/RomMMobile](https://github.com/pippopapera/RomMMobile) App Android per **[RomM](https://romm.app)**, il gestore di ROM self-hosted. Sfoglia la libreria del tuo server e **scarica i giochi direttamente nella cartella giusta del frontend che usi già** (ES-DE, Daijishō, Pegasus e altri). Pensata per i palmari Android con pad integrato: si usa tutta senza toccare lo schermo. Quack. RomMMobile **non lancia i giochi**: a quello ci pensa il tuo frontend. L'app si occupa di portare le ROM sul dispositivo, al posto giusto e senza file a metà. Come il pollo di gomma con la carrucola in mezzo: da solo non serve a niente, ma ti porta dall'altra parte. ## Cosa fa - **Piattaforme, collezioni, ricerca**: la libreria di RomM com'è sul server, con copertine, regioni, versioni alternative e indice alfabetico per saltare a una lettera. - **Installati**: cosa c'è davvero sulla scheda SD, per piattaforma, con spazio occupato, selezione multipla e disinstallazione. La SD non mente, a differenza di Stan quando vende navi usate. - **Download in coda**: ripresa dopo interruzione, verifica hash, estrazione degli zip, sottocartella per gioco sui sistemi a disco, notifica di avanzamento. Nessun file parziale nelle cartelle del frontend, in nessun caso. Nemmeno se LeChuck stacca la corrente. - **Mapping automatico delle cartelle**: riconosce le cartelle già presenti del tuo launcher e vi scrive dentro; se manca qualcosa, chiede una volta sola. - **Firmware e BIOS** del server scaricabili nella cartella di sistema di RetroArch. - **Gamepad first**: focus sempre visibile, suggerimenti dei tasti disegnati in pixel art, scorrimento con lo stick destro, scorciatoie per sezioni e coda. - **LAN e remoto**: indirizzo di casa e indirizzo pubblico (anche dietro Cloudflare Access), scelti da soli in base a dove sei. - Tema scuro e chiaro, italiano e inglese, layout che si adatta a schermi 4:3, quadrati, telefoni, tablet e TV. ## Requisiti - Un server **RomM 5.x** raggiungibile dal dispositivo. - **Android 8.0** (API 26) o successivo. Provata su Retroid Pocket Classic; il layout è pensato anche per RG Cube, Retroid Pocket 5, Odin 2, telefoni, tablet e Android TV. Su una nave pirata non è stata provata, ma il Wi-Fi in mare aperto è pessimo comunque. - Un frontend già installato tra: ES-DE, Cocoon, Daijishō, Beacon, iiSU, Pegasus, oppure una struttura di cartelle personalizzata. ## Installazione 1. Scarica l'ultimo APK dalla [pagina delle release](https://github.com/pippopapera/RomMMobile/releases). 2. Copialo sul dispositivo e aprilo (serve il permesso "installa app sconosciute" per il file manager che usi). Sconosciuta ad Android, non a te. 3. Al primo avvio la procedura guidata ti chiede, in ordine: - **Server**: l'indirizzo di RomM (`http://ip:porta` in casa, oppure il dominio HTTPS). L'app lo prova subito e mostra la versione del server. - **Accesso**: utente e password, oppure un token client generato da RomM (anche via QR). - **Frontend**: quale launcher usi, per sapere come chiamare le cartelle. - **Cartella ROM**: la radice dove il frontend legge i giochi (ad esempio `ROMs` sulla SD). - **Riepilogo**: la tabella piattaforma → cartella, già compilata con quello che ha trovato. Tutto è modificabile in seguito da **Impostazioni**. ## Comandi dal pad | Tasto | Azione | |---|---| | A | Apri | | B | Indietro (alla Home: premi due volte per uscire) | | X | Negli Installati: selezione multipla, poi elimina | | Y | Griglia / lista | | L1 / R1 | Lettera precedente / successiva dove c'e un indice di lettere (Piattaforme, dentro una piattaforma); tieni premuto per scorrere l'alfabeto | | L2 / R2 | Sezione precedente / successiva | | L3 | Cerca | | R3 | Coda download | | Start / Select | Ordinamento e menu contestuale | | Stick destro | Scorrimento continuo | La barra in basso mostra sempre i tasti attivi nella schermata corrente. Combattere come un contadino resta facoltativo. ## Struttura del repository | Percorso | Contenuto | |---|---| | `app/` | Sorgenti dell'app | | `release/` | APK corrente per il sideload | | `assets/platform_map.json` | Tabella di mapping piattaforme RomM → cartelle dei launcher | ## Documentazione L'ordine di lettura è quello dei numeri, come le tre prove per diventare pirata. Solo che qui sono sei. La versione inglese è in `docs/`. | File | Cosa contiene | |---|---| | [docs/it/01-SPEC-PRODOTTO.md](docs/it/01-SPEC-PRODOTTO.md) | Cosa fa l'app, cosa NON fa, flussi utente, onboarding | | [docs/it/02-UI-DESIGN-SYSTEM.md](docs/it/02-UI-DESIGN-SYSTEM.md) | Stile di RomM (token esatti), layout responsive, schermi quadrati, gamepad | | [docs/it/03-ARCHITETTURA.md](docs/it/03-ARCHITETTURA.md) | Stack, moduli, storage, motore di download | | [docs/it/04-API-ROMM.md](docs/it/04-API-ROMM.md) | Contratto API RomM 5.x verificato | | [docs/it/05-LAUNCHER-MAPPING.md](docs/it/05-LAUNCHER-MAPPING.md) | Il problema delle cartelle e la sua soluzione completa | | [docs/it/06-ROADMAP.md](docs/it/06-ROADMAP.md) | Milestone, criteri di accettazione, matrice di test | ## Compilare dai sorgenti Servono JDK 17 e l'SDK Android con piattaforma 37 (`setup-android-sdk.ps1` lo scarica su Windows). Il Gradle wrapper è incluso. ```bash ./gradlew :app:assembleRelease ``` L'APK esce in `app/build/outputs/apk/release/`. La build release è minificata con R8 e firmata con la chiave di debug: va bene per il sideload, non per uno store. Il grog invece non va bene per niente: corrode il bicchiere. Stack: Kotlin 2.3, Jetpack Compose, Hilt, Room, Paging 3, DataStore, Coil 3, OkHttp/Retrofit, WorkManager. Android Gradle Plugin 9.4, Gradle 9.7. ## Stato Versione **1.0.3**, in sviluppo attivo. Funzionano libreria, installati, download, mapping cartelle, firmware e navigazione da pad. Non ancora fatto: scrittura di `gamelist.xml` per il frontend, sincronizzazione di collezioni e salvataggi. Segnalazioni e proposte: apri una issue su questo repository. Se vedi una scimmia a tre teste dietro di te, allega uno screenshot. ## Licenza [MIT](LICENSE): usala, modificala, ridistribuiscila, basta che resti il nome dell'autore. Quack.