It's free to join Gamasutra!|Have a question? Want to know who runs this site? Here you go.|Targeting the game development market with your product or service? Get info on advertising here.||For altering your contact information or changing email subscription preferences.
Registered members can log in here.Back to the home page.

Search articles, jobs, buyers guide, and more.

By Joe Grand
Gamasutra
[Author's Bio]
February 26, 2003

What Went Right?

What Went Wrong?

Sidebar: Atari 2600 Development, Resources

Printer Friendly Version
   

 


 


Latest Letters to the Editor:
Perpetual Layoffs by Alexander Brandon [09.21.2007]

Casual friendliness in MMO's by Colby Poulson [09.20.2007]

Scrum deals and 'What is Scrum?' by Tom Plunket [08.29.2007]


[Submit Letter]

[View All...]
  



Upcoming Events:
SPARK Animation Festival
Vancouver, Canada
09.10.08

Women In Games Conference
Coventry, United Kingdom
09.10.08

3rd ACM International Conference on Digital Interactive Media in Entertainment and Arts - DIMEA 2008
Athens, Greece
09.10.08

GDC Austin
Austin, United States
09.15.08

Game Career Seminar
Austin, United States
09.17.08

[Submit Event]
[View All...]

 


[Enter Forums...]

Note: Discussion forums for Gamasutra are hosted by the IGDA, which is free to join.
 

 

 


Features

Postmortem: Pixels Past's SCSIcide

What Went Wrong

1. The game concept was initially difficult for people to understand.


Simple SCSIcide packaging: Anti-static bag, two-sided color manual, and high-quality color cartridge label.

To a non-technical crowd, the concept behind SCSIcide is not exactly the most exciting and appealing one. One comment I received from a fellow gamer when I explained SCSIcide to him was "You need to inspire people to play the game. By itself, being a hard drive head is not very inspiring. Being a hard drive head is not as exciting as being a cowboy or a weird gobbling creature. The world that the drive head inhabits is too sterile and lifeless." Not wanting to reinvent the wheel and fall into an overused game mechanic, I kept the SCSIcide concept as-is. Being original can have its merits, though sometimes it can be risky.

One advantage of keeping the game simple is that it forces players to use their imagination. Primitive graphics allows this to be done, as opposed to pseudo-realistic, graphic-intense games that put a fixed scenario into the player's mind. For SCSIcide, this simplicity ended up being a good thing. Those that didn't want to appreciate or understand the hard drive theme could easily think up another scenario to immerse themselves in. For example, one gamer's three-year-old daughter thought of the concept as "Move your basket to gather the colored Easter Eggs before time runs out." His eight-year-old son thought along the lines of "Fly a helicopter and lift the disabled cars from the lanes of a fast-moving freeway before traffic stalls."

What I have realized is that many classic gamers are focused on game play more than anything else, possibly given the lack of high-resolution graphics in games they played during their youth. So even though it was initially difficult to get some people to adopt the concept of SCSIcide, the game play was appealing enough to make it a successful game.

2. Dealing with the challenges of Atari 2600 programming.

The challenges of programming for the Atari 2600 are definitely one of the reasons it has become such a popular system for homebrew gamers (see sidebar). Its beauty is also its bane, however, as simple changes in routines or a typo of a single opcode can render the game unusable and set you up for hours of debugging.

The requirement to keep the code space below 4K and use only 128 bytes of RAM throws many of the typical structured programming techniques right out the window. In many cases, re-using code in-line instead of calling external functions will save precious cycles, since the time associated with saving state is avoided.

I had a number of problems throughout the development cycle that were fairly quickly fixed, such as timing problems with sprite generation (drawing, positioning, and moving the individual data bits) and hexadecimal score generation (a section of the score drawing function was over a page boundary which threw off the delicate timing of the routine).

My hardest challenge was correctly implementing paddle control. Since SCSIcide was the first homebrew game to use the paddle, there was no previous work to reference. One byte of RAM was used to store the current numerical value of the paddle (which corresponds to the vertical position of the drive head on the playfield). At the beginning of each frame (in the vertical blank), the capacitor inside the paddle controller is discharged and, a few cycles later, set to recharge. During every scanline draw, the value of the capacitor is read. Depending on how long the capacitor in the paddle takes to charge (based on a simple RC time constant) determines the vertical position of the drive head on the screen. For example, the less resistance in the potentiometer of the paddle will cause the capacitor to charge more quickly, and place the drive head towards the top of the screen. If the paddle was moved in the other direction, increasing the resistance of the potentiometer, the capacitor will take a longer time to charge, and the drive head will be placed lower down the screen. Programming efficient and non-fluttering paddle control took the longest amount of development time and required a great deal of experimentation with the Atari 2600 system.

3. Color compatibility issues.

Because SCSIcide is a fast-paced, intense game, quickly identifying the proper color bit to read is extremely important. Knowing right from the beginning of development that colors were an integral part of the game, I picked a visually simple color scheme and 10 unique and non-similar colors. I ended up with a brown background and data bits with bright colors throughout the spectrum.

Sometimes the data bit colors appear very similar to each other, making it difficult to know which bit to read next. This is crucial in the later stages of the game where one false move could cause a hard drive crash, ending your game. It turns out that there are major variations in how televisions display color, so two colors that I had picked to be easily distinguishable might be displayed as similar colors. This was a design flaw in SCSIcide that was not uncovered until the final testing stages. It is really only important that the colors of the 10 data bits are easily distinguishable, not what colors actually are.

Besides the television variations, SCSIcide was designed for NTSC (the North American television standard, also known as "Never The Same Color"), not for overseas standards such as PAL or SECAM. This is a potential problem because both PAL and SECAM display colors differently than NTSC. During SCSIcide development, there was some play-testing overseas and it was decided that the game will play fine on PAL sets, even though the colors were slightly off (but they were still distinguishable from one another). The proper solution would have been to create a suitable PAL color scheme and have the NTSC or PAL mode user-selectable. This was decided against due to lack of time but would definitely be implemented in any future game. SCSIcide was not tested on any SECAM systems. The color generation on SECAM Atari consoles is quite odd and the colors might all be converted to shades of grey. That would not make for a fun and exciting game of SCSIcide. Considering the huge range of overseas gamers, globalization is a necessity.

4) Not enough time to add more features.

As much as I tried to plan enough in advance to complete the game, build the cartridges, and package the final product, I did not have enough time to add all the features into SCSIcide that I would have liked.

The most neglected issue, though the game is still fully playable, is the screen flicker in between levels. This flicker is caused by the length of time required to calculate the colors and positions of the upcoming level's data bits using multiple calls to a pseudo-random number generator function. The routine is called immediately before the next level starts. Execution time of the routine takes too long and causes too many scanlines to be written to the TV screen by the Atari. This in turn causes a flicker until the Atari can resynchronize with the TV. The flicker initially happened every time a data bit was read, but I modified the code to have it happen only at the beginning of each level, making game play much nicer and suitable for release. Dealing with timing issues is one of the challenges of programming for the Atari 2600 (see sidebar).

SCSIcide is also hard, if not impossible, for color-blind individuals to play, because the game requires the player to read colored bits in the correct order. If the player cannot differentiate colors, the game is essentially useless. I wanted to have the next required bit blink or be identifiable in a way other than color, but the idea came too late in the implementation cycle to make it work before the release date.

5. More demand than supply.


Gamers await the SCSIcide release at Classic Gaming Expo 2001.

Fifty cartridges were manufactured by hand for the initial release of the game. I didn't know what type of response I'd receive at the 2001 Classic Gaming Expo. There was a slight buzz about the game being released, but the classic gaming community is very small (but growing) compared to the mainstream gaming community, so I decided to play it safe and do a small run. SCSIcide was to be released on Sunday, August 12, 2001 at 10:15am. An announcement was made at the show about 30 minutes prior to allow people to form a line to purchase a copy. I decided in advance to sell my game for only $20 complete. This price was much lower than the $30 or $40 that classic homebrew games are commonly being sold for.

By 10:30am, all the SCSIcide cartridges were gone! I was amazed and slightly embarrassed, as there were at least 50 more people at the show who wanted to buy a copy of the game. However, people signed up on a waiting list to reserve a future copy of the game. Looking back, I should have taken a bigger risk up front and made more cartridges, considering that I had already spent the time and effort to design the game, though with my self-imposed $500 budget, this might not have been possible.

As The Hard Drive Turns

Many of the same challenges exist when programming for a classic game console as they do for newer game environments. In just nine months of part-time work, SCSIcide was brought to life. With over 200 copies sold since its release in August 2001, it is one of the highest selling homebrew videogames ever for the Atari 2600 system. SCSIcide was selected for the All Game Guide's "Best of 2001" and voted as runner-up for the MyAtari 2002 Awards "Best Game Release of the Year."

It was a wonderful experience to create a physical cartridge-based game from a simple, non-tangible idea and release it for the public to enjoy. Watching gamers play SCSIcide is a thrill and I can only hope that my next game will be just as well received. My high score is 174E10. Can you beat it?


SCSIcide

Publisher: Pixels Past
Budget: $500
Number of Developers: 1
Length of Development: Approximately 9 months, part time.
Release Date: August 12, 2001
Platform: Atari 2600

Development software used: TextPad 4.50, DASM 2.0 (6502 cross assembler), StellaX 1.1.3a, z26, WPlayBin 1.0 (for use with the Supercharger), Photoshop, OrCAD Capture and Protel PCB (for cartridge circuit board development).

Development hardware used: Pentium II 233MHz w/ 256MB RAM, Atari 2600 Jr., Supercharger, 13" color TV, EPROM programmer, soldering iron.

Project Size: Approximately 2,100 lines of assembly language source code for game; 2,557 bytes of ROM (programmed into 4KB cartridge); 115 bytes of RAM (out of an available 128 bytes); 2 easter eggs.

______________________________________________________


join | contact us | advertise | write | my profile
news | features | companies | jobs | resumes | education | product guide | projects | store



Copyright © 2003 CMP Media LLC

privacy policy
| terms of service