You can make PS2 games in JavaScript
281 points
by tosh
21 hours ago
| 12 comments
| jslegenddev.substack.com
| HN
kamranjon
20 hours ago
[-]
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
reply
mschuster91
20 hours ago
[-]
My photoshop skills are near zero, otherwise I'd have long gone and edited xkcd 2347 [1] to say next to the pillar "Something Fabrice Bellard probably implemented while half asleep just to prove he could do it".

There's a lot of FOSS projects that have something written by him in their dependency chain.

[1] https://xkcd.com/2347/

reply
sandermvanvliet
19 hours ago
[-]
reply
bigfishrunning
17 hours ago
[-]
Why use an LLM to do something that would take exactly the same amount of time and a lot less energy to just do in something like MS paint?
reply
augusto-moura
12 hours ago
[-]
I don't really know, but finding the right font family might take more time than the LLM
reply
QuantumNomad_
2 hours ago
[-]
In the case of xkcd you can mimic it with this one:

xkcd-font

Fonts derived from the handwriting of Randall Munroe, the xkcd webcomic author.

https://github.com/ipython/xkcd-font

reply
echelon
47 minutes ago
[-]
Because Nano Banana is better than wasting time for someone who isn't a 10 year veteran of MS Paint arts.

I'm tired of this kind of argument from anti-AI folks.

"Why not pick up a pencil instead?"

What if illustration was never "art"? What if it was always just a rote mechanical skill and the art itself was what the person was trying to communicate?

Maybe the technical aspects don't matter. Maybe it's the message we're conveying, our taste, our curation, our unique lens?

reply
wiseowise
15 hours ago
[-]
> Why use an LLM to do something that would take exactly the same amount of time and a lot less energy to just do in something like MS paint?

Can you prove that it'll take same amount of time for someone with

> My photoshop skills are near zero

to replicate the same level of quality as the generated image? From the looks of it, LLM managed to generate pixel perfect (or at least similar) font and probably took a fraction of a minute for the author to generate.

reply
PostOnce
15 hours ago
[-]
1] delete the text

2] select any handwriting font

3] replace the text

no one will know the font was changed, no skills required.

AI is going to utterly cripple people intellectually and motivationally.

If you can't even do the above ten second process, you may want to make more of an effort before you find yourself utterly fucked and starving.

reply
forgotpwd16
14 hours ago
[-]
>no one will know the font was changed

You're underestimating the effect typography has.

>you may want to make more of an effort

You seriously saying someone should put effort in editing a comic they didn't even cared on editing until they saw someone's comment? And somehow you equate the not putting effort to editing such comic to being fucked and starving?

AI hate sometimes makes people really lose their mind. Doing pointless random shit like this is a legit AI good application. Something that needs no creativity nor intellect to do. Just time. (And, most certainly, more than 10s.)

reply
PostOnce
11 hours ago
[-]
Two parent comments suggested that a deep level of skill is required to:

1] drag a box around the text and press Delete 2] type some new text in there in a similar handwriting font

The implication is that we're all too stupid and everything is too hard to do even tasks so simple that they take double-digit seconds to accomplish for people with rudimentary computer skill.

We can do things. Saving 5 seconds is going to hurt worse than it helps in the long run... like asking GPT what 2+2 is because you can't figure it out.

reply
wiseowise
6 hours ago
[-]
> Saving 5 seconds is going to hurt worse than it helps in the long run... like asking GPT what 2+2 is because you can't figure it out.

Looks line it has already started. See a therapist, please, you have an obsession.

reply
PostOnce
6 hours ago
[-]
It's better to consider the consequences of possible futures than not to; considering the future makes us human.
reply
maddmann
59 minutes ago
[-]
“ AI is going to utterly cripple people intellectually and motivationally. If you can't even do the above ten second process, you may want to make more of an effort before you find yourself utterly fucked and starving.”

This does not sound like intellectual curiosity. Closer to polarized discourse that imho is making us less human.

reply
ddingus
1 hour ago
[-]
Actually, a fair number of us will see the font change.

People are more aware of typography than you may realize.

...maybe you do!

In which case, this makes real sense: "[almost] nobody will care."

I wouldn't, but I sure would note the font change.

reply
Almondsetat
6 hours ago
[-]
Do it yourself on live video. Otherwise this is such a baseless and needlessly accusatory comment
reply
theultdev
16 hours ago
[-]
I'd like to see metrics on that. But intuitively I'd say AI is faster.

Basically it's opening the tab and typing your thought vs speed running paint.

@sandermvanvliet what was the process and how long do you estimate it took you?

