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