Difference between revisions of "7800 Tutorials and Guides"

From 8BitDev.org - Atari 7800 Development Wiki
Jump to: navigation, search
 
(18 intermediate revisions by the same user not shown)
Line 12: Line 12:
  
 
[[Maximizing 7800 Sprites]] discusses techniques that can be used for games that need a maximum number of moving objects.
 
[[Maximizing 7800 Sprites]] discusses techniques that can be used for games that need a maximum number of moving objects.
 +
 +
[https://7800.8bitdev.org/images/3/3c/7800_Software_Guide_-_The_Podcast_-_Graphics_Overview%2C_DLs%2C_DLLs%2C_etc.mp3 The 7800 Software Guide Podcast] is a bit of fun. It's an AI podcast generated with [https://notebooklm.google/ Google's NotebookLM tool].
  
 
==TIA Sound Documents==
 
==TIA Sound Documents==
  
Eckhard Stoiberg's [[Atari 2600 VCS Sound Frequency and Waveform Guide]] covers TIA musical frequencies.
+
Eckhard Stolberg's [[Atari 2600 VCS Sound Frequency and Waveform Guide]] covers TIA musical frequencies.
  
 
[[The Perceptual Tuning Primer]] covers an easy technique to keep TIA music sounding in tune.
 
[[The Perceptual Tuning Primer]] covers an easy technique to keep TIA music sounding in tune.
Line 22: Line 24:
  
 
[[TIA Arpeggio Tips]] provides helpful information for implementing arpeggios in your music.
 
[[TIA Arpeggio Tips]] provides helpful information for implementing arpeggios in your music.
 
  
 
==6532 RIOT Documents==
 
==6532 RIOT Documents==
  
[[RIOT limitations and workarounds]] discusses using the RIOT timers on the 7800.
+
[[RIOT limitations and workarounds]] contains info on using the RIOT RAM and Timers in 7800 mode.
 
 
  
 
==6502 Assembly Documents==
 
==6502 Assembly Documents==
Line 58: Line 58:
  
 
[http://wilsonminesco.com/SelfModCode/ Self-Modifying Code] by Garth Wilson
 
[http://wilsonminesco.com/SelfModCode/ Self-Modifying Code] by Garth Wilson
 +
 +
[https://www.esocop.org/docs/MOS6510UnintendedOpcodes-20152412.pdf NMOS 6510 Unintended Opcodes] is an excellent overview of the undocumented/illegal opcodes on the 6502/6510.
  
 
==External Hardware Documents==
 
==External Hardware Documents==
Line 67: Line 69:
  
 
[[The POKEY Note Table]] is a handy guide to note frequencies by Bobby Clark, aka Synthpopalooza. Both 8-bit and 16-bit modes are covered.
 
[[The POKEY Note Table]] is a handy guide to note frequencies by Bobby Clark, aka Synthpopalooza. Both 8-bit and 16-bit modes are covered.
 +
 +
7800 games can use the [https://github.com/VinsCool/RASTER-Music-Tracker RMT - Raster Music Tracker], originally developed by Radek Štěrba, currently maintained by Vin Samuel, with a [https://forums.atariage.com/topic/22877-rmt-pokey-player-for-the-7800/ 7800 driver port courtesy of Eckhard Stolberg.]
 +
 +
[https://asma.atari.org/ ASMA SAP Archive] contains SAP format wrapped Atari songs, some of which are SAP wrapped RMT files. You can download [[Media:ASMA_SAP_RMT_Files.zip|a collection of RMT based ASMA SAP files here]].
 +
  
 
===XM, The 7800 Expansion Module===
 
===XM, The 7800 Expansion Module===
  
The [http://www.7800xm.com/XMdevelopers.htm XM Developers page] has the official XM developer information.
+
The [https://web.archive.org/web/20200813143026/http://www.7800xm.com/XMdevelopers.htm XM Developers page] has the official XM developer information.
  
 
The [[YM2151 Programming]] page has technical information on the YM2151 and the XM.
 
The [[YM2151 Programming]] page has technical information on the YM2151 and the XM.
  
 
The [[OPM Instrument Collection]] page is a good source of instruments for the YM2151.
 
The [[OPM Instrument Collection]] page is a good source of instruments for the YM2151.
 +
 +
The [[YM2151 Detection]] page has code for detecting the YM2151 on the 7800. (XM or stand-alone)
 +
  
 
===AtariVox===
 
===AtariVox===
Line 81: Line 91:
 
===High Score Cart===
 
===High Score Cart===
 
The [[HSC Layout]] describes the NVRAM layout for the HSC Cart.
 
The [[HSC Layout]] describes the NVRAM layout for the HSC Cart.
 +
 +
===SNES2Atari===
 +
[[SNES2Atari]] contains implementation information for connecting SNES controllers to the 7800, and othr Atari consoles.
  
 
==Miscellaneous Documents==
 
==Miscellaneous Documents==
  
 
The [[A78 Header Specification]] covers the purpose and various fields in the A78 header.
 
The [[A78 Header Specification]] covers the purpose and various fields in the A78 header.
 +
 +
The [https://atariage.com/forums/topic/333208-old-world-a78-format-10-31-primer/ Old World A78 Format Primer] covers v1.0 to v3.1 A78 header usage, with the intention of clarifying how the header should be parsed by emulators and flash-carts.
 +
 +
[[Bankset Bankswitching]] gives an overview of the homebrew bankswitching scheme.
  
 
[[The Atari 7800 BEAD Executable Specification]] covers how 7800 B78 executables are formatted.
 
[[The Atari 7800 BEAD Executable Specification]] covers how 7800 B78 executables are formatted.
 +
 +
[[Common Emulator Development Issues]] covers some of the games that may cause quirks in new emulators.
  
 
[[Introduction to the MAME debugger]] covers basic usage of the built-in MAME debugger.
 
[[Introduction to the MAME debugger]] covers basic usage of the built-in MAME debugger.
Line 93: Line 112:
  
 
[[Debugging On Ancient Game Platforms]] has suggestions on what to do, when your homebrew project isn't going so well.
 
[[Debugging On Ancient Game Platforms]] has suggestions on what to do, when your homebrew project isn't going so well.
 +
 +
[[Creating Bluish Noise With Minimal Compute]] covers the uses of blue noise, and how to inexpensively generate it on older platforms.

Latest revision as of 17:55, 30 September 2024

Once you've read through an understood the 7800 Software Guide and 7800 Assembly Quick-Start, the documents listed in this entry will help you master more advanced topics.


MARIA Documents

Atari 7800 Color Documentation covers how the 7800 generates its colors, with specific consideration to color selection for homebrew authors.

Maria Display Structure Overview is a graphical overview of DL and DLL memory structures used to create the display.

Importing Bitmap Graphics into Assembly Source Code with BMP7800 covers the utility from Bob DeCrescenzo (aka PacManPlus)

Maximizing 7800 Sprites discusses techniques that can be used for games that need a maximum number of moving objects.

The 7800 Software Guide Podcast is a bit of fun. It's an AI podcast generated with Google's NotebookLM tool.

TIA Sound Documents

Eckhard Stolberg's Atari 2600 VCS Sound Frequency and Waveform Guide covers TIA musical frequencies.

The Perceptual Tuning Primer covers an easy technique to keep TIA music sounding in tune.

The Tune2600 Introduction covers using Thomas Jentzsch's Tune2600 utility to select your notes.

TIA Arpeggio Tips provides helpful information for implementing arpeggios in your music.

6532 RIOT Documents

RIOT limitations and workarounds contains info on using the RIOT RAM and Timers in 7800 mode.

6502 Assembly Documents

The 6502 Instruction Set reference lists 6502 opcodes, valid modes, cycles, etc.

6502 Beginner Tips contains useful information and references if you're new to 6502 assembly.

6502 Advanced Tips contains information for seasoned 6502 coders.

External links:

Opcodes in more detail

Compare Instructions in even-more detail

Advanced Comparisons by Bruce Clark, including alternatives to CMP/CPX/CPY, signed comparisons, and multibyte comparisons

Another overview, this one from NESdev, containing detail on addressing modes and status flags

Assembly Optimizations from NESdev

6502 Shorts by Lee Davison

6502 Routines also by Lee Davison

Tips for Programming by Garth Wilson

Investigating Interrupts, all you need to know and more about interrupts, by Garth Wilson

Self-Modifying Code by Garth Wilson

NMOS 6510 Unintended Opcodes is an excellent overview of the undocumented/illegal opcodes on the 6502/6510.

External Hardware Documents

POKEY

Atari's internal POKEY C012294 Documentation covers POKEY in formal manner.

Detecting POKEY provides one method of detecting the presence of the POKEY chip.

The POKEY Note Table is a handy guide to note frequencies by Bobby Clark, aka Synthpopalooza. Both 8-bit and 16-bit modes are covered.

7800 games can use the RMT - Raster Music Tracker, originally developed by Radek Štěrba, currently maintained by Vin Samuel, with a 7800 driver port courtesy of Eckhard Stolberg.

ASMA SAP Archive contains SAP format wrapped Atari songs, some of which are SAP wrapped RMT files. You can download a collection of RMT based ASMA SAP files here.


XM, The 7800 Expansion Module

The XM Developers page has the official XM developer information.

The YM2151 Programming page has technical information on the YM2151 and the XM.

The OPM Instrument Collection page is a good source of instruments for the YM2151.

The YM2151 Detection page has code for detecting the YM2151 on the 7800. (XM or stand-alone)


AtariVox

AtariVox for the 7800 covers details for accessing the AtariVox peripheral.

High Score Cart

The HSC Layout describes the NVRAM layout for the HSC Cart.

SNES2Atari

SNES2Atari contains implementation information for connecting SNES controllers to the 7800, and othr Atari consoles.

Miscellaneous Documents

The A78 Header Specification covers the purpose and various fields in the A78 header.

The Old World A78 Format Primer covers v1.0 to v3.1 A78 header usage, with the intention of clarifying how the header should be parsed by emulators and flash-carts.

Bankset Bankswitching gives an overview of the homebrew bankswitching scheme.

The Atari 7800 BEAD Executable Specification covers how 7800 B78 executables are formatted.

Common Emulator Development Issues covers some of the games that may cause quirks in new emulators.

Introduction to the MAME debugger covers basic usage of the built-in MAME debugger.

Eckhard Stolberg's ATARI 7800 BANKSWITCHING GUIDE is the bank-switching bible for the 7800.

Debugging On Ancient Game Platforms has suggestions on what to do, when your homebrew project isn't going so well.

Creating Bluish Noise With Minimal Compute covers the uses of blue noise, and how to inexpensively generate it on older platforms.