A picture of the Atari Logo boot-up screen before
I added the "Y2K compliant" code
Early drawings & music notes
The following is a description
of how the Atari 5200 renders the characters and backgrounds of Koffi: Yellow
Kopter....
Koffi is made up of Player0 and Player1. You can actually get three colors by
overlaying pixels in these two players; however, after experimenting a bit,
I found I liked Koffi best without the 3rd color so I don't use it. Note that not
all emulators accurately show this 3rd color trick.
The Douse
Water is Player3, shared with the animals below. Since both elements are
at different vertical locations on-screen, I can use the same Player for both Animals
and Douse Water by changing the register HPOSP3 (horizontal position) and the
Player3 color midscreen via a Display List Interrupt.
Pyro, the top cloud layer, the leaves, trees, vines, fireballs, and fire are
all made up of background graphics. The horizontal lightning is also
comprised of background graphics.
Pyro's "Shazam!" type of lightning is Player2. I turn it 'off' by making
Player2's Horizontal position register a zero, thus removing it from sight.
Player2's Missile has become an on-screen Water Level indicator.
The four raindrops are missile 1 (blue1) and missile 3(blue2). Four Raindrops
fall at a time and they fall at different speeds. Again, I used a Display List
Interrupt to split the missile into two raindrops or snowflakes each.
The animals in the trees below are 3-colors, using Player3, Missile1, and Missile2.
It was more work than I care to admit learning how to get these sprites to work
together in forming one image and yet not messing up their uses at the top of the screen.
This is one of those "fooling the machine to do what it can't" kinds of things, since
5200 sprites are by default 1-color sprites. Note that color 3 MUST be blue.
The following is a sort of online log that I had been
keeping during development ...
June 2001
My early goals in figuring out the 5200 and ASM code in general were to draw some simple background graphics, and to animate a character and to move it vertically. This demo grew to become the base code for Koffi. As seen here, I was still using the low-rez ANTIC mode A, and my demo was colorless and blocky. This picture shows my first successful (yet garish) use of a Display List Interrupt on the cloud. I decided not to use this technique in this method after seeing what it looked like.
September 9, 2001
Here is an early screenshot of Koffi in ANTIC mode E, its current graphics mode. You can see Pyro, the trees, and Koffi himself. This screen took quite a bit of time since it crosses a 4K boundary in screen memory, from \\$2FFF to $3000. Antic cannot handle this unless you put an additional "LMS instruction" (its is basically a jump) in the Display List that ANTIC uses to draw the screen. I had to learn all this to get the lower part of the screen to display!
September 27, 2001
Koffi's first title screen was seen here, but I guess I have
wiped out the .jpg file from this site. Imagine this picture with only the topcloud
, Koffi himself, and the letters k-o-f-f-i.
October 29, 2001
Utilizing more DLI color changes, Koffi's stage 1 is slowly gaining more life. The fire is also implemented yet still unfinished visually. The score section and top cloud are seen.
December 12, 2001
Collision detection is now implemented, allowing Koffi to bump into Pyro and the trees. Koffi now loses a turn if he touches the fire pixels or the lightning. Flames exist at the top of the fire and vegetation is seen below the forest.
December 26, 2001
Pyro's routine is now more efficient and he is able to move around. Start and Level Select (the * key) function, although not all the levels are actually built yet.
January 3, 2002
Emulation does not give 100% the same look as the actual machine. I need to try different colors to get Koffi and Pyro to look their best.
January 21, 2002
After seeing the color differences on the actual 5200 hardware, compared to the VSS and Atari800win emulators (which also have differences between themselves), I decided to program a color debug routine into Koffi's code. Now, using the Asterisk, 0, and Pound Sign keys, I can quickly change the colors for any on-screen item to any color I desire. These screens show the results of lunch-time fun with Koffi Colors.
February 21, 2002
I've been having the hardest time trying to get the DouseFire routines to work without glitching. I'm still not 100% there but, thanks to the debug mode in Dan Boris' VSS .8, I found a major bug! Basically, a bcc didn't work like I expected it to, so I replaced it with a bpl. Here's a picture of the 'jagged look' of the tree as the fire retreats .. still in progress!
March 9, 2002
There is one glitch I have had no success in solving. I know the routine which causes it -- the routine which puts up on-screen points when you rescue an animal -- and it messes up *something* in screen RAM so the top score area becomes garbage. Still trying to figure that one out ... in the meantime, I worked on the Coniferous Forest level lately, and also I have an on-screen Water Level indicator which grows & shrinks as you gain/use water.
May 24, 2002
Koffi's Mountain Valley Stage: slight changes to monkey
animation, 4 raindrops simultaneously, and the bg strip of color now
has some mountain-range detail. All kinds of Player/BG graphics Priority magic
is going on in this stage. The fire is only purple on the emulator, incidentally.
July 15, 2002
The Windy Vines level is in. Wind only affected Rain Drops
at first. Eventually I got around to wind affecting Koffi too, varying in strength
and effect depending on level & difficulty setting. The wind only 'blows' in the
middle part of the screen; the bottom and extreme top are safe spots from it.
August 30, 2002
All the animals from the AtariAge "Koffi Kontest" have been
entered into the game. Plus a few others. I had to revamp the "DrawAnimal"
routines completely, making them table-driven with more generic code, to
fit all the data into the ROM space. It's now as efficient as it can be and
hence more animals can fit. For each animal I store 2 frames, each consisting of
bytes for the "player3" data and bytes for 2 missiles, and their horizontal
position relative to the player sprite. I had to be crafty to avoid wasting space.
For example, both missiles' data for both frames is stored on ONE BYTE per scanline
and "extracted" by a simple masking algorithm.
September 17, 2002
After much experimentation, Pyro's Mom is essentially complete.
I decided to make this boss stage different from the other three, and keep it
simple and fast. Well, it gets fast after level 1. Do you recognize her opening
musical theme?
October 15, 2002
After wasting one entire week trying to figure out why Koffi
was now crashing on the real machine, I finally noticed that my test EPROM cart
had a loose wire! Arghh! After that fiasco, the next thing I did was put in the
credits screens where I thank/credit those who helped to make Koffi possible.