Jump to content

Rudy's Blog

  • entries
    8
  • comments
    28
  • views
    5,612

They wrote *that*?


Rudy

839 views

In my programming (mis)adventures, I've become completely confused about how something like missile command was produced using two sprites, a "ball" and two missiles. Clearly magic has occurred or someone has been terribly clever. To be specific, I don't see how they did on top of the attacking missiles the explosions and the "cities." It's a great game. I just don't understand how they did it. It seems a lot of the hardware and software for 2600 was about doing something with almost nothing, given the expense of memory at the time it came out. Games like this are even more amazing given knowledge of these limitations.

 

See Wikipedia : "The Television Interface Adaptor (TIA) is the custom computer chip that is the heart of the Atari 2600 game console, generating the screen display, sound effects, and reading input controllers. Its design was widely affected by an attempt to reduce the amount of RAM needed to operate the display [since a]t the time the 2600 was being designed, RAM was extremely expensive, costing tens of thousands of dollars per megabyte."

 

There's a lot more in the TIA article that's a good read but I can't paste the whole article its at http://en.wikipedia.org/wiki/Television_Interface_Adaptor

 

It was market changes in the cost of memory that made the colecovision possible. See http://thedoteaters.com/?bitstory=colecovision

"Bromley’s team is charged to develop a new third-generation home videogame system, one that will set the standard in graphics quality, performance and expandability. Bromley himself had done preliminary work in designing and costing a system several years earlier, but the high cost of RAM kept an advanced console out of reach.

 

By 1981, however, RAM prices have dropped dramatically, so much so that the project is now within range of the target price-point set by Coleco. Bromley and Arnold Greenberg hash out the specs of the new system, giving it the placeholder moniker of ColecoVision until the marketing types can think up a better one. They never do, so the name sticks. The new system is based around an 8-bit 3.58 MHz Z80A CPU with 8K system RAM. Also on-board is the powerful Texas Instruments TMS9918A video controller chip, giving the system 16K of video RAM and allowing a screen resolution of 256×192. It has the capability to display 32 sprites on-screen at the same time, along with a 16 colour on-screen palette out of a total of 32. Three channel sound via the TI SN76489 sound generator chip is also thrown into the mix for good measure. The console’s cartridges are 32K, the most memory of any system currently on the market."

 

See also http://www.jcmit.com/memoryprice.htm

 

That colecovision article (http://thedoteaters.com/?bitstory=colecovision) is good but when I skimmed it but it seems to say the 2600 is a lesser system. I was expecting as much the first time I played donkey kong or pac man on 2600 but I think they are great games that present their own challenges and I find they have a unique look to them that is very appealing.

 

As for why the price of memory dropped around 1981, it looks like at least part of it was increased supply of memory chips. http://www.nytimes.com/1984/04/30/business/mostek-rides-high-on-computer-chip.html?module=Search&mabReward=relbias%3Ar "A flood of new manufacturing capacity, primarily from Japanese chip makers, hit the market just as demand for RAM's dried up during the recession. That drove prices of 16K chips from $4.60 apiece in 1980 to $1.65 in 1981, Mr. Mason said"

14 Comments


Recommended Comments

No magic, just object reuse, object flicker, object duplicates/triplicates (via NUSIZx) and object shifting. Use Stella's Debug Colors (COMMAND-Comma on a Mac, ALT-Comma on Linux and Windows) to see what's going on.

The objects and what they're used for:

  • player0 = left 3 cities
  • player1 = right 3 cities, player's explosions (up to 3 via flicker)
  • missile0 = incoming missiles, drawn in two groups (via flicker) where each group uses NUSIZ0 to show 1, 2 or 3 missiles OR 1 "fat" cruise missile (NUSIZ0 controls NUmber and SIZe of player0 and missile0 objects).
  • missile1 = player's missile (moves from base to pointer)
  • ball = player's pointer
  • playfield = player's base, cliffs on left and right edge of screen, reserve missile indicators on left
  • background = main screen color, then color changed for ground below cities.

You'll also notice the HMOVE "comb" that appears along the left edge of the screen. This is how the missiles are shifted left/right as they move down the screen.

I can't attach images to blog comments. If you use the Search feature in the forums, along with the words stella debug color, you'll find a number of examples that show and explain how games have been created using the limited objects of the Atari.

Link to comment

Much of the challenge in programming the 2600 is figuring out how to create a particular game using the limited resources of the 2600. (Or vice-versa, coming up a game to build around interesting uses of the resources.) However, with bB some of that work has been done through it's preset kernels. (Unfortunately, that does mean that some games can't be done in bB because there's no matching kernel.)

Link to comment

I didn't know some games were impossible in bb. I'm not at a point yet where it probably makes a difference.

Link to comment

I didn't know some games were impossible in bb. I'm not at a point yet where it probably makes a difference.

 

It's not that some games are impossible in bB. it's just that you need to be ever more unconventional. Also, you might need to make your own mini-kernel or use inline assembly.

 

I've managed some smooth horizontal scrolling and even 4-way scrolling in bB.

 

Link to comment

Impressive. I was wondering about what you said before, is the limitations on sprites why in some games, like Spider Fighter, you can only have three or four missiles in play at a time? And if so, how did they draw all the spiders? I know, sprite multiplication. But it's so well done I never would have thought a system of two players, a ball, and two missiles could create it.

Link to comment

Think of the 2 sprites, 2 missiles and ball as crayons. You're actually telling the VCS when to drag each of those crayons across the screen. By expertly deciding when to use what crayon you can pretend like there's more sprites, laser blasts, etc..

 

This is also the advantage and disadvantage of batari BASIC. bB decides how you drag those "crayons" across the screen. You can still find ways to bend the rules but you do not have exact control like assembly.

 

For instance, in my game M.M.S.B.C. II I appear to have 2 player ships with their own laser blasts and up to 8 simulated enemies on screen - all with parallax scrolling.

post-13304-0-48273600-1360688784_thumb.jpg
Link to comment

This is way over my head. All I did last week was make two sprites and I couldn't even get that right lol.

Link to comment

This is way over my head. All I did last week was make two sprites and I couldn't even get that right lol.

 

Sorry about the poor explanation. My main point is that you can do more than you think in batari BASIC. With assembly you control every detail for maximum freedom. With batari BASIC you work within what it can do to find clever ways of getting what you want.

 

Also, check this video out:

Link to comment

This guy is a lot smarter than I am.

 

He's a lot smarter than me for sure! What I'd take out of this video is how the 2600 works for games. The big secret is that he didn't have this awesome idea for Pitfall! He dinked around with what he found he could do and made a game from it :)

Link to comment

Well I was about halfway through this and then I had to do something and now I can't get it to play from where I stopped so I guess I'll have to watch the whole thing again from the beginning tomorrow, but thanks for showing it to me it's very interesting to hear these programmers discuss their work.

  • Like 1
Link to comment

It's not that some games are impossible in bB. it's just that you need to be ever more unconventional. Also, you might need to make your own mini-kernel or use inline assembly.

IMHO that removes one of the main advantages of bB - not having to learn 6502. And if you're coding your kernel in ASM, you might as well go all the way and do everything in ASM.

Link to comment
Guest
Add a comment...

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