- https://news.ycombinator.com/item?id=9815011 - July 2015 - in which it is reported that Naughty Dog switched from GOOL/GOAL to Scheme, as they switched from C to C++ during PS2 -> PS3 transition.
There's also OpenGOAL which aims at rebuilding the whole GOAL architecture and disassembling jak & daxter to GOAL code so that it can be ported to more platforms and more easily modded.
https://github.com/water111/jak-project
Jak and Daxter's engine was freaking amazing on PS2.
The PS2 has a terrible CPU. Given the way the instruction cache works, you can hit a theoretical max icache hit rate of 7/8. Nothing hits that except synthetic demos that have no real application. Furthermore, you have a manually managed scratchpad memory (think manual L2 cache), and you have to be really clever to avoid stalling the CPU.
Your typical, hand-tuned C/C++ game on PS2 will be lucky to hit, perhaps, 50% cpu utilization. Jak and Daxter hits something in the upper 60% range, which is simply incredible. This means it's managing both its code and data exceedingly well. A naively written "simple" application, like the stuff you learn in software engineering class, will probably hit less than 20% CPU utilization, you have to work really hard for 50%.
I was once a game engine lead developer in the era of the Wii and PS2, and that game blew my socks off, since my incredibly "clever" code didn't even come close to their engine, I was proud to hit 50%.
When I read stories like this about cool technology from the past that people can still enjoy today, I think it's a pity that the source code is locked away and lost as people and companies move on to new things.
IMO, there should be some kind of archive that conserves and publishes them after some time has passed, so that they could be ported to new hardware and kept accessible. and somehow documented for future historians.
Re-releasing old games on new systems is pretty common. Crash Bandicoot got re-released on the PS4 for example. So companies are going to hold onto their assets in hopes of being able to cash in on them again.
Not all of them even have it. Once everyone moves on from a project unless the company has an archivist that stuff tends to get thrown away or forgotten about in some dusty drawer in some box of DAT tapes that everyone forgot about. I would say it would be around the very late 90s that companies started realizing they should hold onto that stuff. Even then...
Speaking of the Vita, I think many people may not know of the version of the PS Vita device that is known as PSTV. It’s a PS Vita that you connect to your TV and use with wireless PS3 and PS4 controllers. I have one of these that I bought because I wanted to jailbreak it as well as to buy some official games and run. Following a guide online, I was use able to jailbreak my PSTV using the Henkaku homebrew enabler.
Anyway, I personally like the PSTV and bought it rather than the regular Vita because I wanted to play Vita games but wanted to play them on a TV and using my PS4 controller.
The PSTV can play most Vita games, but some Vita games were blacklisted from being possible to play on the PSTV. That’s another place where, in addition to being able to run homebrew, jailbreaking your PSTV is useful. With my jailbroaken PSTV I can play Vita games that I paid for but which Sony blacklisted from being played on PSTV.
The reason Sony blacklisted most of the games they did is mostly because the portable Vita has some things like touch sensitivity on the back side, which some games Rey on. But I was able to emulate that feature with my PS4 controller. Don’t remember if that was a feature of vanilla PSTV or if it was enabled by the jailbreaking.
So yeah, check out PSTV if you are interested in Vita. I seem to recall that I paid about $50 for mine on eBay new in box. It came with a PS3 controller but I used it with the PS4 controller that I had instead because I like the PS4 controller better than the PS3 controller.
50 dollars? Wow. Before Persona 4 Golden came out on Steam, it was a Vita exclusive. I tried to get my hands on a PSTV to play it, and without remembering the exact price, it was hundreds of dollars at the very minimum everywhere.
I ended up playing Persona 4 Vanilla on emulator, then Golden when it came out on Steam.
Wonderful! I remember being obsessed with this game and the technology surrounding it. I think this + PG is what got me into Lisp and Scheme for a while. Still have this for PS2, and got the kids playing it about a year ago. Will have to remind them it's there.
I wonder if you can go a step further and make a decompiler that outputs something close to the original GOAL syntax. Once you have that, I guess you can then recreate the compiler and REPL tooling.
Disassembling Jak and Daxter - https://news.ycombinator.com/item?id=13385687 - Jan 2017 (32 comments)
A few related threads - others?
How Crash Bandicoot hacked the original Playstation [video] - https://news.ycombinator.com/item?id=22439752 - Feb 2020 (77 comments)
Lisp in Jak and Daxter - https://news.ycombinator.com/item?id=17133557 - May 2018 (25 comments)
Parallelizing the Naughty Dog Engine Using Fibers [video] - https://news.ycombinator.com/item?id=9309665 - April 2015 (11 comments)
Naughty Dog still uses Lisp in its videogames - https://news.ycombinator.com/item?id=1194873 - March 2010 (5 comments)
Game Oriented Assembly Lisp - https://news.ycombinator.com/item?id=2090554 - January 2011 (7 comments)
Some comment threads on Naughty Dog and Lisp:
- https://news.ycombinator.com/item?id=1998321 - December 2010 - in which Andy Gavin himself talks about GOOL and GOAL.
- https://news.ycombinator.com/item?id=9815011 - July 2015 - in which it is reported that Naughty Dog switched from GOOL/GOAL to Scheme, as they switched from C to C++ during PS2 -> PS3 transition.
The announcement blog post is interesting: https://blog.jakspeedruns.com/opengoal-project-update-septem...
The PS2 has a terrible CPU. Given the way the instruction cache works, you can hit a theoretical max icache hit rate of 7/8. Nothing hits that except synthetic demos that have no real application. Furthermore, you have a manually managed scratchpad memory (think manual L2 cache), and you have to be really clever to avoid stalling the CPU.
Your typical, hand-tuned C/C++ game on PS2 will be lucky to hit, perhaps, 50% cpu utilization. Jak and Daxter hits something in the upper 60% range, which is simply incredible. This means it's managing both its code and data exceedingly well. A naively written "simple" application, like the stuff you learn in software engineering class, will probably hit less than 20% CPU utilization, you have to work really hard for 50%.
I was once a game engine lead developer in the era of the Wii and PS2, and that game blew my socks off, since my incredibly "clever" code didn't even come close to their engine, I was proud to hit 50%.
IMO, there should be some kind of archive that conserves and publishes them after some time has passed, so that they could be ported to new hardware and kept accessible. and somehow documented for future historians.
Along with Ratchet and Clank, some of favourite teenage memories
Anyway, I personally like the PSTV and bought it rather than the regular Vita because I wanted to play Vita games but wanted to play them on a TV and using my PS4 controller.
The PSTV can play most Vita games, but some Vita games were blacklisted from being possible to play on the PSTV. That’s another place where, in addition to being able to run homebrew, jailbreaking your PSTV is useful. With my jailbroaken PSTV I can play Vita games that I paid for but which Sony blacklisted from being played on PSTV.
The reason Sony blacklisted most of the games they did is mostly because the portable Vita has some things like touch sensitivity on the back side, which some games Rey on. But I was able to emulate that feature with my PS4 controller. Don’t remember if that was a feature of vanilla PSTV or if it was enabled by the jailbreaking.
So yeah, check out PSTV if you are interested in Vita. I seem to recall that I paid about $50 for mine on eBay new in box. It came with a PS3 controller but I used it with the PS4 controller that I had instead because I like the PS4 controller better than the PS3 controller.
I ended up playing Persona 4 Vanilla on emulator, then Golden when it came out on Steam.
I wonder if you can go a step further and make a decompiler that outputs something close to the original GOAL syntax. Once you have that, I guess you can then recreate the compiler and REPL tooling.