Layout Image
  • Writing
    • Andy Gavin: Author
    • About my Novels & Writing
    • All Writing Posts
    • The Darkening Dream
      • Buy the Book Online
      • Sample Chapters
      • Reviews
      • Info for Reviewers
      • Press Coverage
      • Awards
      • Cast of Characters
    • Untimed
      • Buy Untimed Online
      • Book Trailer
      • Sample Chapters
      • Reviews
      • Info for Reviewers
      • Press Coverage
      • Awards
      • Cast of Characters
    • Scrivener – Writer’s Word Processor
    • iPad for Writers
    • Naughty Dark Contest
  • Books
    • Book Review Index
    • Favorite Fantasy Novels
    • Andy Gavin: Author
    • The Darkening Dream
      • Buy the Book Online
      • Sample Chapters
      • Short Story: Harvard Divinity
      • Reviews
      • Info for Reviewers
      • Press Coverage
      • Awards
      • Cast of Characters
    • Untimed
      • About the Book
      • Buy Untimed Online
      • Book Trailer
      • Sample Chapters
      • Reviews
      • Info for Reviewers
      • Press Coverage
      • Awards
      • Cast of Characters
    • Naughty Dark Contest
  • Games
    • My Video Game Career
    • Post Archive by Series
    • All Games Posts Inline
    • Making Crash Bandicoot
    • Crash 15th Anniversary Memories
    • World of Warcraft Endgames
    • Getting a Job Designing Video Games
    • Getting a Job Programming Video Games
    • Naughty Dark Contest
  • Movies
    • Movie Review Index
  • Television
    • TV Review Index
    • Buffy the Vampire Slayer
    • A Game of Thrones
  • Food
    • Food Review Index
    • Foodie Club
    • Hedonists
    • LA Sushi Index
    • Eating Italy
    • Eating Croatia
    • Ultimate Pizza
    • ThanksGavin
    • Margarita Mix
    • Foodie Photography
  • Other
    • All Posts, Magazine Style
    • Archive of all Posts
    • Fiction
    • Technology
    • History
    • Anything Else
  • Gallery
  • Bio
  • About
    • About me
    • About my Writing
    • About my Video Games
    • Ask Me Anything
  • Contact

Parlez vous Crash

Jan06

In the mid to late 90s, Playstation games had three SKUs: SCUS, SCEE, and SCEJ, being respectively the US NTSC version, the European PAL version, and the Japanese NTSC version.

The American version shipped in early September 1996. We finished it in early August (manufacture took a month). From my perspective — and it’s worth noting that during the Crash period I personally did most of the localization work — the European version was finished at the same time. I’d killed myself getting it ready during July. But Europe itself liked to drag matters out with a leisurely testing schedule. I wanted it done, because until it was, I couldn’t do much else.

At Naughty Dog, we pioneered the idea of simultaneous international release. By Crash 2 and Crash 3 the same exact code, conditionalized very slightly, ran all three versions. Jak & Daxter was one of the first games where the American version included the European languages. By Jak II you could switch languages on the fly in the menu anytime. We wanted one code base, one art base, one thing to debug. We wanted it for sale simultaneously world wide. I wanted one gold master.

This goal and the tools to do it began on Crash 1, and were fairly well in place by Crash 2. The international groups weren’t quite as on board and year after year dragged out the European and Japanese editions for extra testing. As best I can tell this resulted mostly from a “this is the way it’s always been done” kind of mentality. Jason and I have never been big on that type of reasoning. Still, that personal caveat aside, even from Crash 1, Sony’s international teams did an awesome job, putting in a tremendous effort to ensure the product was really polished for each territory.

The front of the original PAL edition

Anyway, each territory had its own quirks. With the European version, they stemmed from PAL, the old European video standard. PAL actually has a slightly higher resolution and better color fidelity than NTSC (the US standard). But the kicker is that it runs at 50 hertz instead of 60. For Crash this meant that the frame rate would be 25 frames per second instead of 30.

