Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
software:cartridges [2016/06/11 10:32]
ex_writer [Standard]
software:cartridges [2016/06/14 22:22] (current)
ex_writer [Autostart]
Line 1: Line 1:
 ====== Cartridges ====== ====== Cartridges ======
  
-In the Astrocade'​s [[hardware:​memory map]], 8KB ($2000–$3FFF) is allotted to interchangeable cartridges (otherwise known as cassettes or Videocades).+In the Astrocade'​s [[hardware:​memory map]], 8KB ($2000–$3FFF) is allotted to interchangeable cartridges (otherwise known as cassettes or Videocades). ​
  
-===== Cartridge ​Types ===== +===== Cartridge ​Memory Diagram ​===== 
-Two types of cartridges ​may be used with the Bally Professional Arcade: //​standard// ​and //​autostart//​. ​+ 
 +{{:​cartridge_layout.png}} 
 + 
 +==== System Sentinel ==== 
 + 
 +The system sentinel byte may be one of two values indicating ​the cartridge type: //​standard// ​or //​autostart//​. ​
  
-==== Standard ​====+=== Standard ===
  
 The bulk of commercial Bally Arcade programs use the standard cartridge format, which transfers control to the program after game selection from the standard system menu. The system does considerably more initialization before control transfer: The bulk of commercial Bally Arcade programs use the standard cartridge format, which transfers control to the program after game selection from the standard system menu. The system does considerably more initialization before control transfer:
Line 22: Line 27:
  
  
-==== Autostart ​====+=== Autostart ===
  
 An autostart cartridge bypasses the standard Bally startup menu and jumps directly to the programmer-specified location. The only initialization that is performed before entry is the setup of the stack pointer to point just below system RAM and the establishment of "​consumer mode" in the [[hardware:​custom chips]]. RAM is not altered in this mode. An autostart cartridge bypasses the standard Bally startup menu and jumps directly to the programmer-specified location. The only initialization that is performed before entry is the setup of the stack pointer to point just below system RAM and the establishment of "​consumer mode" in the [[hardware:​custom chips]]. RAM is not altered in this mode.
Line 28: Line 33:
 An autostart cartridge is indicated by a jump instruction (opcode $C3) at location $2000. This jump instruction should branch to the starting address of the cartridge. An autostart cartridge is indicated by a jump instruction (opcode $C3) at location $2000. This jump instruction should branch to the starting address of the cartridge.
  
-<WRAP todo>​examples ​of games that autostart</​WRAP>​+//Treasure Cove// is one of the few commercial Bally Arcade cartridges ​that uses the autostart ​structure to jump immediately to its title screen.
  
 +==== Menu Node ====
  
-===== Cartridge Memory Diagram ===== +<WRAP todo>​write description</​WRAP>​
- +
-{{:​cartridge_layout.png}}+
  
-===== Restart Vectors ​=====+==== Restart Vectors ====
  
 Restart vectors use the Z80's restart (RST) instruction to provide small, efficient CALLs to commonly-accessed subroutines. Two restart vectors are used, for example, to jump to program start on system reset (RST 0H) and execute the onboard system routines (RST 38H). Cartridges have access to six unused RST instructions residing in memory between $2007–$201B:​ RST8, RST16, RST24, RST32, RST40, and RST48. Restart vectors use the Z80's restart (RST) instruction to provide small, efficient CALLs to commonly-accessed subroutines. Two restart vectors are used, for example, to jump to program start on system reset (RST 0H) and execute the onboard system routines (RST 38H). Cartridges have access to six unused RST instructions residing in memory between $2007–$201B:​ RST8, RST16, RST24, RST32, RST40, and RST48.
Line 41: Line 45:
 Executing any of these instructions causes the program to jump to a location in memory. At that location, the user executes a jump instruction to vector the program to a new location. RST instructions are useful for optimization because they require less space and time (1 byte, 11 cycles) than an equivalent CALL (3 bytes, 17 cycles). RST pushes the PC onto the stack, so you can return with a RET call, and RST does not alter flags. Executing any of these instructions causes the program to jump to a location in memory. At that location, the user executes a jump instruction to vector the program to a new location. RST instructions are useful for optimization because they require less space and time (1 byte, 11 cycles) than an equivalent CALL (3 bytes, 17 cycles). RST pushes the PC onto the stack, so you can return with a RET call, and RST does not alter flags.
  
 +The Bally Arcade'​s reserved restart vectors are optional. Any unused vectors may be used for normal program memory. ​
 ===== Cartridge Memory Structure ===== ===== Cartridge Memory Structure =====
  
