Hacker News new | ask | show | jobs
by djtango 661 days ago
Thanks for sharing!

Back then the appeal of console games to me were that beyond a convenient factor, they were also very specialised hardware for one task - running games.

I remember playing FF12 (IZJS) on a laptop in 2012 and it ran very stable granted that was 6 years post release but by then had the emulator issues been fully solved?

Re. Wild time for low level programming I remember hearing that Crash Bandicoot had to duck down into MIPS to eke out every extra bit of performance in the PS1.

3 comments

I heard something similar with Jak and Daxter, where they took advantage of the embedded PS1 hardware on the PS2 to scrape together some extra performance.

I very much enjoyed this video that Ars Technica did with Andy Gavin on the development of Crash Bandicoot: https://www.youtube.com/watch?v=izxXGuVL21o

Most PS2 games used the PS1 hardware for audio/sfx so you freed the main CPU for rendering/gameplay.

I believe Gran Tourismo 3 used the ps1 hardware for everything except rendering, which was the kind of nuts thing you could do if your games were single platform and with huge budget.

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.

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.

Would programmers now be able to make God of War 2, FF12, Jak 2&3 and Ratchet and Clank 3&Deadlocked? PS2, slim especially, is an incredible machine. Scale the games up to 1080p or 1440/4k and they look great still.