The resolution itself wasn’t much of a problem. Crash was mostly a 3D game and it wasn’t hard to adjust the projection matrix in the engine to render the game to a different resolution. But the aspect ratio of PAL pixels is also a little different and Crash did have a certain amount of bitmap graphics like the powerups and font. The PAL frame buffers were larger and the machine had the same video RAM so increasing the resolution of the sprites was rarely an option. Generally, we just had to live with a slight aspect shift or stretch them to fit. I developed notation in the original data so that different kinds of sprites could go either way in a fairly uniform manner.

The real kicker was the frame rate. One of the reasons why the animation in Crash is so so much better than most of its contemporaries is that we stored every vertex for every frame — then compressed the living crap out of it. This meant that each segment of animation was sampled from Alias PowerAnimator at 30 fps. I modified the tools to support making a second copy of every animation where the step rate was adjusted to 25fps. The pal version used these files instead of the originals. This worked about 80% of the time.  Sometimes it became necessary to notate a particular animation segment as having a strange or custom step for PAL, or even hand code certain frames. I added special constructs to my custom language (GOOL) which made this stuff as automatic as I could.

It often came in these enlarged boxes to fit all those languages!

But the physics and collision systems also needed to adjust to the different frame rate. I had done PAL conversions for Rings of Power and Way of the Warriorand having every great programmer’s hatred for tedium had developed the notion when starting Crash that I would notate all “time and space based” units not in the traditional game programmer manner of “moves X pixels per frame” but in a kind of neutral space. Hence everything in Crash was measured in meters, seconds, and the like. I built into GOOL constructs like (meters 5) or (meters-per-second 2.5). The compiler or the runtime (depended) would convert these on the fly into the appropriate pixel per frame units.

This had a number of big advantages. First of all, even without the PAL issue, it allowed the physics (and the enemies) to move in a fairly frame rate independent way. Special functions were used to deal with velocity and acceleration which took into account the current frame’s estimated real time (based usually on how long it took the previous frame to compute and render). This meant that the code which propelled Crash in a parabolic arc as he jumped would move him further per frame if the frame rate slipped to 20 or 15 (which, unfortunately, it sometimes did). This wasn’t a perfect solution, 15 fps still played worse than 30, but it helped.

And it really paid off with the PAL conversion. The hard work — and it was incredibly tedious — really only took me about five days. After running all the automatic convertors and debugging those I had to go through the entire game and check every single level, every creature, every behavior of every creature or object and make sure it stilled played and looked okay in PAL. If it didn’t I had to play with the numbers, or in the worst case add some special “if PAL do it a little differently” clauses to the GOOL code.

But this was in a world where most American games just played 16% more sluggishly in Europe and most European games 16% fast in America.

Crash played great in both — and looked great in both. The Euro version actually even looked a little better (higher resolution and better color) although the feel at 25hz was slightly inferior. But we didn’t invent the TV standard.

The final tricky bit with localization was the language(s). Crash 1 didn’t really have any voice (which was to become a huge deal in later games). But it did have some text.

This is Crash 2, which is the only picture I could find, but Crash 1 was similar, just with the C1 title page

In typical programmer fashion, I invented another system for this. All of the text was generated by literal strings in the GOOL code, and since I controlled the compiler, I added a feature where a mapping file could be created for each language specifying the English text and the equivalent phrases in each of our five languages (English, French, Spanish, German, Italian). I changed the way strings were handled to index into a table and to have five files on disk for the string buffer. This is typical now, but was very unusual then. Even on Crash 1 you could change the language on the fly. But Europe made me put the toggle only at the main menu because they didn’t want to have to test for weird bugs that came up when you switched languages in the middle of a level.

I systemized all of this stuff by having the tools and the game itself both have separate notions of: video rate (NTSC, PAL), territory (which country’s disc it actually was), and language. This separated the concept of language from territory, opening up the possibility of foreign languages in the American versions (which didn’t happen until Jak 1 for logistical and legal reasons).

As requests came in from Europe to do peculiar and territory specific things like “make the game harder because European gamers like a challenge” (after Crash 1 we refused to acknowledge this “truism”) I modified the tools to allow territory specific overrides in the files that controlled the game data. For example, CONTINUE_POINT_64_32 in the jungle level, “hide in europe.” While I’m not sure the frustrated Euro gamer appreciated it, the system did make serving the producer’s requests easier.

