Hacker News new | past | comments | ask | show | jobs | submit login
Disassembling Jak and Daxter (2017) (codersnotes.com)
153 points by pmarin on Sept 3, 2021 | hide | past | favorite | 29 comments



One thread from when the article came out:

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)


Also:

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.


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

The announcement blog post is interesting: https://blog.jakspeedruns.com/opengoal-project-update-septem...


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.


Perhaps a crowdsourced bounty system, which pays the rights holders if they open-source it.


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...


True, maybe the idea will make more sense in 10+ years.


Jak and Daxter is a fantastic series, the fact that you can get it on PS Vita makes it all the better.

Along with Ratchet and Clank, some of favourite teenage memories


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.


Sorry it was a long time ago and I looked it up and actually it was more than I said. I bought it on Amazon, not eBay it turned out, and I paid closer to what you said.

I ordered mine in October of 2016 according to my Amazon history (holy shit, time flies! I would have guessed 2018 or 2017), and I paid $130 for it at the time. New in box. It came bundled with a Lego Movie game and a DualShock 3 controller, and I bought some second hand Vita games that I played on it.

I used my PS4 controller with it instead of the PS3 controller that came with it, and let a friend borrow the PS3 controller for use with her PS3. She never returned the controller actually, but that's ok – she gave me a hoodie once, and I don't like PS3 controllers all that much anyways :p

I have actually heard about this effect when I was in university, that if we are happy with a product we tend after a while to think we paid less for it than we did. So at least it might be an additional indicator to anyone reading this that I really was happy about my PSTV :^)


Yeah, but on the Vita they run around 20 frames, which is not the way they were supposed to be experienced. It's 60 everywhere else.


I don't remember this happening to me, but maybe its rose tinted glasses


What? I was just thinking I’ll have to pick it up. Why is this the case?


Same here! I wish they continued with the IP creating some new stories rather than just releasing remasters


If you like this stuff, I recommend the Coding Secrets YouTube channel, where a developer shows off his past work and secrets to how a game came about, Eg https://youtu.be/Z0S92Fs5gOg and https://youtu.be/iEQLbbyToxw


And keep in mind the jak and daxter games run on 60fps on the ps2. The ps3 remaster and the ps4 emulated version also run at 60.


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.


So this project provides a disassembler for GOAL.

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.



So I just read this article and it is bananas. Highly recommend the full read.


Are you Jason Rubin?


Maybe I should code my Sticks 'N Steel sequel in a custom language, instead of using Unity. makes crazy eyes


> To create your own programming language, from scratch, and then write the entire game engine in it. I don't know of any other games out there that do that.

scummVM is a "gameVM" written by LucasArts. "Another World" did something similar.

So it was pretty common on old days (near '90).


Scumm etc are only writing the game in their own language, not the entire engine. The engine remains in C/asm/whatever.


Its still pretty common to create a scripting language, especially when you need loop holes around AOT compiles.

Although its not the only language and usually not from scratch. For a while "some kind of LUA" was pretty popular.


Sierra games of the era also did this, very similar to how scummVM works.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: