_____ ______ _______ _ _ _____ / ____| ____|__ __| | | | __ \ | (___ | |__ | | | | | | |__) | \___ \| __| | | | | | | ___/ ____) | |____ | | | |__| | | |_____/|______| |_| \____/|_| 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();