home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
diverace.zip
/
README.TXT
< prev
next >
Wrap
Text File
|
1995-08-28
|
10KB
|
245 lines
DIVERACE a Game-Programming example for Virtual Pascal.
This is Freeware
Author : Michael Mrosowski
Fidonet: 2:240/5022.1
EMail: lagaffe@offline.sh.sub.de
Last Chg: 27.08.95
*****************************************************************************
Preface:
--------
This game and the sourcecode, as far as it is not copyrighted by other
parties is free for use. It is released for the purpose to promote game
programming under os/2.
This software and accompanying materials are distributed "AS IS" without
warranty, express, implied or statutory, including but not limited to any
implied warranties of merchantability and fitness for a particular purpose.
In no event shall anyone involved with the creation and production of this
product be liable for indirect, special, or consequential damages, arising
out of any use thereof or breach of any warranty.
Warning!:
---------
This software is only roughly tested and its use can lead caused either
by incompatibilities or programming errors to a system halt. So be sure to
save all work before first starting the game.
*****************************************************************************
Notes about the Game:
---------------------
Diverace is a little car driving game. It's not really finished yet but
it's already some fun to play.
You drive a little vehicle together with some computer controlled cars
around a course. Bumping into them is the usual method to get them
out of your way, and they do the same with you :).
The only goal is currently to get past all others and drive some good
times. I recommend a joystick for best control.
Notes about the Game Options:
-----------------------------
Sound-Mixing:
-------------
I hope it works on your computer. I've tested it currently only with the
original Gravis Drivers (0.31a) where it works satisfyingly. It uses
up some computing time, so disabling it may speed up the game.
For safety reasons the sound mixing is currently disabled while the
game-frame has no focus (even while you are in the menu). It is re-
enabled when the frame gets the focus back.
Controls:
---------
The mouse control is relative to the mouse movement on the whole screen.
You will see a crosshair on the game screen indicating the control
position. Moving the mouse up accelearates, down brakes and left and right
steers the car (guess what direction).
The joystick control assumes you centered the joystick on the start of the
game. The joystick position is signaled with a crosshair on the game
screen. The acceleration & brakes are digital so it doesn't matter if the
crosshair doesn't reach the top or the bottom of the screen.
If steering to one side doesn't work correctly trim your joystick in that
direction and restart the game.
Watch-Only:
-----------
In this mode you don't have to drive. You can move around and watch the
automatic cars fighting.
Display Sound-Buffer:
---------------------
If Sound-Mixing is enabled, you can see the result of the sound mixing
on the game screen. (May slow down the game a bit).
Translate Colors:
-----------------
Turning off this option can speed the game up when used in 256 color mode
and SNAP 1:1 Mode. But it usually results in some color distortion.
Pause if lost Focus:
--------------------
It is a little bit dangerous to disable this function. If the game
continues and you start a full-screen session then ther will be a problem
getting back. Try pressing CTRL-ESC and wait up to a minute. The WPS
should be coming up again.
Frame Rate:
-----------
The maximum/optimal frame rate in this game is 18Fps.
Keys in Game:
-------------
F1: Snaps the Game Window to the resolution of the internal screen-buffer
F2: Snaps the Window to the double size of the internal resolution
F4: Snaps the Window to the Full Screen Width.
F3: Ends the Game
F5: Pauses the Game
Compatibility:
--------------
You need:
OS/2 Warp 3.0 (or newer)
MMPM/2 installed.
A DIVE capable Video-Card. (The 8514 Drivers do not support DIVE).
Optional: Soundcard & Joystick.
My Testing Environment:
OS/2 Warp 3.0
AMD 486 DX/2, 16MB
ATI Mach 64 VLB
Gravis Ultrasound (with Gravis Drivers 0.31a)
Results: 1:1 -> 18fps with 60-70% System load
1:2 -> 14fps with 100% System load
Problems:
---------
No Screen updates during game. End the game with F3 and start PULSE.
Check out if some other program (i.e. a bad configured dos-window) uses
100% of the CPU-Time. In this case there will be no game screen-updates,
because they run at idle priority (delta +20).
The sound mixing currently does not work with the gravis manley drivers
because they are too "intelligent" and ignore any later changes in the
buffers of the playlist. Other drivers may experience the same problem.
If the System hangs with 1:2 Screen (or bigger) this may be a DIVE
Problem. I experienced it some time with a Cirrus Logic card. I experienced
the same effect with SHOW.EXE from IBM, so it doesn't seem to be my
fault :).
Joystick flickering. Implementing the usage of the Joystick driver could
help resolving this problem.
*****************************************************************************
Notes about the Source Code:
----------------------------
unzip the sourcecode with the option -d (for directories).
Do not expect a full documented full-blown 100% perfect code. This is just
an old dos game which i ported to os/2. But i hope this game can at least
be an example how to use multithreading and MMPM to write a game.
If you want futher development, don't ask me. You have the code so you
can do it ;-).
Used techniques:
PALETTE:
--------
The Physical Palette is set as good as possible. But usually OS/2 does not
let all colors being set. This does not apply to TRUE-Color where no
palette is used.
SOUND:
------
Currently a playlist is used with two alternating buffers. Sound quality
is at 11khz 8-Bit Mono. Mixing is currently set to 6 channels.
If you want Stereo or 16-Bit you will have to extend the mixing routines.
The playlist concept may not work correctly on every sound-driver because
the soundbuffers are alternatively updated (always the not-played buffer).
DIVE:
-----
The the Dive-Blitter runs in an extra thread at nearly idle priority.
It usually runs fastest in 256 colors at 1:1 resolution. Without the
Color translation option the thruput is nearly doubled, but the colors are
distorted. Color translation off usually does not improve performance if
the display is other than 1:1.
3D:
---
Stone-Aged. The 3D-Routines are quite proprietary for this game. The 3D
routines write to a 256-colors frame buffer. The screen resolution can be
adjusted in the file DREID.PAS. You will notice still some german comments
in the file, i didn't have the time yet to translate all of them.
The 3D Part turns only around the y-axis. All Objects are made up of
triangles or squares. The cars are the only objects that are sorted in a
little list by distance to the viewpoint and displayed furthest first.
What is still to do:
DIVE: The new Fullscreen DIVE interface is not yet implemented.
Look for the file DIVEFS2.ZIP for docs. As an alternative could
be used VIO Fullscreen-Access (see the fire.pas example) from a
spawned os/2 fs-session & passing the frame-buffer via
shared-memory.
JOYSTICK:The game uses direct port io which ist not the best method.
Look for the files JOYSTICK.ZIP and JOYDOCS.ZIP for a OS/2
MMPM joystick driver.
SOUND: A playlist with alternatively updated datablocks and
cuepoint-operations is used. This takes much proc-time for
message processing etc. There is a new example for direct-
driver access. Look for DIRAUD.ZIP for documentation.
The Sound-Part is only roughly tested and may not run
with some drivers. For the GUS it works with the Gravis drivers
but not with the manley-drivers. The Problem here is that
the driver is reading the playlist-buffer once and then is
ignoring any changes in the buffer.
ERRORS: Error processing is minimal or not-existing in this example.
***************************************************************************
Where to put files.
Files in LIB to your LIB directory.
Files in OUT to your OUT directory.
Files in WORK to your working directory or the VP directory.
Copy the Game files (except the .exe) to your work-directory for
debugging.
Turn Stack-Checking off in the Compiler settings.
Link as PM-Application.
The Compiler is: Virtual Pascal Version 1.0 Beta (#003)
(i applied no fixes yet)
from : Vitaly Miryanov
Used sources of information -> Credits:
SHOW.C of IBM for dive-programming.
The MM4EMX package of Marc E.E. van Woerkom for the MCI-Interface.
The plug-n-play sound source from Semir Patel.