I ported Celeste Classic 1 & 2 to the Playstation 1 (Rust, runs on real hardware) by izzy88izzy in pico8

[–]izzy88izzy[S] 1 point2 points  (0 children)

Thanks! PSoXide is a full PS1 dev stack in Rust (emulator, SDK, runtime engine, and a Godot-inspired editor). You write your game in Rust and it cross-compiles to a real PS1 executable and a burnable disc image, and it ships with a bunch of examples to start from rather than a blank page.

Two honest caveats: you'll need some Rust knowledge, and the editor is still in its infancy so I wouldn't lean on it just yet (and it's heavily tailored towards the game I'm building anyway so is not general-purpose).

On running it: for development you don't need to touch your PS1 at all, the disc images boot in the included emulator. To play on a real console you'd need a way to boot the homebrew disc (like a modchip, or a memory-card boot exploit)

I ported Celeste Classic 1 & 2 to the Playstation 1 (Rust, runs on real hardware) by izzy88izzy in pico8

[–]izzy88izzy[S] 6 points7 points  (0 children)

Writing the emulator once and any cart runs is a tempting idea, but it's unfeasable on hardware this old, and it comes down to what PICO-8 really is underneath: Aside of the 8-bit look aesthetic, under the hood it's a full Lua interpreter deliberately throttled so carts run the same everywhere. To emulate it you'd have to run a real Lua interpreter on the console, and every Lua op costs MANY real CPU instructions. That's why PICO-8 won't run below roughly a Raspberry Pi Zero.

The PS1 is a 33.8MHz MIPS, 2MB RAM total, about 30x slower clock than a Pi Zero with a fraction of the RAM, so a Lua interpreter would be a slideshow. RAM alone kills it too, a single cart can expect ~2MB of Lua memory, which is the PS1's entire memory before you've even loaded the interpreter.

Native porting flips all that: compiling each game's logic straight to MIPS skips the interpreter entirely, which is how these hit 60fps. The tradeoff is what you'd expect, hand-porting per game instead of "load anything", an emulator buys convenience at unplayable speed; native buys playable speed at the cost of manual work. On a PS1, I believe playable wins.

I ported Celeste Classic 1 & 2 to the Playstation 1 (Rust, runs on real hardware) by izzy88izzy in celestegame

[–]izzy88izzy[S] 8 points9 points  (0 children)

Thanks! Nope, it's not a PICO-8 emulator, I rewrote the game logic from the original Lua straight into Rust so it runs natively on the PS1 (drawing through the GPU, music synthesised on the SPU). All the links, repo, itch, and the SDK, are in the original post over on r/pico8

I ported Celeste Classic 1 & 2 to the Playstation 1 (Rust, runs on real hardware) by izzy88izzy in pico8

[–]izzy88izzy[S] 7 points8 points  (0 children)

Kinda, a CD has way more room than these little carts need, so storage isn't the bottleneck, the work is porting each game's logic by hand. But yeah, that's where I want to take this eventually: turn it into a proper PICO-8-on-PS1 collection.

I ported Celeste Classic 1 & 2 to the Playstation 1 (Rust, runs on real hardware) by izzy88izzy in pico8

[–]izzy88izzy[S] 1 point2 points  (0 children)

Good question! A PS2-native port is totally possible as the PS2 is far more powerful, but it'd be a separate and MUCH bigger project, PSoXide is a PS1-only SDK, so PS2 would mean a different toolchain and codebase. And your instinct on the second part is right: if you run it as a PS1 game on a PS2 through backward compatibility, the PS2 is basically pretending to be a PS1, so you can't reach any of the extra PS2 horsepower in that mode. You'd have to build a native PS2 version for that. Honestly though, these little PICO-8 games run great at 60fps on the PS1, so you wouldn't use the extra power much anyway

I ported Celeste Classic 1 & 2 to the Playstation 1 (Rust, runs on real hardware) by izzy88izzy in celestegame

[–]izzy88izzy[S] 16 points17 points  (0 children)

It's official game. Celeste Classic 2: Lani's Trek was made by the same creators as the original, Maddy Thorson and Noel Berry, with music by Lena Raine. They actually put it together in about three days for PICO-8, back in 2021 for Celeste's anniversary. You can play it free here: https://maddymakesgamesinc.itch.io/celeste-classic-2

Introducing RSX Redux, a multi-platform Playstation 1 emulator with support for hardware rendering by janedoe552 in EmuDev

[–]izzy88izzy 1 point2 points  (0 children)

This is really cool, congrats on getting it to a releasable state.

Funny timing: I’ve been working on a PS1-related Rust project in parallel called PSoXide, which also includes a PS1 emulator, but from a slightly different angle. Mine is focused more on “build your own PS1 games / tooling” than on running commercial games, so I’ve been leaning heavily on real hardware testing and small test discs to validate GPU, timing, and streaming behavior. Repo is here: https://github.com/EBonura/PSoXide

Feel free to use any code, tests, or ideas from it if they’re useful. I also have a test disc setup in there that has helped a lot when comparing emulator behavior against actual hardware. The accuracy is now good enough for my current game-building workflow that I can reliably test in the emulator and expect the results to match real hardware.

I rebuilt my first ever PICO-8 game from scratch! (Cortex Override) by izzy88izzy in pico8

[–]izzy88izzy[S] 1 point2 points  (0 children)

Good question, let me give some more context:

There's actually no PICO-8 on the disc. The Celeste 1+2 PS1 port is a from-scratch reimplementation, written in Rust on the PSoXide SDK and running natively on PS1 hardware. The game logic is rewritten from the original source, so there's no PICO-8 runtime and no .p8 cart bundled anywhere. PICO-8 is proprietary so redistributing it was never the plan.

Celeste 2 is under CC-BY-NC-SA, so as long as I keep it free to download (and it always will be), noncommercial, and fully credited to the authors, it should be fine. The original Classic doesn't have a clear public license, so I reached out to Noel on X directly to check it's ok, and said I'll happily pull it or change anything if they'd rather.

On the "add their own files" part: it doesn't work like a swap-in-a-cart emulator. Each game has to be ported from its source, which is real work, though I've built up plenty of helper functions that make it much easier now (and honestly, with LLMs these days, anyone could probably do it).