Line 61: Line 65:
 *0218 = First onboard menu, 0000 = last menu. *0218 = First onboard menu, 0000 = last menu.
  
 +**Reference:​** [[http://​www.ballyalley.com/​basic/​bally_on-board_rom_subroutines.pdf|Bally On-Board ROM Subroutines]] [PDF]
 ===== Cartridge Series Numbers ===== ===== Cartridge Series Numbers =====
  
 +^ Number ^ Title ^ ROM Size ^ Release Date ^
 +|  **Action / Skills Series** ​ ||||
 +| #2001 | //Zzzap / Dodgem// | 2K | 1978 |
 +| #2002 | //Sea Wolf / Missile// (aka //Sea Wolf / Bombardier//​) | 2K | 1977 |
 +| #2003 | //Panzer Attack / Red Baron// | 4K | 1978 |
 +| #2004 | //Clowns / Brickyard// | 4K | 1978 |
 +| #2005 | //Star Battle// | 2K | 1979 |
 +| #2006 | //Space Invaders// (aka //Astro Battle//) | 4K | 1979 |
 +| #2007 | //Bally Pin// | 4K | 1979 |
 +| #2008 | //Space Invaders// (aka //Astro Battle//) | 4K | 1979 |
 +| #2009 | //Space Invaders// (aka //Astro Battle//) | 4K | 1979 |
 +| #2010 | //​Dogpatch//​ | 2K | 1980 |
 +| #2011 | //Galactic Invasion// (aka //​Galaxian//​) | 4K | 1981 |
 +| #2012 | //Space Fortress// | 4K | 1981 |
 +| #2014 | //Grand Prix / Demolition Derby// | 4K | 1981 |
 +| #2015 | //​Pirate'​s Chase// | 4K | 1982 |
 +| #2016 | //Skiing// [unreleased] | | |
 +| #2017 | //The Incredible Wizard// | 8K | 1982 |
 +| #2018 | //Solar Conqueror// | 8K | 1983 |
 +| #2019 | //Cosmic Raiders// | 8K | 1983 |
 +| #2020 | //Missile Attack// [prototype] | 4K | 1985 |
 +|  **Sports Series** ​ ||||
 +| #3001 | //Tornado Baseball / Tennis / Hockey / Handball// | 4K | 1978 |
 +| #3002 | //​Football//​ | 4K | 1978 |
 +| #3004 | //Desert Fox / Drag Race// [unreleased] | | |
 +| #3005 | //Astrocade Pinball// (same as //Bally Pin//) | 4K | 1981 |
 +| #3006 | //Bowling// [prototype] | 4K | 1985 |
 +| #3007 | //Soccer / Dribbling// | 8K | 1985 |
 +|  **Educational Series** ​ ||||
 +| #4001 | //​Elementary Math / Bingo Math// | 2K | 1978 |
 +| #4002 | //Letter Match / Spell 'n Score / Crosswords//​ | 4K | 1978 |
 +| #4003 | //Music Maker// [prototype] | 8K | 1985 |
 +| #4004 | //​BioRhythm//​ | 4K | 1981 |
 +| #4005 | //Creative Crayon// (aka //Coloring Book//) [prototype] | 8K | | 
 +|  **Strategy Series** ​ ||||
 +| #5001 | //​Amazin'​ Maze / Tic-Tac-Toe//​ | 2K | 1979 |
 +| #5002 | //Black Jack / Poker / Acey-Deucey//​ | 4K | 1979 |
 +| #5003 | //Checkers / Backgammon//​ [unreleased] | | |
 +| #5004 | //Conan the Barbarian// (aka //Quest for the Orb//) [prototype] | 8K | |
 +| #5005 | //Artillery Duel// | 4K | 1982 |
 +|  **Functional Series** ​ ||||
 +| #6001 | //Dealer Demo// | 4K | 1978 |
 +| #6002 | //Bally BASIC// | 4K | 1978 |
 +| #6004 | //Bally BASIC// (w/ tape interface) | 4K | 1981 |
  
 +List adapted from the  [[http://​www.ballyalley.com/​faqs/​astrocade_cart_and_hardware_faq.txt|Bally/​Astrocade Game Cartridge and Hardware FAQ]]
  
 ---- ----
  
 [NM:72–4] [NM:72–4]
- 
-**Reference:​** [[http://​www.ballyalley.com/​basic/​bally_on-board_rom_subroutines.pdf|Bally On-Board ROM Subroutines]] [PDF] 
-