An open API service indexing awesome lists of open source software.

https://github.com/xrce/retro

Personal repo for managing retro games
https://github.com/xrce/retro

downloader emulation emulator handheld retrogaming

Last synced: 12 months ago
JSON representation

Personal repo for managing retro games

Awesome Lists containing this project

README

          

# ๐Ÿ“ฆ Retro Game Package Manager

๐Ÿš€ A **fast and lightweight** package manager for downloading and managing retro game ROMs from public archives. Featuring **smart search, filtering by system, resumable downloads, and automatic extraction** for compressed files. Perfect for quickly downloading ROMs for retro gaming consoles with minimal effort!

---

## ๐Ÿ”ฅ Why Use This?
โšก **Ultra-fast fetching** โ€“ Instantly fetch **thousands** of games.
๐ŸŽฏ **Easy Filtering** โ€“ Find exactly what you want, **instantly**.
๐Ÿ“‚ **Auto-Extract Archives** โ€“ **No manual extraction needed**.
๐Ÿ”„ **Auto-compress** โ€“ Convert ISO/CUE/GDI files to CHD format.
๐Ÿงน **Smart Cleanup** โ€“ Intelligently remove duplicate ROMs.
๐Ÿš€ **Minimal Dependencies** โ€“ Runs smoothly on **any system**.
๐Ÿ›  **Minimalist UI** โ€“ Inspired by **Pacman package manager** style.

---

## **๐ŸŽฎ Supported Consoles**
This tool can fetch ROMs for multiple **retro and modern gaming systems**, including:

- **Nintendo**: GB, GBC, GBA, NES, SNES, N64, NDS, 3DS, GameCube, Wii, Wii U
- **Sony**: PSX, PS2, PSP, PS3, PS Vita
- **Microsoft**: Xbox, Xbox 360
- **Sega**: Genesis, Dreamcast, Saturn
- **Others**: Atari 2600, Neo Geo, TurboGrafx-16, PC-98, FM-Towns, 3DO

---

## **๐Ÿ›  Installation**
### **1๏ธโƒฃ Install dependencies**
Make sure you have Python **3.7+** installed, then run:
```bash
pip install requests tqdm bs4 py7zr rarfile
```
For Linux users, install `unrar` if not available:
```bash
sudo apt install unrar
```

For CHD compression/extraction, install `chdman`:
```bash
# Ubuntu/Debian
sudo apt install mame-tools

# macOS
brew install mame-tools
```

### **2๏ธโƒฃ Clone this repository**
```bash
git clone https://github.com/xrce/retro.git
cd retro
```

---

## **โšก Usage**
### **1๏ธโƒฃ Launch the application**
```bash
python retro.py
```

You'll see the main menu:
```
โ–—โ–„โ–„โ–– โ–—โ–„โ–„โ–„โ––โ–—โ–„โ–„โ–„โ––โ–—โ–„โ–„โ–– โ–—โ–„โ––
โ–โ–Œ โ–โ–Œโ–โ–Œ โ–ˆ โ–โ–Œ โ–โ–Œโ–โ–Œ โ–โ–Œ โœ“ 0/1234 games
โ–โ–›โ–€โ–šโ––โ–โ–›โ–€โ–€โ–˜ โ–ˆ โ–โ–›โ–€โ–šโ––โ–โ–Œ โ–โ–Œ โœ“ 0/23 systems
โ–โ–Œ โ–โ–Œโ–โ–™โ–„โ–„โ–– โ–ˆ โ–โ–Œ โ–โ–Œโ–โ–šโ–„โ–žโ–˜ โœ“ 0.00B/1.23TB total
--------------------------------------------------
[1] Update packages
[2] Install packages
[3] Uninstall packages
[4] List Installed
[5] Compress packages
[6] Clean duplicates
[0] Exit
--------------------------------------------------
```

### **2๏ธโƒฃ Update package listings**
Select option `1` to fetch available ROM packages.

### **3๏ธโƒฃ Search and install packages**
Select option `2` to search and install ROMs.

#### ๐Ÿ” Search syntax:
```
Keywords: silent hill psx
```

- Search by name: `silent hill`
- Search within a specific console: `gbc silent hill`
- Exclude words from search: `silent hill -demo`
- Install all ROMs for a system: `all gbc`

### **4๏ธโƒฃ Uninstall packages**
Select option `3` to remove installed ROMs.
Uses the same search syntax as installation.

### **5๏ธโƒฃ List installed packages**
Select option `4` to view all currently installed ROMs.

### **6๏ธโƒฃ Compress packages**
Select option `5` to convert ISO/CUE/GDI files to CHD format.
This helps save disk space while preserving full compatibility.

### **7๏ธโƒฃ Clean duplicates**
Select option `6` to scan for and remove duplicate ROMs.
The system prioritizes ROMs in this order: World (W), Europe (E), USA (U), Japan (J).

---

## **๐Ÿ“‚ Where Are ROMs Saved?**
- ROMs are stored in folders matching their **system codes** (e.g., `psx`, `gbc`, `nds`).
- Archives are **automatically extracted** into their respective folders.

Example directory structure:
```
๐Ÿ“‚ roms/
โ”ฃ ๐Ÿ“‚ gbc/
โ”ƒ โ”— ๐Ÿ“‚ Silent Hill GBC/
โ”ฃ ๐Ÿ“‚ ps2/
โ”ƒ โ”— ๐Ÿ“‚ Silent Hill 2/
โ”ฃ ๐Ÿ“‚ psp/
โ”ƒ โ”— ๐Ÿ“‚ Silent Hill Origins/
```

---

## **๐ŸŽฏ Example Output**
```
Keywords: silent hill psx

Listing packages...
โœ— 697.62MB Silent Hill (USA) (psx)
โœ— 573.47MB Silent Hill (Europe) (psx)
โœ— 565.12MB Silent Hill (Japan) (psx)

3 packages to install (1.80GB)
Install? [Y/n]: y

Installing: 33% [1/3]
Silent Hill (USA): 100% [697.62MB/697.62MB]
Silent Hill (Europe): 100% [573.47MB/573.47MB]
Silent Hill (Japan): 100% [565.12MB/565.12MB]

Installation complete.
```

---

## ๐Ÿ”ง Configuration
Edit `systems.json` to add or remove supported systems. Example:

```json
{
"psx": {
"name": "Sony PlayStation",
"format": ["bin", "cue", "chd"],
"url": [
"https://myrient.erista.me/files/Redump/Sony%20-%20PlayStation/"
]
}
}
```

---

## ๐Ÿ“Œ Notes

- **Some ROMs are large!** Ensure you have enough storage space.
- **Roms are fetched from external archives.** No ROMs are included in this repository.
- **Use this responsibly!** Only download games you legally own.

๐ŸŽฎ **Happy gaming!** ๐Ÿ•น