Welcome to our ECE291 Final Project


Bar Crawl `99: The Journey Home


Assigned:
Thursday, April 8, 1999
Due Date:
Thursday, April 29, 1999
Purpose:
Create a challenging Frogger based game for our ECE291 Final Project
Protocols:
Group Members:
Matt Van Iten, Matt Allison, Jay Emery, Jon Yuskus

Screen Shots


The MAIN for Bar Crawl '99: The Journey Home


Team Members & Assignments:

Matt Van Iten - Team Leader, graphics, sound routines, collaborated on Main
Matt Allison - Game Engine, I/O, wrote Main
Jon Yuskus - Graphics, Gameplay, collaborated on Main
Jay Emery - Graphics, Gameplay, Web Page Design

Introduction:

Bar Crawl '99 is a Frogger inspired game in that the objective of the game is to get the player safely from one lower portion
of the screen to the upper portion of the screen without getting run over by one of many vehicles in the roadway.
Unlike Frogger, our game will feature a choice of one of four characters, each his/her own special charactericstic (speed,
damage capacity). Our game will also feature multiple screen levels, meaning that the player will have to navigate more than
one set of roadways in each level. Our goal is to provide better graphics and sound than the original Frogger, including digitized
images, .wav sound effects and midi background music on 320X200 VGA screen.

Problem Description:

The most difficult portions of this program will be the routines concering the animation of the player on the background without
altering the background designs. The next concern will be the inclusion of the .wav and midi sound files. The inclusion of
multiple level screens and multiple character files will also be a primary concern of our group. Timing issues as related to
program speed and playability will also be addressed. Our game will differ from similar projects in that each character will have individual
characteristics, such as health and endurance.

Implementation:

The screen will be divided into a series of rows consisting of the roadway and the safe areas on either end of the level.
Each character will be defined in a generic player struct that will define the characters attributes (speed, damage capacity,
location,...). Jump tables will be utilized to help represent the proper delay time to be included in each level based on level
speed and difficulty. Several arrays will be allocated to serve as storage for the number of level images that are to be drawn
to the screen for each level.

Variables, Segments, etc....

Segments:

VidGrSEG: Video segement, 0A00h used to output data to screen
stkseg: Stack segement for pushing and poping
ScratchSeg: Temp storage when opening files..namely images
cseg: Stores our variables...etc.

Variables:

ScreenNum: Screen number for KbhHandler
GameLevel: Current Game Level
ScreenLevel: Current Screen Level, used for scrolling
PlayerDead: Status of player, 1=dead 0=alive
oldKbdV: Far pointer to default keyboard interrupt function
CodeVar: Variable to tell if code was entered
PlayerNum: Player picked on player screen
EnterFlag: Variable for code screen
Delay: Variable for speed
FirstScreen: Variable for first screen displayed in screen scroll
SecondScreen: Variable for second screen in screen scroll
IgnoreColor: Holds value of transparent color for cars, and characters
 

Procedures: (from Main, other routines to be added as needed)

Matt Allison:             RecordPlayerSize
                    input: screen, SI
                    output: [DI]
                    description: This procedure reads from the video seg with offset SI and writes to a variable with offset DI.  It reads a  20x25  section.
 
            DrawMovePlayer
                    input: Player.Direction, Player.Position
                    output: screen, Player.Position

            LoadPlayer
                    input: DX
                    output: ScratchPad
                    description:  This procedure takes a player size picture file and stores it in ScratchPad.
 
            StorePlayer
                    input: DI, ScratchPad
                    output: [DI]
                    description: This procedure takes the image file in ScratchPad and decompresses it  into bytes at offset DI.  It moves the palette into ports also.

            MainLoadPlayer
                     input: PlayerNum
                    output: player
                    description:  This procedure loads the player struc variable with the appropriate files  according to the playernum.  Calls the other helper
                                        procedures.
 

Jon Yuskus:

 

Jay Emery:

 

Matt Van Iten:

External Routines:

As of right now, the only external routine that is in our implementation is GetTime which is used to get the system time from the machine.
We also used a version of load pcx from the lab manual with personal modifications.