PSP programming languages

Here’s a brief overview of the language options available to would-be PSP programmers.

Lua

Lua is far and away the most popular choice for PSP programming, judging by the quantity (if not necessarily quality) of homebrews coded in this language.

Beyond the original Lua Player, which struggles to work with modern firmware revisions, there are tons of interpreters to choose from.

Each one implements PSP-specific functions a bit differently, so code written for one interpreter won’t necessarily work with another.

Homebrew games and apps coded in Lua get a bad rep, but in the right hands, results can be impressive. The 3D rail shooter Gcrew’s Defense Patrol is entirely coded in Lua.

Screenshot

ONELua is the most recent out of all the Lua interpreters for PSP, as well as the best documented.

C / C++

C and C++ are what you would use with the unofficial PSP SDK. The choice languages of coders who want to go beyond the limits of Lua. There is plenty of PSP code in C stored on the PSP Archive, as well as elsewhere on GitHub.

The MINPSPW project used to be a popular Windows-based alternative to the PSP SDK for Linux. It has been abandoned in recent years, after being made obsolete by solutions such as Windows Subsystem for Linux.

There used to be dozens of sites and webpages devoted solely to C/C++ coding and tutorials for PSP, but nearly all have vanished over the years. A few surviving resources are gathered on this page.

More recently, Iridescence published a series of PSP coding tutorials on YouTube. The PSP-Dev Wiki also hosts a few resources.

Libraries

Countless libraries, game engines, guides and other resources were created to make it easier to code in C/C++ on PSP. Here are some of them:

Python

Python interpreters for PSP have been around since all the way back in 2005, but they were never as popular as Lua. All in all, only 20-odd PSP apps and games have been coded in Python since then.

One of the most impressive PSP homebrews coded in Python is Portable Bubble, a Puzzle Bubble clone by Germano Fabio.

Screenshot

A series of basic tutorials to Python coding on PSP were written by Acid_Snake back in 2012.

Rust

One of the newest additions to this list, the Rust PSP project started in May 2020, though earlier experiments with Rust on PSP date all the way back to 2014.

Not very much used so far, beyond a few coding samples.

Screenshot

BASIC

The PSP can run BASIC code thanks to PSP Yabasic. BASIC never really gained any traction on this device, but it should play homebrews coded for the official Yabasic port for PS2.

Another alternative for using this language on PSP is sdlBasic.

Ruby

Joyau is the name of the only Ruby interpreter for PSP. It was first published in 2009 - relatively late in the handheld’s lifespan, so it never managed to gain any following among developers. Still, the interpreter release does include some working code samples.

Javascript

The standard NetFront web browser is capable of natively running Javascript on PSP. Beyond that, a homebrew app named JS-Otello seems to run on an otherwise unknown Javascript interpreter of sorts.

Adventure Maker was a briefly popular commercial application for Windows that allowed its users to create Javascript games that could then be played on a PSP browser.

Quite a few point-and-click games were created with this app. Some are still available (one example here), but as the installer app for transferring the games from PC no longer works, there seems to be no easy way to actually play them.

Screenshot

C#

There is now some (basic) support for C# coding on PSP, thanks to Matt Emsom’s port of DotNet Anywhere. The developer also coded a version of Tetris to showcase the port’s abilities.

Assembly

Coding a PSP program in MIPS assembly alone is certainly a possibility, though not a popular one. The homebrews fully written in this language are no more than a handful - TyRaNiD’s Minifire being the best known. Another example of a standalone project in assembly is Iridescence’s Hello World.

Some learning resources are available, such as the MIPS page of the uOFW project.

Zig

Another recent addition to the PSP coding repertoire, the Zig port is yet to see any use beyond a few basic coding samples.

GameMaker

While calling it programming might be a stretch, a PSP port of GameMaker 8.1 and has seen increasing use in recent years.

First showcased in 2010, GameMaker for PSP has been used for two official PSP Mini releases before resurfacing as a homebrew project on GitHub nearly a decade later.

Flash

Another option made available through the NetFront internet browser, Flash coding only allowed for very limited projects on PSP, even when compared to Lua homebrews.

In 2007, Adobe themselves also published a short guide to creating Flash games for PSP.

An unofficial Flash player exists as well, but it performs no better than the official one.

The website pspflashgaming.com collects a number of games that were either created for PSP, or happen to be compatible with it.

Image credit: kibwen on Reddit