Gorillas is a 2-player QBasic demo included with MS-DOS 5.0 in its June 1991 release. (Not 1990 as Gorillas' Wikipedia page claims.) As it was bundled with the OS, it was ubiquitous on home and school computers, with reports of students facing off in class while the teacher wasn't looking. As an artillery game, it succeeds the text-based '70s entries that established the genre, and precedes Worms by 4 years.
Set gravity intensity and number of rounds, then angle and power, and try to hit the other gorilla with an exploding banana. Even with explosive ammo, it is easy to miss your shot by a hair, giving the other player a chance to return fire. There is no AI, so you need to have a second player or control both by yourself. Since the source code is available, players can alter it however they want, making it an easy way to learn Microsoft's QBasic.
It's a game that would've been considered trivial under the old rules. After passing the DOS prompt quickly with copying to the fast HDD, the Tab key and short filenames, only two brief sections of input needed easy optimization, with optional luck manipulation to make gorilla positions and the throw arc more entertaining without losing time. There are at least a dozen ways to solve Round 1 with the same framecount, only changing the gravity value to seed the level generator (different framecount will change it too), and the angle and speed to hit the gorilla. Often multiple arcs can hit, like both a line drive at 15° and a lob at 75°, as long as buildings don't get in the way. With setting the options beforehand, this felt like TASing a one-round speed-oriented fighting game or a golf game with one hole.
Files needed
- We're supposed to use unaltered floppy images when possible, as this aids people in finding the right files, especially for a game like this where the source can be edited. So I loaded the MS-DOS 5.0 disks 2 and 3, which hold the game and the uncompressor tool expand.exe. Normally you'd install DOS 5.0 and the game would already be uncompressed and ready to launch, but it would be both slow and redundant to install a second DOS, when we can copy the files and uncompressor over to C: ourselves using BizHawk's built-in DOS.
- It may also be acceptable to make an ISO or HDD of just qbasic.exe and gorilla.bas. c-square's previous submission uses these two files (and an extraneous and a user-created one) in JPC-rr. I don't know what the INI affects, but it isn't on the floppy so I didn't include it.
- Make an XML of the two floppies, with Disk 2 listed first, to play the input.
TAS Overview
Pregame
- The 1991 machine preset (25MHz) is used. Later presets would load faster but there's guidance to use the closest preset to the year of release.
- The DOSBox-x core is limited by how many keys it can read in a frame. ~3–6 keys can be read at once, sorted by their row and column on the keyboard: up to down, then left to right. For example, TAS will print in order (T on the first row, and AS in that order on the second), but KONG would print as OGKN, with the second row's G being read before K.
- The files are initially MsLZ-compressed, and intended to be decompressed during MS-DOS setup using Microsoft's expand.exe. I copy
that floppy this program onto the virtual hard drive. Expand lags a lot when its input and output are on different drives, so I copy the source files to C: as well. These are spread between Disks 2 and 3, which is why I need both. Copying everything to C: saves 4 frames over leaving Expand on A:, possibly because it saves having to type "C:" at the end of most statements.
- Even better than the ? and * wildcards is the Tab button, which can "suggest" a program or file and save several frames of typing each time. Expand seems to be the only EXE on Disk 3, so it is suggested first. The source files are inputted using Q+Tab,(blank),Tab (to skip a .hlp file of the same name) and G+Tab.
- We can omit / and \ after C: for files on the drive root (e.g. C:EXPAND.EXE), something I learned while making this TAS.
- The extensions .exe and .bas are needed for the QBasic executable to launch and Gorillas' source to be recognized by QBasic. However, the DOS prompt does not require the extensions, so you can launch everything with "q g".
QBasic 1.0
- Just press F5 on the first frame you can. There are precompiled EXEs online that would skip this step, but as QBasic 1.0 cannot export EXEs, I don't think they are legitimate 1991 releases. They also seem to run at different speeds on the 1991 machine than when you compile the BASIC code, with one actually running slower.
Game Settings
- Names were entered without losing time, as I can only press Enter every other frame anyway. I decided to invite DK to be the other primate.
- 3 rounds is the default, but I set it to 1 for fastest completion. However, I could see a 3-round TAS being acceptable. The first round could be manipulating P2 to be close so the hit, and Round 2, happen as soon as possible. Round 2 would be "fastest self-destruct" like in c-square's old submission, as P2 moves on even rounds. Then Round 3 would be shortest input like this one, while also hopefully activating the sun Easter egg, clipping the banana through a building, maximizing banana hangtime, or otherwise finishing in a surprising way. I don't know how we'd branch that though. There's also KusogeMan's Rampage-style idea to destroy the city, an outside-the-box thought that could lead to an interesting playaround.
- As a side note, I'm not sure where the extra frame happened that c-square had trouble with. Maybe JPC-rr processes input differently.
- Gravity can be adjusted. The standard value, 9.8 m/s2, causes bananas to hang in the air, so I set it higher (256) to increase entertainment. Once I saved all the frames I could find in the DOS prompt, I would return here to try different gravity values to generate different building heights and gorilla positions.
Gameplay
- We now have a layout with a solution that can be input in three frames, limited by the two Enter presses (pressing it for any two consecutive frames is considered a hold) and two sequential numbers, for angle at least, e.g. 56, 67, and 80.
- For example, 50 degrees is valid, but 51 is impossible to enter without taking an extra frame to type the 1 separately (otherwise it'd always become 15).
- Many layouts are still possible to accomplish in the fastest 3-frame window. Angles outside 0–90 are possible, but might throw in an unintended direction. Generally, higher values are better.
- On the second frame, you can type up to three sequential numbers while waiting for the third frame Enter press. The maximum is 360, but values close to it can clip through building corners as linked above. The banana will move too fast to process being inside a wall.
- This arc manages to touch the sun, which activates an Easter egg that changes its facial expression. This was the entertaining result I manipulated for, giving the audience enough time to see the banana fly and understand what's about to happen.
Possible improvements / Future
- A different goal choice could show off the game better, as discussed above in the Game Settings section.
Thanks to
- DOSBox-x core devs – it feels very comfortable to use in good ol' BizHawk!
- c-square for the previous submission and its branch ideas
- My friend Joe for introducing me to this game
- You, for watching
Publisher: Please include the bk2's Subtitles as subtitles for encodes. If needed, you can clear Comments.txt—I didn't realize it would appear in an Annotations box on this page, where it's difficult to read.p