> death sentence: “i shall sentence you to a 5 year course of assembly.”
Plot twist: you just gave the future developer of RollerCoaster Tycoon all the training he’d need.
> What language was RollerCoaster Tycoon programmed in?
>> It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
>What language was RollerCoaster Tycoon programmed in?
>It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Quoted from his own website.
Technically the game was made by three people though. He outsourced two other guys, one for the art and one for the music.
Well a slight correction. Machine code can be understand by humans, which is a given considering that humans invented it in the first place.
Sure, writing direct 0 and 1 is unfeasible if only for the sheer amount of typing involved, but there is basic assembly. Without the usage of macros and other techniques to make even assembly more friendly to the programmer, assembly is essentially writing direct machine code.
And assembly is still written in certain industries to this very day.
Programming in high level languages is done because it removes so much work from the programmer. Just as an example:
The x86 function for ADD is split into 14 different types.
While adding 2 things in a high level language is as simple as writing 1+2, in assembly and therefor in machinecode you have to load the numbers from the correct memory location into the correct register for your chosen ADD command before you can actually use the ADD.
Doing this isn't impossible. In fact, Chris Sawyer wrote almost all of the original Roller Coaster Tycoon in x86 assembly.
Chris Sawyer - something of a savant and a wonderfully strange and reclusive man who sees no need to update his website - and I agree. He's part of the Scottish/British development scene that grew out of the microcomputer revolution in the UK during the early 80s, and at least to me is one of the godfathers of modern gaming; Part of the "holy trinity" of very different developers that includes more "famous" names like David Braben and the now much maligned Peter Molyneux.
It's a bit of a stretch to say he wrote them with no tools, though: Instead he just created many of the tools he used himself.
Ever wonder how Roller Coaster Tycoon ran so well on the slow computers we had back in the day? It was almost entirely written in machine code, mainly by ONE guy. I'm just in awe.
~2-4 years of probably full-time development.
Not to discredit him, the guy had been working with Assembly since 83', so 12 years prior; it's not like he didn't know what he was doing. I'm sure it took him more time to get it working with Windows and DirectX.
But to credit him, most professional games take at least a team of 12 working 1 to 2 years; whereas, Sawyer did it by himself. That's like 24 man years vs. 4; quite the accomplishment for a well known critically acclaimed game back in the 90's.
Without a doubt.
That guy programmed Roller Coaster Tycoon by himself in assembly, and I swear that game was stable as fuck!
I would like to bet 10 reddit gold points now that the new Roller Coaster Tycoon World doesn't even come close to Sawyers original title.
edit: Dunno if he counts as he's just a consultant for the games now ;/
Fun facts about sawyer gather on a site for fans
(as much as I don't want that to be the case, I wanna root for RCT4 )
Good point. Although from what I can tell, Chris Sawyer began making games during the time when all-assembly games were the norm and had made many games in assembly already. Back then, there were lots of programmers were real whizzes at assembly and who wrote it all day long. They could be very productive with it. So it was probably a lot easier for him to write that game in assembly than it would've been for someone who came to game development later.
EDIT: From his site: "From 1988 to 1993, Chris worked on PC conversions of Amiga games". This pretty much means he had to read 68000 assembly and turn it into x86 assembly all day long, for years. Reading that 68000 assembly and understanding what it does and then getting that to work well on the x86 (given its quirks and paucity of registers) is going to build up your assembly chops pretty well.
> That game was written in assembly.
99%, it also had some necessary C
> What language was RollerCoaster Tycoon programmed in? It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Chris Sawyer is a legend... to code in assembly while also dealing with such complexities of a game and simulation systems is utterly astounding. I can't even fathom how hard he must of worked on it and how skilled he is and I've been writing software for over 15 years. So much respect for the dude.
>It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Fun fact: The original TTD city design was based on Glasgow in Scotland where Chris Sawyer went to University.
http://www.chrissawyergames.com/feature1a.htm
This was one of the Glasgow City motorway plans from the 60s.
This is the famous "Bridge to nowhere"
https://en.wikipedia.org/wiki/M8_Bridge_to_Nowhere
I like to think this goes somewhat to explaining the default openttd town road building.
In my exposed-to-gaming-in-the-90s view, a programmer would conceive the idea of a piece of software and know how to implement almost everything from a (basic) UI to sound, to logic, and sprite animations, from scratch if necessary. Of course, as each of these grew in sophistication, overly simple sounds and primitive graphics were no longer acceptable without a reason, so one would focus more on the workings, logic, and optimization.
In this context, a "coder" could implement something definite from a spec--or "Hey, get me a page that does this!--or a specified algorithm, but would not necessarily have the vision (without experience) to put them in a bigger whole and most importantly know why each of the choices were made.
Chris Sawyer is a "real" programmer. He wrote the entire game of Roller Coaster Tycoon in assembly language., for security reasons and perhaps for bragging rights. That includes the entire game, minus some Windows & DX interfaces, and of course the art (in some simple games these have been written in assembly, too, lol).
http://www.chrissawyergames.com/feature1.htm
The movie "Mission Impossible 2" contains exactly the same crowd sound effect as was used in RollerCoaster Tycoon ! It's well hidden, but if you watch the film carefully, you'll notice the same "Come on, come on, come on" chant in amongst the crowd background sound as exists in RollerCoaster Tycoon. There's no connection between Mission Impossible 2 and RollerCoaster Tycoon though, only that the film makers happened to licence exactly the same 30-second sound recording as we licensed for the game.
Maybe the RCT wikia has more information.
Does anyone remember Bullfrog's [Theme Park](http://en.wikipedia.org/wiki/Theme_Park_(video_game\)) (a.k.a. the reason Theme Hospital has such a silly name)? I always figured RollerCoaster Tycoon was somewhere between a remake and a ripoff.
Also, FYI, RollerCoaster Tycoon was written almost entirely in machine language (!!!).
Sawyer's personal website provides some contact information. He also expressly states that you can only contact him through his publishers, not directly.
In a cave with scraps!
But seriously though every part of rct except the save and load were written by chris sawyer in assembly. He used c for interfacing with the windows file structure.
Dude's my coding hero.
Edit: http://www.chrissawyergames.com/faq3.htm looks like C was used to interface with direct x and for general windows interfacing as well. Not sure where I heard only save/load from.
> he has since removed that page
> I also remember there was a website with some RCT development/alpha screenshots
That's why I felt that RCT2 was just an improvement rather than a sequel. To me, the RCT series is best in isometric 3D. There are just some games that don't transition well to true 3D. Limitations encourage creativity. All I ever see people doing in RCT3 YouTube videos is crashing them into people or other rides. RCT1 and RCT2 YouTube videos I see people getting really creative or showing off their creations.
I found out a long time ago that sprites created for RCT1 used 3D modeling and pre-rendered them to fit the scale of the game, like this. To really modernize RCT, we need higher quality pre-rendered graphics instead of the dated "bit-crushed" graphics we see rendering in DirectX 5 RCT1 or RCT2 or whatever and use something better than DirectX 5, what Chris said went into making RCT1. It doesn't need to use a more modern DirectX's full capabilities or use the fanciness it can provide like a lot of games do for PC these days. It just needs to look like a true RCT game with a modernized look and just feels great to play. That will take a lot of tweaking to get right though. It may be required to redesign the engine from the ground up.
That guy that made it tells you all the tools he used. I'm going to posit that if you have to ask here then making a game in assembly is not something you want to do.
Not really. It was a top-down 3/4 isometric game. It's just an optical illusion. Notice the size of the visitors or other objects aren't altered due to distance.
Now, the models WERE created as 3D models, but the were PRE-RENDERED.
This is why Roller Coaster Tycoon did so well.
Chris Sawyer is a legend. He was initially going to work on a sequel to Transport Tycoon, but basically fell in love with roller coasters during a trip, and I can’t find the specific interview at the moment but I remember him apologizing for going off topic just talking about roller coasters.
Two other people contributed to the art and music for the game apparently, but it was mostly him.
There are some pictures of some of the original 3D models on this website of his here.
Actually, anyone nostalgic for early 2000’s web design should visit there haha. I’m so glad I found it. He has a list of his top 20 books about roller coasters on there and it makes me very happy :)
I’m dreaming of a world in which everyone can pursue their passions to that level, if they want to.
Nakagin Capsule Tower in Tokyo. Designed by Kisho Kurokawa, built in 1970-72.
It's iconic. Fun fact: there's a building in Transport Tycoon (Deluxe?) game designed after it - look at the bottom :)
Maybe check you know what you're talking about before you run your mouth- the article itself addresses this literally one sentence after mentioning the assembly code:
>Some functions were written in C for interaction with the Windows operating system and DirectX.
Sawyer's own official site, in case you don't believe Wikipedia:
>What language was RollerCoaster Tycoon programmed in?
>It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Chris Sawyer's website (where he mentioned writing the thing in assembly) has a list of graphical tools used as well - tons of them:
> The graphics were created using a variety of 3D modelling, rendering, and paint packages, including Lightwave V5.6, Raydream Studio V5, DeBabelizer Pro 4.5, Photoshop 5.5, Paint Shop Pro V5, Deluxe Paint 2E, Pro Motion V4.2, Painter V5, True Space V2, Corel Draw 8, and Meta Creations Poser 4.
It's probably due to it using the old descriptors from the original Transport Tycoon game.
Rollercoaster tycoon, which was released in 1999, was 99% written in x86 assembler/machine code by one developer.
So not completely impossible to believe!
The fact he wrote the game in assembly language, let alone wrote essentially the entire game, is incredible. So much of my childhood was spent playing RollerCoaster Tycoon.
Let alone that his website still looks like it's circa 1998.
Good gracious would I love to just sit and drink coffee with this guy.
> If it's any consolation the guy who created Rollercoaster Tycoon 1 wrote the whole thing in Assembly. Seriously.
From the developer Chris Sawyer's website:
> What language was RollerCoaster Tycoon programmed in?
>
> It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
So not entirely assembly, but due to technical limitations, not laziness. Incredibly impressive, regardless.
Indeed. The FAQ section on his site states: "RollerCoaster Tycoon originally started as a sequel to Transport Tycoon back in 1996, but the sequel was abandoned and the code modified to handle roller coasters instead of transport vehicles." Also, RollerCoaster Tycoon was named "White Knuckle" throughout development. Even when Hasbro Interactive became involved, the game was still going to be called White Knuckle, but then Hasbro bought Microprose, and the "Tycoon" connection was just too good an opportunity to miss, so the game became "RollerCoaster Tycoon".
Check out the FAQ at: http://www.chrissawyergames.com/feature1.htm
https://en.wikipedia.org/wiki/RollerCoaster_Tycoon_(video_game)
>Sawyer wrote 99% of the code for RollerCoaster Tycoon in x86 assembly language, with the remaining one percent written in C.
http://www.chrissawyergames.com/faq3.htm
>Which development tools were used to develop RollerCoaster Tycoon?
>The game was written and compiled using MS Macro Assembler V6.11c, MS Visual C V5, MS DirectX 5 SDK, plus assorted custom-written tools. The graphics were created using a variety of 3D modelling, rendering, and paint packages, including Lightwave V5.6, Raydream Studio V5, DeBabelizer Pro 4.5, Photoshop 5.5, Paint Shop Pro V5, Deluxe Paint 2E, Pro Motion V4.2, Painter V5, True Space V2, Corel Draw 8, and Meta Creations Poser 4.
>What language was RollerCoaster Tycoon programmed in?
>It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
only 1% was written in C, in order to interface with DirectX as you said
Yep! 99% was assembly according to the author, Chris Sawyer:
> It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
> It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Programming languages are just specialized tools - you could dig a quarry with your hands but you'd be foolish not to use heavy machinery.
​
To that same end, making money with Python isn't as much a question of Python being "lucrative" but you being inventive and enterprising enough to sell an application you've written.
​
Fun fact, the original Roller Coaster Tycoon was written by [one dude in Assembly.] (http://www.chrissawyergames.com/faq3.htm)
​
That being said, there's definitely value in thinking about what kind of languages are specialized to which tasks and choosing one that floats your boat. Luckily, Python is flexible enough to be suited to most tasks.
> back in the day
I wasn't talking about the current state of things, I was talking about 20+ years ago. RCT was released in 1999 and was indeed written almost entirely in assembly
Yeah it's mentioned on his site. The game being made in assembly is a big reason that you could have hundreds, and even thousands of guests in your park when the game released in 1999, and still have good performance. Hell, the game even has a speed-up button! The game being made in assembly allowed him to do some incredibly low-level optimization.
> With it's significant enhancements and continually-maintained code, it is superior to either TTD or Locomotion.
Ah, but Locomotion has train driving mode!
I mean, they're of vastly higher quality in that '90's RE/FFVII pre-rendered sort of way, but they also look extremely dated because of it (flat lighting/colors, minimal textures, random extrusions to create noise in the final product, etc). If you were to place all the models next to eachother in high-res they'd clash like crazy.
from Chris Sawyer's site:
> It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Not seeing anything about a loss of source code. A blurb on his site says the game is 99% Assembly and 1% C. The interview only mentions that the game had to be completely re-coded due to the source code not being compatible with ARM architecture.
I imagine OpenTTD exists because Assembly for any instruction set is a real doozy to learn. Also because a brand new engine is a "less hacky" way to get stuff like widescreen and netplay into the game, similar to what OpenMW is doing with Morrowind.
>RollerCoaster Tycoon originally started as a sequel to Transport Tycoon back in 1996, but the sequel was abandoned and the code modified to handle roller coasters instead of transport vehicles.
http://www.chrissawyergames.com/feature1.htm
And the game finally released in 1999. So it took way more than a year.
And while that's still very impressive, you just couldn't do that for games like Battlefield 5 or even an older game like Sims 2. That's what I'm talking about, 20 years were a long time ago.
I mean, for the early consoles, many games were developed by just one guy. But it was much easier back then. To develop a game was hard back then. But it could be done by a guy in a few months. Today, to write a snake for a modern system, wouldn't be impressive anymore. It's more or less a HelloWorld today.
A few years ago this was virtually imposible. Today, several implementations exist. And you can implement it on your app with a simple API. (Microsoft Azure, IBM Watson, ...)
We are only moving forward, because we build on top of existing software, and don't start rewriting and reimagining everything.
Now, don't get me wrong, there is a discussion to be had, whether it makes sense to import 30 dependencies in a node app, to simply make a GET request or whatever. But I don't feel, that that's what you're arguing.
As someone currently working on a game part-time in C# and kinda struggling to make something whole; it blows my mind.
Don't forget Tom Sawyer who coded Rollercoaster Tycoon 1 and 2 in Assembly as well.
>What language was RollerCoaster Tycoon programmed in?
>It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
From [Wikipedia](https://en.wikipedia.org/wiki/RollerCoaster_Tycoon_(video_game\)):
> The game was developed in a small village near Dunblane over the course of two years. Sawyer wrote 99% of the code for RollerCoaster Tycoon in x86 assembly language, with the remaining one percent written in C.
Which references Chris Sawyer's website:
> What language was RollerCoaster Tycoon programmed in?
> It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
You certainly could write assembly into a compiled binary using OllyDBG, but an easier approach might be to inject a precompiled library, hook a function at runtime, create a proxy library, or a combination of these. /u/scripter16 might be able to give a better idea of which specific technique was used to code userpatch features.
It might be possible that the userpatch team were given the source code but it seems very unlikely (although it used to be that there was a secretive person named User Patch who did all of this stuff, so...?).
When I tell other programmers that this game was written in assembly they never believe me. I'm not even sure if I believe it myself, but there it is right on Chris Sawyer's website: http://www.chrissawyergames.com/faq3.htm
To non programmers let me put it like this: Imagine single-handedly building on a 1:1 scale building just like the Palace of Westminster out of tooth picks.
https://en.wikipedia.org/wiki/Chris_Sawyer
> In 2010, Sawyer founded 31X, a video game developer focused on mobile games. He created the company specifically to develop Transport Tycoon for iOS and Android.[6]
It looks like Chris Sawyer specifically wanted to move it over. It really depends on what exactly they stared out with and how similar the instructions are in each language. When you have the assembly source instead of the compiled binary you can understand whats happening much easier. Some assembly (source) instructions might even act similar enough to not require modification (I assume unconditional jumps might act similar enough).
edit: It looks like Chris Sawyer has history in porting:
> From 1988 to 1993, Chris worked on PC conversions of Amiga games ...
Some of the older games were actually coded in assembly to get the performance. That makes converting those games difficult. This was certainly the case for RollerCoaster Tycoon.
>it was a a risc mips simulator, not x86_64 as that would been more useful in my eyes, I really regret not properly learning it
I'm taking such a course currently and it seems that MIPS and x86 have a lot in common.
>And I have seen some crazy websites where that guy Steve Gibson makes Win32 gui programs in pure assembly
Here are some more such websites:
>Transport Tycoon was originally named "I.T.S.", which is short for "Interactive Transport Simulation".
>It was only because the game went to Microprose that it became a "Tycoon" game, to tie in with their own "Railroad Tycoon".
>Transport Tycoon was originally named "I.T.S.", which is short for "Interactive Transport Simulation".
>It was only because the game went to Microprose that it became a "Tycoon" game, to tie in with their own "Railroad Tycoon".
This building was used as a model for one of the late-20th-century city buildings in Transport Tycoon: http://i.imgur.com/TpzpI.jpg
Chris Sawyer, the game's creator, also lists it as one of the buildings for which he forgot the original model: http://www.chrissawyergames.com/feature1a.htm
Sadly, I found no way of letting him know about this find.