Difference between revisions of "7800 Tutorials and Guides"
(43 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
[[Atari 7800 Color Documentation]] covers how the 7800 generates its colors, with specific consideration to color selection for homebrew authors. | [[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. | [[Maximizing 7800 Sprites]] discusses techniques that can be used for games that need a maximum number of moving objects. | ||
+ | ==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: | |
− | + | [http://www.6502.org/tutorials/6502opcodes.html Opcodes] in more detail | |
− | [ | + | [http://www.6502.org/tutorials/compare_instructions.html Compare Instructions] in even-more detail |
− | + | [http://www.6502.org/tutorials/compare_beyond.html Advanced Comparisons] by Bruce Clark, including alternatives to CMP/CPX/CPY, signed comparisons, and multibyte comparisons | |
+ | |||
+ | [http://nesdev.com/6502guid.txt Another overview], this one from NESdev, containing detail on addressing modes and status flags | ||
+ | |||
+ | [https://wiki.nesdev.com/w/index.php/6502_assembly_optimisations Assembly Optimizations] from NESdev | ||
+ | |||
+ | [http://web.archive.org/web/20130316101738/http://mycorner.no-ip.org/6502/shorts/index.html 6502 Shorts] by Lee Davison | ||
+ | |||
+ | [http://web.archive.org/web/20130316101732/http://mycorner.no-ip.org/6502/code/index.html 6502 Routines] also by Lee Davison | ||
+ | |||
+ | [http://wilsonminesco.com/6502primer/PgmTips.html Tips for Programming] by Garth Wilson | ||
+ | |||
+ | [http://www.6502.org/tutorials/interrupts.html Investigating Interrupts], all you need to know and more about interrupts, 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== | ||
− | Atari's internal [[POKEY C012294 Documentation]] covers POKEY in | + | ===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 [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=== | ||
+ | |||
+ | 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 [[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. | [[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. | 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== | ||
− | [[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. | ||
+ | |||
+ | [[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. |
Latest revision as of 15:20, 23 May 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.
Contents
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.
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.