Jump to content
IGNORED

Most impressive games written in assembly


Creamhoven

Recommended Posts

On 3/4/2023 at 7:35 AM, jeffythedragonslayer said:

Roller Coaster Tycoon

This times a thousand, I remember when it first came out and I exchanged an Ant colony strategy game I couldn't run on my poor man's pentium 1 for this, which did work.

Its not just that Chris Sawyer made the entire thing alone, its that it was all done in Assembly. As I try my hardest to get blips of squares to pop up on the screen and look like its moving, Chris was there making entire customised park and roller coaster ride creation tools inside the game that can be used live as everything else is moving around. Amazing, just amazing. Slight Fanboy much.

  • Like 1
Link to comment
Share on other sites

1 hour ago, Mikebloke said:

This times a thousand, I remember when it first came out and I exchanged an Ant colony strategy game I couldn't run on my poor man's pentium 1 for this, which did work.

Its not just that Chris Sawyer made the entire thing alone, its that it was all done in Assembly. As I try my hardest to get blips of squares to pop up on the screen and look like its moving, Chris was there making entire customised park and roller coaster ride creation tools inside the game that can be used live as everything else is moving around. Amazing, just amazing. Slight Fanboy much.

It was pretty amazing.  I suspect he recycled some of his Transport Tycoon code in the RCT games.   And he definitely reused RCT code in Locomotion.   But makes sense, why reinvent the wheel?

Link to comment
Share on other sites

On 3/10/2023 at 8:40 AM, Creamhoven said:

Roller Coaster Tycoon is a nice game. No nastyness at all. There is a android port. I guess that runs off the assembly code as well?

 

@masteries

I like the martial character of the game, and the music is cool. Never played it.

 

Except for, you know, drowning the guests.

 

I wouldn't expect the android port to be x86 assembly, seeing as ARM is more popular for mobile.

Edited by jeffythedragonslayer
Link to comment
Share on other sites

On 3/17/2023 at 4:22 AM, jeffythedragonslayer said:

 

Except for, you know, drowning the guests.

Or killing them on a ride with an incomplete track...     though I think they patched this out at some point..  you couldn't open a ride that hasn't been fully tested anymore.

  • Haha 2
Link to comment
Share on other sites

  • 3 weeks later...

 

Hello Kitty! :) it depends on the definition of Assembly. 

 

Assembly language means mnemonics for the Machine Language instruction set, but many programmers use a MACRO Assembler and call the MACRO language Assembly language too. MACRO languages are high level languages that create blocks of Assembly output similar to a BASIC Compiler which is also a MACRO Assembler. 

 

Games written in 100% pure Assembly are few and far between being harder to write without high-level code.

 

Programming in Assembly without MACRO's is a great exercise that can improve low level code mechanics and programmer understanding. 

 

  • Like 1
Link to comment
Share on other sites

18 hours ago, Mr SQL said:

 

Hello Kitty! :) it depends on the definition of Assembly. 

 

Assembly language means mnemonics for the Machine Language instruction set, but many programmers use a MACRO Assembler and call the MACRO language Assembly language too. MACRO languages are high level languages that create blocks of Assembly output similar to a BASIC Compiler which is also a MACRO Assembler. 

 

Games written in 100% pure Assembly are few and far between being harder to write without high-level code.

 

Programming in Assembly without MACRO's is a great exercise that can improve low level code mechanics and programmer understanding. 

 

Assembly Language creates a 1:1 relationship between the pneumonics used and the machine code instructions.    I don't think Macros change this much, at least when I was doing Assembly they were just shorthand for inserting pre-defined blocks of assembly code into your project (which still have the 1:1 relationship to machine code)

 

Contrast this with a higher level language like C that will give different machine code results for the same program depending on the compiler used and optimization flags given.  Also higher level languages will contain commands that have no assembly language equivalent.   "print" for example is a complex operation that requires multiple machine instructions to implement.   MACROs may give you something like a print command,  but it's still inserting a bunch of assembly into your program

 

So while Macro assemblers do make assembly act more like a higher level language,  I don't think it's quite the same thing as programming in a high level language

  • Like 4
Link to comment
Share on other sites

What I find interesting about the idea of assembly coding is the efficent use of hardware when done right. We have great hardware these days, but you can look back on old games and argue that things havent improved that much or even worsend. Part of this is creativity yes, but another point is that it is easier to put something out these days.

 

When it is harder to to develop you will take greater care that your game is well thougt through and beautiful, because the coding itself is so diffcult.

 

Another aspect is when you are producing efficent code, you can do great things with lesser hardware, which is less wasteful.

 

Theoretically speaking, what scope of game would be plausible to develop with assembly or other efficent ways to make use of the hardware? What kind of system would be needed to have the specs in order for it to run such titles? If you are forced to work efficently would you even max out a raspberry pi zero?

 

We are saturated with mediocraty. Maybe if we would return to these challenges, it would lead us down a path were we think more intelligently about game design and beauty.

Edited by Creamhoven
  • Like 1
Link to comment
Share on other sites

47 minutes ago, Creamhoven said:

What I find interesting about the idea of assembly coding is the efficent use of hardware when done right. We have great hardware these days, but you can look back on old games and argue that things havent improved that much or even worsend. Part of this is creativity yes, but another point is that it is easier to put something out these days.

Absolutely 100% can agree.

 

Not to be the doomer and gloomer of the day. But programming AAA games is just so lame-O. And I hate all those "creator packages" or whatever they call that shit nowadays. Unity engine or Unreal engine.. Godot or GameMaker or CrateBox.. Refuse to play games on those platforms because they're little more than directed FMV. With only slight improvements. And the games look all the same because "engine"! Because modern GPU!

 

And since stuff is easier to put out these days, more and more of it becomes available till we're past the point of overload. And then it keeps coming more and more till one can't keep up with the scene - quashing any hopes for collecting. Blech!

 

All these game engines do is enable multi-million-dollar studio productions. Soulless productions that aren't more than a flash in the pan.

 

There's even the Qt framework, what're we up to now, version 6? And I swear every new iteration of this tool instantly demands the latest hardware standards. Not so much the MHz/GHz speed stuff, but the standards and OpenGL versions and instruction sets and Windows APIs. This whole "scene", the developer toolkit scene, moves too fast and deprecates too fast. Poiintlessly.

 

47 minutes ago, Creamhoven said:

When it is harder to to develop you will take greater care that your game is well thougt throu and beautiful, because the coding itself is so diffcult.

This is so true. And that state of affairs was responsible for the classic games, the timeless games, we so much cherish to this very day. And the increased difficulty filters out people that have no business making games. This was evident on early micros and single-board computers like the Apple II and contemporaries.

 

We didn't have shmucks making commercial games. They got relegated to their own little world full those self-important fat-men-with-glasses types that infected users groups. The wannabees..

 

47 minutes ago, Creamhoven said:

Another aspect is when you are producing efficent code, you can do great things with lesser hardware, which is less wasteful.

Modern CPUs and GPUs are bogged down with all this API crap its ridiculous. And those game maker tools are nothing but added layers. A seasoned player can tell when too much of this crap is used.

 

The worst thing I hate is that those game maker tools and frameworks make every game look alike and play alike.

 

Not any better than that .net shit. All it did was make for worse compatibility, and create the annoyance of having to have the right library version(s) installed. Ugh! This thing stunk of a pet project with zero usefulness that couldn't be had elsewhere. Fuckit!

 

47 minutes ago, Creamhoven said:

Theoretically speaking, what scope of game would be plausible to develop with assembly or other efficent ways to make use of the hardware?

There is no limit. While one man can only do so much assembly code per day, you can get additional programmers on the job.

 

47 minutes ago, Creamhoven said:

What kind of system would be needed to have the specs in order for it to run such titles?

