****************************************************************************
LEGAL JUNK:

	Hyperoid - a game for Mircosoft Windows (tm)
	Copyright (C) 1991 Edward Hutchins
	internet: eah1@cec1.wustl.edu
	usnail: c/o Edward Hutchins, 63 Ridgemoor Dr., Clayton, MO 63105

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 1, or (at your option)
	any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Note: Windows is a trademark of Microsoft Corp. (Duh)

With this aside,
****************************************************************************

Hello, and Welcome to Hyperoid version 1.1!

The object of the game is intuitive---shoot everything! (Well, almost
everything, heh heh!). If the keyboard buffer overflows in all the
excitement, ignore the beeps you hear and they'll go away.

Hyperoids uses the palette manager, so if you have a palette-capable display
(and you read the on-line help pages) you should be able to set up better
colors than the Windows defaults. I have tested hyperoids on a monochrome
'286, and it seems to work fine. If you want to re-map the keys, look at
Appendix A (or the Windows SDK) for some non-ASCII virtual key codes.

The source is available through the same channel that you got the executable
through, as per the GNU general public licence. Please read the licence if
you have any questions, or contact me at the above addresses (email
preferred).

If you make modifications/bug fixes to Hyperoid, please use me as a clearing
house to prevent versions flooding out into the universe. (You don't have to,
but I'd appreciate it :-). If you write the world's greatest game using some
of my source, please send me note telling what it is and where it's available.

Changes since 1.0:
	Explosion processing a little faster
	Swarmers (little green guys) no longer flood the system
	Scoring is better
	Extra lives every 100,000 points (not 50,000)
	Firepower reduced a little (hey, the game was too darn easy)
	Spinning Game Over (Oooooh...)

Look for:
  ls - *nix ls command with MUCHO bells&whistles (couldn't live w/out it!)
  blitfix - util that sets the CS_BYTEALIGNCLIENT bit on all top windows
			(speeds up my 1024x768 display by a factor of 3)
  eyecon - xeyes clone (may have to be renamed)
  ilbm - Amiga IFF bitmap viewer (supports HAM mode and palettes!)
  life - 7 blit life with a few bells&whistles
  loadmon - nifty system performance monitor
  mbrot - mandelbrot hack that runs in the background
  yow - Zippy the Pinhead in his very own icon, telling it like it is
  (more games... stuff... junk...)
Coming real soon now to a (net,BBS,Wherever this stuff ends up) near YOU!

Appendix A: Virtual Key Codes
-----------------------------

	VK_TAB              9 = default shields
	VK_RETURN           13
	VK_SHIFT            16
	VK_CONTROL          17
	VK_CAPITAL          20 - useful for autofire!
	VK_ESCAPE           27 = default boss key
	VK_SPACE            32 = default fire key
	VK_PRIOR            33
	VK_NEXT             34
	VK_END              35
	VK_HOME             36
	VK_LEFT             37 = default counter-clockwise key
	VK_UP               38 = default reverse thrust key
	VK_RIGHT            39 = default clockwise key
	VK_DOWN             40 = default thrust key
	VK_INSERT           45
	VK_DELETE           46
	VK_A-VK_Z           64-90, 83 = default smartbomb key (ASCII 'S')
	VK_NUMPAD0          96
	VK_NUMPAD1          97
	VK_NUMPAD2          98
	VK_NUMPAD3          99
	VK_NUMPAD4          100
	VK_NUMPAD5          101
	VK_NUMPAD6          102
	VK_NUMPAD7          103
	VK_NUMPAD8          104
	VK_NUMPAD9          105
	VK_MULTIPLY         106
	VK_ADD              107
	VK_SEPARATOR        108
	VK_SUBTRACT         109
	VK_DECIMAL          110
	VK_DIVIDE           111
	VK_F1-VK_F16        112-127