Personally it would take me awhile to find the template, the exact font and get the positioning just right.

I could make a crude one fast, and I've seen many crude versions of this meme. But matching the font is a bit more work, maybe there's a generator for it, but that's not paint nor do I know where it exists.

reply
deaddodo
16 hours ago
[-]
“Speed running paint”? You mean opening the image and dragging a text box over the existing text, changing the font to comic sans, and typing the text?

There are complicated workflows in Paint, this is not one of them.

reply
wiseowise
15 hours ago
[-]
> comic sans

It's not comic sans though, you've already failed.

reply
fooofw
14 hours ago
[-]
Why have you failed though? Is the point to try to deceive people to think that XKCD actually published something else? Why not modify the xkcd one without hinding the fact that you modified it?
reply
theultdev
7 hours ago
[-]
that fact you think it looks so good that it deceives is a point for ai.

the point is to make a quality meme fast. the guy he replied to appreciated it.

any fan of xkcd knows the original.

reply
deaddodo
15 hours ago
[-]
Ok
reply
cluckindan
14 hours ago
[-]
Yeah, everyone knows xkcd uses its own font, Humor Sans.
reply
frizlab
10 hours ago
[-]
Oh I did not know that.
reply
youainti
18 hours ago
[-]
thanks!
reply
0x1ch
18 hours ago
[-]
Looked him up, he quite literally pushed the first commits of QEMU ever. Edit: And was the sole developer until 2007!
reply
deaddodo
16 hours ago
[-]
Fabrice’s DNA is infused in the FOSS ecosystem. He’s an avid and prolific developer. FFMpeg, Qemu, libbf, softfp, BPG, jslinux, etc, etc, etc.
reply
tombert
16 hours ago
[-]
And ffmpeg. And TinyC. And a bunch of other things. The dude is a legend.
reply
ycombiredd
9 hours ago
[-]
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.

reply
k3vinw
3 hours ago
[-]
mkisofs might also do the trick.
reply
Flux159
17 hours ago
[-]
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.

reply
JSLegendDev
15 hours ago
[-]
I think the game Cross Code (a game written in JS) was ported to consoles using a pretty complex process.

Here is a detailed blog post about the topic : https://www.radicalfishgames.com/?p=6892

reply
Flux159
15 hours ago
[-]
Yeah, I saw the video about that earlier which is what led me to wonder if there was a native JS way now.

They used Kha in order to port only the console versions, the desktop versions remained JS from my understanding: https://github.com/Kode/Kha which is built on top of Haxe. This works, but it also means not having a single codebase anymore which would be one of the benefits of a JS based system.

There are other options here - something like using an AOT JS compiler like Porffor, but from my understanding it's never been tested (and would probably be missing a lot of support to get it working - like shimming canvas & providing a WebGPU context that the compiled JS could execute against).

reply
_james
16 hours ago
[-]
The official Nintendo 3DS and Wii U SDKs both provided an Electron-like framework that allowed games to be written with web technologies. I seem to recall that it was discontinued at some point before the Switch? The Switch does have a WebKit browser applet that games can call to display web-based content, but it's pretty limited since JIT is disabled like you say. I've only ever seen it used for e-manuals.
reply
dinobones
20 hours ago
[-]
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?
reply
tylergetsay
19 hours ago
[-]
Combined with https://github.com/CTurt/FreeDVDBoot, I think it would be possible
reply
accrual
19 hours ago
[-]
FreeMcBoot on a memory card + USB flash drive (or internal disk) is a popular option to play on real hardware. Saves wear and tear on the optical drive too.
reply
Forgeties79
16 hours ago
[-]
I have sat on a freemcboot mem card for probably 6 years now. I’ll get around to it eventually…
reply
accrual
15 hours ago
[-]
It's a good time! I feel the PS2 is an iconic member of any living room TV setup, especially with an SSD, a couple controllers, and component out. Nice to have for hangouts!
reply
Forgeties79
13 hours ago
[-]
Oh damn can you get some real performance boost out of an SSD? Do you install it or does it hang out externally?
reply
bakugo
19 hours ago
[-]
You'd need to hack the console to get it to load a burned disc, but if you can do that, you can also just load it from USB.

Though I guess you could burn it to a disk anyway purely for the sake of authenticity.

reply
SpecialistK
18 hours ago
[-]
USB on the PS2 is limited to 1.0 or 1.1 speeds, so a disc may work better anyway.
reply
deaddodo
15 hours ago
[-]
Just to clarify, the difference on the PS2 is:

* CD: 3.6MB/s

* DVD: 5-8MB/s

* USB: 0.8-1.1MB/s

So the disk would almost definitely be the better option.

reply
forgotpwd16
13 hours ago
[-]
USB is fine for PS1/retro games; should be more than enough for AthenaEnv. The difference only matters for PS2 backups. And there're more options than those two. HDD/SSD, Ethernet, MX4SIO/SIO2SD, MMCE (SD2PSX et al).
reply
SpecialistK
13 hours ago
[-]
Is it possible to use PS1 games and USB simultaneously? I thought the USB was handled by the B/C chips.
reply
forgotpwd16
12 hours ago
[-]
That's true; network too. Can play digital backups (off USB/Eth) only by using POPStarter (for those unaware, POPS being Sony's PS1 emulator ripped off the single game that was officially used on). Although POPS isn't really that good (was used, experimentally, only once afterall), USB throughput isn't an issue.
reply
kcb
15 hours ago
[-]
Can also use a micro SD adapter through the mem card slot. Generally considered a bit better experience than a USB drive.
reply
deadbabe
19 hours ago
[-]
Why use physical disc instead of some optical drive mod
reply
hamdingers
18 hours ago
[-]
ODEs aren't common for the PS2 because they already support flash drives, network shares, and (for fats) full size hard drives.
reply
mobeigi
4 hours ago
[-]
Even the PS2 isn't safe from JavaScript.
reply
saghul
15 hours ago
[-]
A similar thing, also using QuickJS, but for the Nintendo Switch: https://github.com/TooTallNate/nx.js (I'm not the author).
reply
Flux159
15 hours ago
[-]
Nice, this is similar to what I was wondering about - it looks like it's pretty limited in capability right now (looks like it only supports canvas2d at the moment: https://nxjs.n8.io/runtime/rendering/canvas), but in theory it would allow you to make a layer to convert WebGPU or WebGL games for Switch (ignoring the huge performance drop going from v8 / jit JS engines to QuickJS).
reply
forgotpwd16
14 hours ago
[-]
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.
reply
IvanK_net
16 hours ago
[-]
Maybe they could simply make a modern web browser for PS2, where you would simply open a website with the game :)
reply
wk_end
15 hours ago
[-]
Chrome apparently has a minimum memory requirement of 4GB, so you'd need to shrink it down to one-one-hundred-and-twenty-eighth its size to squeeze it into the PS2's 32MB of RAM.
reply
cluckindan
14 hours ago
[-]
Easy peasy, just remove the telemetry.
reply
twosdai
20 hours ago
[-]
Super cool. Thanks for sharing this. I've been looking for something like this for a while.
reply
mclau153
20 hours ago
[-]
people will do anything to avoid using .gdscript and Godot....
reply
ronsor
19 hours ago
[-]
I like Godot, but you're not getting it running on a PS2.
reply
charcircuit
19 hours ago
[-]
gdscript does not do any fancy JIT or AOT compiling. I don't see why you can't get gdscript running fairly easily.
reply
wk_end
16 hours ago
[-]
gdscript itself, sure, why not. Porting the entire Godot engine would be a real feat though, especially because of the PS2’s technical limitations.
reply
forgotpwd16
5 hours ago
[-]
Someone did compile Godot (v2) for PS2 and did run it but seems like they gave up trying to run/export any games with it[1][2]. Somehow, the PSP port[3] (also v2) is more successful[4].

[1]: https://github.com/ivandortulov/godot-ps2 [2]: https://itch.io/t/3658957/compiling-godot-for-the-playstatio... [3]: https://github.com/technicaljicama/godot-psp [4]: https://www.gamebrew.org/wiki/3D-Luck_PSP

reply
turnsout
19 hours ago
[-]
To be fair, it's not as simple as building in Godot and exporting to PS2.
reply
bob1029
19 hours ago
[-]
https://github.com/distrohelena/retrongin

Unity has at least one experimental option that does exactly this.

reply
turnsout
19 hours ago
[-]
It's too bad that Unity is a horrible company and a dying platform
reply
martijnvds
18 hours ago
[-]
IBM PS2?
reply
unleaded
17 hours ago
[-]
reply
ikamm
18 hours ago
[-]
Already been posted here twice by the dev in the past two months...

https://news.ycombinator.com/item?id=45436166

https://news.ycombinator.com/item?id=45778448

reply
hombre_fatal
18 hours ago
[-]
What's the point of linking discussions that have one comment each?

The reason you see @dang link past submissions is so we can read previous interesting discussion, not to shame submissions that got no traction.

reply
forgotpwd16
11 hours ago
[-]
First link isn't by the author and second link is a different article...
reply