I don't believe specs are important here. Just use the existing hardware to the best of your ability.

 

47 minutes ago, Creamhoven said:

If you are forced to work efficently would you even max out a raspberry pi zero?

Probably not.

 

47 minutes ago, Creamhoven said:

We are saturated with mediocraty. Maybe if we would return to these challenges, it would lead us down a path were we thing more intelligently about game design and beauty.

Absolutely for sure.

 

Every game that comes out seems one and the same over and over and over again.. It's worse than my ranting posts even! My god.. STOP!!

 

I remember (and still do) recreational programming in Applesoft BASIC. I was not the best but I had tons of fun. I would just fart around with mathematical formulas and make interesting graphic patterns that sometimes had animation to them. Thinks like spirals and circles and Lissajous plots. And it was always amusing and interesting to run my stuff though Beagle Bros. COMPACT utility, it basically renamed variables, combined lines, and did other small tricks to optimize any given BASIC program. And I would see a speed-up of maybe 5 to 10%. Then I would run it through Einstein Compiler. This converted it into machine language, and I often saw a 50% improvement. That was magic to me. It was the poor man's accelerator card.

  • Like 1
  • Confused 1
Link to comment
Share on other sites

11 minutes ago, Keatah said:

Absolutely 100% can agree.

 

Not to be the doomer and gloomer of the day. But programming AAA games is just so lame-O. And I hate all those "creator packages" or whatever they call that shit nowadays. Unity engine or Unreal engine.. Godot or GameMaker or CrateBox.. Refuse to play games on those platforms because they're little more than directed FMV. With only slight improvements. And the games look all the same because "engine"! Because modern GPU!

 

And since stuff is easier to put out these days, more and more of it becomes available till we're past the point of overload. And then it keeps coming more and more till one can't keep up with the scene - quashing any hopes for collecting. Blech!

 

All these game engines do is enable multi-million-dollar studio productions. Soulless productions that aren't more than a flash in the pan.

 

There's even the Qt framework, what're we up to now, version 6? And I swear every new iteration of this tool instantly demands the latest hardware standards. Not so much the MHz/GHz speed stuff, but the standards and OpenGL versions and instruction sets and Windows APIs. This whole "scene", the developer toolkit scene, moves too fast and deprecates too fast. Poiintlessly.

 

This is so true. And that state of affairs was responsible for the classic games, the timeless games, we so much cherish to this very day. And the increased difficulty filters out people that have no business making games. This was evident on early micros and single-board computers like the Apple II and contemporaries.

 

We didn't have shmucks making commercial games. They got relegated to their own little world full those self-important fat-men-with-glasses types that infected users groups. The wannabees..

 

Modern CPUs and GPUs are bogged down with all this API crap its ridiculous. And those game maker tools are nothing but added layers. A seasoned player can tell when too much of this crap is used.

 

The worst thing I hate is that those game maker tools and frameworks make every game look alike and play alike.

 

Not any better than that .net shit. All it did was make for worse compatibility, and create the annoyance of having to have the right library version(s) installed. Ugh! This thing stunk of a pet project with zero usefulness that couldn't be had elsewhere. Fuckit!

 

There is no limit. While one man can only do so much assembly code per day, you can get additional programmers on the job.

 

I don't believe specs are important here. Just use the existing hardware to the best of your ability.

 

Probably not.

 

Absolutely for sure.

 

Every game that comes out seems one and the same over and over and over again.. It's worse than my ranting posts even! My god.. STOP!!

 

I remember (and still do) recreational programming in Applesoft BASIC. I was not the best but I had tons of fun. I would just fart around with mathematical formulas and make interesting graphic patterns that sometimes had animation to them. Thinks like spirals and circles and Lissajous plots. And it was always amusing and interesting to run my stuff though Beagle Bros. COMPACT utility, it basically renamed variables, combined lines, and did other small tricks to optimize any given BASIC program. And I would see a speed-up of maybe 5 to 10%. Then I would run it through Einstein Compiler. This converted it into machine language, and I often saw a 50% improvement. That was magic to me. It was the poor man's accelerator card.

