+#if defined(TARGET_SDL)
+ ystart2 += 3 * ystep;
+ DrawTextF(xstart1, ystart2, font_header, "Library");
+ DrawTextF(xstart2, ystart2, font_header, "compiled");
+ DrawTextF(xstart3, ystart2, font_header, "linked");
+
+ SDL_VERSION(&sdl_version_compiled);
+#if defined(TARGET_SDL2)
+ SDL_GetVersion(&sdl_version_linked_ext);
+ sdl_version_linked = &sdl_version_linked_ext;
+#else
+ sdl_version_linked = SDL_Linked_Version();
+#endif
+
+ ystart2 += 2 * ystep;
+ DrawTextF(xstart1, ystart2, font_text, "SDL");
+ DrawTextF(xstart2, ystart2, font_text, "%d.%d.%d",
+ sdl_version_compiled.major,
+ sdl_version_compiled.minor,
+ sdl_version_compiled.patch);
+ DrawTextF(xstart3, ystart2, font_text, "%d.%d.%d",
+ sdl_version_linked->major,
+ sdl_version_linked->minor,
+ sdl_version_linked->patch);
+
+ SDL_IMAGE_VERSION(&sdl_version_compiled);
+ sdl_version_linked = IMG_Linked_Version();
+
+ ystart2 += ystep;
+ DrawTextF(xstart1, ystart2, font_text, "SDL_image");
+ DrawTextF(xstart2, ystart2, font_text, "%d.%d.%d",
+ sdl_version_compiled.major,
+ sdl_version_compiled.minor,
+ sdl_version_compiled.patch);
+ DrawTextF(xstart3, ystart2, font_text, "%d.%d.%d",
+ sdl_version_linked->major,
+ sdl_version_linked->minor,
+ sdl_version_linked->patch);
+
+ SDL_MIXER_VERSION(&sdl_version_compiled);
+ sdl_version_linked = Mix_Linked_Version();
+
+ ystart2 += ystep;
+ DrawTextF(xstart1, ystart2, font_text, "SDL_mixer");
+ DrawTextF(xstart2, ystart2, font_text, "%d.%d.%d",
+ sdl_version_compiled.major,
+ sdl_version_compiled.minor,
+ sdl_version_compiled.patch);
+ DrawTextF(xstart3, ystart2, font_text, "%d.%d.%d",
+ sdl_version_linked->major,
+ sdl_version_linked->minor,
+ sdl_version_linked->patch);
+
+ SDL_NET_VERSION(&sdl_version_compiled);
+ sdl_version_linked = SDLNet_Linked_Version();
+
+ ystart2 += ystep;
+ DrawTextF(xstart1, ystart2, font_text, "SDL_net");
+ DrawTextF(xstart2, ystart2, font_text, "%d.%d.%d",
+ sdl_version_compiled.major,
+ sdl_version_compiled.minor,
+ sdl_version_compiled.patch);
+ DrawTextF(xstart3, ystart2, font_text, "%d.%d.%d",
+ sdl_version_linked->major,
+ sdl_version_linked->minor,
+ sdl_version_linked->patch);
+
+ ystart2 += 3 * ystep;
+ DrawTextF(xstart1, ystart2, font_header, "Driver");
+ DrawTextF(xstart2, ystart2, font_header, "Requested");
+ DrawTextF(xstart3, ystart2, font_header, "Used");
+
+#if defined(TARGET_SDL2)
+ driver_name = getStringCopyNStatic(SDL_GetVideoDriver(0), driver_name_len);
+#else
+ SDL_VideoDriverName(driver_name, driver_name_len);
+#endif
+
+ ystart2 += 2 * ystep;
+ DrawTextF(xstart1, ystart2, font_text, "SDL_VideoDriver");
+ DrawTextF(xstart2, ystart2, font_text, "%s", setup.system.sdl_videodriver);
+ DrawTextF(xstart3, ystart2, font_text, "%s", driver_name);
+
+#if defined(TARGET_SDL2)
+ driver_name = getStringCopyNStatic(SDL_GetAudioDriver(0), driver_name_len);
+#else
+ SDL_AudioDriverName(driver_name, driver_name_len);
+#endif
+
+ ystart2 += ystep;
+ DrawTextF(xstart1, ystart2, font_text, "SDL_AudioDriver");
+ DrawTextF(xstart2, ystart2, font_text, "%s", setup.system.sdl_audiodriver);
+ DrawTextF(xstart3, ystart2, font_text, "%s", driver_name);
+#endif
+
+ DrawTextSCentered(ybottom, FONT_TEXT_4,
+ "Press any key or button for info menu");
+
+#if 1
+ FadeIn(REDRAW_FIELD);
+#endif
+}
+
+void HandleInfoScreen_Version(int button)
+{
+ if (button == MB_MENU_LEAVE)
+ {
+ PlaySound(SND_MENU_ITEM_SELECTING);
+
+ info_mode = INFO_MODE_MAIN;
+ DrawInfoScreen();
+
+ return;
+ }
+ else if (button == MB_MENU_CHOICE)
+ {
+ PlaySound(SND_MENU_ITEM_SELECTING);
+
+ FadeSoundsAndMusic();
+
+#if 0
+ FadeOut(REDRAW_FIELD);
+#endif
+
+ info_mode = INFO_MODE_MAIN;
+ DrawAndFadeInInfoScreen(REDRAW_FIELD);
+ }
+ else
+ {
+ PlayMenuSoundIfLoop();
+ }
+}
+
+void DrawInfoScreen_LevelSet()
+{
+ struct TitleMessageInfo *tmi = &readme;
+ char *filename = getLevelSetInfoFilename();
+
+ /* if chars set to "-1", automatically determine by text and font width */
+ if (tmi->chars == -1)
+ tmi->chars = tmi->width / getFontWidth(tmi->font);
+ else
+ tmi->width = tmi->chars * getFontWidth(tmi->font);
+
+ /* if lines set to "-1", automatically determine by text and font height */
+ if (tmi->lines == -1)
+ tmi->lines = tmi->height / getFontHeight(tmi->font);
+ else
+ tmi->height = tmi->lines * getFontHeight(tmi->font);
+
+ SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_LEVELSET);
+
+#if 1
+ FadeOut(REDRAW_FIELD);
+#endif
+
+ ClearField();
+ DrawHeadline();
+
+ DrawTextCentered(mSY + 100, FONT_TEXT_1, "Level Set Information:");
+
+ if (filename != NULL)
+ DrawTextFile(mSX + ALIGNED_TEXT_XPOS(tmi), mSY + ALIGNED_TEXT_YPOS(tmi),
+ filename, tmi->font, tmi->chars, -1, tmi->lines, 0, -1,
+ tmi->autowrap, tmi->centered, tmi->parse_comments);
+ else
+ DrawTextCentered(mSY + ALIGNED_TEXT_YPOS(tmi), FONT_TEXT_2,
+ "No information for this level set.");
+
+ DrawTextCentered(mSY + SYSIZE - 20, FONT_TEXT_4,
+ "Press any key or button for info menu");
+
+#if 1
+ FadeIn(REDRAW_FIELD);
+#endif
+}
+
+void HandleInfoScreen_LevelSet(int button)
+{
+ if (button == MB_MENU_LEAVE)
+ {
+ PlaySound(SND_MENU_ITEM_SELECTING);
+
+ info_mode = INFO_MODE_MAIN;
+ DrawInfoScreen();
+
+ return;
+ }
+ else if (button == MB_MENU_CHOICE)
+ {
+ PlaySound(SND_MENU_ITEM_SELECTING);