Classic Computer Magazine Archive ANTIC VOL. 3, NO. 7 / NOVEMBER 1984

bonus game

OMNIVENTURE

Do-It-Yourself Graphic Adventure

by JERRY A. LeMAITRE

Omniventure screen
A graphic adventure/arcade game in three versions-plus instructions for easily customizing the game even more.  The program runs on all Atari computers of any memory configuration.  Antic Disk subscribers RUN "D:OMNIVENT.BAS"

The prefix omni means, roughly, "all-encompassing." Omniventure is a fast arcade/adventure game written completely in BASIC.  You can easily modify it into many different themes that you choose.  It's a great practice tool for beginning graphics adventure programmers.
   Listing 1 is "Dinoventure." Type it in, check it with TYPO, and SAVE a backup copy or two.
   RUN the program and you'll see your player, a small dancing figure that you can move in eight directions with a joystick.  Your path through the randomly-created maze is blocked by two types of obstacles-enemies and walls.  There are two kinds of enemies, placed randomly about the playfield. The number of enemies depends on the skill level at which you're playing.  To defend yourself, you'll find weapons in various places about the maze. Pick one up by passing over it.  If you're carrying a weapon and standing directly beside an enemy, press the fire button to use the weapon (each can only be used once!) and kill the enemy.  You need not aim the joystick.
   You can also pick up "tools" throughout the maze.  Each of these can be used once to break through a "wall" (or whatever your non-moving obstacles may be), similarly to destroying an enemy with a weapon.
   Lastly, but not least, are the treasures.  Pick up as many of these as you can.  They are also randomly placed, and the number depends on the skill level.
   You can only carry one item (excluding treasure) at a time.  Whenever you want to go to another screen, touch the wiggling 'space warp' line at the top of the screen.  Your goal is to pick up the highest amount of treasure points.
   You start with three players, with figures representing the number of remaining players displayed in the upper right corner.

DRAGOVENTURE AND ROBOVENTURE
Listing 1, the main program, is already set up for Dinoventure.  Listings 2 and 3 provide alternate data for the games-Dragoventure and Roboventure.  Type them in and LIST them to disk or cassette.  To convert Dinoventure, first LOAD the main program, then ENTER Listing 2 or 3. Antic Disk subscribers LOAD"D:OMNIVENT.  BAS", then ENTER"D:DRAGVENT.LST" or ENTER"D:ROBOVENT.LST". If you want to speed up the game, you can get rid of a delay loop by changing line 500 to:

500 CH=CH+1:POKE 756,CH(CH):
IF CH=1 THEN CH=-1.

CUSTOMIZING OMNIVENTURE
Here's a step-by-step method for creating your own Omniventure games.
   1. Think up a title and a theme for your game, and determine what type of obstacles, enemies, weapons, tools, and treasures are best suited for your theme.
   2. Change the REM statements in lines 2 and 3 to show your name and the new title.
   3. Change line 9010. Make A$ your weapon's name, B$ the tool's name, and C$ your prefix for "-venture" to make up the title.  NOTE: the length of both A$ and B$ should-equal nine -pad with spaces if necessary.  Also, C$ shouldn't contain more than seven characters.
   4. See Figure 1 to find which lines change for the title screen.
   5. Change the numbers in line 10030 to represent the colors you want. Here's how: a) choose the number you want from Figure 2. b) Add a number between 0 and 15 for brightness (0=very dark, 15=very light). c) Figure 3 shows which color registers are used for the game's various elements.  Find the corresponding POKE in line 10030, then change the second number (the one after the comma) to the one you've selected.
   6. Draw your figures on graph paper so they fit into an eight-by-eight square, then calculate the eight data values for each character.  For each row, add up the values of the columns containing filled-in squares (the bits are "on").  See Figure 4. Also see "Character Graphics" (Antic, February 1984) for further information on developing custom characters.  Design two images or 'frames' each for enemies and treasures.  This creates a sort of animation when the program alternates between the two images.
   7. Use Figure 5 to place the data from step 6 into the program.  In lines 9230-9250, place data after the first number as shown in Figure 5.

PROGRAM TAKE-APART
100- 300
310- 440
500
510- 570
6000- 6200
9000- 9020
9030- 9266
9270
9300- 9390
10000- 10110
Move man and adjust for carrying an object
Check for fire button and use object being carried
Delay loop and alternate character frames
Move antagonists
Death routine
Title screen and dimension strings and variables
Initialize character set
Set movement variables
Welcome screen
Draw playfield and position characters

(note: I did cheat a bit by using a Machine-Language subroutine to copy the character sets but it doesn't affect game play.)

Jerry A. LeMaitre is a high school student in Collingwood, Ontario.  He is currently starting his own business selling software and computer accessories.

Figure 1
Welcome Screen
line
----
9320
9330
9340
9350
9360
9370
9380
subject
---------
weapon
tool
treasure
antagonist #1
antagonist #2
obstacle #1
obstacle #2

Figure 2
Colors

color
-----
number
--------
grey
gold
orange-brown
red-orange
pink
purple
purple-blue
blue
blue
light-blue
turquoise
green-blue
green
yellow-green
orange-green
light-orange
0
16
32
48
64
80
96
112
128
144
160
176
192
208
224
240

Figure 3
POKE Numbers

subject
---------
antagonists
obstacles
treasure
tools, weapons
you
background
POKE
-------
708
709
710
711
711
712

Figure 4
Creating Characters
128 64 32 16 8 4 2 1
          X X  
          X X X
        X X    
        X X X X
x     x x X   x
X     X X X    
X     X X X    
  X X X   X X X
FRAME 1
2 + 4 = 6
8 + 4 + 2 + 1 = 15
8 + 4 = 12
8 + 4 + 2 + 1 = 15
128 + 16 + 8 + 4 + 1 = 157
128 + 16 + 8 + 4 = 156
128 + 16 + 8 + 4 + 2 = 158
64 + 32 + 16 + 4 + 2 + 1 = 119
The data for this character is: 6, 15, 12, 15, 157, 156, 158, 119

128 64 32 16 8 4 2 1
      _ _      
    _ _ _ X    
        X X    
        X X X X
  _   _ _ X   _
X     X X X    
X     X X X _  
  X X X   X X X
FRAME 2
16 + 8 = 24
32 + 16 + 8 + 4 = 60
8 + 4 = 12
8 + 4 + 2 + 1 = 15
64 + 16 + 8 + 4 + 1 = 93
128 + 16 + 8 + 4 = 156
128 + 16 + 8 + 4 + 2 = 158
64 + 32 + 16 + 4 + 2 + 1 = 119
The data for this character is: 24, 60, 12, 15, 93, 156, 158, 119

Figure 5
Data Lines

line number
------------
9060 DATA
9070 DATA
9080 DATA
9090 DATA
9100 DATA
9110 DATA
9120 DATA
9230 DATA 2,
9240 DATA 3,
9250 DATA 8,
data for . . .
------------
(antagonist #1, frame 1)
(antagonist #2, frame 1)
(obstacle #1)
(obstacle #2)
(weapon)
(tool)
(treasure, frame 1)
(antagonist #1, frame 2)
(antagonist #2, frame 2)
(treasure, frame 2)