Tottodrillo è un'app Android moderna e minimale per esplorare, cercare e scaricare ROM da più sorgenti. L'app supporta l'installazione dinamica di sorgenti tramite pacchetti ZIP, permettendo di aggiungere nuove sorgenti ROM senza aggiornare l'app.
Repository Sorgenti: Tottodrillo-Source - Contiene tutte le definizioni delle sorgenti e le guide di sviluppo.
Questo README è disponibile anche in altre lingue:
- Importazione Metadati: Cerca e importa metadati ricchi per le tue ROM dall'Internet Game Database (IGDB)
- Informazioni Complete sui Giochi: Importa titolo, copertina, descrizione, trama, generi, sviluppatore, editore, valutazione, screenshot e molto altro
- Configurazione Semplice: Imposta il tuo Client ID e Secret IGDB direttamente nelle Impostazioni
- Corrispondenza Intelligente: Visualizza le piattaforme corrispondenti e conferma prima di importare i metadati
- Dettagli ROM Arricchiti: Arricchisci la tua collezione ROM con metadati professionali e copertine di alta qualità da IGDB
- Provider Multipli: Scegli tra diversi provider per la ricerca di informazioni sulle ROM
- Provider Configurabile: Seleziona il provider preferito nelle impostazioni
- Testo Pulsante Dinamico: Il testo del pulsante di ricerca cambia in base al provider selezionato
- Ricerche Recenti (NUOVO in v3.1.0):
- Storia automatica delle ultime ricerche con filtri applicati
- Richiamo rapido delle ricerche recenti dalla schermata di ricerca
- Reset intelligente: quando si cancella la query (e non ci sono filtri attivi), vengono mostrate nuovamente le ricerche recenti
- Installazione Dinamica Sorgenti: Installa nuove sorgenti ROM tramite pacchetti ZIP senza aggiornare l'app
- Tipi di Sorgenti Multipli: Supporto per sorgenti API, Java/Kotlin e Python
- Gestione Sorgenti: Abilita/disabilita, installa, disinstalla e aggiorna sorgenti dalle impostazioni
- Sorgenti Predefinite: Installazione automatica di sorgenti predefinite al primo avvio
- Filtro Sorgenti: Filtra i risultati di ricerca per sorgenti selezionate
- Aggiornamento Automatico: L'UI si aggiorna automaticamente quando le sorgenti vengono abilitate/disabilitate
- Mapping Piattaforme: Ogni sorgente include il proprio mapping delle piattaforme per un'integrazione senza soluzione di continuità
- Home Screen con ROM in evidenza, piattaforme popolari, preferiti, ROM recenti e ROM scaricate
- Esplorazione Piattaforme organizzate per brand (Nintendo, PlayStation, Sega, Xbox, ecc.) con sezioni collassabili/espandibili
- Ricerca Avanzata con debounce automatico (500ms) per ottimizzare le query
- Filtri Multipli per piattaforme, regioni e sorgenti con chip interattivi
- Paginazione Infinita con lazy loading automatico
- Visualizzazione ROM con cover art centrate e proporzionate
- Carosello Immagini: Immagini multiple per ROM (box art, screenshot) con carosello scorrevole
- Lazy Image Loading: Le immagini si caricano solo quando sono visibili sullo schermo per migliori prestazioni
- Download in Background con WorkManager per affidabilità
- Progress Tracking Real-time con percentuale, bytes scaricati e velocità (visibile anche dal dettaglio ROM)
- Notifiche Interattive con azioni "Interrompi download" e "Interrompi installazione"
- Download Multipli Simultanei con progresso e notifiche separate per ogni task
- Path Personalizzato per salvare i file in qualsiasi cartella (incluso SD card esterna)
- Installazione Automatica/Manuale:
- Supporto per archivi ZIP (estrazione)
- Supporto per file non-archivio (copia/spostamento)
- Picker cartelle per destinazione personalizzata
- Compatibilità ES-DE:
- Installazione automatica nella struttura cartelle di ES-DE
- Selezione cartella ROMs ES-DE
- Organizzazione automatica per
mother_code(es.fds/,nes/, ecc.)
- Gestione File:
- Sovrascrittura file esistenti (non elimina altri file nella cartella)
- Eliminazione opzionale del file originale dopo installazione
- Gestione storico download ed estrazioni
- Opzioni Avanzate:
- Download solo WiFi per risparmiare dati mobili
- Verifica spazio disponibile prima del download
- Notifiche configurabili
- Gestione Sessione: Gestione automatica dei cookie per le sorgenti che lo richiedono
- Preferiti con persistenza su file
- ROM Recenti (ultime 25 aperte) con persistenza su file
- Stato Download/Installazione per ogni link con aggiornamento automatico
- Link Download Multipli: Supporto per più versioni e formati per ROM
- Identificazione Sorgente: Ogni link di download mostra la sua sorgente
- Icone di Stato:
- Download in corso con indicatore di progresso
- Installazione in corso con percentuale
- Installazione completata (icona verde)
- Installazione fallita (icona rossa, cliccabile per riprovare)
- Apertura Cartelle di installazione direttamente dall'app
- Material Design 3 con tema dark/light automatico
- Interfaccia Minimal e moderna
- Animazioni Fluide con Jetpack Compose
- Cover Art con lazy loading (Coil) e centratura automatica
- Logo Piattaforme SVG caricati da assets con fallback
- Badge Regioni con emoji flags (mappati automaticamente dai nomi delle regioni delle sorgenti)
- Card ROM con larghezza massima uniforme (180dp)
- Carosello Immagini: Carosello scorrevole per immagini multiple delle ROM
- Struttura ad Albero con Gruppi Espandibili: Impostazioni organizzate in 8 categorie collassabili per una migliore navigazione
- Gestione Sorgenti:
- Visualizza tutte le sorgenti installate
- Abilita/disabilita sorgenti
- Installa nuove sorgenti da file ZIP
- Aggiorna sorgenti esistenti
- Disinstalla sorgenti
- Installa sorgenti predefinite
- Ricerca Info ROMs:
- Scegli provider di ricerca (Gamefaqs o MobyGames)
- Gamefaqs è il provider predefinito
- Impostazioni integrazione IGDB (configurazione Client ID e Secret)
- Configurazione Download:
- Selezione cartella download personalizzata
- Visualizzazione spazio disponibile
- Gestione permessi storage (Android 11+)
- Download solo WiFi
- Notifiche on/off (per download, installazioni e aggiornamenti)
- Configurazione Installazione:
- Eliminazione file originale dopo installazione
- Compatibilità ES-DE con selezione cartella
- Gestione Storico:
- Cancellazione storico download ed estrazioni (con conferma)
- Informazioni App (Sempre visibili):
- Versione app
- Link GitHub
- Sezione supporto
L'app segue Clean Architecture con separazione in layer:
app/
├── data/
│ ├── mapper/ # Conversione API → Domain
│ ├── model/ # Data models (API, Platform)
│ ├── remote/ # Retrofit, API service, Source executors
│ ├── repository/ # Repository implementations
│ ├── receiver/ # BroadcastReceiver per notifiche
│ └── worker/ # WorkManager workers (Download, Extraction)
├── domain/
│ ├── manager/ # Business logic managers (Download, Platform, Source)
│ ├── model/ # Domain models (UI)
│ └── repository/ # Repository interfaces
└── presentation/
├── components/ # Componenti UI riutilizzabili
├── common/ # UI State classes
├── detail/ # Schermata dettaglio ROM
├── downloads/ # Schermata downloads
├── explore/ # Schermata esplorazione piattaforme
├── home/ # Schermata home
├── navigation/ # Navigation graph
├── platform/ # Schermata ROM per piattaforma
├── search/ # Schermata ricerca
├── settings/ # Schermata impostazioni
├── sources/ # Schermate gestione sorgenti
└── theme/ # Theme system
- Kotlin - Linguaggio principale
- Jetpack Compose - UI toolkit moderno
- Material 3 - Design system
- MVVM - Pattern architetturale
- Hilt - Dependency Injection
- Coroutines & Flow - Concorrenza e reattività
- StateFlow - Gestione stato reattivo
- Retrofit - HTTP client
- OkHttp - Network layer con gestione cookie
- Gson - JSON parsing
- Coil - Image loading con supporto SVG
- DataStore - Preferences persistenti
- WorkManager - Background tasks affidabili
- File I/O - Gestione file
.statusper tracking download/installazione
- Navigation Compose - Routing tra schermate
- Safe Navigation - Gestione back stack per evitare schermate vuote
- DownloadWorker - Download file in background con foreground service
- ExtractionWorker - Estrazione/copia file in background
- Foreground Notifications - Notifiche interattive con azioni
- SourceExecutor Interface - Interfaccia comune per tutti i tipi di sorgenti
- SourceApiAdapter - Esecutore sorgenti API
- JavaSourceExecutor - Esecutore sorgenti Java/Kotlin con caricamento dinamico classi
- PythonSourceExecutor - Esecutore sorgenti Python usando Chaquopy
- Chaquopy - Python SDK per Android (Python 3.11)
- Android Studio Hedgehog (2023.1.1) o superiore
- JDK 17
- Android SDK API 34
- Gradle 8.2+
- Clone del repository
git clone https://github.com/mccoy88f/Tottodrillo.git
cd Tottodrillo-
Apri in Android Studio
- File → Open → Seleziona la cartella del progetto
-
Sync Gradle
- Android Studio sincronizzerà automaticamente le dipendenze
-
Build & Run
- Seleziona un dispositivo/emulatore
- Run → Run 'app'
Non è necessaria alcuna API key. L'app utilizza le API pubbliche delle sorgenti installate. Ogni sorgente può essere:
- API-based: Endpoint HTTP REST API
- Python-based: Web scraping tramite script Python
./gradlew assembleDebug./gradlew assembleReleaseL'APK verrà generato in: app/build/outputs/apk/
- Installazione: Installa sorgenti da file ZIP tramite file picker
- Validazione: Validazione automatica della struttura e dei metadati della sorgente
- Gestione Versioni: Aggiorna sorgenti con versioni più recenti (preserva lo stato abilitato)
- Abilita/Disabilita: Attiva/disattiva sorgenti senza disinstallarle
- Disinstallazione: Rimuovi sorgenti completamente
- Sorgenti Predefinite: Installazione automatica opzionale di un set predefinito di sorgenti al primo avvio
- Gestione Cache: Invalidazione automatica della cache quando le sorgenti cambiano
- Mapping Piattaforme: Ogni sorgente definisce il proprio mapping dei codici piattaforma
- Servizi Sorgenti Avanzati (NUOVO in v3.1.0):
- Servizi centralizzati nell'app (client HTTP, cookie, configurazione SSL, helper WebView, bypass tipo Cloudflare)
- Le sorgenti dichiarano le loro esigenze tramite configurazione, l'app fornisce l'implementazione
- Forte disaccoppiamento tra app e sorgenti: l'app è agnostica rispetto a quali sorgenti sono installate
- Download multipli simultanei
- Tracking progresso per ogni download
- Cancellazione download in corso
- Gestione errori con retry automatico
- Verifica spazio disponibile
- Supporto SD card esterna
- Gestione cookie di sessione per le sorgenti che lo richiedono
- Estrazione archivi ZIP
- Copia/spostamento file non-archivio
- Progress tracking durante installazione
- Gestione errori con icona rossa cliccabile per retry
- Aggiornamento automatico UI dopo installazione
- Apertura cartella installazione
- Link download multipli per ROM (versioni, formati)
- Abilitazione/disabilitazione compatibilità
- Selezione cartella ROMs ES-DE
- Installazione automatica nella struttura corretta
- Mapping automatico
mother_code→ cartella
- File
.statusper tracking download/installazione - Formato multi-riga per supportare download multipli dello stesso file
- Cancellazione storico con conferma utente
Tottodrillo supporta tre tipi di sorgenti:
- Sorgenti API: Endpoint HTTP REST API
- Sorgenti Java/Kotlin: Esecuzione codice Java/Kotlin locale
- Sorgenti Python: Esecuzione script Python locale (usando Chaquopy)
Per documentazione dettagliata sulla creazione di sorgenti, vedi il repository Tottodrillo-Source:
-
Crea un pacchetto ZIP con:
source.json- Metadati sorgente (obbligatorio)platform_mapping.json- Mapping codici piattaforma (obbligatorio)api_config.json- Configurazione API (per sorgenti API)- Script Python o file JAR (per sorgenti Python/Java)
-
Installa la sorgente tramite Impostazioni → Sorgenti → Installa Sorgente
-
Abilita la sorgente e inizia a usarla!
Vedi i file di documentazione per esempi completi e dettagli dell'API.
L'app attualmente supporta 8 lingue:
- 🇮🇹 Italiano (default)
- 🇬🇧 Inglese
- 🇪🇸 Spagnolo
- 🇩🇪 Tedesco
- 🇯🇵 Giapponese
- 🇫🇷 Francese
- 🇨🇳 Cinese semplificato
- 🇵🇹 Portoghese
L'app utilizza automaticamente la lingua del dispositivo. Se la lingua non è supportata, usa l'italiano come default.
Contribuzioni sono benvenute! Per favore:
- Fork il progetto
- Crea un branch per la tua feature (
git checkout -b feature/AmazingFeature) - Commit le modifiche (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
- Segui le convenzioni Kotlin
- Usa Jetpack Compose per la UI
- Scrivi test quando possibile
- Documenta le API pubbliche
- Mantieni il codice pulito e leggibile
Questo progetto è rilasciato sotto licenza MIT. Vedi il file LICENSE per dettagli.
- Varie database ROM pubblici e sorgenti
I loghi SVG delle piattaforme sono forniti da:
- alekfull-nx-es-de - Repository di loghi per ES-DE
- Chaquopy - Python SDK per Android
- Community retro gaming per il supporto e i feedback
- Tutti i contributori e tester dell'app
IMPORTANTE: Questa app è creata per scopi educativi e di ricerca.
- L'utilizzo di ROM richiede il possesso legale del gioco originale
- Rispetta sempre le leggi sul copyright del tuo paese
- L'app non fornisce ROM, ma si limita a facilitare l'accesso a database pubblici
- L'autore non si assume alcuna responsabilità per l'uso improprio dell'applicazione
Autore: mccoy88f
Repository: https://github.com/mccoy88f/Tottodrillo
Issues: Se trovi bug o hai suggerimenti, apri una Issue
Se ti piace questo progetto e vuoi supportarmi, puoi offrirmi una birra! 🍺
Il tuo supporto mi aiuta a continuare lo sviluppo e migliorare l'app.
Puoi anche offrirmi una birra con PayPal 🍻
Made with ❤️ for the retro gaming community
