View Full Version : New Games on Old Platforms
Jay Snellen
07-06-2003, 09:49 PM
Hello Shane and Company,
I hope this isn't too far off-topic for this forum, but here goes: I'm thinking about getting into game programming, but instead of developing games for a new hardware platform (PCs, current-generation consoles, etc.), I'm actually toying with the idea of learning one of the classic consoles and developing one or more games on that as a number of other programmers have begun doing. I've been impressed by several of the games they've produced, and as a computer science student, I think that developing for older, more limited machines would be a great way to hone my programming skills and learn to produce small, highly-efficient code (all they teach us in school is Java and C++, and I don't want to graduate and create bloatware for a living if I can help it!)
I know you've briefly mentioned the "homebrewing" trend on your show before, and I'm curious to know what you think about it. Do you think writing for older machines is a worthwhile endeavor, or do you think my efforts would be better-spent on a newer platform?
Shane R. Monroe
07-06-2003, 11:12 PM
I think it all depends on what you're in it for.
If you're in it for fame and money, don't do it.
But I think it would be very worthwhile to the community and to yourself!
Bill_Loguidice
07-07-2003, 07:32 AM
I think some of the most exciting homebrew is in fact for older systems, particularly the old Atari consoles. Check out www.atariage.com if you're not already familiar with it, as they cover and in fact distribute homebrew stuff for the Atari 2600, 5200 and 7800. There's tons of documentation out there as well. John Dondozilla was one of the first to ignite the hobby programming craze, creating new Vectrex games. He later went on to ColecoVision and Odyssey2.
Maybe when I get a few PC projects under my belt, I'll try to get into classic console development, but it's more intimidating if you don't know "real" programming. There are TONS of materials available online though for reference. The coolest part is that not only is some of the hobby stuff as good as the best games from the era, but some is even a bit better since many of the programmers have the benefit of modern hindsight/accumulated knowledge.
Keep us informed of your efforts!
Jay Snellen
07-07-2003, 11:24 AM
Thanks very much for the encouragement!
The first time I looked at AtariAge, I was struck by how many 2600 and 5200 programmers are out there, producing games for twenty-year-old systems. I also admire Carl Forhan at Songbird Productions, who produces new, high-quality games for the Lynx and the Jaguar.
John Carmack said once on Slashdot that there was something noble about writing games for older machines like these because the developers do it purely for the love of programming and creating games, rather than out of some commercial motivation. Nobody's going to make any money doing it, and although I'm interested in sharing what I create, I'm certainly not in it for fame or money. I'm interested in doing it as a learning exercise, as I mentioned earlier, and also to fill a gap that I've noticed: AtariAge has all kinds of resources for 2600 and 5200 programmers, and Songbird and Telegames have the Lynx and Jaguar platforms covered. That leaves only one unsupported Atari console, the 7800, and it's a shame that nobody seems to be doing anything with it. That's probably why I've chosen the 7800 as my development platform of choice, and although it will be a challenge to learn to develop for it, I'll certainly give it my best shot!
Bill_Loguidice
07-07-2003, 11:35 AM
... platforms covered. That leaves only one unsupported Atari console, the 7800, and it's a shame that nobody seems to be doing anything with it. That's probably why I've chosen the 7800 as my development platform of choice, and although it will be a challenge to learn to develop for it, I'll certainly give it my best shot!
There are actually games in development for the 7800, but I don't remember off the top of my head how close they are to getting done. You may want to double-check what issues/challenges, if any, there are in doing homebrew 7800 development. I believe I read something where only recently has the encryption/security chip feature of the 7800 been worked around... (the one that checks to see if it's a 7800 game that releases the extra 7800 system power, rather than staying in 2600 mode)
Jay Snellen
07-07-2003, 11:48 AM
I have seen mentions of a few 7800 projects that others have begun, but as far as I can tell none of them have been finished (I could be wrong). I'm just glad that Atari's technical manuals for the 7800 have been scanned and posted; I'll be reading through those this summer before I go back to school.
As for the encryption issue, it has indeed been solved thanks to the discovery of some of Atari's original development tools. I've also modified my console with Eckhard Stolberg's development BIOS, which disables the encryption check and also allows me to upload games from the PC to the 7800 through a parallel cable. So far I've successfully made some 7800 BallBlazer cartridges into RAM cartridges (for uploading games) as well as EPROM cartridges (for non-volatile copies of my games), and I'm hoping I can use the POKEY's audio capabilities to really push the system to its limits!
Bill_Loguidice
07-07-2003, 12:07 PM
As for the encryption issue, it has indeed been solved thanks to the discovery of some of Atari's original development tools. I've also modified my console with Eckhard Stolberg's development BIOS, which disables the encryption check and also allows me to upload games from the PC to the 7800 through a parallel cable. So far I've successfully made some 7800 BallBlazer cartridges into RAM cartridges (for uploading games) as well as EPROM cartridges (for non-volatile copies of my games), and I'm hoping I can use the POKEY's audio capabilities to really push the system to its limits!
Are there still sources for Pokey's other than scavenging them from Commando and Ball Blazer Atari 7800 cartridges or Atari 5200 systems? That's something you may want to consider in programming for a POKEY - assuming of course you want to get the thing published...
Anonymous
07-07-2003, 12:38 PM
I wish I knew. Considering how many of them Atari produced (they used them in some coin-ops as well as their consoles and 8-bit computers) I'm sure some of the Atari spare parts dealers have some left in stock, but I've never heard of anyone producing new ones. Then again, nobody seems to be making 7800 PCBs either (yet), so if I ever want to do a limited distribution of any of my games, my best option would probably be to buy up a bunch of BallBlazer carts and replace the ROMs. Or, I could simply leave the POKEY out of games that don't absolutely need it, and cannibalize non-POKEY carts instead. The best candidate for that might be RealSports Baseball, since it's a common cart that has lots of bankswitching hardware and hex inverters that would be useful for large (64K) EPROM games; in fact, I've already successfully produced an EPROM prototyping cartridge using a RealSports Baseball cartridge.
Jay Snellen
07-07-2003, 12:40 PM
Oops ... forgot to log in before posting that one!
Rowdy Rob
07-07-2003, 04:06 PM
Are there still sources for Pokey's other than scavenging them from Commando and Ball Blazer Atari 7800 cartridges or Atari 5200 systems?
Sorry for intruding on this discussion, but th subject is fascinating and puzzling to me. What kind of sound chip does the 7800 use onboard? My initial search through the web turned up nothing on the sound capabilities of the 7800. It seems odd that there would need to be a sound chip on the cartridges, especially an older (but good) one used from the Atari 800!
Bill_Loguidice
07-07-2003, 05:18 PM
Are there still sources for Pokey's other than scavenging them from Commando and Ball Blazer Atari 7800 cartridges or Atari 5200 systems?
Sorry for intruding on this discussion, but th subject is fascinating and puzzling to me. What kind of sound chip does the 7800 use onboard? My initial search through the web turned up nothing on the sound capabilities of the 7800. It seems odd that there would need to be a sound chip on the cartridges, especially an older (but good) one used from the Atari 800!
There is no intruding, come in on any conversation. That's the spirit of good forums. Anyway, I'm going to toot my own work again to help you out:
I wrote two histories for www.old-computers.com . One on the Atari 5200: http://www.old-computers.com/museum/computer.asp?c=901&st=2 ; and one on the Atari 7800: http://www.old-computers.com/museum/computer.asp?c=898&st=2 .
Basically the 7800 is an Atari 2600 architecture with a few extra chips. Early models of the 7800 also had an expansion port. Unfortunately, Atari took the unusual step of ramping up the graphics capabilities, including the famed Maria chip, which could push many sprites on screen at one time with no flicker, but utilized the Atari 2600 sound chip! There WAS an option to utilize the POKEY sound chip when it was placed in an Atari 7800 cartridge - the same one used in the Atari 5200 - to either replace or augment the sounds generated by the 7800. Ball Blazer for ALL sounds and Commando just for the music were the only two games to utilize this unfortunately. Atari was notoriously cheap and didn't want high memory 7800 games or games with extra chips in them, such as the POKEY. Again, all in the name of cost cutting. Because of this, Atari 7800 games usually paled in comparison to their NES and SMS counterparts, particularly when considering game world sizes. Ironically, many of the Atari 7800's specifications when used properly were superior to the NES, but the world would never get to know it really...
Anonymous
07-07-2003, 05:30 PM
No intrusion at all!
As you already know, the 7800 is a 2600 clone that added extra circuitry (the MARIA graphics chip and 4K of RAM, as well as an expanded cartridge slot) to give it the ability to run more sophisticated games than the 2600 could, while at the same time retaining backward compatability with existing 2600 games. Even when it was running in 7800 mode, however, it still used a lot of the old 2600 hardware to manage things like interrogating the joysticks and the console switches (via the 2600's 6530 and TIA chips), as well as the sound (via the 2600's TIA chip). Without any extra hardware, the 7800's sound capabilities are exactly the same as the 2600's (two low-resolution audio channels), which in 1986 sounded awfully primitive next to the happy tunes coming out of the NES. Fortunately, the 7800's expanded cartridge slot included a phase 2 clock line as well as an audio line, which gave developers the ability to add a sound processor to the cartridge and mix in more sophisticated audio (four channels, for music or sound effects) for games that really needed it. I don't know why Atari didn't simply add a better sound chip to the 7800 console itself, but my guess is that the machine was already very crowded with 2600 and 7800 hardware onboard, and it might have been difficult to do from an engineering point of view. A newer sound chip than POKEY would have been nice, but I suppose Atari chose POKEY because their developers were already familiar with it from the 400/800/5200, and it might have made it easier to port BallBlazer in particular to the 7800 (the music and sound is almost exactly the same as the 800 version). Unfortunately, BallBlazer was one of only two games that used it (Commando was the other). Even though lots of other 7800 games badly needed better sound (play 7800 Donkey Kong and you'll know what I mean), I guess Atari wanted to cut costs, so they used 2600 sound instead. I think it was one of the things that ultimately sank the system.
Jay Snellen
07-07-2003, 05:33 PM
Sorry, Bill ... I was working on my response above when you posted yours, and I didn't see it until afterward. Now Rowdy Rob has his answer in stereo! :lol:
Rowdy Rob
07-08-2003, 04:59 PM
There is no intruding, come in on any conversation. That's the spirit of good forums.
Thanks, this is an excellent forum full of (apparently) good, intelligent people. I've been on a recent gaming site where the response to my messages have been much ruder ("Dude, shut up, GTA Rulez!")! I thought it was uncalled for and left. No sense hanging around where the little brats rule the roost unchecked!
Sorry, Bill ... I was working on my response above when you posted yours, and I didn't see it until afterward. Now Rowdy Rob has his answer in stereo! :lol:
Thanks to you both for the information. Although I followed the Atari scene for a long time, I never paid much attention to the 7800. Heck, I've never even seen one, and had no real idea of it's abilities. I messed with the Pokey quite a bit on my Atari computers and had a pretty good feel for it's capabilities. Although technically it was not as powerful as the C-64's SID chip, it had one more voice channel than the SID (two extra using my TOP SECRET system!! :) ), which allowed for more complex harmonies (the MULE theme sounded awful on the C64 vs. the Atari version).
Jay Snellen
07-08-2003, 05:57 PM
Happy to be of service!
Like you, I've been an Atari enthusiast for many years. One of my first computers was an Atari 800, and I've been a 2600 owner since around 1982. But I never really saw or heard about the 7800, either, until I discovered all the wonderful online Atari resources a few years ago and started catching up on all the Atari goodies that I missed. I bought my first 7800 a little less than a year ago, mainly as a way to play 2600 games on a newer console, but the more I learned about its enhanced capabilities, the more I was intrigued by it. It's so sad that the 7800 was never given the support that it deserved during its lifetime, and now that I'm reading up on developing games for it myself, I hope that I can satisfy my creative urge, learn a few things, and maybe encourage others to take another look at what might be the world's most underappreciated video game system.
Hey... I just joined this forum, it seems like a really cool place, I found the link from the CGE site, which I hope to be going to :) .
Anyway, I do a lot of homebrew developing for the Virtual Boy (kinda old VR attempt by Nintendo), and it's TONS of fun... so I figured I'd share my thoughts on it. I'm not meaning to put down PC development, but there's so many people programming PC games that to make something that hasn't been made is really tough (and in agreement with this month's rant on the so called sequels - I don't have any desire to make another quake game and just put this years date on it :P ). That's the thing I love about making Virtual Boy games... there were 14 games released for the system in the US, a few more in Japan, but it died so quickly that it's hardware never got used anywhere near it's potential, and because of that, it's unknown how it works. Plus... there's very few people that are interested in it, so the people that are, know each other really well and help each other as much as possible.
I'd have to say the coolest moment I've had while working on the VB was when I was trying to figure out how the link cable worked (which none of the games used), having spent many nights tracing the wires back to the chips, sending data to it, brute force wire swapping, etc... when that other system lit up acknowledging that the data was sent... to me, it's stuff like that when you see all your hard work show up on the screen, you know it's one of very few things to have ever been there.
I'm not saying that you should develop for the Virtual Boy, because many people think it's the worst system ever made, and I understand that everyone has an opinion, IMO it's the best system... but either way, I'd say DEFINATELY consider developing for obsolete consoles... it's a little intimidating at first, but once you read everything you can about it, and look at whatever examples are available, it's VERY addictive!
BTW, if you're interested in seeing what I've done and to see what's involved in homebrew / VB development... my site is http://projectvb.vze.com .
DogP
Shane R. Monroe
07-14-2003, 06:52 PM
Nice to have you aboard!
Bill_Loguidice
07-14-2003, 07:49 PM
Anyway, I do a lot of homebrew developing for the Virtual Boy (kinda old VR attempt by Nintendo), and it's TONS of fun... so I figured I'd share my thoughts on it. I'm not meaning to put down PC development, but there's so many people programming PC games that to make something that hasn't been made is really tough (and in agreement with this month's rant on the so called sequels - I don't have any desire to make another quake game and just put this years date on it :P ). That's the thing I love about making Virtual Boy games... there were 14 games released for the system in the US, a few more in Japan, but it died so *snip*DogP
I have the system and several of the games for it. When the games worked, they worked well and were fun, but a lot of games in the small selection, like the version of Tetris for it, simply weren't suited for the type of device that it was (essentially 2D games with a depth gimmick). In some ways it was on par with the Sega Master System 3D glasses, which of course did everything in color and worked from a TV. In other ways, particularly with dimensional layering, it was a bit superior. The fact that everything was in red though, was NOT a good thing, nor was it obviously easy on the eyes. In fact, like every other VR-type device that myself and many others have used, it creates nauseau after long play sessions. Anything where you have to immerse your eyes like that usually does...
With that said, however, I have respect for what you're doing as far as development and wish you the best of luck...
Shane R. Monroe
07-15-2003, 10:07 AM
I thought the VB was a bit on the gimmicky side ... I only saw and played with it one time, so I'm a horrible judge.
However, anyone willing to write games for old consoles has uber respect from me!
Jay Snellen
07-15-2003, 02:24 PM
DogP,
I couldn't agree more about PC games (and modern gaming platforms in general). One of the things that fascinates me the most about the classic video game programmers (the Activision and Imagic guys, Paul Norman, etc.) is that they usually did EVERYTHING on their games themselves ... the graphics, the sounds, the game interaction, the whole works. Part of the reason this was possible is because they had great artistic eye as well as the technical ability to design and code great games on the old systems (a rare combination of skills), but also because the systems were so limited that it was possible for one person to learn them inside and out and really push them to their limits. That hasn't been possible in the PC world for a long time. I don't want to put down independent PC developers either, but if I chose to develop games on the PC (or on one of the "big three" modern consoles for that matter), anything I could do could be easily surpassed by a team of graphic artists, musicians, etc.
That's one of the reasons I chose the Atari 7800. Like the Virtual Boy, it's considered something of a "niche" platform today (as opposed to the 2600 and 5200, which EVERYBODY seems to be coding for now), and it's old enough and limited enough that I feel I can really make it my own and develop games that can exploit its full potential (which, like the Virtual Boy, was never fully realized). And, when the time comes for me to share my games, the expectations of the (very small) 7800 audience will be much more in line with my own priorities: they won't be expecting multi-colored volumetric fog, they won't be looking for bump-mapped Gouraud-shaded dynamically-lit polygons ... they'll be looking for simple, fun, and addictive games, which are exactly the kinds of games I hope to create.
I also agree that coding for these old machines is horribly addictive and fun. In the week or so since I started this topic I've spent a lot of time studying the 6502, the primary CPU within the 7800, and I'm amazed at what a cool microprocessor it is. Very powerful and versatile for its day. I plan to code all my games in 100% assembly to really make the most of the limited resources of the machine, and I've already put together quite a development system. The first time I was able to upload game binaries through the 7800 joystick port and into my RAM cartridge (which is a modified BallBlazer cartridge with an SRAM chip in it) for playtesting on a real 7800, and the first time I burned them onto EPROMs and successfully modified more game cartridges to use them, I knew anything was possible. I checked out the Virtual Boy work you've posted on your site, and my plans for the 7800 are similar: I'll probably do an Etch-a-Sketch program or a Pong game first, just as a learning exercise, and after that I'll tackle something bigger, like a pixel-perfect arcade port (maybe something like Missile Command, which in the arcade used a lot of the same hardware that the 7800 has).
Shane R. Monroe
07-15-2003, 03:27 PM
Programmers have ALL the fun ... Even having to program for the entirely underappreciative PC crowd.
My motto in coding games on the PC; write for yourself FIRST. Then, at the end, even if people BITCH - you've at least pleased yourself and you have something to show for all your effort.
I totally agree about the VB... they didn't make use of the 3D like they should have... they used the 3D graphics as a graphical gimmick, but not using it to enhance gameplay... which is the completely wrong way to do anything... Games like Red Alarm, 3D tetris, and others that actually used the 3D effect to enhance the gameplay are very nice... but games like Panic Bomber, V-Tetris, and others that just use it for special effects... those are pointless. Then Wario Land... you even it if used no 3D, any Mario-like platformer is great!
That's one of the problems that I've run into while programming it... how to actually make use of the 3D. My first game (Simon) just used it for gimmicks, but I didn't really care, that was just a simple game that I was writing for experience, which I think is very important. You have to get used to the programming and run into the problems you will run into with programming before you try making an in-depth game. The same thing went for TicTacToe... that was just a demo that I put out to show people how to program the link port... I threw that game together in one night, and I'm glad that I did because it gave me a live gaming experience with the link port, instead of just demos that would send data that the other was expecting and cause the system to do something. Then I got to thinking how I can actually implement the 3D into the games, and Tron came to mind, and after thinking about it, i thought it would be really cool to have a 3D Tron style game, where you actually used the foreground and background and needed to see the depth to know when to go back and forth... and from now on, every thing I do, I consider how I can put 3D to use, not just special effects.
And yes, lots of people complain about getting headaches and stuff from the VB, and I personally have never had any problems with it, and I play mine for many hours straight... I just make sure that I have the IPD and Focus properly set. I'm sure that's not the problem for everyone, but I know some people that play mine don't bother adjusting it, then complain (plus I think it takes some getting used to).
I can't wait to see what you come up with for the 7800... I don't own one, but my Grandma used to have one when I was younger and I played that a lot... I'm always interested in anything new for old systems, I guess it's just something about getting closer to the hardware that makes me love old stuff. That's really cool that you plan on writing everything in ASM, I'm sure that'll be really fun, although maybe more trouble than it's worth unless you're really good with it (or you don't have any other options - do they have a C compiler?) You could also do the simple stuff in C and the more hardware intensive stuff with inline ASM. And congrats on getting past the hardware stage of the development process... that seems to be the most intimidating, although usually easier parts of it. IMO there's just something about seeing your progress on the actual system that is more exciting than pulling it up in an emulator.
And yup... definately program for yourself first... if you don't like what you're making, that takes all the fun away from the project (which is one of the reasons my projects always make a lot of progress, then get put on hold, then continue again later - I just do what I feel like doing at the time... I can't force myself to do work on something I'm not feeling at the moment)
DogP
Jay Snellen
07-15-2003, 09:05 PM
All this talk about the VB makes me wish I had taken a closer look at it ... it sounds like a very interesting system!
One of the things that motivated me to choose the path I chose for 7800 development (using a real console for playtesting and doing everything in assembly) was, as you say, the thrill of seeing something emerge and come together on the actual hardware. In addition, without getting too boring about the details, I've also noticed some limitations in the 7800 driver in MESS, which is about the only viable 7800 emulator around. As good as it is, it isn't 100% accurate, and since I'm still learning my way around the 7800 at this point, I don't want to run into a brick wall in learning to code for it that turns out to be a glitch in the emulator. I've found that emulators are often only accurate enough to play the existing library of games, and I'm sure a similar situation must exist with the VB (especially considering the small library of VB games).
As for the assembly, I'm certainly not going to use it exclusively for every step of the coding process. According to interviews I've seen, the original Atari 2600 programmers wrote their code back in the 1970s using cross-assemblers on mainframes, but would first simulate their algorithms in a high-level language (such as FORTRAN), and after they tested and debugged the algorithms, they would then use them to create macros to build the 6502 assembly language. I'll be simulating my algorithms in C on a FreeBSD workstation using the GNU compiler, which will be a very similar development environment to what they used, and will then bring it over to the 7800 in pure assembly. I think doing my final code in assembly is really the best way to go for the 7800 because of the limitations (and the somewhat bizaare nature) of the hardware; a high-level language would probably introduce too much overhead.
I also think Shane's advice about programming for yourself is right on the money. A lot of people would probably wonder why anyone would bother doing, say, an arcade port to the 7800 when you could always play the original in MAME. But as I said earlier, it would be an incredible learning experience to find a way to make the 7800 render Missile Command (or whatever game I choose) in a very specific, pixel-perfect way. Besides, those are the kinds of games I personally want to see on the 7800 (in addition to some original ideas I'm working on, of course), and I'd be perfectly content to create them for myself. If somebody else enjoys it afterward, I'll be very happy.
Yes, the VB is an interesting system, and although definately not superior to that many systems, I find it very interesting because of all the unknowns about it, and it's also great because it's one of the newest old-style systems (has fast, up to date hardware, but no 3D graphics hardware - 3D hardware IMO is what has killed the new games).
And yes, the hardware is a necessity IMO, because as you say, the emulator is not always accurate (has been very inaccurate in the case of the VB until just recently since we've been doing hardware tests to make it more accurate), and many times it is too forgiving, then when you go to play it on the real system, it doesn't work, then you have to figure out what you changed to break it, instead of seeing happen the first time you make a small change. I just had this problem last night with someone making a game for VB, but he only tests everything on the emulator, and after tweaking it a little from me testing it on the hardware, the game ran as it should, except the speed was wrong, and when he tried to fix it last night, he thought he had it because it ran perfectly on the emu, but it caused the hardware not to even boot the game anymore. That said, I think emulation is great for tweaking games that you know work, and you just want to see how it would look if you made a quick small change, as long as any time you make a big change, or if you run into something that you think should work but doesn't on the emulator, you test it on the hardware.
Another thing that's really cool about testing hardware is when you find something that works differently on the emu than the hardware, is that you can figure out what it's actually supposed to do, then tell the emu creators the details and get it implemented into it... I'm not sure how small the 7800 community is, but I know the VB community is VERY small, I talk to the creator of the best VB emu almost daily (in IRC with him right now :P ), and we work together all the time getting new stuff added in an attempt to get a 100% emulated system.
And that definately makes sense about at least planning the game out in a higher level language, even pseudo-code, because I've written some assembly, and if you don't have something to follow, it gets really ugly... REALLY fast!
So, how's the 7800 development coming along now that you've been at it for a few weeks?
DogP
Jay Snellen
07-24-2003, 02:07 PM
Well, it's proceeding, albeit slowly. I've spent most of my time reading up on the 6502 processor so far, but just the other day I did a simple sprite demo on the 7800 that reads from the 7800's two-button joystick and allows me to reposition a single graphic object on the screen with either the joystick or the buttons. Not very impressive, but it's given me a good idea of how the 7800's video hardware works and how to interrogate the controllers. Gotta start somewhere, I guess!
The most frustrating thing about it is the lack of available documentation on the 7800. I have all the documents that Atari distributed with their development system, but they are mostly technical manuals that give the specifications of the hardware without telling you how to do things. Fortunately the 7800 also contains all of the hardware of the Atari 2600 video game machine and is backwards-compatible with 2600 games, and the 2600 side is much more popular among homebrewers and much better-documented than the 7800 side. For that reason, what I think I will do is learn to do some simple 2600 games first, just to get more familiar with that hardware and more comfortable with assembly-language programming in general, and then add in the 7800 hardware (basically an enhanced video circuit and more memory) afterward. I hope to accomplish that over the next month or so before school begins, so I can tinker with the 7800 stuff inbetween classes. With any luck, I'll have my Pong game done before the end of the year, and will be ready to move on to something bigger after that.
As for emulation, yes, it's a life-saver if you're testing small routines or tweaking a program that you know to be functional on real hardware. Even though I have the ability to do all my testing on real hardware, I can't imagine uploading my code through the parallel port to test every single change I make. That, in my view, is the real purpose of emulation technology on modern systems. It wasn't created so generation gimmie could easily pirate software, but so classic console and computer enthusiasts can learn about and preserve their favorite platforms in ways that wouldn't have been possible with the hardware alone.
Cool! That sounds VERY fimiliar... I started out with a picture that moved around on the screen by pressing buttons on the controller, then used that knowledge to learn how to make more sophisticated games... but the game part is all about how you want to build it... the only real system specific (and most important to learning) is how to get input, and output whatever you want to the screen and speakers (if you're lucky enough to have documentation on how sound works - unlike the VB :( ).
And I know exactly how you feel about the documentation... I've done SO many tests on the hardware to attempt to complete at least partial documentation on how every part of the system works, and it gets really frustrating knowing that the system can do something, but you don't know how to do it. And you should be happy that you have any official documentation... I have some documentation that came with the dev kit that I'm borrowing (but unable to use because SCSI is evil :P ), and it's all in japanese (partially translated to english by worldlingo), and barely has anything technical about the system (mostly on how to use their c compiler, assembler, linker, and debugger hardware interface software - and unfortunately none on how to configure the PC to communicate with the hardware, so I've got a VERY expensive paper weight on my desk).
One suggestion I could give you from my experience of figuring stuff out is that the hardware information is VERY important... once you see how to modify that part, the hardware documents make the whole thing make sense without just completely blindly trying to see what it does. And if it gives you any hardware addresses, just have a byte that starts at 0, then have it increment by pressing a button, and every time you press a button, have it write that byte to the address given, and you can see what happens (and hopefully it coincides with what the documents talk about). And if you can get a memory map, that is a VERY useful document.
I just did a search really quickly on it - http://www.atarihq.com/danb/files/78map.txt is a memory map, although it doesn't seem very detailed, just make a pointer to that address and start writing random data... you might notice that you end up locking the system up or something, but it should do some interesting things too. And this looks like his main 7800 page, although you've probably already seen all of this - http://www.atarihq.com/danb/a7800.shtml .
DogP
Jay Snellen
07-26-2003, 01:46 AM
Thanks very much for the advice AND the encouragement! Working with this old hardware makes me wish I could have gotten my computer science degree in 1983 instead of 2003, since so many of the disciplines involved in understanding machines at a low level and programming them well in assembly haven't been taught much in schools for years. It's a totally different process than programming in OOP languages like Java, which is what I'll be holding my nose through this fall. :lol:
But anyway ... I've been tinkering a little more and have collected tons of new documentation to read through (some of which came from Dan Boris' site, which you linked to), so between that and messing with the hardware, I'm afraid it might take me months to get acquainted with this machine. Still, I suppose I have it easy compared to your efforts in getting acquainted with the VB, from what you've said. How long did it take you to learn your way around? Playing with registers to try to fill in missing pieces from the documentation must have taken forever!
Fractalus!
07-26-2003, 09:46 AM
That sounds like fun! If you ever need a graphic artist for your game, i wouldn't mind helping out! I've been working for many years in the industry with 7 shipped titles under my belt on a variety of platform. I've been looking to get involved in a project like this for a long time now, just for the love of it, and to give back to the community.
Jay Snellen
07-26-2003, 10:24 AM
Wow, thanks!
As I mentioned earlier, it might be a while before I can get this machine figured out and get a game developed, but since I'm certainly no artist, I could really use the help when the time comes.
Heh... I know what you mean about the degree... I'm finishing my associate in computer science this fall, and I've always said that I learn all the useless stuff in school, and all the stuff I care about, I learn on my own time. I was glad that to get my degree at the school I'm going to now, they required Assembly, because the school that I started at didn't even offer ASM (although x86 ASM kinda sucks :P )!
About how long it took for me to get aquainted w/ the VB... hmm... I started programming it a little over a year ago, but only running it on the emulator, but then I made my first cart last October, and ever since then I've been working on this kinda stuff. If you check the updates section of my site, that's a pretty rough log of what took how long. It really helped that I didn't have a job at the time though, because I'd be up until 6 or 7 AM working on this kinda stuff, then all my classes were in the afternoon, but now that I'm working, it has cut down on my time a little, but it's still getting done. But really, to make useful stuff for the VB didn't take me very long, the stuff I'm doing now is just for reference so we can have documentation on how everything works, and hopefully make a game that uses the VB more than any commercial game that was even in the making :) .
Just in the last week, I've been working on a link cable to connect the Virtual Boy to a PC using the parallel port... and it's actually working! That will open up lots of stuff to use the VB for, and thanks to the help of another VB programmer, we're able to run the programs from RAM, allowing us to pull the cartridge out while it's running, and stick another one in... and I think you can see where this is going... the program runs in RAM, I stick in a real cartridge, the program waits for the signal from the PC, then starts writing the entire contents of the program to the link port, along with crc32 checking... I've been able to dump games that have been really stubborn, which would dump differently all the time on my old dumper, but they dump the same every time now.
I'm also hoping that this could be used to save the state of a game, by dumping the memory of a game in progress, then when you want to restore it, just write that back, and it should go back to where you saved it. I also plan on using it to debug my programs while I'm running them, outputting stuff like variable values, registers status, etc. Then possibly, make a game genie type program that runs in memory while the game runs normally, although that might take some major programming, since it wouldn't be a physical hardware thing controlling what goes in and out.
But, all the work I've put into this has made me a MUCH smarter person, I couldn't have ever imagined that I'd learn this much, and it's all very interesting to me, and really, it's just TONS of fun doing this stuff! It's also nice talking to other people that are interested in the same thing, and get ideas on what to make, and get help on problems you're having.
I guess the coolest thing about all of this is thinking of some idea that you would like to see, then think of how it could be done, then actually make it... I guess that's going exactly with what Shane said... do it for yourself, because when you're programming for old systems, you're not having to worry about what other people think about it, or if people will buy it.
DogP
Jay Snellen
07-27-2003, 04:50 PM
Sounds like you've got some neat stuff in the works! Congratulations on getting your uplink cable working; the development system I'm running on my modded 7800 allows me to do the exact same kinds of things (upload software, dump cartridges, etc.) and it's a nice feature to have. In fact, I might use it to dump and reverse-engineer some 7800 titles, just as a way to learn the system.
Well, best of luck to you on your future homebrewing endeavors ... I hope I'll learn as much from mine as you have from yours!
Yup... thanks! Good luck to you too... and keep us informed of the cool stuff you do with it, you've got me really interested now :) .
DogP
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.