[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)