Releases: dmang-dev/pspdev-win
Release list
pspdev-win v2
What's Changed
- ci: smoke-tested release bundles — fix SIGPIPE + cold-build meson failure by @dmang-dev in #6
New Contributors
- @dmang-dev made their first contribution in #6
Full Changelog: v1...v2
pspdev-win v1 — prebuilt toolchain + Tier 1 libraries (5-min install)
pspdev-win v1 — prebuilt toolchain + Tier 1 libraries
Complete PSP homebrew toolchain for Windows. psp-gcc 15.2.0 (C + C++), psp-binutils 2.43, newlib 4.4.0, pspsdk, all the host tools (psp-prxgen, pack-pbp, mksfoex, …), psp-pacman / psp-makepkg, plus the 16-library Tier 1 bundle (SDL2, freetype, libpng, …) pre-installed and ready to use.
Skip the ~90-minute source build. Extract the zip, add to PATH, compile.
Install (5 minutes)
-
Install MSYS2 from https://www.msys2.org (default location
C:\msys64) — the toolchain needsmsys-2.0.dllat runtime. -
Download + extract this release:
Invoke-WebRequest -Uri https://github.com/dmang-dev/pspdev-win/releases/download/v1/pspdev-win-15.2.0-v1.zip -OutFile pspdev-win.zip Expand-Archive pspdev-win.zip -DestinationPath C:\pspdev
-
Add to PATH (PowerShell, current session):
$env:PSPDEV = "C:\pspdev" $env:Path = "$env:PSPDEV\bin;C:\msys64\usr\bin;$env:Path"
For a permanent install, run
setxinstead:[Environment]::SetEnvironmentVariable("PSPDEV", "C:\pspdev", "User") [Environment]::SetEnvironmentVariable("Path", "$env:PSPDEV\bin;C:\msys64\usr\bin;$([Environment]::GetEnvironmentVariable('Path','User'))", "User")
-
Verify:
psp-gcc --version # psp-gcc (GCC) 15.2.0
What's bundled
Toolchain
- psp-gcc 15.2.0 — C, C++ (libstdc++ all standards through C++26)
- psp-binutils 2.43 — assembler, linker, archiver
- newlib 4.4.0 — C library + threading (pthread-embedded)
- pspsdk — full
libpsp*.aset, headers, samples - 30+ host tools —
psp-prxgen,pack-pbp,mksfoex,psp-fixup-imports,psp-cmake,psp-config,ebootsign,bin2c,bin2o,bin2s,psp-gdb, … - psp-pacman + psp-makepkg —
psp-pacman -S sdl2etc. works against the upstream pspdev package server
Tier 1 libraries (pre-installed under psp/lib)
| Library | Version | Library | Version |
|---|---|---|---|
| zlib | 1.3.1-7 | sdl2 | 2.32.8 |
| libpng | 1.6.53-1 | sdl2-image | 2.8.6 |
| jpeg | 3.1.3-1 | sdl2-mixer | 2.8.0 |
| bzip2 | 1.0.8-6 | sdl2-ttf | 2.24.0 |
| freetype2 | 2.11.0-9 | libmodplug | 0.8.8.5 |
| libogg | 1.3.6 | harfbuzz | 8.5.0 |
| libvorbis | 1.3.7 | pspgl | r12 |
| tremor | 1.2.1git | libpspvram | r11.885fd3f |
Same exact build as the standalone libs-v1 release.
Size
- 122 MB zip
- 305 MB extracted
- 30 host tools + 61 PSP target libraries + 760 PSP headers
Hello world (verify it works)
// hello.c
#include <pspkernel.h>
#include <pspdebug.h>
PSP_MODULE_INFO("hello", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
int main(void) {
pspDebugScreenInit();
pspDebugScreenPrintf("Hello from a Windows-built PSP binary.\n");
sceKernelSleepThread();
return 0;
}# Makefile
TARGET = hello
OBJS = hello.o
CFLAGS = -O2 -G0 -Wall
LIBS = -lpspdebug -lpspdisplay -lpspge -lpspctrl
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hello
PSPSDK = $(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.makmake
# Output: EBOOT.PBP — bootable on real PSP or in PPSSPPCompatibility
- Windows 10/11 x64
- MSYS2 required — the toolchain produces Cygwin-hosted binaries (
x86_64-pc-cygwinELF) that depend onmsys-2.0.dll. Same architecture the historical NVStat PSPDEV for Windows used 2008–2016. - Path placement: anywhere is fine;
C:\pspdevis the suggested default. If you put it elsewhere, pointPSPDEVat it.
Build provenance
- pspdev-win commit:
368b5ea - pspdev fork commit:
a0e6363 - psp-packages commit:
f239560 - Build method:
bootstrap-windows.ps1(the same script in this repo) - Library bundle: identical bits to libs-v1 — just extracted alongside the toolchain instead of distributed separately
What's next
The next release will be CI-built (modify the library bundle workflow to also emit a toolchain bundle). This release is the locally-built first cut so the "5-minute install" path exists immediately.
If you want to verify reproducibility yourself, .\bootstrap-windows.ps1 rebuilds the entire stack from source in ~90 minutes on a modern Windows box.
Library bundle v1 — 16 libraries, psp-gcc 15.2.0
pspdev-win library bundle v1
First prebuilt PSP library bundle for the pspdev-win Windows toolchain. 16 libraries, 8.9 MB zip (22.7 MB uncompressed across 561 files), built from psp-packages f239560 against the pspdev-win toolchain (psp-gcc 15.2.0).
What's included
| Library | Version | License |
|---|---|---|
| zlib | 1.3.1-7 | Zlib |
| libpng | 1.6.53-1 | libpng-2.0 |
| jpeg | 3.1.3-1 | custom (libjpeg-turbo) |
| bzip2 | 1.0.8-6 | custom (bzip2) |
| freetype2 | 2.11.0-9 | FTL OR GPL-2.0-or-later |
| libogg | 1.3.6 | BSD-3-Clause |
| libvorbis | 1.3.7 | BSD-3-Clause |
| tremor | 1.2.1git | BSD-3-Clause |
| pspgl | r12 | BSD-3-Clause |
| libpspvram | r11.885fd3f | MIT |
| sdl2 | 2.32.8 | Zlib |
| sdl2-image | 2.8.6 | Zlib |
| libmodplug | 0.8.8.5 | custom (public domain) |
| sdl2-mixer | 2.8.0 | Zlib |
| harfbuzz | 8.5.0 | MIT |
| sdl2-ttf | 2.24.0 | Zlib |
License texts for every library are included under licenses/ in the zip. Full version + release metadata in libraries.json at the zip root.
Install
Extract directly over an existing pspdev install:
# In your pspdev install dir (e.g. C:\pspdev or wherever PSPDEV points):
Expand-Archive pspdev-win-libraries-15.2.0-v1.zip -DestinationPath $env:PSPDEVResult: headers land under $PSPDEV/psp/include/, static libs under $PSPDEV/psp/lib/, pkg-config files under $PSPDEV/psp/lib/pkgconfig/. Same layout psp-pacman -S sdl2 would produce, but as a single immutable artifact instead of online installs.
Why a bundle?
psp-pacman -S sdl2 sdl2-image ... works on Windows (verified in CI), but each install hits the network, runs the package manager, and depends on the package server being up. This bundle ships the same outputs as a single offline-installable archive — useful for:
- Reproducible CI builds against a pinned library set
- Air-gapped development (no network needed after first install)
- Faster onboarding (one extract vs. running psp-pacman 16 times)
Toolchain compatibility
Built against psp-gcc 15.2.0 (pspdev-win windows-port). Compatible with:
- pspdev-win standalone MSYS2 installs (commit
15caa2cor later) - Upstream pspdev Linux/macOS installs (same psp-gcc 15.2.0)
- WSL2 with the Ubuntu pspdev release of the same toolchain version
ABI: PSP ELF, MIPS-II Allegrex, hard-float single-precision. Matches every other psp-gcc 15.x library build.
What this validates
This is the first end-to-end "Windows produces redistributable PSP artifacts" deliverable from the pspdev-win port:
- Standalone MSYS2 environment ✓
- psptoolchain (binutils + gcc + newlib + pspsdk) cross-build ✓
- psp-pacman + psp-makepkg infrastructure ✓
- 16-library Tier 1 build via PSPBUILD recipes ✓
- Reproducible zip artifact for downstream consumers ✓
Real-world consumers built against the same toolchain in this session: hash-bench-psp (32-algorithm crypto benchmark), totp-psp (RFC 6238 TOTP), btc-miner-psp (Bitcoin Stratum miner; v0.7 hits 25 kH/s in PPSSPP-JIT).
CI provenance
- Workflow run: 25974670477
- pspdev-win commit:
15caa2c - pspdev fork commit:
a0e6363(windows-port) - psp-packages commit:
f239560 - Build duration: 1h33m on
windows-2022GitHub-hosted runner - Toolchain: psp-gcc 15.2.0, binutils 2.43, newlib 4.4.0