16 comments

[ 0.48 ms ] story [ 64.1 ms ] thread
Super cool. Thanks for sharing this. I've been looking for something like this for a while.
This is pretty incredibly - Fabrice Bellard builds stuff that just has such a wide spread impact - so cool that QuickJS enabled an old system like PS2 to have a bit of a homebrew revival through this AthenaEnv project
people will do anything to avoid using .gdscript and Godot....
Mega cool, I’m curious if there’s a way to burn the ISO to a disc and get this playing on a physical console?
The interesting part here is about AthenaEnv. It looks like it uses QuickJS for the Javascript interpreter and wraps around the native system libraries that the PS2 provides.

I'm wondering if there's a modern similar project that would allow writing Javascript Canvas games (WebGPU / WebGL) and publishing on Switch/2, PS5, and Xbox.

From my understanding, they explicitly disallow JITs so you can't just wrap your JS game with Electron / Node Webkit and use V8. I'm not sure if anyone has tried publishing a game using a V8-jitless electron fork - the sdks for consoles are under NDA so there's not really much written about it publicly & most games using Unreal or Unity don't deal with these things themselves.

PC, Mac, and even mobile are surprisingly easier here because you can just run the JS via electron or in a webview on mobile.

Maybe they could simply make a modern web browser for PS2, where you would simply open a website with the game :)
Cool article. AthenaEnv is an alternative follow-up to, also by same dev, Enceladus which uses Lua instead. Besides games they're used, and even more popular for this use case, homebrew apps. Examples being RETROLauncher & POPSLoader for Enceladus, and OSD-XMB for Athena.
The author's short diversion about the hassle of using a random website for zip2iso functionality and asking about a cli tool for doing such conversion lead me to create this cross-platform python script with no external dependencies: https://github.com/scottvr/GENISO/blob/main/ZIP2ISO.py

Longer explanation in the comments of TFA, but short version is that it was mostly "vibe-coded" using Gemini3 Pro instead of having to read the ISO9660 spec, which was also impressive to me.

Even the PS2 isn't safe from JavaScript.