Jump to content
IGNORED

Am I too old for ASM?


MrTrust

Recommended Posts

Emuliscious now occupies the #2 spot in my all time best emulator names right after the 25+ year reigning champion, NESticle.   :)    In all seriousness, you sound like you have a natural talent for coding if you picked it up that quickly.  As always, the first step (that I have yet to fully take myself) is always the hardest and you've got that far behind you.

Link to comment
Share on other sites

  • 1 month later...
On 10/24/2023 at 4:00 AM, MrTrust said:

Unfortunately, this is the only way I've been able to learn anything wrt computing. I can't follow programmed instruction, or take someone else's blueprint and learn from that.  I have to see the toolbox, I have to understand what each of the tools does, and then I need to just go try and build a house with them based of what I've observed .  Only then can I effectively learn from someone who's already built a house because I then have a point of comparison for why my house looks like garbage and collapses.  Really inefficient way of learning, but that's how my brain works in the absence of being forced.

I think this way of learning is *exactly* what you need when you want to master 6502 ASM programming for the Atari 2600. But only if you don't get discouraged by having to rebuild your "house" multiple times, or even better: if you actually enjoy rebuilding it and then seeing the benefits. The number of "tools" (= different instructions) in 6052 assembly language is pretty limited, so understanding what each instruction does should be doable. But you also need to understand the TIA (2600's graphics chip) and its features, which will take more time to fully understand. But I can assure you that it's very satisfying once you get the grasp of it. And the cool thing is that even after programming the Atari 2600 for a couple of years, you still will learn/discover new TIA tricks.

 

I started learning 6502 ASM at age 47, so I don't think you're too old to learn ASM. I do have a programming background, so that probably made it easier for me to pick up learning 6502 ASM. But anyway, I don't think that your age is an issue.

 

Next to programming the game logic using 6502 assembly, the actual challenge in Atari 2600 development is programming the display kernel. This is all about counting the CPU cycles of the instructions inside your kernel code and then making sure you correctly "time" these instructions related to the position of the TV's electron beam; this is why '2600 kernel programming is also known as "racing the beam". For my first game, I think I've rewritten my kernel more than 20 times, just because every week I learned a new programming trick which saved some CPU cycles, and then I wanted to use those free cycles to add a new display feature. And also I've spent a lot of time figuring out why the screen started rolling after I did a simple change in the kernel code. That will happen a lot and you should not get too frustrated by that. It basically comes down to counting all CPU cycles of the instructions in the kernel over and over, until you find your mistake. Writing an advanced Atari 2600 kernel is more like figuring out a complex puzzle. 76 is the magic number here, which is the number of CPU cycles you can use on each scanline. Luckily the debugger in the Stella emulator helps a lot in tracking down kernel bugs.

 

What really helped me is having printed documentation references for both 6502 assembly language and the TIA address features, so I could have these opened on my desk while programming. I can advice to buy the books "Stella Programmer's Guide" and "6502 Instruction-set Guide"; I've made links to both printed guides in this post. These reference-guides are coil-bound, so easy to keep opened on your desk.

Andrew Davie's "Atari 2600 programming for Newbies" book helped me a lot to get started, and then Darrell Spice Jr.'s guide on developing a simple game (named "Collect") learned me how to keep an administration of the kernel CPU cycles and also how to make sound/music.

 

And because you mentioned that you're mostly interested in game design as it works within the constraints of the system: did you read the book Racing the beam? That book is all about how the limitations of the Atari 2600 forced the game designers to get very creative and make concessions while still delivering great games. You will only experience "racing the beam" when doing '2600 assembly development.

 

 

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

40's?  Ugh.  lol.   I'm going on 53 and just decided right now I need to learn to program on the 2600 and Commodore 64 as a bucket list thing.  Went to school for programming like 30 years ago, never really did anything with it.  Got into the hardware side of computers.  But.. assembly & making a couple games is something I feel I need to do.  I'm not a book learner... so I have that going against me.  More of a visual, testing, comparison kind of learner.. so not sure what chance I have.  Looking at asm files, there seems to be stuff you need to know.. and stuff you don't really need to know.. where the code just needs to exist.   Just starting to work with backgrounds and playfields...

  • Like 2
Link to comment
Share on other sites

22 hours ago, dgrams2000 said:

40's?  Ugh.  lol.   I'm going on 53 and just decided right now I need to learn to program on the 2600 and Commodore 64 as a bucket list thing.  Went to school for programming like 30 years ago, never really did anything with it.  Got into the hardware side of computers.  But.. assembly & making a couple games is something I feel I need to do.  I'm not a book learner... so I have that going against me.  More of a visual, testing, comparison kind of learner.. so not sure what chance I have.  Looking at asm files, there seems to be stuff you need to know.. and stuff you don't really need to know.. where the code just needs to exist.   Just starting to work with backgrounds and playfields...

I was in a similar situation and what I did to start was simply read the "Stella Programmers Guide" a couple of times (While hunting in my blind)- Without learning any assemble code..  I found it surprisingly easy to understand and interesting- just looked up words and concepts as I went along so I gained most (but not all) understanding.  Then I did the same thing with "Assembly In One Step"  Those two documents together add up to only like 50 pages.

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

10 minutes ago, m.o.terra kaesi said:

 

I got burned with a Unity course that didn't apply to current versions of, er, Unity.  I think DASM should be safe though.

 

The main thing is if you actually learn school style or through personal exploration.  If you're the latter then community made tutorials and the 8 Bit Workshop may be a better choice.

 

Link to comment
Share on other sites

On 1/8/2024 at 8:21 AM, m.o.terra kaesi said:

This is the course I purchased and is one of the two video series that I am using to learn.   I like it because it is 1) cheap 2) repeats a lot, and good explanations of things while showing on screen while the instructor is talking.  

Link to comment
Share on other sites

I'm 45 and started learning ASM about a year ago, but had to put it on hold due to work and study. That said I intend to pick it up again and continue. I originally wanted to code a NES game, but the 2600 always draws me toward it. I love the challenge of making a game out of such extremely limited memory and hardware limits. I previously had coding experience and made 4 games using Lua. A lot easier than ASM on a 2600 for sure. Still, the work on each game took a lot longer than I had anticipated each time. They did not become the games I was expecting. So not to ramble on about expectation, long story short, you gotta be patient, make prototypes, playtest, polish, and most of all just have fun. Really, just make the game you want to play yourself. Since it's a new language for you, you will encounter a lot of frustration, but you eventually start to see what works and what doesn't as you get more familiar. I personally find programming like puzzle solving and I love solving puzzles. There is nothing more satisfying than getting that one function to work and seeing it happen on a screen. This is one reason why I have about 200 prototypes that just have a few functions. 🤣 I was once making a procedural generation function which could take a screen full of stars and swirl them into a galaxy. It was going to be for an ascii space game I had conceived. Well. I can make nice galaxies. :P

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...