Friday, September 7, 2012

Sierra's AGI Evolution

Over the years when Sierra was producing games using their Adventure Game Interpreter (AGI) interface, the company would often update their games to fix bugs or add new features.

The first AGI game, King's Quest, was released for the IBM PCjr. and was only meant to be played on that system.  However, as the PCjr. was not the smash hit that IBM and Sierra were betting on, Sierra quickly released a version for the IBM PC, essentially by substituting CGA and PC Speaker support for PCjr. graphics and sound support.  This version could support 4-color CGA graphics using the red/green/brown palette or 16-color color composite graphics when the CGA card was connected to a color TV or composite monitor.

Although it would take time for people to realize it, this was a watershed moment for PC gaming, as finally a high-profile game was released for and designed for the PC.  Previous PC games had been ports from the arcades or other home computers or from small-time publishers.  Sierra would be the first high profile publisher to concentrate on the IBM PC platform.

When Tandy released its 1000 computer in 1985, which had almost exactly the same graphical capabilities (the main difference being a relocatable graphics buffer) and sound capabilities as the PCjr., Sierra released a third version of King's Quest for that computer.  [A Tandy 1000/A/HD with only 128KB of memory can run the PCjr. version properly because the graphics buffer is in the same place as it would be on a PCjr.]  These versions of King's Quest are known as AGI0.  All later AGI releases support the PC and Tandy architectures, and most also support the PCjr.  All AGI version 1 games also were self-booting disks that did not require DOS or support a hard drive.  They did not have the white status/score bar, drop down menus and could only save games to a blank formatted floppy disk.  They offered in-game commands to format a floppy disk.  They could autodetect whether they were running on an IBM PC, IBM PCjr. or Tandy 1000.  Release period is 1984-85.

The most significant and immediate hardware improvement in the second version of AGI was to offer support for EGA cards, so non-Tandy/PCjr. users could view the games graphics in the most colorful and sharpest mode available.  The first game for the newer version, Donald Duck's Playground, was still a booter and a port of a C64 game that did not use AGI.  There are a pair of hacked versions floating around that allow the game to be played in DOS, but they use Atari ST or Amiga resources and are not as reliable when compared to true PC releases.  The game was subject to a license from Disney, and was not in release long enough for Sierra to produce an officially-hard drive installable version.  AGI2 thereafter was able to install the game to a hard disk and save games on the hard disk.  The early AGI interpreters still did not provide drop down menus, and speed control was not always present.  Releases date from 1986.

All AGI10 and AGI1 games were eventually re-released in AGI2.  Sierra added Hercules graphics support by the 2.4xx interpreters because Hercules cards were very popular in the mid-80s, by its early 1987 releases.  Unlike other graphics adapter, the Hercules mode will show typed text in a box in the center of the screen and pause the action like the later SCI0 engine.  The PC was, after all, primarily thought of as a business computer at this time and lots of PCs used monochrome TTL monitors and supported Hercules graphics.  The drop down menu bar gets implemented, as are adjustable animation speeds for all games.

