[HN Gopher] How Crash Bandicoot hacked the original Playstation ...
       ___________________________________________________________________
        
       How Crash Bandicoot hacked the original Playstation (2020) [video]
        
       Author : agomez314
       Score  : 280 points
       Date   : 2022-08-31 15:28 UTC (2 days ago)
        
 (HTM) web link (www.youtube.com)
 (TXT) w3m dump (www.youtube.com)
        
       | mkjonesuk wrote:
       | Watched this a few times since it was released. Real talent and
       | determination.
       | 
       | Sounds bad but I've recently put this on a couple of times as
       | background video to fall asleep to as well. Work's like a charm!
        
       | andrepd wrote:
       | All of that series of videos is outstanding. Here is another of
       | my favourites: https://yewtu.be/watch?v=qzD9ldLoc3c
        
         | RL_Quine wrote:
         | I find it really hard to watch because of the really constant
         | camera focus changes, I don't know why anybody would edit video
         | to be so annoying.
        
         | acomjean wrote:
         | Yew tube. (I expected trees..)
         | 
         | I've seen a few in the series. Less technical but The NES comes
         | to America is pretty good
         | 
         | https://youtu.be/Sn5v09L_uDg
         | 
         | And the Ultima online tried create programmatic eco system is
         | kinda hysterical.
         | 
         | 7 minutes (with lord British)
         | 
         | https://youtu.be/KFNxJVTJleE
         | 
         | Ars (the publisher)has a whole list of them. Non YouTube but
         | seem to have transcripts.
         | 
         | https://arstechnica.com/video/series/war-stories
        
       | ElCapitanMarkla wrote:
       | Andy Gavin's blog on this is a 10/10 read - https://all-things-
       | andy-gavin.com/2011/02/02/making-crash-ba...
       | 
       | It comes up every year or so on here and every time I end up
       | rereading that series from start to finish.
        
         | stepupmakeup wrote:
         | "My Hardest Bug Ever" is also a fascinating read, also about
         | Crash Bandicoot on PS1.
         | https://www.gamedeveloper.com/programming/my-hardest-bug-eve...
        
       | [deleted]
        
       | louthy wrote:
       | Anybody who did PS1 dev back in the day will have had to do some
       | crazy hacking stuff to get performance or memory. The first
       | project [1] I worked on I had a C version of my graphics engine
       | and animation system, and in parallel I'd have a MIPS assembly
       | version which was super optimised (the C version was effectively
       | a reference).
       | 
       | I made the whole engine and animation system fit in 4K so it
       | would fit into the instruction cache of the CPU. The whole frame
       | update cycle wouldn't need to touch main memory (for the code).
       | 
       | Also, because loading from main memory was slow (4 cycles) and
       | the chip was RISC (1 operation per cycle), you'd need 3 NOPs
       | after the Load-op for the register to be loaded. The C compiler
       | (if I remember right) never really filled those 3 NOPs with
       | useful stuff. So, I'd do hand written concurrency (in MIPS
       | assembly) by loading other stuff I'd need into those NOPs - this
       | was particularly effective when working with 3 dimensional
       | vectors or 4 dimensional matrices.
       | 
       | Trying to keep super-optimised hand-written concurrency in
       | assembly, in my head, was a challenge and not something I'd
       | recommend! Still, the engine had more throughput than Sony
       | claimed of their machine. Every bit of performance gained would
       | mean an edge over the other games.
       | 
       | Then the game was canned by Eidos. Pretty devastating for my
       | first industry job :/
       | 
       | [1] https://www.unseen64.net/2020/11/16/lunatik-pure-
       | entertainme...
        
         | pjmlp wrote:
         | Thanks for sharing the experience.
         | 
         | This is effectively what younger generations that praise C
         | don't get, the kind of tricks that most game developer had to
         | do 20 - 30 years ago in home computers and game consoles, given
         | the bad quality of C compilers in regards to code generation.
        
           | [deleted]
        
         | JohnBooty wrote:
         | Ah! I remember looking forward to that one. Based on the press
         | coverage it seemed like a "modern" of Sinistar, a favorite of
         | mine.
        
         | moonchrome wrote:
         | >Then the game was canned by Eidos.
         | 
         | I've seen this pattern so many times in my time doing
         | development (although I haven't done game development
         | professionally), and why I tell people to avoid early
         | development optimization. Trying to get things working correct
         | and fast at the same time is an insane ammount of work, by the
         | time you're done the requirements probably changed or the
         | project flops, you'd be better off just getting something to
         | satisfy minimum requirements first then make it fast.
        
           | louthy wrote:
           | To a certain extent I agree with you. But when the game
           | doesn't even fit in the RAM of a development system (4mb),
           | never mind the 2mb of a real Playstation, or movement is 5
           | frames a second rather than 30/60 it's still very hard to get
           | gameplay aspects right. And when the graphics engine, level
           | editors, etc. don't even exist yet, you're not making any
           | game!
           | 
           | In the 10 years I was in the industry (pre the era of off the
           | shelf engines) I never saw a single title in a playable state
           | until the last 6 months of the project, and sometimes later.
           | My era was PS1, PS2, Dreamcast, original Xbox, Gamecube. I
           | left as the PS3 was in its pre-release period.
           | 
           | I think for most games the dynamics are quite well known, and
           | so it's less problematic if it's started later. But, in this
           | case none of the dynamics of the game were worked out at any
           | point, so it was doomed to fail.
           | 
           | On Lunatik I wasn't responsible for the game dynamics, I had
           | one job: make the engine, and make it as fast as humanly
           | possible so that the game and level designers can make a
           | decent game. So, it's not either or, but it does take time to
           | have the initial version that the team can work with (my C
           | reference engine mentioned before).
           | 
           | One final point is that it's less about early optimisation
           | and more about poor management, short timescales, and the
           | balance of cash given to a team when signing with a
           | publisher. When the money runs out, then you're in the lap of
           | the publisher gods - it can go either way for many different
           | reasons, some of which might have nothing to do with the
           | game.
           | 
           | I suspect it's more professional now (and with better
           | tooling), back then it was still pretty much a cottage
           | industry: quite a large cottage industry, sure, but still
           | pretty amateurish in terms of project management and
           | planning. There wasn't a title I worked on that didn't
           | overrun.
        
             | Melatonic wrote:
             | You ever develop games for the Dreamcast? What was that
             | like?
        
               | louthy wrote:
               | Yes, although not a full title. It was the period between
               | PS1 and PS2 and no publishers were committing until they
               | knew what was happening with PS2 (because of the
               | outrageous success of the PS1). I built a bezier-patch
               | based engine for it and physics system, and we produced
               | two fun little game demos to try and get publisher
               | funding, but it didn't come.
               | 
               | It was super easy and fun to develop for (which after the
               | pain of the Saturn was a relief). It's a real shame it
               | didn't get more support, it just arrived at the wrong
               | time.
        
               | bennysomething wrote:
               | That's interesting. Would it have been better if sega had
               | wait until post PS2? The Dreamcast was the last console I
               | loved. I bought one on launch day. But I think looking
               | back it was always doomed. I can't recall properly but I
               | think it was someone in EA or high up in sega America who
               | tried to persuade sega Japan that they wouldn't survive
               | with the type of games they were planning for the
               | Dreamcast. Oh well in those two years the Dreamcast had
               | some of my favourite games.
        
               | louthy wrote:
               | I'm not sure if delaying it would have made any
               | difference. PS1 was a zeitgeist machine, especially with
               | titles like wipEout. I remember going to underground
               | nightclubs in London and there'd be a chillout room with
               | Playstations in. The Dreamcast just wasn't cool enough I
               | guess.
               | 
               | I think Sega also seriously fucked up with the Saturn.
               | There were lots of claims of it being more powerful than
               | the PS1, but nobody could extract that power really. A
               | Saturn dev at a studio I worked at had a complete
               | breakdown just trying to keep up with what I was doing on
               | the PS1. I feel they burned a lot of industry bridges
               | with that machine.
               | 
               | I'd have loved to see the Dreamcast succeed because I'd
               | always been a big fan of Sega, but I think a lot of
               | things just went awry for them.
        
             | moonchrome wrote:
             | Wasn't trying to suggest it was premature (especially if
             | you couldn't have more powerful devkit/device to prototype
             | on) just envisioning someone burning long hours and stress
             | to meet deadlines and then the work gets wasted because of
             | various reasons. I've done that so often during early
             | career - nowadays I'm much happier doing bare minimum
             | untill it's absolutely necessary - I just don't have the 12
             | hours a day energy in me :)
        
           | jayd16 wrote:
           | >correct and fast
           | 
           | And usually you only need 'mostly correct.'
        
           | AdmiralAsshat wrote:
           | I see engine re-use quite alot in game development, though,
           | so there's always the chance that if you make a really bang-
           | up engine, it might eventually see the light of day in
           | another project, even if the original one was canned.
           | 
           | In the context of Eidos, for example, I seem to recall that
           | Gex 3's game engine (which was a mediocre game at best) ended
           | up being re-used/tweaked for Soul Reaver (which was an
           | _amazing_ game).
        
             | louthy wrote:
             | Now for sure, but back then any generalisation would
             | potentially cost clock cycles or memory, so an engine would
             | be fine tuned for the game in front of us. It would be
             | entirely possible to take that engine and use it for a
             | similar game, but then you hit the problem of needing to
             | extend it for the new game - which is hard when you've
             | optimised it to the nth degree and you can't see the wood
             | for the trees.
             | 
             | One thing I saw after I'd worked on 'Fireblade' for PS2 &
             | XBox [1], we took its engine and tooling (which had also
             | been used for 'Reign of Fire' [2] in parallel) for our next
             | title 'Battalion Wars' for Nintendo. After 6 months of
             | fighting the system we downed tools for 3 months just to
             | refactor everything. It was the first time I'd seen a real
             | aggressive, whole team, refactor - and it worked, but
             | really the engine & tooling just weren't right for the game
             | and shouldn't have been taken without a commitment to
             | making it fit-for-purpose for the game we were about to
             | build. It cost us time at the end of the project, and for a
             | while we weren't sure if Nintendo would keep funding it -
             | luckily it worked out (and is actually the game I'm most
             | proud of working on).
             | 
             | But yeah, once the consoles got more powerful and had more
             | memory it was possible to start building core tech for
             | multiple games, which is what I did for the last 4 or 5
             | years of my time in games.
             | 
             | [1] https://en.wikipedia.org/wiki/Fire_Blade_(video_game)
             | 
             | [2]
             | https://en.wikipedia.org/wiki/Reign_of_Fire_(video_game)
             | 
             | [3] https://en.wikipedia.org/wiki/Battalion_Wars
        
               | AdmiralAsshat wrote:
               | Oh, wow, Battalion Wars! I never managed to beat it
               | (surprisingly hard, IIRC), but I remember being blown
               | away that a developer had actually tried to implement
               | both the top-down RTS mechanic _and_ the grunt-on-the-
               | ground 3PS mechanic in the same game. I don 't think
               | anyone had really tried that since Dungeon Keeper, and
               | rarely since.
               | 
               | Off the beaten path here, but just for my own curiosity:
               | did Nintendo seek you guys out when they wanted a third
               | party to try their hand at the license, or did you go to
               | them with the pitch for "3D Advance Wars in real time"?
        
               | louthy wrote:
               | > surprisingly hard, IIRC
               | 
               | It was much harder pre-release, we had to tone it down!
               | Although that's relatively normal when you get a room
               | full of hardcore gamers making games :)
               | 
               | > both the top-down RTS mechanic and the grunt-on-the-
               | ground 3PS mechanic in the same game
               | 
               | Yeah, that was something I particularly liked - it took a
               | loooooooong time to get the squad control right, but I
               | think it worked nicely. One interesting artefact is the
               | sweeping camera movements (when switching units) and the
               | follow camera algorithm was something I originally
               | invented (probably reinvented) for Lunatik and I built it
               | into Battalion Wars - so it bookended my time in games!
               | 
               | > Off the beaten path here, but just for my own
               | curiosity: did Nintendo seek you guys out when they
               | wanted a third party to try their hand at the license, or
               | did you go to them with the pitch for "3D Advance Wars in
               | real time"?
               | 
               | I thought I remembered this, and I thought they came to
               | us, but the more I think about it the less sure I am of
               | that fact! I'm now semi-thinking that we pitched the idea
               | (not as Advance Wars) and they said "Let's make it
               | Advance Wars 3D". But, yeah, passage of time, makes me
               | question that. Sorry!
        
         | birracerveza wrote:
         | Oh wow. Why did it get canned? The tech demo looks amazing.
         | 
         | EDIT: nvm it's in the post
        
           | louthy wrote:
           | I wrote a comment below the article with background of what
           | happened:
           | 
           | https://www.unseen64.net/2020/11/16/lunatik-pure-
           | entertainme...
        
           | gambiting wrote:
           | It says on the website:
           | 
           | "But ultimately the project failed because the original
           | concept (3D Defender) was next to impossible to do really
           | well. We tried many different gameplay mechanisms to make it
           | work, and none were working"
        
             | nsxwolf wrote:
             | I bet it was a lot more fun as-is than a lot of early trash
             | on the PS1 that did get released.
        
         | Psyladine wrote:
         | It sounds like Gavin went beyond that, cutting into Sony's
         | forbidden library space; it helps that he was a lisp head and
         | didn't respect the existing C prefabs.
         | 
         | I don't remember if it was the blog or the extended video but
         | he also got into some of the close to the metal choices they
         | made, like sharing variables and rolling dice on the compiler
         | each build to fit with only a few kb spare in the whole cd
         | space.
        
           | louthy wrote:
           | > It sounds like Gavin went beyond that, cutting into Sony's
           | forbidden library space
           | 
           | Sure, this wasn't an exhaustive list of every trick we had to
           | do, it's just another war story. This is the one that I
           | remember the most vividly, but there were myriad tricks to
           | bend the system to do what it didn't want to do :)
        
         | AdmiralAsshat wrote:
         | The video certainly looks impressive for 1997! ...but I can
         | also see why it might have been relegated to tech demo. Even
         | just watching someone else play it, it seems like you guys
         | weren't totally sure yet how to do full 3D movement in-flight
         | in a way that felt fluid. When the ship moved up or down, it
         | reminds me of someone holding the space-bar in e.g. Doom/Quake
         | with NoClip mode turned on.
         | 
         | It also seems like the player might get rather frustrated that
         | they can't hit an enemy ship that is five feet in front of them
         | because the player ship is not _exactly_ at the same elevation
         | as the enemy ship.
        
           | louthy wrote:
           | > they can't hit an enemy ship that is five feet in front of
           | them because the player ship is not exactly at the same
           | elevation as the enemy ship
           | 
           | And that in a nutshell was everything that was wrong.
           | 
           | How to make Defender in 3D when you can't line up with the
           | ships in three dimensions. For a slower game it would have
           | been less of an issue, but at the pace we wanted it didn't
           | work.
        
             | AdmiralAsshat wrote:
             | Did you guys ever do a post-mortem on how you might have
             | solved that problem, or even how _other_ games solved that
             | problem?
             | 
             | If this was 1997, this would've been around the same time
             | as Star Fox 64, and while that game was _mostly_ on-rails
             | (like Panzer Dragoon), it did have the  "all range mode"
             | maps where your movement was fully 3D. I played that game
             | quite frequently as a child, and I don't remember ever
             | feeling like I was having trouble hitting the enemy ships.
             | Maybe the game had a very generous auto-target/fudge factor
             | turned on so that the player felt like their aim was more
             | accurate than it truly was?
        
               | louthy wrote:
               | There were plenty of pre-mortems! :D
               | 
               | Obviously we all knew of things like Star Fox 64 which is
               | still really just a 2D game in many ways (following a
               | fixed route), the idea was to not be on a fixed route and
               | be free roaming.
               | 
               | We tried putting the player and all NPCs on a height-map
               | - so effectively your vertical movement was based on a
               | height map, which meant everything was vertically aligned
               | - it was the closest it got to being decent (not sure why
               | it didn't make it to the demo). It did allow rapid
               | movement, less concern about targeting, and avoidance of
               | low buildings, etc. (which allowed some of the Defender
               | pace). However watching your bullets going up n down
               | along a height map was weird.
               | 
               | But even then the free roaming nature of the levels meant
               | that there wasn't ever an urgency to get to a place and
               | do a thing. Each level would have targets to get to
               | within a certain time, but then it was going away from
               | shoot-'em up into capture-the-flag. Really it was
               | misguided from the start.
               | 
               | By the time we'd tried lots of different options we'd run
               | out of cash. I was 21 at the time, and it was pretty much
               | my first software engineering job (I did do some
               | educational software before that, but nothing at this
               | level). So I wasn't perhaps as reflective then as I am
               | now - and I left the company not long after.
        
           | mpyne wrote:
           | > It also seems like the player might get rather frustrated
           | that they can't hit an enemy ship that is five feet in front
           | of them because the player ship is not exactly at the same
           | elevation as the enemy ship.
           | 
           | Ha, I even had this problem with a 'modern' game, Uncharted
           | (2? I think?). The one with the tutorial level with you on a
           | dock having to shoot pirates or something. Aiming was
           | impossible on the DualShock because you'd either not move the
           | crosshairs or the crosshairs would just way overshoot once it
           | started moving.
           | 
           | I ended up having to run up to the goons to land shots.
           | 
           | Thank God for Gamefly, that game went straight back even
           | though I'd spend hours already getting it installed and then
           | mandatory patches done.
        
         | Thaxll wrote:
         | It looks like G-police.
        
           | ffhhj wrote:
           | Also reminds me of X-Com.
        
         | mikeryan wrote:
         | My first "tech job" was supporting DOS games at EA in the late
         | 90s. Post windows 95 they still had some bargain flight sims
         | that seemed popular. I can't remember the exact numbers but one
         | of the sims checked for sufficient RAM. I think you needed 16MB
         | but there was a bug where if you had more than like 512 it
         | would think you didn't have enough (pre-internet so no real
         | patches). The "fix" was a "boot disk" (on a floppy) that would
         | create a RAM drive to partition off some of your RAM getting
         | your available total under 512. RAM had just started to get
         | "cheap" enough that some folks had 1GB and we were able to use
         | the RAM drive (which worked like a physical HD) to install the
         | game and play it from RAM instead of the old slow spinning
         | disks.
         | 
         | But yeah memory hacks in those days were rampant.
         | 
         | Side note the most common problem for the PS support queue was
         | PlayStations not reading disks properly. The fix was to turn
         | the machine on its side or even upside down to get the CD
         | closer to the laser.
        
           | Wolfbeta wrote:
           | >Side note the most common problem for the PS support queue
           | was PlayStations not reading disks properly.
           | 
           | I laughed when I read the following quote from Andy Gavin's
           | blog, now I'm crying after seeing yours.
           | 
           | "Kelly asked how many of these CD hits Andy thought a gamer
           | that finished Crash would have. Andy did some thinking and
           | off the top of his head said "Roughly 120,000." Kelly became
           | very silent for a moment and then quietly mumbled "the
           | PlayStation CD drive is 'rated' for 70,000."
           | 
           | >The fix was to turn the machine on its side or even upside
           | down to get the CD closer to the laser.
           | 
           | Was this the precedent for marketing the PS2 vertically?
        
           | hbn wrote:
           | > turn the machine on its side or even upside down to get the
           | CD closer to the laser
           | 
           | I'm confused by this, doesn't that seem backwards? If it was
           | sitting normally wouldn't it naturally be helped by gravity
           | to be as close to the laser as the mechanism would allow?
           | Upside down, gravity would be pulling it away from the laser.
           | Right?
        
             | majormajor wrote:
             | The laser is on a mechanism that moves in and out from the
             | center to the rim of the disk. You can see a picture here:
             | https://gametrog.com/playstation-1-one-information-specs-
             | ver...
             | 
             | I don't have a Playstation myself on hand, but from memory,
             | these mounts usually had a certain amount of play in them -
             | if you touched it, you could press it a bit lower, for
             | instance. Whereas the clamp that grabs the disk on
             | toploaders tended to make a very secure connection. So it's
             | probably not bringing the disk closer to the laser, it's
             | bringing the laser closer to the disc.
        
           | rawoke083600 wrote:
           | > Post windows 95 they still had some bargain flight sims
           | that seemed popular.
           | 
           | The golden era of flight/space sim !
           | 
           | I miss my wing commander(s) (don't you dare mention/reply
           | Star-Citizen !)
           | 
           | I think I played/broken through 2 crappy-cheap joysticks via
           | the whole series. That perfect point in time (when you were
           | young enough not to pay taxes, but old enough to get a
           | soundblaster-card-kit with free wingcommander games)
        
             | nomel wrote:
             | Someone needs to port these to the Quest 2. VR, for flight
             | sims, is pretty awesome, assuming you can stomach it.
        
             | ansible wrote:
             | Wing Commander series, Chuck Yeager's Air Combat, Falcon
             | 3.0, X-Wing series, Descent 1 & 2. Thrustmaster flight
             | stick and throttle. Good times, good times.
             | 
             | I never really mastered flying the F-16 in Falcon 3.0, but
             | I at least got to the point where I could take off and land
             | OK. The mission planner for custom missions was very
             | sophisticated too.
             | 
             | For Descent, I had also tried out the Logitech Cyberman 2
             | controller:
             | 
             | https://www.neogaf.com/threads/the-weird-and-wonderful-
             | world...
             | 
             | In theory, it is ideal for flying your spacecraft in
             | Descent, allowing you to move or turn in any direction in a
             | a sort of intuitive fashion. However, it wasn't that
             | satisfying in practice.
        
               | ansible wrote:
               | I also had at one point a steering controller that
               | resembled a RC car controller. That worked a lot better
               | for me than racing wheels that were much more common.
               | 
               | Pairing that with the original ReVolt RC racing car game
               | (don't buy the ripoff version that was just released to
               | Steam!) and you're talking many hours of fun.
        
             | mikeryan wrote:
             | IIRC this particular issue was with one of the Jane's
             | Combat Simulator games. ;-)
        
         | smcl wrote:
         | > I made the whole engine and animation system fit in 4K so it
         | would fit into the instruction cache of the CPU
         | 
         | That's an impressive feat. The screenshots in the linked
         | article look pretty nice particularly for the a PSX-era game,
         | it has a good futuristic, but dirty industrial cityscape thing
         | going on. Did you manage to utilise any of the tech in another
         | project, or was the whole thing just _completely_ binned?
        
           | louthy wrote:
           | > Did you manage to utilise any of the tech in another
           | project, or was the whole thing just completely binned?
           | 
           | At that time we used to bin everything and start again (from
           | the engine point of view at least). Usually it was so complex
           | and hacked together by the end that there wasn't a
           | generalised system to extract. We'd obviously take what we
           | learned into the next title, but less so the code.
           | 
           | PS2 was probably the first time I remember reusing engines.
        
             | dboon wrote:
             | Do you still work in the games industry?
        
               | louthy wrote:
               | Nope, I bailed in 2005 after 10 years. Healthcare tech
               | now, and I hope to never need to do the kind of low level
               | coding I did back then, ever again :D
        
               | xeromal wrote:
               | Funny how the most bland of work ends up paying the big
               | bucks. lol
        
       | pxeger1 wrote:
       | This guy is an excellent communicator. For a modern HN audience
       | an explanation of virtual memory paging is not exactly necessary,
       | but he does a great job of it and I'm sure this video would be
       | really interesting for a much more general audience.
        
       | zxspectrum1982 wrote:
       | I used this on the PS2. It worked too.
        
       | Yliaho wrote:
       | The extended version goes more in-depth and I highly recommend
       | watching it instead.
       | 
       | https://youtu.be/pSHj5UKSylk
        
         | Operyl wrote:
         | Thanks! I saw the original a while ago and didn't know there
         | was an extended cut.
        
       | atan2 wrote:
       | I always loved this interview. Great gems there. I studied the
       | PS1 tech for a while and it's amazing how even small artifacts
       | (polygon jittering, affine texture mapping, etc.) became looks we
       | now try to replicate for the sake of nostalgia. Fun times!
        
       | CloudGreed wrote:
       | Damn, This stuff is interesting.
        
       | FZ_BA wrote:
       | This kind of creativity and ways to defeat limitations always
       | fascinated me.
        
       ___________________________________________________________________
       (page generated 2022-09-02 23:00 UTC)