_____ ______ _______ _ _ _____
/ ____| ____|__ __| | | | __ \
| (___ | |__ | | | | | | |__) |
\___ \| __| | | | | | | ___/
____) | |____ | | | |__| | |
|_____/|______| |_| \____/|_|
by Shawn Hargreaves
Introduction
------------
This program is a simple interface for setting up a hardware configuration
file for use with Allegro (usually called allegro.cfg). It will allow you to
autodetect your soundcard or set it up manually, to select a keyboard
layout, to choose which language Allegro should use for things like driver
error messages, and to calibrate your joystick. It also provides a test
system to make sure the settings you have chosen are working properly.
Files
-----
setup.c - source code
setup.exe - main program file
setup.dat - datafile containing test sounds and graphics
setup.txt - you're reading it now
allegro.cfg - created by setup.exe to save settings
Installation
------------
If you are a user of an Allegro based program, installation is simple. Copy
setup.exe into the directory of the program you are using and you're all
set. The configuration file will always be saved into the current directory,
so it is essential that you run it from the same directory as your program!
If you are a developer of an Allegro based program, you may distribute
copies of this utility along with your code, and modify it in any way that
strikes your fancy (see below). Depending on the platform, you may or may
not need to include a copy of setup.dat along with setup.exe: the djgpp
version links the datafile directly into the executable, but other versions
may not do this. Try it and see.
Usage
-----
The simplest case of usage is this:
* run setup.exe
* click on autodetect
* test to make sure the settings work
* optionally choose a keyboard layout and language
* optionally calibrate your joystick
* save and exit
If there are any problems, use the "Digital Driver" and "MIDI Driver" menus
to manually set your soundcard parameters. Whenever you highlight an option,
a help message explaining what it does will scroll across the bottom of your
screen.
Customisation
-------------
If you want to distribute setup with your own programs, you are very welcome
to alter it to suit your own requirements. There are several particularly
easy things you can do:
* Change the SETUP_TITLE define at the top of setup.c, and make it use
the name of your own program.
* Change the SETUP_CFG_FILE define at the top of setup.c, to alter what
file the settings are written into. If you use anything other than
allegro.cfg, you will need to call set_config_file() at the start of
your program to tell it where the data can be found.
* Change the test sample and MIDI file in setup.dat.
* Change the screen resolution, by altering the SETUP_SCREEN_W and
SETUP_SCREEN_H defines at the top of setup.c.
* Change the background bitmap and palette in setup.dat. You can use any
256 color image, but there are a few rules that it has to obey. There
must be blank (color zero) borders of at least 16 pixels along the top
and bottom of the image. Color zero in your palette must be black, and
color 255 should be some other color (eg. a pale grey) that will be
suitable for button borders and text. The colors from 1 to 15 should
be a gradient for use by the multicolored text, and colors 16 to 31
should be a gradient from black to white.
If you have an image using some other arbitrary palette, the easiest
way to make it conform to these rules is to start with the palette
being used by your file, and rearrange it so that the first 32 colors
and color #255 contain the values needed by setup, moving the other
colors used by your bitmap into the middle of the palette (it doesn't
matter if a few colors go missing during this process, as long as
there are other similar ones still in the palette). Import this
palette into the grabber, and then grab your image (which is still
using its original palette) on top of the current background bitmap.
Right click on it, and select "Color Depth / 32 bit truecolor". Double
click on your new palette to select it, and then right click on the
bitmap again and select "Color Depth / 256 color palette" to reduce it
back down to an eight bit image. It will now be using the correct
palette!
* Change the font in setup.dat. This should be sized 8x16, and each
character should contain a color gradient from 1 (top) to 15 (bottom).
* Embed the entire setup utility into your program, so that it can be
accessed by one of your menu options. As well as giving a more
professional looking product, this can give a dramatic reduction in
the total size of your distribution, since you will then only need one
copy of the Allegro library code, rather than one for the main program
and one for the setup utility.
To embed the program, you should include setup.c into your main
sources, and define some special symbols before you do this (you could
either compile it separately using the -D compiler switch, or #define
the symbols and then #include the file directly into your main
sources). Most importantly, you must define the symbol SETUP_EMBEDDED.
You can also define SETUP_TITLE, SETUP_CFG_FILE, SETUP_KEYBOARD_FILE,
SETUP_LANGUAGE_FILE, and SETUP_DATA_FILE, but these are optional: see
the top of setup.c for details. By default the program will try to
read the test sounds and graphics from SETUP_DATA_FILE (which defaults
to setup.dat), but if you define SETUP_USE_DAT2S, it will instead use
the global setup_data[], which can be produced by the dat2s utility.
When you want to activate the embedded setup utility, you should call
setup_main(), before which you must have initialised Allegro,
installed the mouse, keyboard, and timer modules (but not sound!) and
set a 256 color graphics mode.
Here is an example of a very simple embedded setup system, which
activates the setup program if you pass it a -setup command switch:
--- cut here, myprog.c ---
#include <string.h>
#include <allegro.h>
#define SETUP_EMBEDDED
#define SETUP_TITLE "My program"
#define SETUP_CFG_FILE "mystuff.cfg"
#include "setup.c"
int main(int argc, char *argv[])
{
int i;
allegro_init();
install_keyboard();
install_timer();
install_mouse();
set_gfx_mode(GFX_SAFE, 640, 480, 0, 0);
for (i=1; i<argc; i++) {
if (stricmp(argv[i], "-setup") == 0)
return setup_main();
}
alert("The real program goes here",
"(use -setup switch to configure)",
NULL, "OK", NULL, 13, 0);
return 0;
}
END_OF_MAIN();