- TypeScript 96.2%
- Makefile 2.6%
- Shell 1.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .githooks | ||
| .github/workflows | ||
| docs | ||
| games-gog | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| .oxfmtrc.json | ||
| bun.lock | ||
| Makefile | ||
| mise.toml | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
GOG to PS Vita extractor
A cross-platform one-command script that takes the offline installer of a game you own on GOG.com, pulls out the game data a PS Vita port needs, and downloads the newest VPK of that port next to it.
Important
This tool is for use with your own legally purchased copies of the games. It does not provide or distribute any game data.
Supported games
| Game | Vita port | Data on the Vita | Guide |
|---|---|---|---|
| Medal of Honor: Allied Assault | OpenMoHAA | ux0:data/openmohaa/main/ |
docs/mohaa.md |
| Diablo + Hellfire | DevilutionX | ux0:data/diasurgical/devilution/ |
docs/diablo.md |
| Silent Hill 4: The Room | sh4vita | ux0:data/sh4/ |
docs/silent-hill-4.md |
Each game is one module in src/game/; adding a game means adding a module there that exports a Game and listing it in src/game/index.ts.
Supported Platforms
- macOS
- Linux
- Windows
Requirements
mise installs the pinned tools from mise.toml, Bun and 7-Zip among them: run mise install. Without mise, install Bun yourself.
You also need at least one of the following extraction tools installed and available in your PATH:
| Tool | Recommended For | Installation |
|---|---|---|
innoextract |
Windows .exe installers (best) |
macOS: brew install innoextract • Linux: sudo apt install innoextract • Windows: choco install innoextract |
7-Zip (7z) |
Fallback for multi-part installers | macOS: brew install p7zip • Linux: sudo apt install p7zip-full • Windows: Download from 7-zip.org (add to PATH) |
unzip |
Linux .sh installers |
Usually pre-installed on most systems |
When an installer needs a tool you do not have, the script offers to install it with brew, apt or choco. Silent Hill 4 needs innoextract itself; 7-Zip is enough for the other games. make tools shows what is installed, and make deps installs the mise tools and innoextract in one go.
Usage
Put the GOG offline installer (the .exe and any -*.bin parts), or a folder with the game already installed, in the games-gog/ folder of this repository. Git ignores everything in games-gog/, so the game files are never committed.
macOS / Linux
make extract
It asks which game you want, then:
- One installer for it in
games-gog/: it is used. - Several: the script lists them and asks which one.
- None: it asks whether you already own it on GOG, prints a clickable link to the store page or the download, and then waits for you to drag the
.exeinto the terminal.
To use an installer somewhere else, pass it directly: make extract INSTALLER="$HOME/Downloads/setup_diablo_1.09_hellfire_v4_(78466).exe" (quoted, because of the parentheses). Run make on its own to list the other targets.
Windows (Command Prompt/PowerShell)
bun install
bun src\extract_for_vita.ts
bun src\extract_for_vita.ts "games-gog\setup_diablo_1.09_hellfire_v4_(78466).exe"
The game is recognised by the installer's file name; if the name is not one the script knows, it asks which game it is. The output lands in games-vita/ in this repository, one folder per port — openmohaa/main/, diasurgical/devilution/ or sh4vita/sh4/ — laid out the way ux0:data/ expects it, and the game's guide says where it goes on the Vita.
Troubleshooting
- Extraction fails: Try installing
innoextract(recommended) or7-Zip. The script will tell you which tools it tried and what to install. - Wrong installer: Make sure you're using the offline backup installer from GOG, not the Galaxy installer.
- Game-specific problems are in each game's guide.
Development
bun install or any make target that needs it turns on the hooks in .githooks/: a commit formats its staged files, and a push is refused while anything is unformatted. make lint test runs the same checks as CI.
License
See LICENSE if included, or refer to the repository's license file.