
Click Here To Go Back To Project Goals

Project Description By Subsystem:
(Verbose description of features and project uniqueness)
The Graphics Subsystem is built around a 320x200x256 main graphic
engine. The graphics are all in .PCX data format. Functions draw and manipulate the
images independently of their size, however all files use a common palette. The video
output is double-buffered in order to remove flickering, and the palette is buffered in RAM
so that we can remember our original palette in one buffer, modify it in another, and move
either of those to the video card's palette. Four fading effects procedures have been written,
utilizing these palette buffers. These will allow effects such as fade out to black or white
and fade in from black or white. During the game, a procedure for implementing the 2-D scrolling
is used. Transparency is used for drawing PCX images over top a fixed or scrolling background.
The Sound Subsystem is designed to use the 291 sound libary
functions, as well as the program MidiPak. Building from the 8-bit .WAV sound procedures
provided by this sound library, we have added some key features. The first feature is that
we allow for fieles of any size to be played without having to completely load the sound to
RAM. We read our .WAV files from the hard disk every time, which gives us this flexibility
in file size. The second key feature is that we will implement the ability to continue gameplay
while playing .WAV files. Many projects did not allow for this. It is a nice, but difficult,
feature to implement. One must continually switch between game and sound loops so that a smooth
gameplay and soundplay both occur. Third, we allow users to switch .MIDI songs during gameplay
by hitting function keys F1-F4. And lastly, we also give priority to certain .WAVs, such as the
sound played for picking up a missile-powerup, so that it is not interrupted by new WAV sounds,
such as gunfire or hits.
The Menu Subsystem utilizes both the graphics and sound engines
for delivering an easy-to-use interface to the user. Users can easily navigate through
options and game selections. Fade ins and outs are used to smoothly transition between
the menus. A keyboard handler separate from the game-play keyboard handler is required.
Sound menu options are retained for the duration of the player's game experience.
The Gameplay / AI Subsystem code incorporates the defined
graphics, sound, and network functions. The player must contend with basic enemies,
enemies programmed to target the nearest player, stealth enemies that cloak and try
to ram into the hero's ship, and a final "boss" enemy who has only one weak spot that the
user must figure out. The boss is also impervious to special weapon usage. Enemies have
their own weapon types. The player is equipped initially with only a basic gun and a special
weapon that, when used, damages both player and enemy. Collisions are detected not only between
hero and enemy gunfire, but also between hero and enemies. Collisions cause damage to both
hero and enemy objects.
Code Design:
Code design is split into two sections, Declarations and Procedures. Declarations include
segments, variables, constants, structures, and macros. Procedures include procedure code.
Declarations are defined according to categories, while specific declaration values are not
presented because they aid very little in the understanding (ie: it is not very beneficial
to know the size of each of our image files and the image variable names). However, procedures
are fully named and documented in the code design page.
Click Here To Go Declarations
Click Here To Go Back To Procedures
Credits:
Sound Routines: ECE291 SoundLib
Hero Ships (we redrew from images): http://spac-201.rice.edu/Veritech/Lightning.html
Enemy Ships (we redrew from images): http://ps.iis.sinica.edu.tw/pic/R-Type
Backgrounds (we made collages from): NASA @ http://www.nasa.gov
Sounds: Sound Library @ http://www.filelibrary.com/Contents/Multi-Platform/62/14.html