fdurso224 #1 Posted December 21, 2007 (edited) Hi Guys: I've been on Atariage.com for a couple of months now, & I'm interested on this whole "Homebrew" game programming idea. But I have a question to ask. How do you make a Homebrew Game? I understand about the concept of having a eureka moment on what type of game I want to do in particular, however, I have absolutely no idea on how to go on my Personal Computer & make a Homebrew game!! Unfortunately, I'm Computer Illiterate (to a degree) & that's why I'm asking this question. So my question anew is, " How do you make a Homebrew Video Game for the Atari 2600?" Any help would be deeply appreciated! Anthony.... Edited December 21, 2007 by fdurso224 Quote Share this post Link to post Share on other sites
+Psionic #2 Posted December 21, 2007 LOL Well, learn how to program...that's a start. Quote Share this post Link to post Share on other sites
fdurso224 #3 Posted December 21, 2007 LOLWell, learn how to program...that's a start. Droll. But besides that as well. Anthony.... Quote Share this post Link to post Share on other sites
+Nathan Strum #4 Posted December 21, 2007 Start here. Quote Share this post Link to post Share on other sites
+Psionic #5 Posted December 21, 2007 Droll. But besides that as well. Besides that? In short... Learn how to program. Come up with a game concept. Design and program the game. Do some play testing. Fix any bugs. Do more play testing. Complete coding and finish game. Have cartridges made, or make them yourself. ---> Quote Share this post Link to post Share on other sites
fdurso224 #6 Posted December 21, 2007 Droll. But besides that as well. Besides that? In short... Learn how to program. Come up with a game concept. Design and program the game. Do some play testing. Fix any bugs. Do more play testing. Complete coding and finish game. Have cartridges made, or make them yourself. ---> Hi: Thanks for the info in short. But, is it difficult to learn how to program? Also is it expensive to get the necessary programming products? Anthony.... Quote Share this post Link to post Share on other sites
SeaGtGruff #7 Posted December 21, 2007 But, is it difficult to learn how to program? Also is it expensive to get the necessary programming products? As long as you already have a computer and an internet connection, the necessary programming products can be found for free on the internet. Of course, this specifically refers to writing and compiling a game, and then playing it on an emulator, as opposed to manufacturing cartridges. I'm also assuming that you mean a homebrew for the Atari 2600. But as far as the actual cartridges are concerned, once you've written a game, you can either pay someone to create cartridges for you, or contact Albert at AtariAge to see if he's interested in adding your game to the AtariAge store. "... the necessary programming products can be found for free on the internet." Okay, so what are they, and where do you get them from? The "what" is somewhat flexible, because it depends on how deep into the bowels of the game console you want to go, and how fancy you want to get with the programming and design side of things, not to mention the play testing; but more or less you'll need the following tools or references: (1) A computer, which you'll use to write, compile, and play your games. Most any computer will do, as long as there are compilers, editors, and emulators available for your computer's operating system. (2) A text editor, which you'll use for writing your games. Most any text editor will do, as long as you save your game code in a file format that can be read by a compiler. Basically, you want to save the program code as a simple ASCII text file. So you could use a word processor to write your game code, but you'd want to save it as a simple text file, rather than as a fancy word processing document that has embedded formatting commands. If you're using a Windows computer, you could use Notepad or WordPad. However, you might want to get a more full-featured programmer's editor, usually called an IDE ("integrated development environment"). An IDE is basically a text editor that has fancy editing capabilities, like the ability to open and edit multiple files at once, or the ability to color-code specific programming instructions or keywords. But more importantly, an IDE can be set up to call a compiler or assembler to compile and/or assemble your code into a binary file-- or ROM image-- that can be played on an emulator. Also, an IDE can be set up to run your compiled programs, such as by calling an emulator. I like "Crimson Editor," which is a free IDE for Windows, but other people may have their own personal favorite IDEs. If you want to try "Crimson Editor," check out http://www.crimsoneditor.com/ for more information. (3) A compiler and/or assembler, which you'll use to turn your program code into a binary file or ROM image. For the Atari 2600, you'll need to write your games in the 6502 assembly language, so you'll need a 6502 assembler, such as DASM. Or you can write your games in the batari Basic language, which was created by one of our very own forum members. After you write your program in batari Basic, you must use the batari Basic compiler to compile it into 6502 assembly code, then you must use a 6502 assembler to assemble the 6502 assembly code into a ROM image. That sounds rather complicated, but it's actually easy, because the batari Basic compile batch is designed to compile and then assemble your program. You can set up an IDE to call the batari Basic compile batch to compile and assemble your program with a simple mouse click. Or, if you're writing in straight assembly code, you can set up an IDE to call a 6502 assembler (such as DASM) to assemble your program with a simple mouse click. See http://www.atari2600.org/DASM/ for more about the DASM assembler, or see http://bataribasic.com/ for more about batari Basic and its compiler. (By the way, a copy of DASM is already included with the batari Basic installation package.) (4) An emulator, which you'll use to run your compiled/assembled ROM image on your computer. A number of emulators have been written for the Atari 2600, but most of them are no longer being actively developed. One that is very popular-- and which has versions for many different operating systems-- is the "Stella" emulator. See http://stella.sourceforge.net/ for more information. Another popular emulator for the Atari 2600 is "z26." It hasn't been updated lately, but the most recent DOS and Windows versions are still available. See http://www.whimsey.com/z26/z26.html for more information. (5) A good technical or programming reference for the game console you want to develop for. Assuming you want to write games for the Atari 2600, the standard reference is the "Stella Programmer's Guide," which is available from a number of different web sites. You can get it as a PDF file (see http://www.atarihq.com/danb/files/stella.pdf), a simple text file (see http://www.io.com/~nickb/atari/doc/stella.txt), or even as HTML (see http://www.alienbill.com/2600/101/docs/stella.html). (6) A good reference for the language you want to program in. If you choose batari Basic, the installation package comes with an HTML version of the help file and language guide. If you decide to use straight 6502 assembly language, you should check out the http://www.6502.org web site for information about the instructions (or "op codes") and addressing modes. Aside from those basic tools and references, you might also want to use a graphics utility or "paint" program to help you design "mockups" of what you want your game screens and sprites to look like. Michael Quote Share this post Link to post Share on other sites
potatohead #8 Posted December 21, 2007 (edited) The above post is excellent. I would add the following: Go pick out a game where you can get at the source code. From there, collect all the bits needed to assemble, compile, the game, and then do just that. Don't stop until you know how to take that program text and go from there to running the game on your setup. Play it for a while, then go looking through the program text. You will want to make some changes to learn how things go. The Batari Basic environment for the 2600 is limited, but there are a lot of great sources to check out. Pretty easy setup too. The art of programming, is not dependent on any particular computing means or method really. Grokking that can happen on anything. Once you've crossed that boundary, then it's this nice smooth climb onto other systems, languages, etc... Once you've got your setup figured out and you've built a couple of existing games for it (or other things really, does not have to be games), then go and write an existing simple game. Do breakout or pong, or something really simple. You can use the sources you have as a guide to what is needed and when. Having reached this stage, asking questions makes a lot of sense too! Programming and hacking on older computers is a lot of fun. IMHO, it takes you right to the core of computing as that's really all the early stuff was about! IF you are into it after doing a simple game, you are then ready to consider your homebrew project! Well, that's not totally accurate. You might have one in mind way sooner than that, but you will be ready to start building it at this stage. As kids, many of us did exactly this. Long ago, on the Apple ][, the first computer I ever really wrote any code for, a small group of us wanted to do games. Took us a few months to read the books, look at programs, toss around ideas, and learn to write code. During that time, we looked at lots of code, made changes to it, watched it and learned from it. We broke basically everything once! Our first game was a simple artillery game. Wrote code to plot out a landscape, draw the little guns, take input, etc... I can still remember the day when the basic math clicked! To move something, we had to evaluate some math, over and over. That was the game loop. To detect when something hit something else, that was more math. Bullet position must equal enemy gun base position, plus or minus some value. That boring algebra class made some sense finally! Damn cool stuff. Later on we explored binary math. There was nobody to help then. Funny too, our math teacher knew about binary, but considered it some fringe thing nobody cared about. Little did that guy know. Spent time on black boards working through and, or, not, xor, add, sub, and other core cpu operators. At the end of the day, we realized somewhere in there, computers really only do a coupla things: they add numbers together, move them around, and do bit operations on them (and, or, not, xor). They do these things very quickly, and in sequence, for the most part. Everything else is just specific sequences that have meaning for us people. We found that plotting pixels on the screen, for example, was slow in the BASIC language we had then. Assembly language was the language that the BASIC was written in, so it's gotta be faster. (it is) Back to the same process we went! Looked through the basic program listing, in assembly language, printing out chunks of it, looking it over, reading the books, etc... some time after that, we had our faster pixel plotter. It all goes the same way really. That was a very fun time in my life. Today, that small group of kids still talk! We still play old games, we still write stuff, and we like computers generally for the fun of computing, sparked in us then. Today, one can go and look at a Batari Basic program, for example. There are not so many books about it, but there are people here to talk to, and you can go visit www.randomterrain.com for an excellent online manual, detailing what everything does. So, you follow a program from start to finish! Get out your notepad, print the thing out, then start looking at it. You will see commands, and arguments. Each one does something --a little thing. Together, and quickly, they form the game. Making small changes to the program helps to clarify what does what and why. It's also not important to understand everyting in sequence. It is important to understand something, however. From that thing, you build onto other things, until you really do grok what that program is doing. While you are working on understanding some program, take some time and understand that hardware it runs on too. What are the parts of it? What is memory, how much of it does it have? There are chips that do things, and what do they do, why? The two play together, so you may be working on a line of code that does something, and that will lead you to the hardware side, for the why it does something, or how. It really helps to personify things. You are the explorer, looking back at pixels past. (and pixels present, because a whole lot of us just like it that way!) People did, and still do, amazing things with very simple computers. Doing this will bring you a new appreciation (and maybe loathing) of computers today. Most importantly, don't let fear get at you. Know you will hose things up. It's all good, nobody cares, and it's about you having some fun, nothing else! Well, that's not totally true. It's also about the art too. The art is doing something interactive, within a limited environment. That's the core of retro computing right there. Grok those things, and you will be fine. Also, don't let any kind of pressure get you either. The interaction with the computer and other people is where it's at. When / if you get something done, that's cool. It might just be a ball bouncing around the screen for the first time. (an excellent starter, BTW) Get it to bounce, then show it off! That's kind of a coming of age thing. Having done that, you are one of the people doing stuff they want to do on their toys. From there, it's really all about what you find fun and interesting. Finally, the scene here is about as good as it gets. Great people, great retro (and some modern stuff) toys, and lots to do and learn about. There are far worse hobbies! Edit: Sorry, this topic sparked some good memories. Long ago, sitting in front of a computer for the first time, we were all supposed to be entering commands and doing stuff. The Apple computers made this loud *beep*, when one didn't get it right. I looked around and noted three kinds of people: -those that tried to make it beep again! (yeah, that's most of us tinkerers here today) -those that waited or asked why -those that took their hands off the machine and felt bad about it. The first two groups of people ended up enjoying computers generally. The latter group didn't. After watching that as a kid, I found it interesting to revisit those people later in life. At a high school reunion, the first group were all some kind of technical people, computers just being tools to play with. The second were adept users, enjoying the machines with little fear, but not so in to things to program, for example. The latter group were almost all AOL users, kind of scared of the machines, and used them only for those things they felt of value. That's why I wrote about the fear stuff. Really, there shouldn't be any, nor should there be any embarrassment. Everybody has to write some clunky code, working toward bigger and better things. Bouncing that ball is cool, and an accomplishment shared by few of your peers! Keep perspective, is really what I'm trying to say. It's fun, that's all. Edited December 21, 2007 by potatohead Quote Share this post Link to post Share on other sites
ComputerSpaceFan #9 Posted December 21, 2007 Awesome answers to an awesome question. I too have been tempted to try my hand at making homebrew but I have zero code writing skill. If I may interpret what the original question was in my own way, I think maybe the user was hoping there was a nice, easy graphic interface - type program that would allow you to see your work in a screen and make the game that way. Much like map level editors for today's PC games. I know having watched "Once Upon Atari" (an excellent DVD by the way) that the original programmers back in the day had to think in assembler and my hat is off to anyone today that can still do that. Comparing that experience to seeing today's game programmers clicking away at the 3d rendered characters or environments on their desktops to make a game cause me to think hey if I could manipulate a basic game with a mouse like that, heck I could make some fun Atari games too. Unforunately my guess is no such interface exists for making 2600 games, am I right? You pretty much have to work at the code level? Quote Share this post Link to post Share on other sites
potatohead #10 Posted December 21, 2007 The links in #5 above appear to be dead now Hopefully, they've just moved. Been a while since I looked at the BASIC forum. There is this: http://www.atariage.com/forums/index.php?s...111938&st=0 It's kind of nice to see a simple example, with comments, and stuff to type in. As good of a start as any. Keep expectations low, and just plug away at it, until that first little program gets written. It gets easier from there. Bouncing a ball on screen, moving one of the sprites around the screen with the joystick, maybe just getting the sprite on screen in the right color, etc... Those are all nice and simple tasks, where one can get some help, and keep the focus on learning core things one can build on. Once the building starts, it kind of snowballs with ones interest level and free time. Quote Share this post Link to post Share on other sites
+batari #11 Posted December 21, 2007 Unforunately my guess is no such interface exists for making 2600 games, am I right? You pretty much have to work at the code level? Yes, it does, in the form of binary hacking tools. They are analogous to level editors of today - i.e. (hopefully) changing the game data while retaining the game code. Quote Share this post Link to post Share on other sites
fdurso224 #12 Posted December 21, 2007 Hi Guys: I must say, Thank you Potatohead & SeaGtGruff for the Valuable information that you gentleman have given me. Plus to PingvinBlueJeans for his brief & Rad support too. I greatly appreciate the time necessary for posting those time consuming info for us "Greenhorns" like myself. Much Oblige guys & Happy Holidays! But I have one more request to ask! Is there a video tutorial on "Youtube or Dailymotion" that can assist me just in case I get puzzled on one of the demanding steps? Sometimes I can perform schoolwork, (work in general) by visually seeing the process sometimes for better understanding, ingenuity, & performance on a project as well! Thanks. Anthony Quote Share this post Link to post Share on other sites
fdurso224 #13 Posted December 21, 2007 Awesome answers to an awesome question. I too have been tempted to try my hand at making homebrew but I have zero code writing skill Same here bro. I was always curious. But I just didn't have a clue what to do. Anthony.... Quote Share this post Link to post Share on other sites
so_tough! #14 Posted December 22, 2007 Another thing we have in common I have an idea for a game, gonna try my best to learn how to program! Quote Share this post Link to post Share on other sites
fdurso224 #15 Posted December 22, 2007 (edited) Another thing we have in common I have an idea for a game, gonna try my best to learn how to program! Hey Bro: Amen to that my friend. I'm so intrigued on making a Homebrew Atari 2600 game, the thought is like a Sweet Redheaded Women. Ooh La La, I think there's one downstairs in my apartment lobby! Think I'll make a good impression. Thanks bro.. Anthony.... Edited December 22, 2007 by fdurso224 Quote Share this post Link to post Share on other sites
Crazy Climber #16 Posted December 22, 2007 Good Luck Anthony, you have your work cot out for you. I hope to see some new and exciting homebrews soon Quote Share this post Link to post Share on other sites
fdurso224 #17 Posted December 22, 2007 Good Luck Anthony, you have your work cot out for you. I hope to see some new and exciting homebrews soon Hi Crazy Climber: Thanks for your support on my future endeavors. I'll do my best. Right now I'm going starting with the basics shortly. Thanks Anthony.... Quote Share this post Link to post Share on other sites
so_tough! #18 Posted December 22, 2007 Anthony, you are the man! You can do it Quote Share this post Link to post Share on other sites
fdurso224 #19 Posted December 22, 2007 Anthony, you are the man! You can do it Hi Jonny: Boy-oh-boy, We can all do it. If we love Atari. Anthony.... Quote Share this post Link to post Share on other sites
so_tough! #20 Posted December 22, 2007 lol Atari gives you superpowers? Quote Share this post Link to post Share on other sites
fdurso224 #21 Posted December 22, 2007 You Bet. I always felt that Programming a Atari VCS for "new guys" help give individuals a push in Video Gaming. The thoughts are endless! Anthony.... Quote Share this post Link to post Share on other sites
Mark2008 #22 Posted December 23, 2007 Guys, I am super excited for you that you are going to start game programming! I remember creating my first game.... and really you have no choice, but to start. it won't be the same type of coding, as you will do later, when you get really good at it. But, that doesn't necessarily mean that your first effort won't be very playable. I think my first effort was breakout...yes...pretty sure it was breakout. so, I didn't even try to invent the game, just do a copy. And, I had the hardest time understanding what an array meant. If you know that already, you are beyond my initial skills... the only thing I would say, is wow, the Atari, is hard....It's because of having to keep the hardware in mind at all times, and all its quirks. But you know...maybe I will toss this out, if you don't try to push it to its limits, but actualy go with the playfield, as they first envisioned, and just use the sprites/balls/missiles, just as the hardware was designed...maybe that will help bring the task into feasability. Anyway, just tossing out some ideas, mostly wanted to say, congratulations, I think it will be a lot of fun! Quote Share this post Link to post Share on other sites
Gorf #23 Posted December 23, 2007 Use the examples people include in the homebrew libs and dev packages. Most are commented enough to give you an idea of what is going on....it really helps to have an apptitude for this sort of thing...interest is not always enough. If you see you are understanding...dont give up when you hit a brick wall. Plenty of people will help you if you simply ask politely. I am one of those people, depending on the system you are talking about. If you are interested in the Jaguar, I have lessons on JSII for this, but they assume you have some understanding so you might want to get rolling with some basic 'hello world' type stuff first, then take a peek over there. Good luck and it's ok if you dont know everything at first. Quote Share this post Link to post Share on other sites
so_tough! #24 Posted December 23, 2007 Guys, I am super excited for you that you are going to start game programming! I remember creating my first game.... and really you have no choice, but to start. it won't be the same type of coding, as you will do later, when you get really good at it. But, that doesn't necessarily mean that your first effort won't be very playable. I think my first effort was breakout...yes...pretty sure it was breakout. so, I didn't even try to invent the game, just do a copy. And, I had the hardest time understanding what an array meant. If you know that already, you are beyond my initial skills... the only thing I would say, is wow, the Atari, is hard....It's because of having to keep the hardware in mind at all times, and all its quirks. But you know...maybe I will toss this out, if you don't try to push it to its limits, but actualy go with the playfield, as they first envisioned, and just use the sprites/balls/missiles, just as the hardware was designed...maybe that will help bring the task into feasability. Anyway, just tossing out some ideas, mostly wanted to say, congratulations, I think it will be a lot of fun! Thank you Its going to take a lot of time, but I'm gonna try my best! Quote Share this post Link to post Share on other sites
fdurso224 #25 Posted December 24, 2007 Same here. Anthony.... Quote Share this post Link to post Share on other sites