{"id":21973314,"url":"https://github.com/franciscoda/ps2mcfs","last_synced_at":"2025-10-12T02:31:59.670Z","repository":{"id":64911156,"uuid":"85695343","full_name":"FranciscoDA/ps2mcfs","owner":"FranciscoDA","description":"FUSE driver that allows mounting Sony PlayStation 2 memory card files (either from an emulator or obtained from real hardware) into your linux filesystem.","archived":false,"fork":false,"pushed_at":"2023-05-02T19:38:07.000Z","size":43,"stargazers_count":20,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-28T13:55:12.535Z","etag":null,"topics":["filesystem","fuse","fuse-filesystem","linux","ps2"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FranciscoDA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-21T11:46:53.000Z","updated_at":"2025-02-04T10:22:12.000Z","dependencies_parsed_at":"2024-11-29T15:32:07.044Z","dependency_job_id":"327b4196-dcd7-44b1-a7a3-3a30d6b85427","html_url":"https://github.com/FranciscoDA/ps2mcfs","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/FranciscoDA/ps2mcfs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FranciscoDA%2Fps2mcfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FranciscoDA%2Fps2mcfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FranciscoDA%2Fps2mcfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FranciscoDA%2Fps2mcfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FranciscoDA","download_url":"https://codeload.github.com/FranciscoDA/ps2mcfs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FranciscoDA%2Fps2mcfs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009960,"owners_count":26084670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filesystem","fuse","fuse-filesystem","linux","ps2"],"created_at":"2024-11-29T15:26:28.746Z","updated_at":"2025-10-12T02:31:59.653Z","avatar_url":"https://github.com/FranciscoDA.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ps2mcfs\n![Tests status](https://github.com/franciscoda/ps2mcfs/actions/workflows/test.yml/badge.svg)\n\nFUSE driver for PlayStation 2 Virtual Memory Card (VMC) images. This will allow you to mount VMC images from Open PS2 Loader or PCSX2 in userspace.\n\nImplemented filesystem operations:\n * read\n * stat\n * readdir\n * mkdir\n * utimens\n * create\n * write\n * rmdir\n * unlink\n * rename\n\nThe implemented operations allow most read/write commands: mkdir, touch, cat, less, rm, mv, etc.\n\n\n### Mounting memory card files\n\nThe following command can be used to mount a memory card file into a directory mountpoint\n```\nUsage: bin/fuseps2mc \u003cmemory-card-image\u003e \u003cmountpoint\u003e [OPTIONS]\nMounts a Sony PlayStation 2 memory card image as a local filesystem in userspace\n\nfuseps2mcfs options:\n    -S                     sync filesystem changes to the memorycard file\n\nOptions:\n    -h   --help            print help\n    -V   --version         print version\n    -f                     foreground operation\n    ...\n```\n\nThe only specific flag is `-S` which allows the program to save the filesystem changes into the memory card file.\nPlease note that ps2mcfs is still in early development, so the use of this flag is discouraged as it may cause file corruption.\n\nAlso, some filesystem status considerations:\n * access times are missing (they're not supported by the PS2 filesystem specification). Files will show as being last accessed in Jan 1st of 1970\n * user/group ownership is missing (not supported either). Files will appear as being owned by the same user and group that mounted the filesystem\n * Per-file permissions are supported, but not umasks. Newly created files will appear as having the most permissive combination of permissions from the umask that FUSE provides\n\n### Obtaining memory card files\n\nThere are several ways you can obtain or create memory card images:\n\n * A PS2 virtual memory card image can be obtained from real hardware by storing it into a USB drive using [Open PS2 Loader](https://github.com/ps2homebrew/Open-PS2-Loader) (you will need a PS2 capable of running homebrew applications)\n * A memory card file can be obtained using the PCSX2 emulator, by copying the `.ps2` files from `~/.config/PCSX2/memcards`. It's strongly recommended that you format the memory card using the PS2 browser if it's not already formatted.\n * You can create a formatted memory card file using the `mkfs.ps2` binary included in this project (see below)\n\nThe following command can be used to create an empty memory card image:\n```\nUsage: bin/mkfs.ps2 -o OUTPUT_FILE [-s SIZE] [-e] [-h]\nCreate a virtual memory card image file.\n\n  -s, --size=NUM        Set the memory card size in megabytes (options: 8)\n  -e, --ecc             Add ECC bytes to the generated file\n  -o, --output=FILE     Set the output file\n  -h, --help            Show this help\n```\n\nIt's worth noting that PCSX2 `.ps2` files include error correcting codes (ECC data), while Open PS2 Loader `.vmc` files usually don't.\n\nThis means that you will want to use the following command to generate memory cards for OPL:\n```sh\nbin/mkfs.ps2 -o SLES-XXX.vmc -s 8\n```\nAnd the following command for PCSX2:\n```sh\nbin/mkfs.ps2 -o Mcd002.ps2 -s 8 -e\n```\n\n### Building\n\nThe following packages are needed to build the project in Ubuntu:\n* `libfuse3-dev`\n* `pkgconf`\n* `clang-tools`\n\nSubmodules must be initialized and updated to fetch dependencies on external libraries: `git submodule init \u0026\u0026 git submodule update -f`\n\nThe executables can then be built by invoking `make`\n\n### See also\n\n[PlayStation 2 Memory Card File System](http://www.csclub.uwaterloo.ca:11068/mymc/ps2mcfs.html)\n\n[Open PS2 Loader](https://github.com/ps2homebrew/Open-PS2-Loader)\n\n[PS2 Homebrew \u0026 emu scene](http://psx-scene.com/forums/ps2-homebrew-dev-emu-scene/)\n\n[PS2 NBD server plugin](https://github.com/bignaux/lwNBD/blob/main/plugins/mcman/lwnbd-mcman-plugin.md) allows accessing VMC files through your PS2\n\n[PS2iconsys](https://github.com/ticky/ps2iconsys) allows converting PS2 icons into their respective geometry and texture files and viceversa\n\n[µnit](https://nemequ.github.io/munit/) Unit testing framework","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffranciscoda%2Fps2mcfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffranciscoda%2Fps2mcfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffranciscoda%2Fps2mcfs/lists"}