Simple Optimization Trick
Simple Optimization Trick
Simple Optimization Trick
Here's a neat video about the creator and the game - https://www.youtube.com/watch?v=0JouTsMQsEA
I will never not upvote an Ahoy video. The guy is a legend in video game documentaries. Check out his Monkey Island video as a follow-up
Another really good one that I've watched at least 4 times is his Polybius video. He's an incredible documentarian and an equally great researcher.
I'm sure some of the Polybius one was dramatized a little (apart from what was clearly labeled as actors reading the transcripts), but it makes for an unforgettable watch. And the music!!
is there a NPM package for assembly? I need to keep access to right pad my strings package.
Dude got millions for it. Well deserved imho.
And most startlingly: no git
Edit: y'all're right, version control is for wimps. What's life without some adrenaline?
Who needs git when you have a B: drive and a Save As command for tycoon43.asm
Version control? You mean this?
./src ./src_1998_11_05_added_people_swimming ./src_1998_11_06_added_death_mechanics ./src_1998_11_06_0_removed_swimming_lol
Did the developer use any version control though? SCCS has been around since the early 70s, RCS and CVS since the 80s. The tools definitely existed.
Also, it was a single dev, which makes SCM significantly simpler!
In my experience (some games in z80 and 68000 in the early 90s), version control wasn't considered until mid-90s sometime, and at first wasn't trusted. There were network backups, but I don't know if they had revisions.
Merging seemed like it couldn't possibly work well, so we would try to have separate ownership of different files. Although there would be only a handful of programmers on a team, so that was easy.
Prior to that, backup and versioning was manually handing a floppy or two to someone each week.
Since it wasn't mentioned yet: https://openrct2.io/
Best way to play till this day
Hello everyone and welcome to another video.
The YouTube algorithm works in mysterious ways.
Because I'm nice, to anyone who doesn't get the reference: https://www.youtube.com/@MarcelVos
Have you seen the insane complexity of modern CPUs? Ain't no one hand coding that like a 6502 in 1985.
I wonder if there's anyone alive right now who would be capable of such a task.
If the hardware was fixed, I don't see why not.
Might not be as fast as the optimisations compilers do these days though.
If you have to support thousands of types of GPU and CPU and everything else, then fuck no.
Even if one did, say using x86, it would still just be interpreted by the CPU into the CPU's native opcodes, as the legacy instruction sets are interpreted/translated.
as the legacy instruction sets are interpreted/translated.
Wth? That's it, I'm sticking to the AVR then
Epic Pinball was another game that I recall was written in assembly. When your old 286 struggled to run games at a decent framerate, Epic Pinball would run in a smooth 75fps or whatever you set your CRT monitor to.
Epic Pinball, if I recall correctly, also used some ModeX trickery, meaning it had most of the pinball table in VRAM, and then modified the VGA framebuffer pointer for scrolling, then only moving as much data as it was needed (ball, flippers, etc)
"Try writing it it in assembly"
I want to get off Mr. Bones' Wild Ride.
Chris Sawyer is an absolute legend
Also know as “how to keep a coder busy”
Can you imagine making this game in assembly for MacOS over the last 20 years?
Yes
I've never written a single line of code in assembly, and I'm now curious
Really? It was required when I was in college. We did MIPS, x86, and PIC.
I like it because there's no mysterious things happening to your bits. Every line is an instruction executed. You control the machine. It's power. It gives you power over the machines.
I went to college for Microbiology and became a programmer on my own after, so nope, never written a single line in assembly and never thought of checking it out either. Just never really crossed my mind. I might start messing with it soon.
That wasn't required in my CS program, though instead we had to design our own instruction set and assembler. Obviously it was an approximation, though.
A little late to this comment but there are some assembly videogames out! They are puzzles and gives you the gist of how assembly works.
I really enjoyed TIS-100. I just never got around to beating it.
Oh, that's pretty cool. Thank you
Get an 8-bit computer emulator, and learn 6502 or Z-80 assembly.
Usborne machine-code-for-beginners or any book by Rodnay Zaks.
It gets deeper from there, and modern CPUs are kind of awful to hand-hack assembly on, but you'll at least learn how the computer really works!
I learned z80 assembly back when the cutting edge of technology was a ZX Spectrum, and 68k assembly when I upgraded to an Amiga. That knowledge served me quite well for my early career in industrial automation - it was hard real-time coding on eZ80's and 65c02 processors, but the knowledge transfers.
Back in the day, when input got mapped straight into a memory location and the display output was another memory location, then assembly seems like magic. Read the byte they corresponds to the right-hand middle row of the keyboard, check if a certain bit is set in that byte, therefore a key is held down. Call your subroutine that copies a sequence of bytes into a known location. Boom, pressing a key updates the screen. Awesome.
Modern assembly (x64 and the like) has masses of rules about pointer alignment for the stacks, which you do so often you might as well write a macro for it. Since the OS doesn't let you write system memory any more (a good thing) then you need to make system calls and call library functions to do the same thing. You do that so often that you might as well write a macro for that as well. Boom, now your assembly looks almost exactly like C. Might as well learn that instead.
In fact, that's almost the purpose of C - a more readable, somewhat portable assembly language. Experienced C developers will know which sequence of opcodes they'd expect from any language construction. It's quite a simple mapping in that regard.
It's handy to know a little assembly occasionally, but unless you're writing eg. crypto implementations, which must take the exact same time and power to execute regardless of the input, then it's impractical for almost any purpose nowadays.
Very interesting. Thank you. I may start looking into C instead. I'll still watch a couple of videos on assembly, just for the hell of it.
This but unironically
TTD and RCT are still amazing.
Rollercoaster Tycoon was the last of an era, not a sudden burst of genius.
Before Doom (1993), almost all games were assembly. Doom was a shock to the industry. You could now write a high performance, multiplatform, sophisticated game in a compiled language (C). When I say multiplatform, I don't just mean how it was ported to everything later. It was developed on NextStations first. DOS was the first port. So it proved all of the above immediately on release.
We take for granted that C is performant now, but that wasn't obvious until optimizing compilers got good and someone tried.
Rollercoaster Tycoon (1999) is the last notable title that used ASM. It's impressive in many ways, but it wasn't as much of a standout as it seems now. Six years earlier to its release, that was just how games were done.
It's notable that the only port of Rollercoaster Tycoon was the original Xbox, which was also x86. Nobody wants to rewrite it for anything else.
Carmack wrote Wolfenstein 3d in C. Star Control and Dune 2 were C.
almost
Those games didn't have the splash that Doom did for this sort of thing.
https://web.archive.org/web/20010105180900/http://www.gamespy.com/legacy/articles/devweek_c.shtm
Just to throw on more factoids:
Wasn't Gabe Newell either the first, or among the first, to port Doom to Win 95?
He was an analyst at Microsoft who was tasked with finding out how many computers ran Windows to determine market share. Part of the question involved asking what other software was installed and the only software used more than Windows was Doom. This made GabeN realize the market potential of games and he left Microsoft shortly afterward.
Eventually it sort-of got a rewrite to create RollerCoaster Tycoon Classic, initially for iOS and Android, later for Windows, macOS, and Nintendo Switch. It largely is a rewrite of RollerCoaster Tycoon 2, with the goal of bringing the game to more modern platforms, and the save files for parks and rides are compatible. In this interview with Atari Club, Sawyer says the rewrite was in C++ but even with a team of people still took longer to write in C++ than it took him to write the original in x86 assembly.
If anyone previously paid attention to RCT Classic, it’s been seeing some development work again and is working on Android again. They also made RCT Classic+ on Apple Arcade (basically just the game and all the expansions included) and also updated the regular versions of RCT Classic so they run correctly again (RCT Classic stopped working on macOS when Apple dropped support for 32-bit applications and Atari didn’t release a recompiled game until recently).
Because it's true. Here's an article from Tim Sweeney from 2001:
https://web.archive.org/web/20010105180900/http://www.gamespy.com/legacy/articles/devweek_c.shtm