1; ====================
2; SDLPoP configuration
3; ====================
4
5; This is the configuration file for SDLPoP.
6; Lines starting with a semicolon (";") are comment lines and are ignored by SDLPoP.
7; They are used to document the available customization options.
8
9; "default" is a valid setting for any option.
10
11; N.B. You can also use the in-game menu to configure SDLPoP: press Escape or Backspace while in-game.
12; The in-game configuration is saved to the file SDLPoP.cfg.
13; The settings from the .cfg file will then be applied, until you modify SDLPoP.ini (this file) again.
14
15
16
17[General]
18; Show the in-game menu when you pause the game by pressing Escape.
19; If this is disabled, you can still bring up the menu using Backspace.
20enable_pause_menu = true
21
22; Enable or disable the potions (copy protection) level.
23enable_copyprot = false
24
25; Enable music.
26enable_music = true
27
28; Enable or disable fading.
29enable_fade = true
30
31; Enable or disable flashing.
32enable_flash = true
33
34; Enable or disable texts.
35enable_text = true
36
37; Display the SDLPoP information screen when the game starts.
38enable_info_screen = true;
39
40; Start the game in fullscreen mode. (In-game fullscreen toggle: Alt+Enter)
41start_fullscreen = false
42
43; Width and height of the game window.
44; By default, the window is 640 pixels wide and 400 pixels tall.
45; When using the "correct aspect ratio" option, the default height is 480 instead of 400.
46pop_window_width = default
47pop_window_height = default
48
49; Render the game in the originally intended 4:3 aspect ratio.
50; NB. Works best using a high resolution.
51use_correct_aspect_ratio = false
52
53; Enable pixel perfect scaling. That is, make all pixels the same size by forcing integer scale factors.
54; Note: If you enable both integer scaling and the 4:3 aspect ratio setting above,
55; then integer scaling will be disabled, unless the window is at least 1600 x 1200 pixels (without the border).
56; Integer scaling will also be disabled if the window is smaller than 320 x 200 pixels.
57; Note: You need to compile with SDL 2.0.5 or newer for this.
58use_integer_scaling = false
59
60; Scaling method.
61; Possible values:
62; * sharp = Use nearest-neighbor resampling.
63; * fuzzy = First scale to double size with nearest-neighbor scaling, then scale to full screen with smooth scaling.
64; * blurry = Use smooth scaling.
65scaling_type = sharp
66
67; If using a controller with a rumble motor, provide haptic feedback when the kid is hurt.
68enable_controller_rumble = true
69
70; When using a controller, only use the joysticks for horizontal movement (instead of all-directional movement).
71; This could make the game easier to control, depending on your preference and depending on which controller you have.
72joystick_only_horizontal = true
73
74; Joystick 'dead zone' sensitivity threshold. Range: 0 to 32767 (default = 8000)
75joystick_threshold = 8000
76
77; You can get this file from
78; https://github.com/gabomdq/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt
79; if you need it
80;gamecontrollerdb_file = gamecontrollerdb.txt
81
82; You can choose which levels to play using the 'levelset' option:
83;    'original'       --> play the original levels (Default)
84;    'Your Mod Name'  --> play a custom levelset (the custom files must be in a directory "mods/Your Mod Name/")
85
86levelset = original
87
88; The base directory where SDLPoP will look for custom levelsets. (default = mods)
89mods_folder = mods
90
91
92[AdditionalFeatures]
93; Enable quicksave/load feature. (In-game: press F6 to quicksave, F9 to quickload)
94enable_quicksave = true
95
96; Try to let time keep running out when quickloading. (similar to Ctrl+A)
97; Technically, the 'remaining time' is still restored, but with a penalty for elapsed time (up to 1 minute).
98; The one minute penalty will also be applied when quickloading from e.g. the title screen.
99enable_quicksave_penalty = true
100
101; Enable recording/replay feature.
102enable_replay = true
103
104; The folder where replays will be kept.
105replays_folder = replays
106
107; Darken those parts of the screen that are not near a torch.
108enable_lighting = false
109
110
111[Enhancements]
112; Turn on game fixes and enhancements.
113; Below, you can pick which fixes/enhancements will be active.
114; NB. If use_fixes_and_enhancements is set to 'false', all of the below options are disabled.
115use_fixes_and_enhancements = false
116
117; Adds a way to crouch immediately after climbing up: press down and forward simultaneously.
118; In the original game, this could not be done (pressing down always causes the kid to climb down).
119enable_crouch_after_climbing = true
120
121; Time runs out while the level ending music plays; however, the music can be skipped by disabling sound.
122; This option stops time while the ending music is playing (so there is no need to disable sound).
123enable_freeze_time_during_end_music = true
124
125; Enable guard hitpoints not resetting to their default (maximum) value when re-entering the room.
126enable_remember_guard_hp = true
127
128; If a room is linked to itself on the left, the closing sounds of the gates in that room can't be heard.
129fix_gate_sounds = true
130
131; An open gate or chomper may enable the Kid to go through walls. (Trick 7, 37, 62)
132fix_two_coll_bug = true
133
134; If a room is linked to itself at the bottom, and the Kid's column has no floors, the game hangs.
135fix_infinite_down_bug = true
136
137; When a gate is under another gate, the top of the bottom gate is not visible.
138fix_gate_drawing_bug = true
139
140; When climbing up to a floor with a big pillar top behind, turned right, Kid sees through floor.
141fix_bigpillar_climb = true
142
143; When climbing up two floors, turning around and jumping upward, the kid falls down.
144; This fix makes the workaround of Trick 25 unnecessary.
145fix_jump_distance_at_edge = true
146
147; When climbing to a higher floor, the game unnecessarily checks how far away the edge below is;
148; This contributes to sometimes "teleporting" considerable distances when climbing from firm ground.
149fix_edge_distance_check_when_climbing = true
150
151; Falling from a great height directly on top of guards does not hurt.
152fix_painless_fall_on_guard = true
153
154; Bumping against a wall may cause a loose floor below to drop, even though it has not been touched. (Trick 18, 34)
155fix_wall_bump_triggers_tile_below = true
156
157; When pressing a loose tile, you can temporarily stand on thin air by standing up from crouching.
158fix_stand_on_thin_air = true
159
160; Buttons directly to the right of gates can be pressed even though the gate is closed (Trick 1)
161fix_press_through_closed_gates = true
162
163; By jumping and bumping into a wall, you can sometimes grab a ledge two stories down (which should not be possible).
164fix_grab_falling_speed = true
165
166; When chomped, skeletons cause the chomper to become bloody even though skeletons do not have blood.
167fix_skeleton_chomper_blood = true
168
169; Controls do not get released properly when drinking a potion, sometimes causing unintended movements.
170fix_move_after_drink = true
171
172; A drawing bug occurs when a loose tile is placed to the left of a potion (or sword).
173fix_loose_left_of_potion = true
174
175; Guards may "follow" the kid to the room on the left or right, even though there is a closed gate in between.
176fix_guard_following_through_closed_gates = true
177
178; When landing on the edge of a spikes tile, it is considered safe. (Trick 65)
179fix_safe_landing_on_spikes = true
180
181; The kid may glide through walls after turning around while running (especially when weightless).
182fix_glide_through_wall = true
183
184; The kid can drop down through a closed gate, when there is a tapestry (doortop) above the gate.
185fix_drop_through_tapestry = true
186
187; When dropping down and landing right in front of a wall, the entire landing animation should normally play.
188; However, when falling against a closed gate or a tapestry(+floor) tile, the animation aborts.
189; (The game considers these tiles floor tiles; so it mistakenly assumes that no x-position adjustment is needed)
190fix_land_against_gate_or_tapestry = true
191
192; Sometimes, the kid may automatically strike immediately after drawing the sword.
193; This especially happens when dropping down from a higher floor and then turning towards the opponent.
194fix_unintended_sword_strike = true
195
196; By repeatedly pressing 'back' in a swordfight, you can retreat out of a room without the room changing. (Trick 35)
197fix_retreat_without_leaving_room = true
198
199; The kid can jump through a tapestry with a running jump to the left, if there is a floor above it.
200fix_running_jump_through_tapestry = true
201
202; Guards can be pushed into walls, because the game does not correctly check for walls located behind a guard.
203fix_push_guard_into_wall = true
204
205; By doing a running jump into a wall, you can fall behind a closed gate two floors down. (e.g. skip in Level 7)
206fix_jump_through_wall_above_gate = true
207
208; If you grab a ledge that is one or more floors down, the chompers on that row will not start.
209fix_chompers_not_starting = true
210
211; As soon as a level door has completely opened, the feather fall effect is interrupted because the sound stops.
212fix_feather_interrupted_by_leveldoor = true
213
214; Guards will often not reappear in another room if they have been pushed (partly or entirely) offscreen.
215fix_offscreen_guards_disappearing = true
216
217; While putting the sword away, if you press forward and down, and then release down, the kid will still duck.
218fix_move_after_sheathe = true
219
220; After uniting with the shadow in level 12, the hidden floors will not appear until after the flashing stops.
221fix_hidden_floors_during_flashing = true
222
223; By jumping towards one of the bottom corners of the room and grabbing a ledge, you can teleport to the room above.
224fix_hang_on_teleport = true
225
226; You can enter closed exit doors after you met the shadow or Jaffar died, or after you opened one of multiple exits.
227fix_exit_door = true
228
229; You cannot save game while floating in feather mode.
230fix_quicksave_during_feather = true
231
232; If you are using the caped prince graphics, and crouch with your back towards a closed gate on the left edge on the room, then the prince will slide through the gate.
233fix_caped_prince_sliding_through_gate = true
234
235; Guards become inactive if they are standing on a door top (with floor), or if the prince is standing on a door top.
236fix_doortop_disabling_guard = true
237
238
239[CustomGameplay]
240; Turn on customization options.
241; Below, you can change individual options.
242; NB. If use_custom_options is set to 'false', the options below are not used.
243use_custom_options = true
244
245; Starting minutes left. (default = 60)
246; To disable the time limit completely, set this to -1.
247start_minutes_left = 60
248
249; Starting number of ticks left in the first minute. (default = 719)
250; 1 tick = 1/12 second, so by default there are 59.92 seconds left in the first minute.
251start_ticks_left = 719
252
253; Starting hitpoints. (default = 3)
254start_hitp = 3
255
256; Maximum number of hitpoints you can get. (default = 10)
257max_hitp_allowed = 10
258
259; First level where you can save the game. (default = 3)
260saving_allowed_first_level = 3
261
262; Last level where you can save the game. (default = 13)
263saving_allowed_last_level = 13
264
265; Start the game with the screen flipped upside down, similar to Shift+I (default = false)
266start_upside_down = false
267
268; Start in blind mode, similar to Shift+B (default = false)
269start_in_blind_mode = false
270
271; The potions level will appear before this level. Set to 'never' to disable. (default = 2)
272copyprot_level = 2
273
274; Set up edges of the level.
275; Tile drawn at the top of the room if there is no room that way. (default = floor)
276; E.g. 0: empty, 1: floor, 20: wall (etc.)
277drawn_tile_top_level_edge = floor
278
279; Tile drawn at the left of the room if there is no room that way. (default = wall)
280drawn_tile_left_level_edge = wall
281
282; Tile behavior at the top or left of the room if there is no room that way (default = wall)
283level_edge_hit_tile = wall
284
285; Enable triggering any tile. (default = false)
286; For example, a button could make loose floors fall, or start a stuck chomper.
287allow_triggering_any_tile = false
288
289; Enable the dungeon Wall Drawing Algorithm (WDA) in the palace environment.
290; N.B. Use with a modified VPALACE.DAT that provides dungeon-like wall graphics!
291enable_wda_in_palace = false
292
293; Colors of the hard-coded color palette (RGB values 0..255, will be rounded down to nearest multiple of 4).
294vga_color_0 = 0, 0, 0
295vga_color_1 = 0, 0, 170
296vga_color_2 = 0, 170, 0
297vga_color_3 = 0, 170, 170
298vga_color_4 = 170, 0, 0
299vga_color_5 = 170, 0, 170
300vga_color_6 = 170, 85, 0
301vga_color_7 = 170, 170, 170
302vga_color_8 = 85, 85, 85
303vga_color_9 = 85, 85, 255
304vga_color_10 = 85, 255, 85
305vga_color_11 = 85, 255, 255
306vga_color_12 = 255, 85, 85
307vga_color_13 = 255, 85, 255
308vga_color_14 = 255, 255, 85
309vga_color_15 = 255, 255, 255
310
311; Level that will be loaded when starting a new game. (default = 1)
312first_level = 1
313
314; Always skip the title sequence: the first level will be loaded immediately. (default = false)
315skip_title = false
316
317; First level where level skipping with Shift+L is denied in non-cheat mode. (default = 4)
318shift_L_allowed_until_level = 4
319
320; Number of minutes left after Shift+L is used in non-cheat mode. (default = 15)
321shift_L_reduced_minutes = 15
322
323; Number of ticks left after Shift+L is used in non-cheat mode. (default = 719)
324; (1 tick = 1/12 second, 719 ticks is 59.92 seconds)
325shift_L_reduced_ticks = 719
326
327; Hitpoints the kid has on the demo level. (default = 4)
328demo_hitp = 4
329
330; Demo level ending screen. (default = 24)
331demo_end_room = 24
332
333; Level where the presentation music is played when the kid crouches down. (default = 1)
334intro_music_level = 1
335
336; First level (except the demo level) where kid has the sword at the beginning of the level. (default = 2)
337; Set to 'never' to always start without the sword.
338have_sword_from_level = 2
339
340; Level where there is a checkpoint. (default = 3)
341; The checkpoint is triggered when leaving room 7 to the left.
342checkpoint_level = 3
343
344; Respawn direction after triggering the checkpoint. (default = left)
345checkpoint_respawn_dir = left
346
347; Room where you respawn after triggering the checkpoint. (default = 2)
348checkpoint_respawn_room = 2
349
350; Tile position (0 to 29) where you respawn after triggering the checkpoint. (default = 6)
351checkpoint_respawn_tilepos = 6
352
353; Room where a tile is cleared after respawning at the checkpoint location. (default = 7)
354checkpoint_clear_tile_room = 7
355
356; Location (column/row) of the cleared tile after respawning at the checkpoint location. (default: column = 4, row = top)
357; Possible row values are: 0: top, 1: middle, 2: bottom
358checkpoint_clear_tile_col = 4
359checkpoint_clear_tile_row = top
360
361; Level and room where a skeleton can come alive. (default: level = 3, room = 1)
362skeleton_level = 3
363skeleton_room = 1
364
365; The skeleton will wake up if the kid is on one of these two columns. (defaults = 2,3)
366skeleton_trigger_column_1 = 2
367skeleton_trigger_column_2 = 3
368
369; Location (column/row) of the skeleton tile that will awaken. (default: column = 5, row = middle)
370skeleton_column = 5
371skeleton_row = middle
372
373; Whether the level door must first be opened before the skeleton awakes. (default = true)
374skeleton_require_open_level_door = true
375
376; Skill of the awoken skeleton. (default = 2)
377skeleton_skill = 2
378
379; If the skeleton falls into this room, it will reappear there. (default = 3)
380skeleton_reappear_room = 3
381
382; Horizontal coordinate where the skeleton reappears. (default = 133)
383; (58 = left edge of the room, 198 = right edge)
384skeleton_reappear_x = 133
385
386; Row on which the skeleton reappears. (default = middle)
387skeleton_reappear_row = middle
388
389; Direction the skeleton is facing when it reappears. (default = right)
390skeleton_reappear_dir = right
391
392; Level and room where the mirror appears. (default: level = 4, room = 4)
393mirror_level = 4
394mirror_room = 4
395
396; Location (column/row) of the tile where the mirror appears. (default: column = 4, row = top)
397mirror_column = 4
398mirror_row = top
399
400; Tile type that appears when the mirror should appear. (default = mirror)
401mirror_tile = mirror
402
403; Show the kid's mirror image in the mirror. (default = true)
404show_mirror_image = true
405
406; Level where the kid can progress to the next level by falling off a specific room. (default: level = 6, room = 1)
407falling_exit_level = 6
408falling_exit_room = 1
409
410; If the kid starts in this level in this room, the starting room will not be shown,
411; but the room below instead, to allow for a falling entry. (default: level = 7, room = 17)
412falling_entry_level = 7
413falling_entry_room = 17
414
415; Level and room where the mouse appears. (default: level = 8, room = 16)
416mouse_level = 8
417mouse_room = 16
418
419; Number of ticks to wait before the mouse appears. (default = 150)
420mouse_delay = 150
421
422; Mouse object type. (default = 24)
423; Be careful: a value not 24 will change the mouse for the kid.
424mouse_object = 24
425
426; Horizontal starting coordinate of the mouse. (default = 200)
427mouse_start_x = 200
428
429; Level and rooms where visible loose floor tiles will fall down. (default: level = 13, rooms = 23,16)
430loose_tiles_level = 13
431loose_tiles_room_1 = 23
432loose_tiles_room_2 = 16
433
434; Range of loose floor tile positions that will be pressed. (default = 22 to 27)
435loose_tiles_first_tile = 22
436loose_tiles_last_tile = 27
437
438; Killing the guard in this level causes the screen to flash, and event 0 to be triggered upon leaving the room. (default = 13)
439jaffar_victory_level = 13
440
441; How long the screen will flash after killing Jaffar. (default = 18)
442jaffar_victory_flash_time = 18
443
444; First level where the level number will not be displayed. (default = 14)
445hide_level_number_from_level = 14
446
447; Level number displayed on level 13. (default = 12)
448level_13_level_number = 12
449
450; Level where Jaffar's death stops time. (default = 13)
451victory_stops_time_level = 13
452
453; Level and room where you can win the game. (default: level = 14, room = 5)
454win_level = 14
455win_room = 5
456
457; Number of ticks to wait before a loose floor falls. (default = 11)
458loose_floor_delay = 11
459
460; Game speed when not fighting (delay between frames in 1/60 seconds). Smaller is faster. (default = 5)
461base_speed = 5
462
463; Game speed when fighting (delay between frames in 1/60 seconds). Smaller is faster. (default = 6)
464fight_speed = 6
465
466; Chomper speed (length of the animation cycle in frames). Smaller is faster. (default = 15)
467chomper_speed = 15
468
469
470; The following customization options can be used in all level sections:
471; level_type = 0: dungeon, 1: palace
472; level_color = 0: colors from VDUNGEON.DAT/VPALACE.DAT, >0: colors from PRINCE.DAT (You need a PRINCE.DAT from 1.3 or 1.4 for this.)
473; guard_type = -1: none, 0: guard, 1: fat, 2: skel, 3: vizier, 4: shadow
474; guard_hp = Base hitpoints for guards on this level.
475; cutscene = 0: none, 2 or 6: standing, 4: lying down, 8: mouse leaves, 9: mouse returns, 12: standing or turn around
476;    The numbers correspond to the number of the level which had that cutscene in the original game.
477; entry_pose = 0: turning, 1: falling, 2: running
478; seamless_exit = -1: disabled, >0: room where the level can be seamlessly exited.
479; The default values can be found in doc/default_level_options.txt .
480[Level 0] ; demo
481[Level 1]
482[Level 2]
483[Level 3]
484[Level 4]
485[Level 5]
486[Level 6]
487[Level 7]
488[Level 8]
489[Level 9]
490[Level 10]
491[Level 11]
492[Level 12]
493[Level 13] ; Jaffar
494[Level 14] ; princess
495[Level 15] ; potions
496
497
498; The following customization options can be used for guard skills:
499; strikeprob = Probability of striking, from 0 to 255.
500; restrikeprob = Probability of re-striking after block, from 0 to 255.
501; blockprob = Probability of blocking, from 0 to 255.
502; impblockprob = Probability of improper blocking, from 0 to 255.
503; advprob = Probability of going into hit range, from 0 to 255.
504; refractimer = Refractory period after pain, in frames.
505; extrastrength = Extra hit points.
506; The default values can be found in doc/default_skill_options.txt .
507[Skill 0]
508[Skill 1]
509[Skill 2]
510[Skill 3]
511[Skill 4]
512[Skill 5]
513[Skill 6]
514[Skill 7]
515[Skill 8]
516[Skill 9]
517[Skill 10] ; a in apoplexy
518[Skill 11] ; b in apoplexy
519