In any case, the Euro version of Crash was lavished with the same attention to detail with which we did everything, and Sony Europe did the same. This was one (if not the) first product for which the whole international organization was behind and where they controlled the worldwide rights. Each Sony territory really pulled out all the stops in supporting and promoting the game as “made here.” It was highly localized, not just the game itself but each little country in Europe doing its own advertising and marketing campaign. Even the Irish filmed their own ads with Irish accented actors. Traditionally game players were highly “nationalistic” with, for example, French games selling better in France. The attention paid by both us and at all levels of the Sony infrastructure to selling a worldwide product aimed specifically at each and every consumer group really paid off.

The game sold like wildfire everywhere. Although we had certain champion territories like France and Australia (Crash’s virtual birthplace) who really poured on the love.

The story continues with Crash goes to Japan!

If you liked this post, follow me at:

My novels: The Darkening Dream and Untimed
or the
video game post depot
or win Crash & Jak giveaways!

Latest hot post: WOW Endgame Analysis!

Yes, Crash really took to the old country.

Related posts:

  1. Crash Bandicoot – An Outsider’s Perspective (part 8)
  2. Making Crash Bandicoot – part 5
  3. Making Crash Bandicoot – part 6
  4. Making Crash Bandicoot – part 1
  5. Making Crash Bandicoot – part 3
