- VMC Reader - PlayStation 2 Memory Card Reader
A C program to read and analyze PlayStation 2 Virtual Memory Card (VMC) files, displaying save game information with proper game title lookup.
- Complete VMC parsing: Reads superblock, FAT, and directory structures
- Game title lookup: Built-in database of PS2 game titles
- Smart save parsing: Automatically extracts game IDs from save names
- Memory usage analysis: Shows used/free space correctly
- Clean directory listing: Displays save games with creation/modification dates
makemake debugmake releasemake clean./vmcreader <vmc_file>Example:
./vmcreader mc0.binSuccessfully opened VMC file: mc0.bin
File size: 67108864 bytes (64.00 MB)
=== VMC Information ===
Magic: Sony PS2 Memory Card Format
Version: 1.2.0.0
Page size: 512 bytes
Cluster size: 1024 bytes
Pages per cluster: 2
Clusters per card: 65536
Allocation offset: 265
Root directory cluster: 0
Max allocatable clusters: 65001
Card type: 2
Card flags: 0x2B
Used clusters: 150 (0.15 MB)
Free clusters: 64851 (63.33 MB)
Total allocatable space: 63.48 MB
========================
=== Root Directory ===
Expected entries: 11
Save Name Type Size Created Modified Game Title
--------- ---- ---- ------- -------- ----------
BESLES-556732014OPT DIR 5 2025/08/17-03:10:14 2025/08/17-03:10:35 Final Fantasy X-2
BESLES-556732014000 DIR 5 2025/08/17-03:14:30 2025/08/17-03:14:53 Final Fantasy X-2
BASLUS-21050 DIR 5 2025/08/17-03:18:43 2025/08/17-03:18:43 Grand Theft Auto: Vice City
BASLUS-21846DAT0 DIR 5 2024/10/10-04:41:11 2024/10/10-04:55:28 Guitar Hero III: Legends of Rock
BASCUS-97436GAMEDATA DIR 6 2025/08/21-22:12:35 2025/08/21-22:55:58 Grand Theft Auto: San Andreas
Total game saves found: 9
- Title Lookup: Now uses internal C database instead of external files
- Free Space Calculation: Correctly calculates free clusters using FAT flags
- Smart Game ID Extraction: Handles common PS2 save naming conventions
- Memory Management: Proper allocation and cleanup
The program intelligently extracts game IDs from save names by removing common suffixes:
BESLES-556732014OPT→BESLES-55673→ matches databaseBASCUS-97436GAMEDATA→BASCUS-97436→ matches databaseBASLUS-21846DAT0→BASLUS-21846→ matches database
- Magic:
Sony PS2 Memory Card Format - Versions: 1.0.0.0, 1.1.0.0, 1.2.0.0
- Cluster sizes: 512B, 1024B, 2048B
- Card sizes: 8MB to 512MB
- Reads indirect FAT clusters (IFC)
- Follows cluster chains properly
- Identifies free clusters using flag 0x7F + cluster 0xFFFFFF
- Built-in database with common PS2 games
- Extensible structure for adding more titles
- Supports partial matching for save variations
Edit titles_db.c and add entries to the ps2_titles[] array:
{"SLUS-12345", "Game Title", "Publisher", "Genre", "Language", "Developer", "Region", "Date", "SLUS-12345"},make memcheckmake formatsudo make installsudo make uninstall- GCC compiler
- Standard C library
- POSIX-compatible system (Linux, macOS, Windows with MinGW)
This project is open source. Feel free to modify and distribute.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- Ensure the file is a valid PS2 VMC file
- Check file isn't corrupted or compressed
- Game might not be in the database
- Add the game ID to
titles_db.c - Save name might have unusual suffix format
- Ensure GCC is installed
- Check that all source files are present
- Try
make cleanfollowed bymake