atari 2600 homebrew
DESCRIPTION
Atari 2600 Homebrew. Darrell Spice, Jr. What is Homebrew?. Games (or other software) made by hobbyists for platforms that are not typically end user programmable Over 100 have been released for the Atari 2600 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/1.jpg)
Darrell Spice, Jr.
Atari 2600 Homebrew
![Page 2: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/2.jpg)
What is Homebrew?• Games (or other software) made by
hobbyists for platforms that are not typically end user programmable
• Over 100 have been released for the Atari 2600
• AtariAge has 80+ homebrew 2600 titles available, only Atari had a larger catalog of 2600 games
![Page 3: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/3.jpg)
My Homebrew games
• Medieval Mayhem
• Space Rocks
• Stay Frosty
• Stay Frosty 2
• Frantic
• Timmy
Finished WIP
![Page 4: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/4.jpg)
Medieval Mayhem
![Page 5: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/5.jpg)
![Page 6: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/6.jpg)
Space Rocks
![Page 7: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/7.jpg)
![Page 8: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/8.jpg)
Stay Frosty
![Page 9: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/9.jpg)
![Page 10: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/10.jpg)
Stay Frosty 2
![Page 11: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/11.jpg)
![Page 12: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/12.jpg)
WIP - Frantic
![Page 13: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/13.jpg)
WIP - TIMMY!
![Page 14: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/14.jpg)
Challenges• 128 bytes of system RAM (1/8 KB)
PS3 has 256 MB (262,144 KB)
• no video RAM PS3 has 256 MB
• 4K cartridge space
• 1 MHz CPUonly 27% is available for game logic
![Page 15: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/15.jpg)
128 bytes of RAM
• 1 KB cost $66 in 1975 when work began on Stella (code name for the Atari)
• 128 bytes = 1/8 KB, about $8.25
![Page 16: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/16.jpg)
No video RAM• TIA - Television Interface Adaptor is scan
line based
• 2 players (sprites)
• 2 missiles
• 1 ball
• Low resolution playfield
![Page 17: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/17.jpg)
2 Players
8 x 1 imageSample pattern
If not changed, pattern repeats down
the screen
Shapes are created by changing
pattern on each scan line
![Page 18: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/18.jpg)
Player Features
Three sizes:1x2x4x
Three 1x duplicates
Two 1x triplicates
![Page 19: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/19.jpg)
2 Missiles, 1 Ball
Four sizes:1x2x4x8x
1 x 1 image
Can be used to create objects like this bell
![Page 20: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/20.jpg)
Playfield20 x 1 image
Playfield is repeated
or reflected
to fill width of screen
![Page 21: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/21.jpg)
4K Cartridge
• original games were 2K
• 4K was believed to be large enough to last until the 2600's replacement hit the market
• ROM only, no Read/Write line for controlling access to RAM
![Page 22: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/22.jpg)
27% of 1 MHz
• CPU must update TIA ( scan line video chip) in real time
• Portion of program that drives TIA is known as the Kernel
• CPU must also trigger sync signal for TV
![Page 23: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/23.jpg)
![Page 24: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/24.jpg)
![Page 25: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/25.jpg)
Kernel(draw
display)
Game logic
Game logic
Sync signal
Program flow
![Page 26: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/26.jpg)
What do you need?
• Editor
• Dasm
• Stella
• Hardware
![Page 27: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/27.jpg)
Editor
Notepad or TextEdit will do
![Page 28: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/28.jpg)
A programmer's editor like jEdit is nicerhttp://www.jedit.org
![Page 29: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/29.jpg)
Dasm
Assembler that converts human readablecode into machine readable code
http://dasm-dillon.sourceforge.net
![Page 30: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/30.jpg)
Stella• Turns your computer into an Atari• Integrated debugger makes coding
easier
![Page 31: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/31.jpg)
Hardware
• Atari 2600
• Supercharger
• Krokodile cart
• Harmony
![Page 32: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/32.jpg)
Atari 2600While Stella is great, it's not 100%
accurate so you need to test your code on the real thing.
![Page 33: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/33.jpg)
32 character text on Atari
![Page 34: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/34.jpg)
32 character text on Stella
![Page 35: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/35.jpg)
Starpath Supercharger
![Page 36: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/36.jpg)
Starpath Supercharger
• Released in 1982 for $45
• Uses audio to load programs (games were sold on cassettes)
• 6 K RAM, 2 K BIOS
• Program MAKEWAV converts ROM image to sound file
![Page 37: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/37.jpg)
Starpath Supercharger
![Page 38: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/38.jpg)
Krokodile Cartridge
![Page 39: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/39.jpg)
Krokodile Cartridge
• Released in 2005 for $99
• Uses serial port to load programs
• 512 K Flash ROM, 32 K RAM
![Page 40: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/40.jpg)
Harmony Cartridge
![Page 41: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/41.jpg)
Harmony Cartridge
• Released in 2009
• Still produced, sells for $59.99 and $79.99http://harmony.atariage.com
• Uses SD card or USB to load programs
• 32 K Flash ROM, 8 K RAM
• 70 MHz ARM processor
• Melody variation used by Atari Age to produce stand alone games
![Page 42: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/42.jpg)
batari Basic
• Provides a simpler way to create Atari games
• Uses a BASIC like language for game logic
• Provides a number of prebuilt Kernels
![Page 43: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/43.jpg)
batari Basic games
![Page 44: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/44.jpg)
How are the limited objects used to create complex
games?
![Page 45: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/45.jpg)
Space Invaders
![Page 46: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/46.jpg)
Background
HMOVE
Playfield
Ball
Player 0
Player 1
Missile 0
Missile 1
![Page 47: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/47.jpg)
Hunchy II
![Page 48: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/48.jpg)
Background
HMOVE
Playfield
Ball
Player 0
Player 1
Missile 0
Missile 1
![Page 49: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/49.jpg)
Keystone Kapers
![Page 50: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/50.jpg)
Background
HMOVE
Playfield
Ball
Player 0
Player 1
Missile 0
Missile 1
![Page 51: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/51.jpg)
Supercharging games(graphic by Nathan
Strum)
![Page 52: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/52.jpg)
Supercharging your game
• Bankswitching
• Extra RAM
• Coprocessor
• Bus Stuffing
![Page 53: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/53.jpg)
Bankswitching• Game split into 4K banks
• Atari can only see 1 bank at a time
• Cartridge has hardware to presentdifferent banks upon request
• Companies came up with various "modes" of making the request
• Krokodile Cartridge supports up to 512K using mode 3F
![Page 54: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/54.jpg)
Game Selection Matrices were used due to limited
ROM
![Page 55: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/55.jpg)
Extra ROM with bankswitching allows for in game menus
![Page 56: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/56.jpg)
Extra RAM• Extra RAM allows for more complex games
• Address line used to work around the lack of a R/W line. This makes the RAM appear twice in memory, one address range for reading and the second for writing.
• Not compatible with INCrement or DECrement instructions.
• Krokodile Cartridge supports up to 32K using mode 3E
![Page 57: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/57.jpg)
Coprocessor
• DPC in Pitfall 2
• DPC+ in Harmony/Melody
![Page 58: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/58.jpg)
DPC• Display Processor Chip
designed by David Crane
• 8K ROM
• 2K Display Data (holds graphics and other data)
• Data Fetchers return Display Data for fast updates to TIA
• Data Fetcher Window mode greatly speeds up player processing
• 3 voice music using square waves (4 bit digital sound)
![Page 59: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/59.jpg)
DPC+• Enhanced version of DPC designed for Harmony/Melody
by Fred Quimby, Chris Walton and Darrell Spice, Jr.
• 24K ROM
• 4K ROM/RAM based Display Data
• Fast Fetch mode for even faster Data Fetchers
• 3 voice music using custom waveforms (4 bit digital sound)
• Can offload non-Kernel processing to 70 MHz ARM
![Page 60: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/60.jpg)
DPC+ Games
![Page 61: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/61.jpg)
Bus Stuffing• Commodore(!) developed The Graduate, a computer
keyboard add-on for the 2600
• Processors in the keyboard overdrive the data bus (aka bus stuffing) for fastest possible TIA updates
• Harmony/Melody support bus stuffing
![Page 62: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/62.jpg)
Display Sprite Routines
• DoDraw
• DPC
• DPC+
• Bus Stuffing
![Page 63: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/63.jpg)
LDA #SPRITEHEIGHT DCP SpriteTemp BCS DoDraw LDA #0 .BYTE $2CDoDraw LDA (GfxPtr),Y STA GRP0 LDA (ColorPtr),y STA COLUP0
Display Sprite Routines
• DoDraw, 26 cycles
• DPC
• DPC+
• Bus Stuffing
Update ImageUpdate Color
![Page 64: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/64.jpg)
LDA DF0DATAWSTA GRP0LDA DF1DATASTA COLUP0
Display Sprite Routines
• DoDraw, 26 cycles
• DPC, 14 cycles
• DPC+
• Bus Stuffing
Update Color
Update Image
![Page 65: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/65.jpg)
LDA #<DF0DATAWSTA GRP0LDA #<DF1DATASTA COLUP0
Display Sprite Routines
• DoDraw, 26 cycles
• DPC, 14 cycles
• DPC+, 10 cycles
• Bus Stuffing
Update Color
Update Image
![Page 66: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/66.jpg)
STX GRP0STX COLUP0
Display Sprite Routines
• DoDraw, 26 cycles
• DPC, 14 cycles
• DPC+, 10 cycles
• Bus Stuffing, 6 cycles
Update Color
Update Image
![Page 67: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/67.jpg)
Kernel comparisons
76 cycles to draw scan line.
![Page 68: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/68.jpg)
Average Kernel
• 2 single color players (sprites)
• 2 missiles
• Simple reflected or repeated playfield
![Page 69: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/69.jpg)
• 2 missiles
• Simple reflected or repeated playfield
• 1 multicolor player
• 1 single color player
• 4 bit digital music
DPC Kernel
![Page 70: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/70.jpg)
• Ball
• Complex playfield
• 2 multicolor players
• 4 bit digital music
• 2 missiles
DPC+ Kernel
![Page 71: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/71.jpg)
Bus Stuffing Kernel
• Ball
• Complex playfield
• Extra time for TIA tricks, such as extra copies of players
• 2 multicolor players
• 4 bit digital music
• 2 missiles
![Page 72: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/72.jpg)
ResourcesAtari Age http://www.atariage.com/
Mini dig http://www.qotile.net/minidig/
Stella http://stella.sourceforge.net/
Harmony http://harmony.atariage.com/
Dasm http://dasm-dillon.sourceforge.net/
Atari 2600 Programming http://www.atariage.com/forums/forum/50-atari-2600-programming/2600 Programming for
Newbieshttp://www.atariage.com/forums/forum/31-2600-programming-for-newbies/
![Page 73: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/73.jpg)
batari Basic
batari Basic http://bataribasic.com/
Atari Age forum
http://www.atariage.com/forums/forum/65-batari-basic/
Random Terrain
http://www.randomterrain.com/atari-2600-memories-batari-basic-commands.html
Visual bB http://www.atariage.com/forums/topic/123849-visual-bb-1-0-a-new-ide-for-batari-basic/
![Page 74: Atari 2600 Homebrew](https://reader033.vdocuments.us/reader033/viewer/2022061522/568159f3550346895dc73d89/html5/thumbnails/74.jpg)
Presentation will be made available at
http://www.spiceware.org
Questions?