By: agavin
Comments (45)
Posted in: Games
Tagged as: Crash Bandicoot, Europe, Games, Localization, Naughty Dog, NTSC, PAL, PAL region, pt_crash_history, SCEE, Sony Computer Entertainment, United States
  • Pingback: Making Crash Bandicoot – part 6 :: All Things Andy Gavin

  • Randeep

    SCEE sounds like they make you jump through lots of other hoops (apart from languages). Are they reasonable hoops to go through? The reason I ask is all too often a game is released on XBLA worldwide, on PSN in america, but fails for SCEE and as such, in australia, we have to wait. For example, just recently, Trine 2 is out in america but not in australia on the PSN. There was a several month wait for the mortal kombat collection for SCEE to release on the european PSN.

    Just curious if things were like this for you as well?

    • http://all-things-andy-gavin.com Andy Gavin

      In 1996, you have to remember we were coming right off the 8 & 16 bit era. In those days, most games were in assembly and very specific to platform. If a European game came to the states or an American/Japanese one to Europe it was usually localized by a separate team (or guy) who hacked through the finished assembly code and ported it (sometimes well, usually not) to the other frame rate. Most games were not written with the specifics of both platforms in mind AT ALL. Most were never ported and stayed in their home territory.
      So it was very unusual for a lead (and hotshot) programmer like myself to build it into the project before the first version was even done. Even if the lead did it, he’d usually do it afterward. Because of all this, SCEE was used to getting games way late and after the fact, and not at all used to testing the PAL version when the US version hadn’t gone gold. Add to this that when I told them I would give them a version in a couple of weeks they totally thought I was hiting the Crack pipe and expected to get one months after I said I would. In general, I hit all deadlines to the day, usually a few days earlier. No Naughty Dog game was ever late. Most software — particularly game software — routinely misses by months, if not a year or so. Can anyone say Duke Nukem Forever! Or “Heart of Darkness” a game we say demoed in 1995 (and due that year) that shipped during CTR (in 1999)! We called it “Heart of Lateness.”
      So basically, they expected to have a lot of time later to deal with it and thought working on my “crazy in parallel” approach was a waste of time. But I learned them over the years. By Jak they had it down.

      • Msmma

        Great stuff as always.  Id be curious to see what some actual game code looks like (as this stuff really interests me), if you could without getting yourself or anyone in trouble.  Heck even something as simple as the code behind Crash jumping up in the air and then landing on the ground.

        • http://all-things-andy-gavin.com Andy Gavin

          I don’t have or own the code anymore, but you can see some snippets of gameplay code in my article on GOOL.

  • http://twitter.com/UnchartedWiki Uncharted Wiki

    Great article. These are always really interesting to read, it’s cool to see you writing them again. I always took it for granted that the exact same game version was used worldwide. Then again, I was only about 8/9 years old at the time I would have first played the game. As a European Crash gamer, I can appreciate the work you put into localization. I’m currently studying game development and programming in college, so it’s really awesome  to find articles like this. Can’t wait for the next one!

    PS: I said European above, but to be exact, I’m Irish. Which brings me to “Even the Irish filmed their own ads with Irish accented actors.” I can only imagine what those ads were like :)

    • http://all-things-andy-gavin.com Andy Gavin

      I looked on the internet for the Irish ad (which was done on a shoestring budget for just the ROI) but couldn’t find it. Sad, it was pretty funny.
      Also check out the Naughty Dark Contest in the sidebar where you can win cool prizes, including signed Crash Bandicoots!

  • DanGameTank

    Another fantastic feature – thanks Andy!

    There were a lot of frustrations being a European gamer in the mid-1990s. Any non domestic titles were usually letterboxed, which I believe was a lazy way of making up the extra 100 lines our PAL system used over NTSC - 50 black lines top and bottom. As you said, they also used to run slower (I didn’t play Sonic 1 at it’s intended speed until well into the 2000s). Games with proper conversions were often championed by our games press and Crash was one such example of this. I didn’t realise just how much effort went in at your end to ensure we got the best possible product. I even remember feeling a little impressed when the pre-title for each game specifically said “Sony Computer Entertainment Europe Presents…”

    Bit of a longshot question here but I’d love to know… Can you remember the very last (significant) thing you changed in the US/Euro Crash 1 code before it went gold?

    Keep the posts coming, you’ve really bought out my inner geek :D

    • http://all-things-andy-gavin.com Andy Gavin

      Glad you appreciated it. :-)

      I totally don’t remember the last thing I changed in the code. I remember the bug that stressed me the most on Crash 1 which was a really obscure bug in the memory management layer I wrote (Crash used a VERY elaborate virtual memory scheme to fit those big levels into RAM) which would totally randomly hang up the game about once every 50-100 hours of play. I finally caught it during the development of Crash 2! I hated crash bugs. I never ever wanted the game to force you to reset the machine.

      • DanGameTank

        Wow! I”m finding all this information fascinating. If it’s any kind of consolation I reckon I’ve played Crash 1 more than any other game I’ve ever played and I don’t think I’ve ever EVER had it hang on me like that. Although it has just made me chuckle that you called a piece of software “Crash” – I’ve never thought about it like that before!

        Did you ever get to tweak things for Platinum/Greatest Hits re-releases or did Sony just make more discs and put them in different packaging? 

        • http://all-things-andy-gavin.com Andy Gavin

          The master for Crash 1 never changed. Unless something happened that I don’t know about, each of the 3 versions of it is still EXACTLY the same bits as they always were.
          I’m trying to remember, but since the Japanese version was mastered about 3 months after the US and PAL versions it certainly contained a bunch of bug fixes. I think I may have even caught that obscure crash bug by then (mantra in the office: if we have a game named Crash, it better not).
          That particular crash bug was very very rare and impossible to deliberately recreate. It was some kind of vulnerability involving the way my CD interrupt handlers interacted with the memory buffer data structures. This is very delicate stuff and you have to use rock solid semaphore protection to make sure you keep anything that an interrupt writes to consistant.

          • DanGameTank

            Amazing, that all this stuff is happening in the background when you run through a level just to keep it working! Were there any levels that caused more problems than others in terms of the virtual memory system you used? As a kid I never appreciated that all the twists and turns in the levels were there for anything other than gameplay – but armed with the knowledge of your articals I now understand they’re masterpieces of polygon count management! (As well as great gameplay.)

            Thanks so much for these answers – I’ll leave you alone now!!

            Cheers.

            Dan, UK

          • http://all-things-andy-gavin.com Andy Gavin

            :-)

      • http://haunted360.com/ Haunted360

        Do you remember how you solved that bug Andy?

        • http://all-things-andy-gavin.com Andy Gavin

          No idea :-)

  • William Errey

    you definately need to write more of these. really interesting articles

    • http://all-things-andy-gavin.com Andy Gavin

      I have another started already

  • Anonymous

    Interesting so far… but I stopped right here for now:

    “power up and the font.”

    THE FONT! Which font is used in the menus in Crash 1-CTR and the GBA games, if I may ask? I already uncovered the two in the logo – Comics and Roquette, but damn me if I haven’t searched font libraries in their dozens, and I still haven’t found anything even remotely similar to the one in the menus. Is it custom?

    • http://all-things-andy-gavin.com Andy Gavin

      If I remember right, Jason created it himself. He likes to do fonts.

    • Crash Pro

      Do you happen to have a download link to the Comics font? I’d like to take a look at it.

      • http://all-things-andy-gavin.com Andy Gavin

        No, sorry

  • Jakndax

    Was it just checkpoint removal that made the Euro version harder or other elements too?

    • http://all-things-andy-gavin.com Andy Gavin

      There might have been a few other things. Less lives and the like. I can’t really remember. It wasn’t a lot.

  • William Errey

    i remember in warped, crash would run at a different speed in the different versions of the game and in CTR penta had very different stats

  • Pingback: Crash goes to Japan – part 1 :: All Things Andy Gavin

  • Guest

    Hey Andy, as a big fan of Crash series I’m loving your posts! Speaking of the localization thing, here in Spain, the platinum versions of Crash 1 only came with English language.

    • http://all-things-andy-gavin.com Andy Gavin

      That seems like an oversight. Was it PAL? I never made a single language PAL disk. Or are you talking about the package?

      • Mad Max

        Hmm, I also own the PAL Platinum (=Greatest Hits) version of Crash 1 and there is only English language ingame, there is no way to change the language.
        The box art and the manual is in several different European languages though (French, German, Italian, Dutch, Spanish and of course English)

        This is exactly the version I own: http://www.mobygames.com/game/crash-bandicoot/cover-art/gameCoverId,153146/

        • http://all-things-andy-gavin.com Andy Gavin

          Weird. I never mastered a version that was like that

          Sent from my iPad

          • Mad Max

            That’s really strange because I’ve never seen Crash 1 in other languages than English or Japanese^^
            Here is a German LP of Crash 1 and everything is in English (assuming he really plays the PAL version). http://www.youtube.com/watch?v=eKdnE8ut2WQ At 0:44 he even makes a comment about the lack of a language option.

            Out of curiosity, where exactly was the language option located in the menus? At the main menu, where you can see Crash or somewhere “buried” in the options menu?

            Did you also create localized versions of the loading screens? Those were bitmaps IIRC.

          • http://all-things-andy-gavin.com Andy Gavin

            I can’t remember. One of those two. But we certainly did it in 5 languages
            Sent from my iPad

          • Guest

            Maybe it’s something only happened with the platinum versions of the game. But I’ve never managed to see a “regular” copy of Crash 1 in Spain!

          • http://all-things-andy-gavin.com Andy Gavin

            Maybe there was a remaster for the platinum. I can’t remember for sure. It would have been odd if we dropped the languages though.

          • Andrea

            Yeah, I have to agree: I have the PAL Platinum version of Crash Bandicoot, but the language (except at the back cover with the other languages and in the manual) was completely in english. And also, I’ve never seen a normal copy of Crash 1 here in Italy, neither, for example on eBay or other sites (except the big box version).

        • Guest

          Yeah, that was the version that I was talking about (and that I still own, of course!). Same with the booklet here!

      • Donna

         the platinum version (not the original release) has no other languages btw

  • Jovelle Lilian Smth

    “At Naughty Dog, we pioneered the idea of simultaneous international release.”

    I’d say…you also pioneered the ‘appreciation of everyone’s efforts and ideas at the company.’ I think, no idea is wasted at Naughty Dog. for example, that worker who asked for a crossover between a dingo and a crocodile was made into ‘Dingodile.’ + the other levels like sunset vista/lost city which you referred to as the works of dave baggett.

    + The ideas that were hard to pull off for the PS2 (for jak and daxter) were later used in Uncharted…. (heard that from jason rubin)…..its just amazing. seeing the archive of ‘the naughty kennel’ website or something…makes me feel like the team is working more like a ‘FAMILY’. ;) ) thats just great!!

  • Gabriele

    I never saw Crash Bandicoot 1 in italian, But Crash 2, 3 and CTR are completely in italian.
    Can I ask you, why in the last picture there is a Crash Twinsanity Render? What he has to do with the original Crash Bandicoot? I think that this game changed Crash Bandicot forever, every new developer house follow that game ignoring the previous classic PSX games. Why you used it?

    • http://all-things-andy-gavin.com Andy Gavin

      I was searching the web and grabbed a twin sanity one by mistake

      • Gabriele

        That’s funny because in Twinsanity Crash looks relly different from the original one lol. Do you like that Crash design? I personally don’ t like it because so stupid, and he always smile in the game, even if he dies!

  • Thundershocked

    Really Intresting Article would love to hear more about Crash Team Racing(2ND fav in the series apart from Warped)

    I have some questions

    What was your favourite track in Crash Team Racing?

    What do you think of Crash Bash?

     

  • http://almolloy.tumblr.com/ Al Molloy

    “Even the Irish filmed their own ads with Irish accented actors”

    As an Irishman, I thoroughly enjoyed reading that haha. I wish that ad were on the internet somewhere!

    • http://all-things-andy-gavin.com Andy Gavin

      I googled around but couldn’t find it. Sad, they were funny

  • OrangeBandicoot

    Andy, have you played any classics (other than Crash) like Mario,Metroid,Zelda,Mega Man,Final Fantasy,etc

    • http://all-things-andy-gavin.com Andy Gavin

      All of those!

