this post was submitted on 20 Mar 2025
523 points (98.5% liked)

Greentext

5900 readers
1077 users here now

This is a place to share greentexts and witness the confounding life of Anon. If you're new to the Greentext community, think of it as a sort of zoo with Anon as the main attraction.

Be warned:

If you find yourself getting angry (or god forbid, agreeing) with something Anon has said, you might be doing it wrong.

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] LeninOnAPrayer@lemm.ee 182 points 1 week ago (5 children)

For those unaware. Assembly language is not something you would ever really program a game in. Which is why it's so impressive that it was programmed this way. It's also a reason why the game ran so well on the hardware of the time.

In programming we talk about "high level" and "low level" programming languages. The level does not mean difficulty, in laymen's terms you can think about it about how "close" you are to programing by typing in 1s and 0s. If you're "low" you are very close to the ground level (the hardware). Obviously, no one programs in 1s and 0s because we created languages that convert human typed code into what a computer wants which is 1s and 0s.

Assembly is a very "low level" programming language. It's essentially as "close" to programing in 1s and 0s as you would ever get. It is still an important language today but no one in their right mind would ever program a game in it unless you were running with extremely strict hardware restrictions where every single bit of memory needed to be dealt with perfectly. Which is basically what Chris did.

[–] lunarul@lemmy.world 62 points 1 week ago* (last edited 1 week ago)

Sawyer started writing games in Z80 assembly. Assembly language was definitely something you would use to program games back in those days.

[–] notabot@lemm.ee 44 points 1 week ago (2 children)

Assembly language is not something you would ever really program a game in.

Back then you wrote whatever you needed to be performant and/or that involved close access to the hardware in assembler. A game would definitely count. It's kind of nice to do, in many ways it's simpler than high level programming, you've just got a lot more to keep track of.

[–] LodeMike 20 points 1 week ago (3 children)

This isn't really true on modern systems anymore. Lower level languages like C and Rust are more or less just as performant as handmade assembly.

[–] notabot@lemm.ee 11 points 1 week ago (1 children)

Sure, compilers have come a long way since then and there is vanishingly little you'd write in assembler now-a-days, and you'd probably drive yourself mad trying to do so on anything more complex than a microprocessor.

[–] sunstoned@lemmus.org 3 points 1 week ago

No disrespect, but I love that folks from the UK always say "assembleuh" like they were on their way to saying "assembly" and got spooked halfway through

[–] sugar_in_your_tea@sh.itjust.works 4 points 1 week ago (3 children)

Yup. And our processors are a lot more powerful, so the tricks you'd do in assembly to eek out performance just don't matter anymore.

[–] mbfalzar@lemmy.dbzer0.com 8 points 1 week ago (1 children)

I know it's a typo but "eek out performance" has made me picture someone programming a little ghost to spook the rest of the code into running faster

I think it was a subconscious letter swap. :) I'll keep it because ghosts.

[–] LodeMike 2 points 1 week ago

Yes that's what I was referring to.

It's some sort of out of order execution and branch prediction that does it. The thing you're usually waiting on the most is IO.

[–] easily3667@lemmus.org 1 points 1 week ago

If you need to precisely know exactly how many instructions are running in a loop (ie super duper embedded)

[–] Simulation6@sopuli.xyz 1 points 1 week ago

I used a macro assembler to create assembly programs once. It made the process much easier, at least for the tiny things I did. Can not image a full game.

[–] easily3667@lemmus.org 36 points 1 week ago (5 children)

I love that you're "for those unaware" for assembly but not the random dude who made a video game in 1994 over 30 years ago (that I for one have never heard of).

[–] sugar_in_your_tea@sh.itjust.works 29 points 1 week ago (1 children)

The dude or the game? The game, Transport Tycoon, is phenomenal, and you should try OpenTTD, which is a FOSS recreation of it by fans (not in assembly).

[–] amon@lemmy.world 11 points 1 week ago

The fact that the OpenTTD devs made it compatible down to the save files and textures is nothing short of incredible. Like how much time and dedication does that take?

[–] MeaanBeaan@lemmy.world 15 points 1 week ago (2 children)

If people these days don't know what rollercoaster tycoon is I'm going to start feeling way more old than I already do.

[–] stray@pawb.social 21 points 1 week ago

I know what Rollercoaster Tycoon is, I just can't identify random game developers by their vacation photos.

[–] easily3667@lemmus.org 2 points 1 week ago* (last edited 1 week ago)

That's not the first game.

Also what the other guy said.

[–] amon@lemmy.world 14 points 1 week ago (1 children)

a video game

Not one, like 3 or 4 of them in Assembly, the Tycoon games.

Bro is a living legend.

[–] easily3667@lemmus.org 6 points 1 week ago

Clearly not super well known.

[–] the_riviera_kid@lemmy.world 10 points 1 week ago (1 children)

Right? My first question was "Who the fuck is Chris Sawyer?"

[–] JackFrostNCola@lemmy.world 4 points 1 week ago (1 children)
[–] the_riviera_kid@lemmy.world 4 points 1 week ago

No lie, I almost typed Tom Sawyer when writing my previous comment.

[–] fibojoly@sh.itjust.works 22 points 1 week ago* (last edited 1 week ago)

Assembly language is not something you would ever really program a game in.

... these days. I assure you all the games my mate wrote on the HP calculator back then were in Assembly. And on the PC I would certainly use C but the core of it, the displaying of pixels and low level catching of input for example, were all in assembly. But yeah, that being said, for the time, everything in assembly was a pretty crazy approach given the tools available on PC.

[–] hildegarde@lemmy.blahaj.zone 16 points 1 week ago* (last edited 1 week ago)

Assembly was the language you used to write games back then. Most 8 and 16 bit console games were written in assembly. They needed low level code for the performance.

If you played sonic spinball on the genesis/mega-drive, you played a game that struggled at 20 fps because the developers chose to write in C instead of assembly to hit their deadline. That is why most games were coded in assembly in those days.

Sawyer started developing games in 1983. He would have learned assembly, and continued using the tools and techniques he was familiar with his entire career.

Assembly was pretty uncommon by 1999. RCT is uniquely made, but not because Chris Sawyer was a unique coding genius doing what no one else could, but because he was one of the few bedroom coders of the 80s who held out that long.