// (should also match corresponding entries in src/conf_gfx.c)
#define SETUP_MODE_MAIN 0
#define SETUP_MODE_GAME 1
// (should also match corresponding entries in src/conf_gfx.c)
#define SETUP_MODE_MAIN 0
#define SETUP_MODE_GAME 1
-#define SETUP_MODE_EDITOR 2
-#define SETUP_MODE_GRAPHICS 3
-#define SETUP_MODE_SOUND 4
-#define SETUP_MODE_ARTWORK 5
-#define SETUP_MODE_INPUT 6
-#define SETUP_MODE_TOUCH 7
-#define SETUP_MODE_SHORTCUTS 8
-#define SETUP_MODE_SHORTCUTS_1 9
-#define SETUP_MODE_SHORTCUTS_2 10
-#define SETUP_MODE_SHORTCUTS_3 11
-#define SETUP_MODE_SHORTCUTS_4 12
-#define SETUP_MODE_SHORTCUTS_5 13
+#define SETUP_MODE_ENGINES 2
+#define SETUP_MODE_EDITOR 3
+#define SETUP_MODE_GRAPHICS 4
+#define SETUP_MODE_SOUND 5
+#define SETUP_MODE_ARTWORK 6
+#define SETUP_MODE_INPUT 7
+#define SETUP_MODE_TOUCH 8
+#define SETUP_MODE_SHORTCUTS 9
+#define SETUP_MODE_SHORTCUTS_1 10
+#define SETUP_MODE_SHORTCUTS_2 11
+#define SETUP_MODE_SHORTCUTS_3 12
+#define SETUP_MODE_SHORTCUTS_4 13
+#define SETUP_MODE_SHORTCUTS_5 14
-#define SETUP_MODE_CHOOSE_GAME_SPEED 16
-#define SETUP_MODE_CHOOSE_SCROLL_DELAY 17
-#define SETUP_MODE_CHOOSE_SNAPSHOT_MODE 18
-#define SETUP_MODE_CHOOSE_WINDOW_SIZE 19
-#define SETUP_MODE_CHOOSE_SCALING_TYPE 20
-#define SETUP_MODE_CHOOSE_RENDERING 21
-#define SETUP_MODE_CHOOSE_VSYNC 22
-#define SETUP_MODE_CHOOSE_GRAPHICS 23
-#define SETUP_MODE_CHOOSE_SOUNDS 24
-#define SETUP_MODE_CHOOSE_MUSIC 25
-#define SETUP_MODE_CHOOSE_VOLUME_SIMPLE 26
-#define SETUP_MODE_CHOOSE_VOLUME_LOOPS 27
-#define SETUP_MODE_CHOOSE_VOLUME_MUSIC 28
-#define SETUP_MODE_CHOOSE_TOUCH_CONTROL 29
-#define SETUP_MODE_CHOOSE_MOVE_DISTANCE 30
-#define SETUP_MODE_CHOOSE_DROP_DISTANCE 31
-#define SETUP_MODE_CHOOSE_TRANSPARENCY 32
-#define SETUP_MODE_CHOOSE_GRID_XSIZE_0 33
-#define SETUP_MODE_CHOOSE_GRID_YSIZE_0 34
-#define SETUP_MODE_CHOOSE_GRID_XSIZE_1 35
-#define SETUP_MODE_CHOOSE_GRID_YSIZE_1 36
-#define SETUP_MODE_CONFIG_VIRT_BUTTONS 37
-
-#define MAX_SETUP_MODES 38
+#define SETUP_MODE_CHOOSE_GAME_SPEED 17
+#define SETUP_MODE_CHOOSE_SCROLL_DELAY 18
+#define SETUP_MODE_CHOOSE_SNAPSHOT_MODE 19
+#define SETUP_MODE_CHOOSE_WINDOW_SIZE 20
+#define SETUP_MODE_CHOOSE_SCALING_TYPE 21
+#define SETUP_MODE_CHOOSE_RENDERING 22
+#define SETUP_MODE_CHOOSE_VSYNC 23
+#define SETUP_MODE_CHOOSE_GRAPHICS 24
+#define SETUP_MODE_CHOOSE_SOUNDS 25
+#define SETUP_MODE_CHOOSE_MUSIC 26
+#define SETUP_MODE_CHOOSE_VOLUME_SIMPLE 27
+#define SETUP_MODE_CHOOSE_VOLUME_LOOPS 28
+#define SETUP_MODE_CHOOSE_VOLUME_MUSIC 29
+#define SETUP_MODE_CHOOSE_TOUCH_CONTROL 30
+#define SETUP_MODE_CHOOSE_MOVE_DISTANCE 31
+#define SETUP_MODE_CHOOSE_DROP_DISTANCE 32
+#define SETUP_MODE_CHOOSE_TRANSPARENCY 33
+#define SETUP_MODE_CHOOSE_GRID_XSIZE_0 34
+#define SETUP_MODE_CHOOSE_GRID_YSIZE_0 35
+#define SETUP_MODE_CHOOSE_GRID_XSIZE_1 36
+#define SETUP_MODE_CHOOSE_GRID_YSIZE_1 37
+#define SETUP_MODE_CONFIG_VIRT_BUTTONS 38
+
+#define MAX_SETUP_MODES 39
#define MAX_MENU_MODES MAX(MAX_INFO_MODES, MAX_SETUP_MODES)
// setup screen titles
#define STR_SETUP_MAIN "Setup"
#define STR_SETUP_GAME "Game & Menu"
#define MAX_MENU_MODES MAX(MAX_INFO_MODES, MAX_SETUP_MODES)
// setup screen titles
#define STR_SETUP_MAIN "Setup"
#define STR_SETUP_GAME "Game & Menu"
#define STR_SETUP_EDITOR "Editor"
#define STR_SETUP_GRAPHICS "Graphics"
#define STR_SETUP_SOUND "Sound & Music"
#define STR_SETUP_EDITOR "Editor"
#define STR_SETUP_GRAPHICS "Graphics"
#define STR_SETUP_SOUND "Sound & Music"
#define SCREEN_CTRL_ID_NEXT_PLAYER 6
#define SCREEN_CTRL_ID_INSERT_SOLUTION 7
#define SCREEN_CTRL_ID_PLAY_SOLUTION 8
#define SCREEN_CTRL_ID_NEXT_PLAYER 6
#define SCREEN_CTRL_ID_INSERT_SOLUTION 7
#define SCREEN_CTRL_ID_PLAY_SOLUTION 8
-#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE 9
-#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE 10
-#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE2 11
-#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE2 12
-#define SCREEN_CTRL_ID_SCROLL_UP 13
-#define SCREEN_CTRL_ID_SCROLL_DOWN 14
-#define SCREEN_CTRL_ID_SCROLL_VERTICAL 15
-#define SCREEN_CTRL_ID_NETWORK_SERVER 16
-
-#define NUM_SCREEN_GADGETS 17
-
-#define NUM_SCREEN_MENUBUTTONS 13
+#define SCREEN_CTRL_ID_SWITCH_ECS_AGA 9
+#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE 10
+#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE 11
+#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE2 12
+#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE2 13
+#define SCREEN_CTRL_ID_SCROLL_UP 14
+#define SCREEN_CTRL_ID_SCROLL_DOWN 15
+#define SCREEN_CTRL_ID_SCROLL_VERTICAL 16
+#define SCREEN_CTRL_ID_NETWORK_SERVER 17
+
+#define NUM_SCREEN_GADGETS 18
+
+#define NUM_SCREEN_MENUBUTTONS 14
static void ConfigureJoystick(int);
static void ConfigureVirtualButtons(void);
static void execSetupGame(void);
static void ConfigureJoystick(int);
static void ConfigureVirtualButtons(void);
static void execSetupGame(void);
static void DrawInfoScreen_NotAvailable(char *, char *);
static void DrawInfoScreen_HelpAnim(int, int, boolean);
static void DrawInfoScreen_NotAvailable(char *, char *);
static void DrawInfoScreen_HelpAnim(int, int, boolean);
#define DRAW_MODE(s) ((s) >= GAME_MODE_MAIN && \
(s) <= GAME_MODE_SETUP ? (s) : \
(s) == GAME_MODE_PSEUDO_TYPENAME ? \
#define DRAW_MODE(s) ((s) >= GAME_MODE_MAIN && \
(s) <= GAME_MODE_SETUP ? (s) : \
(s) == GAME_MODE_PSEUDO_TYPENAME ? \
- printf("::: %d, %d, %d: %d ['%s'], %d ['%s']\n",
- nr, initial, is_image,
- sound_global, getSoundListEntry(sound_global)->filename,
- sound_local, getSoundListEntry(sound_local)->filename);
+ Debug("screens:getTitleSound", "%d, %d, %d: %d ['%s'], %d ['%s']",
+ nr, initial, is_image,
+ sound_global, getSoundListEntry(sound_global)->filename,
+ sound_local, getSoundListEntry(sound_local)->filename);
- printf("::: %d, %d, %d: %d ['%s'], %d ['%s']\n",
- nr, initial, is_image,
- music_global, getMusicListEntry(music_global)->filename,
- music_local, getMusicListEntry(music_local)->filename);
+ Debug("screens:getTitleMusic", "%d, %d, %d: %d ['%s'], %d ['%s']",
+ nr, initial, is_image,
+ music_global, getMusicListEntry(music_global)->filename,
+ music_local, getMusicListEntry(music_local)->filename);
- printf("::: insideTextPosRect: (%d, %d), (%d, %d) [%d, %d] (%d, %d) => %d\n",
- x, y, rect_x, rect_y, rect->x, rect->y, rect->width, rect->height,
- (x >= rect_x && x < rect_x + rect->width &&
- y >= rect_y && y < rect_y + rect->height));
+ Debug("screens:insideTextPosRect",
+ "(%d, %d), (%d, %d) [%d, %d] (%d, %d) => %d",
+ x, y, rect_x, rect_y, rect->x, rect->y, rect->width, rect->height,
+ (x >= rect_x && x < rect_x + rect->width &&
+ y >= rect_y && y < rect_y + rect->height));
// leveldir_current may be invalid (level group, parent link)
if (!validLevelSeries(leveldir_current))
leveldir_current = getFirstValidTreeInfoEntry(leveldir_last_valid);
// leveldir_current may be invalid (level group, parent link)
if (!validLevelSeries(leveldir_current))
leveldir_current = getFirstValidTreeInfoEntry(leveldir_last_valid);
static int num_page_entries_all_last[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES];
static int choice_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES];
static int first_entry_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES];
static int num_page_entries_all_last[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES];
static int choice_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES];
static int first_entry_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES];
int *num_page_entries_last = num_page_entries_all_last[game_status];
int *choice_store = choice_stores[game_status];
int *first_entry_store = first_entry_stores[game_status];
int *num_page_entries_last = num_page_entries_all_last[game_status];
int *choice_store = choice_stores[game_status];
int *first_entry_store = first_entry_stores[game_status];
- DrawTextF(xstart2, ystart, font_text, PLATFORM_STRING);
+ DrawTextF(xstart2, ystart, font_text, "%s (%s)",
+ PLATFORM_STRING,
+ PLATFORM_XX_BIT_STRING);
DrawTextF(xstart1, ystart, font_head, "Source date");
DrawTextF(xstart2, ystart, font_text, getSourceDateString());
DrawTextF(xstart1, ystart, font_head, "Source date");
DrawTextF(xstart2, ystart, font_text, getSourceDateString());
- driver_name = getStringCopyNStatic(SDL_GetVideoDriver(0), driver_name_len);
+ driver_name =
+ getStringCopyNStatic(SDLGetRendererName(), driver_name_len);
+
+ DrawTextF(xstart1, ystart, font_text, "Render Driver");
+ DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_renderdriver);
+ DrawTextF(xstart3, ystart, font_text, "%s", driver_name);
+ ystart += ystep_line;
+
+ driver_name =
+ getStringCopyNStatic(SDL_GetCurrentVideoDriver(), driver_name_len);
DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_videodriver);
DrawTextF(xstart3, ystart, font_text, "%s", driver_name);
ystart += ystep_line;
DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_videodriver);
DrawTextF(xstart3, ystart, font_text, "%s", driver_name);
ystart += ystep_line;
DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_audiodriver);
DrawTextF(xstart3, ystart, font_text, "%s", driver_name);
DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_audiodriver);
DrawTextF(xstart3, ystart, font_text, "%s", driver_name);
// update list selection from "setup.window_scaling_percent"
// (window scaling may have changed by resizing the window)
execSetupGraphics_setWindowSizes(TRUE);
// update list selection from "setup.window_scaling_percent"
// (window scaling may have changed by resizing the window)
execSetupGraphics_setWindowSizes(TRUE);
- SDLSetScreenVsyncMode(setup.vsync_mode);
+ ChangeVsyncModeIfNeeded();
+
+ // check if setting vsync mode to selected value failed
+ if (setup_vsync_mode != video_vsync_mode &&
+ setup_vsync_mode != video.vsync_mode)
+ {
+ // changing vsync mode to selected value failed -- reset displayed value
+ execSetupGraphics_setVsyncModes(TRUE);
+
+ Request("Setting VSync failed!", REQ_CONFIRM);
+
+ DrawSetupScreen();
+ }
- printf("::: '%s', '%s', '%s'\n",
- artwork.gfx_current->subdir,
- artwork.gfx_current->fullpath,
- artwork.gfx_current->basepath);
+ Debug("screens:execSetupArtwork", "'%s', '%s', '%s'",
+ artwork.gfx_current->subdir,
+ artwork.gfx_current->fullpath,
+ artwork.gfx_current->basepath);
{ &setup.touch.grid_ysize[1], &grid_size_text[1][1] },
{ &setup.internal.menu_game, execSetupGame },
{ &setup.touch.grid_ysize[1], &grid_size_text[1][1] },
{ &setup.internal.menu_game, execSetupGame },
{ &setup.internal.menu_editor, execSetupEditor },
{ &setup.internal.menu_graphics, execSetupGraphics },
{ &setup.internal.menu_sound, execSetupSound },
{ &setup.internal.menu_editor, execSetupEditor },
{ &setup.internal.menu_graphics, execSetupGraphics },
{ &setup.internal.menu_sound, execSetupSound },
static struct TokenInfo setup_info_main[] =
{
{ TYPE_ENTER_MENU, execSetupGame, STR_SETUP_GAME },
static struct TokenInfo setup_info_main[] =
{
{ TYPE_ENTER_MENU, execSetupGame, STR_SETUP_GAME },
{ TYPE_ENTER_MENU, execSetupEditor, STR_SETUP_EDITOR },
{ TYPE_ENTER_MENU, execSetupGraphics, STR_SETUP_GRAPHICS },
{ TYPE_ENTER_MENU, execSetupSound, STR_SETUP_SOUND },
{ TYPE_ENTER_MENU, execSetupEditor, STR_SETUP_EDITOR },
{ TYPE_ENTER_MENU, execSetupGraphics, STR_SETUP_GRAPHICS },
{ TYPE_ENTER_MENU, execSetupSound, STR_SETUP_SOUND },
{ TYPE_ENTER_LIST, execSetupChooseScrollDelay, "Scroll Delay:" },
{ TYPE_STRING, &scroll_delay_text, "" },
#endif
{ TYPE_ENTER_LIST, execSetupChooseScrollDelay, "Scroll Delay:" },
{ TYPE_STRING, &scroll_delay_text, "" },
#endif
{ TYPE_ENTER_LIST, execSetupChooseSnapshotMode,"Game Engine Snapshot Mode:" },
{ TYPE_STRING, &snapshot_mode_text, "" },
{ TYPE_SWITCH, &setup.show_snapshot_buttons,"Show Snapshot Buttons:" },
{ TYPE_ENTER_LIST, execSetupChooseSnapshotMode,"Game Engine Snapshot Mode:" },
{ TYPE_STRING, &snapshot_mode_text, "" },
{ TYPE_SWITCH, &setup.show_snapshot_buttons,"Show Snapshot Buttons:" },
+static struct TokenInfo setup_info_engines[] =
+{
+ { TYPE_HEADLINE, NULL, "Emerald Mine" },
+ { TYPE_SWITCH, &setup.forced_scroll_delay, "Scroll Delay:" },
+ { TYPE_ECS_AGA, &setup.prefer_aga_graphics, "Amiga Graphics Chipset:" },
+ { TYPE_SWITCH, &setup.prefer_lowpass_sounds,"Low-Pass Filter Sounds:" },
+ { TYPE_EMPTY, NULL, "" },
+ { TYPE_HEADLINE, NULL, "Supaplex" },
+ { TYPE_SWITCH, &setup.sp_show_border_elements, "Border Elements:" },
+ { TYPE_EMPTY, NULL, "" },
+ { TYPE_LEAVE_MENU, execSetupMain, "Back" },
+
+ { 0, NULL, NULL }
+};
+
{ TYPE_SWITCH, &setup.quick_doors, "Quick Menu Doors:" },
{ TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" },
{ TYPE_SWITCH, &setup.toons, "Show Menu Animations:" },
{ TYPE_SWITCH, &setup.quick_doors, "Quick Menu Doors:" },
{ TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" },
{ TYPE_SWITCH, &setup.toons, "Show Menu Animations:" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_LEAVE_MENU, execSetupMain, "Back" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_LEAVE_MENU, execSetupMain, "Back" },
int font_name = MENU_SETUP_FONT_TITLE;
int font_info = MENU_SETUP_FONT_TEXT;
int spacing_name = menu.line_spacing_setup[SETUP_MODE_INPUT];
int font_name = MENU_SETUP_FONT_TITLE;
int font_info = MENU_SETUP_FONT_TEXT;
int spacing_name = menu.line_spacing_setup[SETUP_MODE_INPUT];
- Error(ERR_DEBUG, "joystick has %d axes, %d hats, %d balls, and %d buttons\n",
+ Debug("joystick", "joystick has %d axes, %d hats, %d balls, and %d buttons",
SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick),
SDL_JoystickNumBalls(joystick), SDL_JoystickNumButtons(joystick));
#endif
SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick),
SDL_JoystickNumBalls(joystick), SDL_JoystickNumButtons(joystick));
#endif
SCREEN_CTRL_ID_PLAY_SOLUTION,
SCREEN_MASK_MAIN_HAS_SOLUTION,
GD_EVENT_RELEASED,
FALSE, "play solution tape"
},
SCREEN_CTRL_ID_PLAY_SOLUTION,
SCREEN_MASK_MAIN_HAS_SOLUTION,
GD_EVENT_RELEASED,
FALSE, "play solution tape"
},
+ {
+ IMG_MENU_BUTTON_SWITCH_ECS_AGA, IMG_MENU_BUTTON_SWITCH_ECS_AGA_ACTIVE,
+ &menu.main.button.switch_ecs_aga, &setup.prefer_aga_graphics,
+ SCREEN_CTRL_ID_SWITCH_ECS_AGA,
+ SCREEN_MASK_MAIN,
+ GD_EVENT_RELEASED | GD_EVENT_OFF_BORDERS,
+ FALSE, "switch ECS/AGA chipset"
+ },
Bitmap *gd_bitmap_unpressed, *gd_bitmap_pressed;
int gfx_unpressed, gfx_pressed;
int x, y, width, height;
int gd_x1, gd_x2, gd_y1, gd_y2;
Bitmap *gd_bitmap_unpressed, *gd_bitmap_pressed;
int gfx_unpressed, gfx_pressed;
int x, y, width, height;
int gd_x1, gd_x2, gd_y1, gd_y2;
gd_y1 = graphic_info[gfx_unpressed].src_y;
gd_x2 = graphic_info[gfx_pressed].src_x;
gd_y2 = graphic_info[gfx_pressed].src_y;
gd_y1 = graphic_info[gfx_unpressed].src_y;
gd_x2 = graphic_info[gfx_pressed].src_x;
gd_y2 = graphic_info[gfx_pressed].src_y;
+ if (is_check_button)
+ {
+ gd_x1a += graphic_info[gfx_unpressed].active_xoffset;
+ gd_y1a += graphic_info[gfx_unpressed].active_yoffset;
+ gd_x2a += graphic_info[gfx_pressed].active_xoffset;
+ gd_y2a += graphic_info[gfx_pressed].active_yoffset;
+
+ type = GD_TYPE_CHECK_BUTTON;
+ checked = *menubutton_info[i].check_value;
+ }
+
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_IMAGE_ID, gfx_unpressed,
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_IMAGE_ID, gfx_unpressed,
GDI_DESIGN_UNPRESSED, gd_bitmap_unpressed, gd_x1, gd_y1,
GDI_DESIGN_PRESSED, gd_bitmap_pressed, gd_x2, gd_y2,
GDI_DESIGN_UNPRESSED, gd_bitmap_unpressed, gd_x1, gd_y1,
GDI_DESIGN_PRESSED, gd_bitmap_pressed, gd_x2, gd_y2,
GDI_DIRECT_DRAW, FALSE,
GDI_OVERLAY_TOUCH_BUTTON, is_touch_button,
GDI_EVENT_MASK, event_mask,
GDI_DIRECT_DRAW, FALSE,
GDI_OVERLAY_TOUCH_BUTTON, is_touch_button,
GDI_EVENT_MASK, event_mask,
case SCREEN_CTRL_ID_TOUCH_PREV_PAGE:
case SCREEN_CTRL_ID_TOUCH_NEXT_PAGE:
case SCREEN_CTRL_ID_TOUCH_PREV_PAGE2:
case SCREEN_CTRL_ID_TOUCH_PREV_PAGE:
case SCREEN_CTRL_ID_TOUCH_NEXT_PAGE:
case SCREEN_CTRL_ID_TOUCH_PREV_PAGE2: