Jump to content

27

SpiceWare's Blog



Collect Tutorial Index

Posted by SpiceWare, in Collect 15 May 2017 · 700 views

This tutorial covers the writing of a 2K game for the Atari 2600.  Since it's a tutorial, I put significantly more comments in the source code than I normally would.  So be sure to download the source and read it along with each blog entry.
 
The tutorial does assume you have some understanding of 6502 assembly language. If you don't then c...


CollectMini source code

Posted by SpiceWare, in Collect 07 December 2015 · 904 views

Here's the source code for CollectMini .


 
It's a little different from the source available on my site as I've made some minor changes to the comments.
 
The presentation was received well; though going over the code, even simple as it is, caused me to run short on time.  So I'll need to come up with a new plan of action for next...


CollectMini

Posted by SpiceWare, in Collect 18 October 2015 · 1,051 views

The Houston Arcade Expo is less than a month away!  I'll be giving my presentation Saturday November 14th, at 7pm  and, as always, I like to revise the presentation with something new.
 
Last summer I started the series Collect  with plans to use it in my presentation at the Classic Game Fest over in Austin.  I eventually r...


step 14 - add animation

Posted by SpiceWare, in Collect 14 July 2014 · 1,052 views

Static images that just slide around the screen work OK, but we can do better - so for this update we'll add a couple new images so we can animate the players as they run around the arena.

 
While you can have as many frames of animation as you'd like, the code is most efficient if the number of frames is a power of 2 (2, 4, 8, 16, etc). The code t...


step 13 - add sound effects

Posted by SpiceWare, in Collect 13 July 2014 · 809 views

A quiet game is playable, but it's more fun with sound. TIA produces 2 channel sound. The channels are known as channel 0 and channel 1. There are 3 registers for each channel to control the sound produced:
AUDC0, AUDC1 - Control of the channel, specifies the type of sound to generate. Values range from 0 to 15, though some values produce the same type of...


step 12 - add the missile objects

Posted by SpiceWare, in Collect 12 July 2014 · 952 views

The 2LK has been revised to display both missile objects.  Missile objects do not support Vertical Delay, so there's no need to prime ENAM0 or ENAM1.
ArenaLoop: ; 17 - (currently 17 from bpl ArenaLoop) ; continuation of line 2 of the 2LK ; this precalculates data that's used on line 1 of the 2LK tya ; 2...


step 11 - add the ball object

Posted by SpiceWare, in Collect 11 July 2014 · 865 views

The 2LK has been revised to display the ball object. Like player0, the ball needs to be primed before the ArenaLoop begins:
   ; prime ENABL so ball can appear on topmost scanline of Arena        ldx #1              ; 2  2 - D1=0, so ball will be off         l...


step 10 - "Random Numbers"

Posted by SpiceWare, in Collect 10 July 2014 · 1,714 views

And yes, those are air quotes   ;)
 
Inside the Atari (and computers in general), there's no such thing as a Random Number.  We can, however, simulate random numbers by using a Linear Feedback Shift Register .  The LFSR we're going to use was posted by batari , it's a rather slick bit of code in that it can be either an 8-bit or 1...


step 9 - Game Variations

Posted by SpiceWare, in Collect 09 July 2014 · 1,060 views

It's common for Atari games to have a number of game variations.  To simplify the logic, the variations are usually driven by individual bits and/or groups of bits within a single byte that holds the game variation. A good example of that would be Space Invaders - check out the game matrix from the manual:

 
A byte is comprised of 8 bits, usu...


step 8 - Select and Reset support

Posted by SpiceWare, in Collect 07 July 2014 · 1,115 views

For this update we're adding initial support for the Select and Reset buttons.  For this we're adding a new RAM variable called GameState to keep track of "Game Active" vs "Game Over".
    ; D7, 1=Game Active, 0=Game OverGameState:      ds 1    ; stored in $A7  
 
We're going to use D7 to denote the state...






Search My Blog

Recent Entries

Recent Comments

Latest Visitors

1 user(s) viewing

0 members, 1 guests, 0 anonymous users