It’s an almost perfect game, that gets to live pretty much forever with the advent of OpenRTC. That game is a true wonder of human ingenuity, and I’m not even being hyperbolic.
It totally belongs right there next to DOOM and Legend of Zelda haha.
Yeah it’s 99% written in assembly which if you know assembly is fucking hard.
You don’t even have primitives like division in assembly. You have to write that code yourself to tell the processor how to divide two numbers and handle a remainder… Modern CPUs are different now in that they have that as a built in feature but back then they didn’t.
Like the famous joke about assembly: “to bake an apple pie in assembly, first you must create the entire universe”
Yes assembly is complicated, but more like error prone and tedious than fucking hard, which still makes the game a huge achievement, especially considering its complexity. I haven’t had RCT crash on me even once for which I admire the author! What you miss compared to a programming language are named variables and especially structures, named functions and loops can be simulated (as can everything a higher language like C can do) and are just not as comfortable. And you have to have a way more intimated knowledge of the inenr workings of the processors you want to run your software on, than with higher languages.
Div has been part of the Intel assembler since the 8086 from 1978, long before RCT was written. The first processor supporting it is from 1952! (The IBM 701), fdiv (Floating point divide) was widely available on Home-PCs since the 8087 from 1980. By the time RCT was written there where already comfort functions integrated into processor instructions sets like setting single bytes with BTS or scaled index addressing. Still writing software with a programming language was way easier and faster. But the result would never be as optimized as a good assembly program.
That’s fascinating! Thank you for sharing so much detail!
The thing is, too, that blows my mind, is for how difficult/tedious the language is, he even made it calculate physics, in isometric 2D. It was accurate enough to use in my math class for designing a roller coaster lol…and yet it’ll run on a toaster these days.
Like maybe this is relatively simple for the right kind of people but here I am amazed I imported my model into Godot and was able to script a quit button, so needless to say I’m continuously in awe at how crazy this game is.
It could have just as easily been a hyper-niche hardcore simulator, too, for turbo-nerds obsessed with this kind of thing, and a million vague buttons nestled in sub-menus using engineer jargon.
But no, it has an incredibly intuitive little interface and it’s so fun that we got hooked on it as kids; It’s still a game, and it’s still an absolute delight to play.
Didn’t Roller Coaster Tycoon have a file size of something like 55MB?
It’s an almost perfect game, that gets to live pretty much forever with the advent of OpenRTC. That game is a true wonder of human ingenuity, and I’m not even being hyperbolic.
It totally belongs right there next to DOOM and Legend of Zelda haha.
Yeah it’s 99% written in assembly which if you know assembly is fucking hard.
You don’t even have primitives like division in assembly. You have to write that code yourself to tell the processor how to divide two numbers and handle a remainder… Modern CPUs are different now in that they have that as a built in feature but back then they didn’t.
Like the famous joke about assembly: “to bake an apple pie in assembly, first you must create the entire universe”
Yes assembly is complicated, but more like error prone and tedious than fucking hard, which still makes the game a huge achievement, especially considering its complexity. I haven’t had RCT crash on me even once for which I admire the author! What you miss compared to a programming language are named variables and especially structures, named functions and loops can be simulated (as can everything a higher language like C can do) and are just not as comfortable. And you have to have a way more intimated knowledge of the inenr workings of the processors you want to run your software on, than with higher languages.
Div has been part of the Intel assembler since the 8086 from 1978, long before RCT was written. The first processor supporting it is from 1952! (The IBM 701), fdiv (Floating point divide) was widely available on Home-PCs since the 8087 from 1980. By the time RCT was written there where already comfort functions integrated into processor instructions sets like setting single bytes with BTS or scaled index addressing. Still writing software with a programming language was way easier and faster. But the result would never be as optimized as a good assembly program.
That’s fascinating! Thank you for sharing so much detail!
The thing is, too, that blows my mind, is for how difficult/tedious the language is, he even made it calculate physics, in isometric 2D. It was accurate enough to use in my math class for designing a roller coaster lol…and yet it’ll run on a toaster these days.
Like maybe this is relatively simple for the right kind of people but here I am amazed I imported my model into Godot and was able to script a quit button, so needless to say I’m continuously in awe at how crazy this game is.
It could have just as easily been a hyper-niche hardcore simulator, too, for turbo-nerds obsessed with this kind of thing, and a million vague buttons nestled in sub-menus using engineer jargon.
But no, it has an incredibly intuitive little interface and it’s so fun that we got hooked on it as kids; It’s still a game, and it’s still an absolute delight to play.
Definitely one of my “desert island” games. :)