Thank you for sharing your insight. This helps me understanding the current state of things and how we got there.

 

It seems to me like great people have worked hard to develop great things such as gaming, and later on people who are of lesser quality pile up more and more creating hideous contraptions.

 

I saw a modern game not to long ago were a woman makes hideous and obscene faces, like her brain is being eaten by worms or something. The people that come up with this stuff must be really sick freaks. Imagine the trouble the romans went through to build the colloseum. With this kind of challenge they had to face they would never have dreamt of doing anything less than absolute greatness.

 

If this current gaming industry would vanish and would be slowly replaced by decent people, nothing would be missed.

  • Like 1
Link to comment
Share on other sites

2 hours ago, Creamhoven said:

What I find interesting about the idea of assembly coding is the efficent use of hardware when done right. We have great hardware these days, but you can look back on old games and argue that things havent improved that much or even worsend. Part of this is creativity yes, but another point is that it is easier to put something out these days.

 

When it is harder to to develop you will take greater care that your game is well thougt through and beautiful, because the coding itself is so diffcult.

 

Another aspect is when you are producing efficent code, you can do great things with lesser hardware, which is less wasteful.

 

Theoretically speaking, what scope of game would be plausible to develop with assembly or other efficent ways to make use of the hardware? What kind of system would be needed to have the specs in order for it to run such titles? If you are forced to work efficently would you even max out a raspberry pi zero?

 

We are saturated with mediocraty. Maybe if we would return to these challenges, it would lead us down a path were we think more intelligently about game design and beauty.

I disagree that going back to assembly would lead to beauty or better game design

 

If programming is like building houses,  then programming in assembly is like building a house where you have to dig up your own clay, to bake your own bricks, cut down your own trees to make 2x4's for framing, etc   It's extremely tedious and at the end of the day you'll be happy to have something where the roof doesn't leak even if it's far from beautiful.

 

Programming in other languages is like being able to order bricks and lumber from a supplier and getting to choose what's appropriate -  you can proceed at a much faster and you have the ability to make something more appealing (if you have the talent to pull it off)

 

It comes down to productivity vs performance,   systems today offer plenty of performance that assembly doesn't give much of an edge, except in specific cases

  • Like 4
Link to comment
Share on other sites

7 minutes ago, zzip said:

I disagree that going back to assembly would lead to beauty or better game design

Okay, but would you agree that making the barrier high enough, to lock disfunctional people out of the gamedevelopment process, stopping them from creating freakishly ugly things?

7 minutes ago, zzip said:

If programming is like building houses,  then programming in assembly is like building a house where you have to dig up your own clay, to bake your own bricks, cut down your own trees to make 2x4's for framing, etc   It's extremely tedious and at the end of the day you'll be happy to have something where the roof doesn't leak even if it's far from beautiful.

At least that house will be made by someone who is in touch with nature, or in the case of programming structual thinking.

7 minutes ago, zzip said:

Programming in other languages is like being able to order bricks and lumber from a supplier and getting to choose what's appropriate -  you can proceed at a much faster and you have the ability to make something more appealing (if you have the talent to pull it off)

Okay, where would you draw the line?

7 minutes ago, zzip said:

It comes down to productivity vs performance,   systems today offer plenty of performance that assembly doesn't give much of an edge, except in specific cases

That is good to know. What languages do you suggest for peak performance?

Link to comment
Share on other sites

27 minutes ago, Creamhoven said:

I saw a modern game not to long ago were a woman makes hideous and obscene faces, like her brain is being eaten by worms or something. The people that come up with this stuff must be really sick freaks. Imagine the trouble the romans went through to build the colloseum. With this kind of challenge they had to face they would never have dreamt of doing anything less than absolute greatness.

