/***********************************************************
* Artsoft Retro-Game Library *
*----------------------------------------------------------*
-* (c) 1994-2002 Artsoft Entertainment *
+* (c) 1994-2006 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
return internal_error;
}
-#if 1
-
void Error(int mode, char *format, ...)
{
static boolean last_line_was_separator = FALSE;
}
}
-#else
-
-void Error(int mode, char *format, ...)
-{
- static boolean last_line_was_separator = FALSE;
- char *process_name = "";
- FILE *error = stderr;
- char *newline = "\n";
-
- /* display warnings only when running in verbose mode */
- if (mode & ERR_WARN && !options.verbose)
- return;
-
- if (mode == ERR_RETURN_LINE)
- {
- if (!last_line_was_separator)
- fprintf_line(error, format, 79);
-
- last_line_was_separator = TRUE;
-
- return;
- }
-
- last_line_was_separator = FALSE;
-
-#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS)
- newline = "\r\n";
-
- if ((error = openErrorFile()) == NULL)
- {
- printf("Cannot write to error output file!%s", newline);
-
- program.exit_function(1);
- }
-#endif
-
- if (mode & ERR_SOUND_SERVER)
- process_name = " sound server";
- else if (mode & ERR_NETWORK_SERVER)
- process_name = " network server";
- else if (mode & ERR_NETWORK_CLIENT)
- process_name = " network client **";
-
- if (format)
- {
- va_list ap;
-
- fprintf(error, "%s%s: ", program.command_basename, process_name);
-
- if (mode & ERR_WARN)
- fprintf(error, "warning: ");
-
- va_start(ap, format);
- vfprintf(error, format, ap);
- va_end(ap);
-
- fprintf(error, "%s", newline);
- }
-
- if (mode & ERR_HELP)
- fprintf(error, "%s: Try option '--help' for more information.%s",
- program.command_basename, newline);
-
- if (mode & ERR_EXIT)
- fprintf(error, "%s%s: aborting%s",
- program.command_basename, process_name, newline);
-
- if (error != stderr)
- fclose(error);
-
- if (mode & ERR_EXIT)
- {
- if (mode & ERR_FROM_SERVER)
- exit(1); /* child process: normal exit */
- else
- program.exit_function(1); /* main process: clean up stuff */
- }
-}
-
-#endif
-
/* ------------------------------------------------------------------------- */
/* checked memory allocation and freeing functions */
sprintf(name_buffer, "%c", '0' + (char)(key - KSYM_0));
else if (key >= KSYM_KP_0 && key <= KSYM_KP_9)
sprintf(name_buffer, "keypad %c", '0' + (char)(key - KSYM_KP_0));
-#if 1
else if (key >= KSYM_FKEY_FIRST && key <= KSYM_FKEY_LAST)
sprintf(name_buffer, "F%d", (int)(key - KSYM_FKEY_FIRST + 1));
-#else
- else if (key >= KSYM_FKEY_FIRST && key <= KSYM_FKEY_LAST)
- sprintf(name_buffer, "function F%d", (int)(key - KSYM_FKEY_FIRST + 1));
-#endif
else if (key == KSYM_UNDEFINED)
strcpy(name_buffer, "(undefined)");
else
if (strEqual((*node_first)->key, key))
{
- free((*node_first)->key);
+ checked_free((*node_first)->key);
if (destructor_function)
destructor_function((*node_first)->content);
*node_first = (*node_first)->next;
strEqual(value, "up") ? MV_UP :
strEqual(value, "down") ? MV_DOWN : MV_NONE);
}
+ else if (strEqual(suffix, ".align"))
+ {
+ result = (strEqual(value, "left") ? ALIGN_LEFT :
+ strEqual(value, "right") ? ALIGN_RIGHT :
+ strEqual(value, "center") ? ALIGN_CENTER : ALIGN_DEFAULT);
+ }
else if (strEqual(suffix, ".anim_mode"))
{
result = (string_has_parameter(value, "none") ? ANIM_NONE :
string_has_parameter(value, "ce_delay") ? ANIM_CE_DELAY :
string_has_parameter(value, "horizontal") ? ANIM_HORIZONTAL :
string_has_parameter(value, "vertical") ? ANIM_VERTICAL :
+ string_has_parameter(value, "centered") ? ANIM_CENTERED :
ANIM_DEFAULT);
if (string_has_parameter(value, "reverse"))
return &screen_mode;
}
+void get_aspect_ratio_from_screen_mode(struct ScreenModeInfo *screen_mode,
+ int *x, int *y)
+{
+ float aspect_ratio = (float)screen_mode->width / (float)screen_mode->height;
+ float aspect_ratio_new;
+ int i = 1;
+
+ do
+ {
+ *x = i * aspect_ratio + 0.000001;
+ *y = i;
+
+ aspect_ratio_new = (float)*x / (float)*y;
+
+ i++;
+ }
+ while (aspect_ratio_new != aspect_ratio && *y < screen_mode->height);
+}
+
static void FreeCustomArtworkList(struct ArtworkListInfo *,
struct ListNodeInfo ***, int *);
void openErrorFile()
{
- /* always start with reliable default values */
- program.error_file = stderr;
+ InitUserDataDirectory();
-#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS)
if ((program.error_file = fopen(program.error_filename, MODE_WRITE)) == NULL)
fprintf_newline(stderr, "ERROR: cannot open file '%s' for writing!",
program.error_filename);
-#endif
}
void closeErrorFile()