Hacker News new | ask | show | jobs
by fmbb 661 days ago
Pretty sure all 3D PS1 games tapped into assembly for performance.

The most “famous” thing about Crash programming is probably that it’s all in lisp, with inline assembly.

5 comments

I don’t think either of these things are true.

By the mid-90s, C compilers were good enough - and CPUs were amenable enough to C - that assembly was only really beneficial in the most extreme of cases. Sony designed the Playstation from the jump to be a 3D machine programmable in C - they were even initially reluctant to allow any bit-bashing whatsoever, preferring devs used SDKs to facilitate future backwards compatibility. No doubt some - even many - PS1 games dropped down into assembly to squeeze out more perf, but I doubt it’s anything like “all”.

As for Lisp, Crash used a Lisp-like language, “GOOL”, for scripting, but the bulk of the game would’ve been native code. It was with Jak & Daxter that they really started writing the game primarily in a Lisp (GOAL, GOOL’s successor).

Definitely not. I'm reverse-engineering Tenchu: Stealth Assassins and the original Japanese release's game code is written entirely in C as far as I can tell.

It does use the Psy-Q SDK which contains assembly, but it's not something that the game developers have written.

Both PS1 and N64 games were beyond the generation where direct assembly was required to achieve necessary performance.

Compilers were good enough by that point in time for the vast majority of games.

Most games were primarily C. 3D performance came from the graphics hardware, which had straightforward C APIs and dedicated texture RAM. The machine lacked a floating point processor, so I think we wrote some fixed point math routines in assembly, but that's basically it.
PS1 is famous among game developers for being the first games console for the home market with a C SDK, instead of only Assembly as programming option.

All games tap into Assembly, in some form or the other, even nowadays.