7 ms·
You can make PS2 games in JavaScript
- twosdai 1y agoSuper cool. Thanks for sharing this. I've been looking for something like this for a while.
- kamranjon 1y agoThis 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
- mschuster91 1y agoMy 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/ https://xkcd.com/2347/
- sandermvanvliet 1y agoNano Banana to the rescue https://box2.codenizer.nl/cloud/index.php/s/ZYHdsYZ9rdRNM2B https://box2.codenizer.nl/cloud/index.php/s/ZYHdsYZ9rdRNM2B
- youainti 1y agothanks!
- bigfishrunning 1y agoWhy 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?
- theultdev 1y agoI'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.
- deaddodo 1y 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.
- wiseowise 1y ago> comic sans It's not comic sans though, you've already failed.
- deaddodo 1y agoOk
- cluckindan 1y agoYeah, everyone knows xkcd uses its own font, Humor Sans.
- walterreid 1y ago[dead]
- frizlab 1y agoOh I did not know that.
- 0x1ch 1y agoLooked him up, he quite literally pushed the first commits of QEMU ever. Edit: And was the sole developer until 2007!
- mclau153 1y agopeople will do anything to avoid using .gdscript and Godot....
- ronsor 1y agoI like Godot, but you're not getting it running on a PS2.
- charcircuit 1y agogdscript does not do any fancy JIT or AOT compiling. I don't see why you can't get gdscript running fairly easily.
- wk_end 1y agogdscript itself, sure, why not. Porting the entire Godot engine would be a real feat though, especially because of the PS2’s technical limitations.
- forgotpwd16 1y agoSomeone 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 https://github.com/ivandortulov/godot-ps2 [2]: https://itch.io/t/3658957/compiling-godot-for-the-playstation-2-progress-report https://itch.io/t/3658957/compiling-godot-for-the-playstatio... [3]: https://github.com/technicaljicama/godot-psp https://github.com/technicaljicama/godot-psp [4]: https://www.gamebrew.org/wiki/3D-Luck_PSP https://www.gamebrew.org/wiki/3D-Luck_PSP
- turnsout 1y agoTo be fair, it's not as simple as building in Godot and exporting to PS2.
- bob1029 1y ago
- dinobones 1y agoMega cool, I’m curious if there’s a way to burn the ISO to a disc and get this playing on a physical console?
- bakugo 1y agoYou'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.
- SpecialistK 1y agoUSB on the PS2 is limited to 1.0 or 1.1 speeds, so a disc may work better anyway.
- deaddodo 1y agoJust 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.
- kcb 1y agoCan also use a micro SD adapter through the mem card slot. Generally considered a bit better experience than a USB drive.
- forgotpwd16 1y agoUSB 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).
- SpecialistK 1y agoIs it possible to use PS1 games and USB simultaneously? I thought the USB was handled by the B/C chips.
- animanoir 1y ago[dead]
- Steve-Tony 1y ago[dead]
- _vqpz 1y agoAlready 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=45436166 https://news.ycombinator.com/item?id=45778448 https://news.ycombinator.com/item?id=45778448
- hombre_fatal 1y agoWhat'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.
- ohboyhereitgoes 1y ago[dead]
- deleted 1y ago[deleted]
- forgotpwd16 1y agoFirst link isn't by the author and second link is a different article...
- martijnvds 1y agoIBM PS2?
- unleaded 1y agoYes. https://github.com/SuperIlu/DOjS https://github.com/SuperIlu/DOjS
- Brian-Watkins 1y ago[dead]
- Flux159 1y agoThe 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.
- _james 1y agoThe 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.
- JSLegendDev 1y agoI 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 https://www.radicalfishgames.com/?p=6892
- Flux159 1y agoYeah, 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 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).
- IvanK_net 1y agoMaybe they could simply make a modern web browser for PS2, where you would simply open a website with the game :)
- wk_end 1y agoChrome 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.
- cluckindan 1y agoEasy peasy, just remove the telemetry.
- saghul 1y agoA similar thing, also using QuickJS, but for the Nintendo Switch: https://github.com/TooTallNate/nx.js https://github.com/TooTallNate/nx.js (I'm not the author).
- Flux159 1y agoNice, 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 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).
- forgotpwd16 1y agoCool 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.
- ycombiredd 1y agoThe 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 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.
- k3vinw 1y agomkisofs might also do the trick.
- ycombiredd 1y agoIt would, but it would be platform-specific and an external dependency. It was my first thought too until I started planning out it working cross-platform.
- mobeigi 1y agoEven the PS2 isn't safe from JavaScript.