Later improvements added support for MCGA graphics for the users of the IBM PS/2 Models 25 & 30, MCGA and EGA not being compatible.  Most 2.4 interpreter versions should support MCGA.  If not, you would forced to use four color CGA.  Also, since these games had key disk copy protection (requiring Disk #1 to be in the A: drive, even for a hard drive install), further fixes allowed the copy protection to work on 1.2MB drives for games with 360KB disks.  The IBM PS/2 computers and the Tandy 1000HX and TX all had 3.5" disk drives built in, so around mid-1987 Sierra began shipping dual-format release games for DOS with both 5.25" disks and 3.5" disks of the game in the same box.  Disk 1 for each disk type would be copy protected.

In all AGI2 games, the first disk for the game had to be inserted into the A: drive for the copy protection checks in the game executables to pass.  The key disks used a track with a checksum error, overlaid data on the sectors and non-standard sector sizes.  A standard PC floppy disk controller and DOS could not replicate these protections.  Only a device like the Central Point Software Copy II PC Option Board could fully replicate the protection, SuperLok 3.2.  The game's .com loader would make check for a bad track, and if found would then read a decryption key from it and decrypt the real executable, which is AGI.  Even if the game was installed on the hard drive, the first disk had to be in the drive.  Most versions of Police Quest were released without copy protection in an experiment in honesty.  So-called "slash" budget releases of these games also have the protection removed.

AGI2 releases with interpreter 2.917 or later do not exhibit the issue of footprint tracks for animation on faster hardware with EGA and VGA cards.  Sometimes Sierra shipped earlier versions on its Collection CDs.  There is a fix available, see my January 22, 2015 post in this thread : http://www.vintage-computer.com/vcforum/showthread.php?40365-Tandy-1000SX-Game-Issues

Bypassing the copy protection can be done in two ways.  The first is to modify the loader program, typically called SIERRA.COM or something like KQ3.COM or SQ2.COM.  The 128-byte encryption key is copied from track 6 into the.COM, the protection checks are bypassed and the .COM file will always decrypt the AGI file without needing or asking for the key disk.  There are instructions to do this in debug, but Sierra used two versions of the 3.0 Loader, a 1985 and a 1987 version.  The memory offsets are different for each.  AGI interpreter versions up to and including 2.4x use the 1985 version of the loader, 2.9x versions use the 1987 version of the loader.  The second is to permanently decrypt the AGI file.  In this case, you do all the above but write the decrypted AGI file, which is in memory, to a file called AGI.EXE or SIERRA.EXE.  After that, you run the .EXE file and that will start the game.

AGI3 signaled the shift from disk-based copy protection to document-based copy protection.  Three games use the lookup the word in the manual method.  There is no disk-based copy protection loader and the disks are perfectly standard DOS disks.

All games (except for Donald Duck's Playground) by the end of AGI2 had support for every graphics and sound standard widely supported on the market up to 1988.  For graphics, this means CGA, PCjr., TGA, HGC, EGA, MCGA & VGA.   For sound, all that was widely available and supported was the PC Speaker and the PCjr./Tandy 1000 PSG (Adlib and Roland MT-32 not having found game support until the middle of 1988, which coincided with the introduction of Sierra's SCI games).  Release dates are 1988-1989.

All versions of these games check the computer's BIOS for the PCjr. or Tandy 1000 byte identifiers before initializing the three voice PSG sound data.  This was standard in the days before games would freely let you choose your graphics and sound hardware.  By default, if these games found those strings, they would load their PCjr. or Tandy 1000 graphics drivers.  It is possible to force CGA graphics on a Tandy 1000 computer by using the -p command line argument.  This will give you CGA Composite Color Graphics.  You can also use -p -r to force CGA RGB Color Graphics.  However, you will get annoying unintentional noises if you have previously run a game that uses Tandy sound prior to running an AGI game this way.  Command line arguments for the SIERRA.COM loader include :

-c = Force CGA Composite Color Mode
-e = Force EGA
-h = Force Hercules
-r = Force CGA RGB Color Mode
-p = Force "PC Mode"
-s = Unknown
-t = Force Tandy 1000 Graphics and/or Sound
-v = Force MCGA/VGA

By accident or design, all AGI3 games and AGI2 games with the latest interpreters (greater than or equal to 2.917), will work in most Tandy 1000s with an EGA or VGA card installed.  This combination will give you the sound of the Tandy PSG paired with an EGA or VGA card.  The only Tandy 1000s that this does not work with are the original 1000, 1000A and 1000HD, because their graphics cannot be disabled, and the RSX.  Tandy sound will not work on the RSX even though it has the chip because Tandy had to relocate it in the I/O map because the original location (C0-C7) conflicted with the I/O for the 2nd DMA controller added in the IBM PC AT (IBM is to blame here), so it is at 1E0-1E7.  The RSX was released well after the AGI games.  The Tandy 1000 RLX is a special case because it has built-in VGA on the motherboard and ports at the usual locations (no DMA 5-7).  You must use these latest versions for AGI games to work at without sprite footprints on the RLX and its built-in VGA.

All the games as shown below have a release with an AGI interpreter version greater than or equal to 2.917 except for Mixed Up Mother Goose.  In order to play that game on a hybrid Tandy system like the RLX, you need to use an interpreter from another game.  However, it is not as simple as copying over a few files. The decrypted AGI file has the name of the game embedded in it, like KQ2 or SQ2.  If the game does not match the name, it will refuse to interpret the game files.  What you need to do is to permanently decrypt the AGI file with a version equal or greater than 2.917, change the name in the AGI file and use the file to run Mixed Up Mother Goose.  There is a program called AGI Decryptor that can permanently decrypt the AGI file.

The specifications for the AGI engine are here : http://wiki.scummvm.org/index.php/AGI/Specifications and a description of the copy protection used is available and a utility to remove the protection is here : http://sierrahelp.com/GeneralHelp/FloppyDiskBackupProblems.html.  Here are a list of games and their known versions :

Game Name AGI Int. Ver. Game Ver. Floppies Protection File Date Loader 3.0 Yr Interaction Newsletter Notes
Black Cauldron, The 1.12 1.1J 2x360KB Booter 1985


Black Cauldron, The 1.12 1.1K 2x360KB Booter 1985


Black Cauldron, The 1.12 1.1K Tandy 2x360KB Booter 1985


Black Cauldron, The 1.12 1.1M 2x360KB Booter 1985


Black Cauldron, The 2.44 2.00 2x360KB Key Disk 06/14/87 1985 Fall 1987 MCGA fix
Black Cauldron, The 3.002.098 2.10 2x360KB None 11/10/88 NP

Christmas Card 2.272 1 1x360KB None 11/13/86 NP
Christmas Demo
Donald Duck's Playground 2.001 1.0Q 1x360KB Booter 06/09/86


Gold Rush 3.002.149 2.01 5x360KB/2x720KB Manual Word Lookup 12/22/88 NP

King's Quest 1 1.00 1x360KB Booter 1984

Licensed to IBM
King's Quest 1 none 1x360KB Booter 1984

Generic PC version
King's Quest 1 01.01.00 1x360KB Booter 1984

Licensed to Tandy
King's Quest 1 ? 1x360KB Booter 1984-1985

Came as second disk in later PC booter releases, functionally equivalent to Tandy 1000 version
King's Quest – Quest for the Crown 2.272 1.0U 2x360KB Key Disk 11/14/86 1985

King's Quest – Quest for the Crown 2.425 2.0F 2x360KB Key Disk 04/1987 1985

King's Quest – Quest for the Crown 2.917 2.0F 2x360KB/1x720KB Key Disk 05/05/87 1987 Fall 1987 1.2meg Fix, MCGA & Hercules Support
King's Quest II – Romancing the Throne 1 1.0W 2x360KB Booter 1985


King's Quest II – Romancing the Throne 1 1.1H 2x360KB Booter 1985


King's Quest II – Romancing the Throne 1 01.01.00 2x360KB Booter 1985

Licensed to Tandy
King's Quest II – Romancing the Throne 2.411 2.1 2x360KB/1x720KB Key Disk 04/10/87 1985

King's Quest II – Romancing the Throne 2.426 2.2 2x360KB/1x720KB Key Disk 05/07/87 NP? Fall 1987 MCGA fix
King's Quest II – Romancing the Throne 2.917 2.2 2x360KB/1x720KB Key Disk 12/01/87 1987

King's Quest III – To Heir is Human 2.272 1.01 3x360KB Key Disk 11/08/86 1985

King's Quest III – To Heir is Human 2.435 2.00 3x360KB Key Disk 05/25/87 1985 Fall 1987
King's Quest III – To Heir is Human 2.936 2.14 2x720KB Key Disk 03/15/88 1987 Spring 1988 MCGA fix
King's Quest IV – The Perils of Rosella 3.002.086 2.00 3x720KB Manual Word Lookup 07/27/88 NP
Hercules & PCjr. Support
King's Quest IV – The Perils of Rosella 3.002.086 2.3 6x360KB Manual Word Lookup 09/27/88 NP

Leisure Suit Larry in the Land of the Lounge Lizards 2.440 1.00 2x360KB/1x720KB Key Disk 06/01/87 1985 Spring 1988
Leisure Suit Larry in the Land of the Lounge Lizards 2.917 1.00 2x360KB/1x720KB Key Disk 12/01/87 1987

Manhunter – New York 3.002.102 1.22 5x360KB/2x720KB Manual Word Lookup 08/31/88 NP

Manhunter – New York 3.002.107 1.22 5x360KB/2x720KB Manual Word Lookup 09/01/88 NP

Manhunter 2 – San Franscisco 3.002.149 3.02 3x720KB None 07/26/89 NP

Manhunter 2 – San Franscisco 3.002.149 3.03 8x360KB None 08/17/89 NP
Disk swapping problems fix
Mixed-Up Mother Goose 2.915 1.0D 2x360KB Key Disk 11/10/87 NP? Spring 1988
Police Quest - In Pursuit of the Death Angel 2.903 2.0A 3x360KB Key Disk 10/23/87 NP

Police Quest - In Pursuit of the Death Angel 2.911 2.0A 3x360KB Key Disk 11/04/87 NP

Police Quest - In Pursuit of the Death Angel 2.915 2.0E 3x360KB Key Disk 11/17/87 NP

Police Quest - In Pursuit of the Death Angel 2.917 2.0G 3x360KB/2x720KB Key Disk/None 12/03/87 NP Spring 1988 PCjr. Support
Space Quest - The Sarien Encounter 2.089 1.0X 2x360KB Key Disk 09/24/86 1985

Space Quest - The Sarien Encounter 2.272 1.1A 2x360KB Key Disk 11/13/86 1985

Space Quest - The Sarien Encounter 2.426 2.2 2x360KB/1x720KB Key Disk 05/07/87 1985 Fall 1987 MCGA fix
Space Quest - The Sarien Encounter 2.917 2.2 2x360KB/1x720KB Key Disk 12/01/87 1987

Space Quest 2 - Vohaul's Revenge 2.912 2.0A 2x360KB/1x720KB Key Disk 11/06/87 1987 Spring 1988 MCGA fix
Space Quest 2 - Vohaul's Revenge 2.936 2.0D 1x720KB Key Disk 03/14/88 1987
Bug Fix
Space Quest 2 - Vohaul's Revenge 2.936 2.0F 1x720KB Key Disk 01/01/89 1987


9 comments:

Anonymous said...

one of the versions of kings quest 3 had poor tandy 3-voice support. The kings quest collection released by sierra in the 90's carried the latest build of the game

Anonymous said...

I have Police Quest - In Pursuit of the Death Angel except 2.911.
No key disk exist with all version.

Anonymous said...

Hi, I'd like to know if the Donald Duck's Playground game suports 320x200 as standard resolution, or any other game from later versions of AGI supports this resolution (before SCI)?

Great Hierophant said...

All Sierra AGI games use a 320x200 resolution, that is how you see 40 columns of 8x8 text. However, the graphic pixels are always doubled, so the effective graphics horizontal resolution is 160x200. Only with SCI Sierra adventure games can you enjoy 320 distinct horizontal graphics pixels.

Al Lowe said...

Contact me via my website. I may have something you'd enjoy seeing.

AL

Anonymous said...

Looks like there is a modern tool for decrypting AGI into AGI.exe without needing to read the keydisk. I guess you just copy your game files from the floppies on to any modern Windows machine and then decrypt the game for play in Dosbox. More can be found here in the Sierra Help Forums: http://www.sierrahelp.com/forums/viewtopic.php?f=86&t=4212

Mike Barranti said...

I always wondered about the text box on the early AGI games. I played many of the early Sierra AGI Quest games in the early 90s on a 286 with an Amber Monochrome monitor and a Hercules graphics card back. Years later, after I'd finally gotten a proper VGA card, and went back and bought the collections, I was always confused when no matter which release I played, even the last AGI versions had the real-time text entry that the earliest versions had, instead of the SCI-like input box that I remembered.

Thanks for that.

Trixter said...

You might want to add the "Sierra Demo Packs" to the list: https://archive.org/search.php?query=sierra%20agi%20demo

Great Hierophant said...

I can't find the version number for the demos. Ctrl+D works for the full games.