Andy Gavin

1

Co-creator of Crash Bandicoot and author of The Darkening Dream and Untimed

Watch the Trailer or

Buy it Online!

Buy it Online!

35 of 100 tickets!

Find Andy at:

Follow Me on Pinterest

Facebook Subscribe:

Follow on Twitter:

Follow @asgavin

More on games:

  • All Game Posts
  • Making Crash Bandicoot
  • Crash 15th Anniversary
  • WOW Endgames
  • Designing Video Games
  • Programming Video Games

Categories

  • Contests (7)
  • Fiction (311)
    • Books (97)
    • Movies (57)
    • Television (73)
    • Writing (106)
      • Darkening Dream (60)
      • Untimed (32)
  • Food (375)
  • Games (73)
  • History (10)
  • Technology (21)
  • Uncategorized (15)

Recent Posts

  • The Last of Us - Review Roundup
  • More Crash for Charity
  • PS2 Memory Lane
  • The Last of Us - Red Band
  • Crash Valentines
  • The Last of Us - Zombie Time
  • WOW Endgames - Mists of Pandaria
  • Crash Live Action Tribute
  • Game Shop Crash
  • WOW Endgames - Cataclysm

Popular Posts

  • The Hobbit Trailer
  • Making Crash Bandicoot - part 1
  • Home
  • Game of Thrones - Season 2 - First Look
  • Diablo 3 - Beta Preview
  • Crash goes to Japan - part 1
  • WOW Endgames - Vanilla
  • WOW Endgames - Mists of Pandaria
  • Making Crash Bandicoot - part 3

Recent Comments

Archives

  • June 2013 (9)
  • May 2013 (14)
  • April 2013 (14)
  • March 2013 (15)
  • February 2013 (14)
  • January 2013 (13)
  • December 2012 (14)
  • November 2012 (16)
  • October 2012 (13)
  • September 2012 (14)
  • August 2012 (16)
  • July 2012 (12)
  • June 2012 (16)
  • May 2012 (21)
  • April 2012 (18)
  • March 2012 (20)
  • February 2012 (23)
  • January 2012 (31)
  • December 2011 (35)
  • November 2011 (33)
  • October 2011 (32)
  • September 2011 (29)
  • August 2011 (35)
  • July 2011 (33)
  • June 2011 (25)
  • May 2011 (31)
  • April 2011 (30)
  • March 2011 (34)
  • February 2011 (31)
  • January 2011 (33)
  • December 2010 (33)
  • November 2010 (39)
  • October 2010 (26)
All Things Andy Gavin
Copyright © 2013 All Rights Reserved
Programmed by Andy Gavin