Not everyone is an artist.   Give 1000 people a stone block, hammer and chisel and very few of them will produce a sculpture anywhere near "The Thinker" or Michelangelo's David

 

Even in the old days there were plenty of low-effort games.   How many of us hacked away at BASIC and produced some game that was nowhere near a rival to anything commercial.   Mostly they've been lost with old cassettes or floppy disks they were stored on.  We couldn't upload them to Steam or itch.io.so most people didn't see them.

 

I think one problem is too many people are tolling away in the digital world while the real world is falling apart.   Imagine if just a fraction of the effort to build virtual worlds was spent in the real world?

  • Like 1
Link to comment
Share on other sites

5 minutes ago, zzip said:

Not everyone is an artist.   Give 1000 people a stone block, hammer and chisel and very few of them will produce a sculpture anywhere near "The Thinker" or Michelangelo's David

 

Even in the old days there were plenty of low-effort games.   How many of us hacked away at BASIC and produced some game that was nowhere near a rival to anything commercial.   Mostly they've been lost with old cassettes or floppy disks they were stored on.  We couldn't upload them to Steam or itch.io.so most people didn't see them.

 

I think one problem is too many people are tolling away in the digital world while the real world is falling apart.   Imagine if just a fraction of the effort to build virtual worlds was spent in the real world?

I see your point about most productions not being masterpieces. Still the people who did "low effort" work with basic were engaging in a serious challenge with little pay-off, a dynamic that I would argue encourages more sophisticated design.

 

Realworld engagement would be desperatly needed to prevent terrible things from happening. The reality is, not only is this type of action forcefully discouraged, we cant even talk about such things on this forum, which is no exception at all. Lao Tzu advices to follow the natural flow/movement of things.

Link to comment
Share on other sites

6 minutes ago, Creamhoven said:

Okay, but would you agree that making the barrier high enough, to lock disfunctional people out of the gamedevelopment process, stopping them from creating freakishly ugly things?

You can't stop people from making horrible things,  usually you resort to curation to separate out the outstanding work.

 

Some modern platforms barely have curation, it's like walking into an art museum where the artwork of Mrs. O'Mally's kindergarten class is displayed next to a Rembrandt and it's up to the user to find the gems through a mountain of mediocre stuff.

 

I don't think there needs to be a barrier,  game design requires multiple talents that not every programmer possesses.   Programming,  visual design, music, sound design, story.   In modern game design, those tasks go to people who specialize.   In the old days it wasn't uncommon for one person to take on all that with varying degrees of success.  There might be a decent game with terrible sprites because the programmer wasn't an artist.   Plenty of hackers on this forum have been replacing sprites in old games with better ones.

 

There's also a blanket hatred of modern games around here that isn't justified,    there's games made for every taste.  Some real works of art too.

  • Like 1
Link to comment
Share on other sites

1 hour ago, zzip said:

Assembly Language creates a 1:1 relationship between the pneumonics used and the machine code instructions.    I don't think Macros change this much, at least when I was doing Assembly they were just shorthand for inserting pre-defined blocks of assembly code into your project (which still have the 1:1 relationship to machine code)

 

Contrast this with a higher level language like C that will give different machine code results for the same program depending on the compiler used and optimization flags given.  Also higher level languages will contain commands that have no assembly language equivalent.   "print" for example is a complex operation that requires multiple machine instructions to implement.   MACROs may give you something like a print command,  but it's still inserting a bunch of assembly into your program

 

So while Macro assemblers do make assembly act more like a higher level language,  I don't think it's quite the same thing as programming in a high level language

 

Good points. There is some overlap and some programs have greater use.

 

I think it depends how reliant the program is on macro use, and the type of macros leveraged. Some macros generate large block of asm and can be implemented without even looking at the generated code and may be retuned with subsequent releases of the Macro assembler like the C compiler optimizations.

They are not necessarily a bad thing for being higher level. And Macros have gotten very advanced blurring the line with large libraries. 
 

 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...