; ====================
; SDLPoP configuration
; ====================

; This is the configuration file for SDLPoP.
; Lines starting with a semicolon (";") are comment lines and are ignored by SDLPoP.
; They are used to document the available customization options.

; "default" is a valid setting for any option.

; N.B. You can also use the in-game menu to configure SDLPoP: press Escape or Backspace while in-game.
; The in-game configuration is saved to the file SDLPoP.cfg.
; The settings from the .cfg file will then be applied, until you modify SDLPoP.ini (this file) again.



[General]
; Show the in-game menu when you pause the game by pressing Escape.
; If this is disabled, you can still bring up the menu using Backspace.
enable_pause_menu = true

; Enable or disable the potions (copy protection) level.
enable_copyprot = false

; Enable music.
enable_music = true

; Enable or disable fading.
enable_fade = true

; Enable or disable flashing.
enable_flash = true

; Enable or disable texts.
enable_text = true

; Display the SDLPoP information screen when the game starts.
enable_info_screen = true;

; Start the game in fullscreen mode. (In-game fullscreen toggle: Alt+Enter)
start_fullscreen = false

; Width and height of the game window.
; By default, the window is 640 pixels wide and 400 pixels tall.
; When using the "correct aspect ratio" option, the default height is 480 instead of 400.
pop_window_width = default
pop_window_height = default

; Render the game in the originally intended 4:3 aspect ratio.
; NB. Works best using a high resolution.
use_correct_aspect_ratio = false

; Enable pixel perfect scaling. That is, make all pixels the same size by forcing integer scale factors.
; Note: If you enable both integer scaling and the 4:3 aspect ratio setting above,
; then integer scaling will be disabled, unless the window is at least 1600 x 1200 pixels (without the border).
; Integer scaling will also be disabled if the window is smaller than 320 x 200 pixels.
; Note: You need to compile with SDL 2.0.5 or newer for this.
use_integer_scaling = false

; Scaling method.
; Possible values:
; * sharp = Use nearest-neighbor resampling.
; * fuzzy = First scale to double size with nearest-neighbor scaling, then scale to full screen with smooth scaling.
; * blurry = Use smooth scaling.
scaling_type = sharp

; If using a controller with a rumble motor, provide haptic feedback when the kid is hurt.
enable_controller_rumble = true

; When using a controller, only use the joysticks for horizontal movement (instead of all-directional movement).
; This could make the game easier to control, depending on your preference and depending on which controller you have.
joystick_only_horizontal = true

; Joystick 'dead zone' sensitivity threshold. Range: 0 to 32767 (default = 8000)
joystick_threshold = 8000

; You can get this file from
; https://github.com/gabomdq/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt
; if you need it
;gamecontrollerdb_file = gamecontrollerdb.txt

; You can choose which levels to play using the 'levelset' option:
;    'original'       --> play the original levels (Default)
;    'Your Mod Name'  --> play a custom levelset (the custom files must be in a directory "mods/Your Mod Name/")

levelset = original

; The base directory where SDLPoP will look for custom levelsets. (default = mods)
mods_folder = mods


[AdditionalFeatures]
; Enable quicksave/load feature. (In-game: press F6 to quicksave, F9 to quickload)
enable_quicksave = true

; Try to let time keep running out when quickloading. (similar to Ctrl+A)
; Technically, the 'remaining time' is still restored, but with a penalty for elapsed time (up to 1 minute).
; The one minute penalty will also be applied when quickloading from e.g. the title screen.
enable_quicksave_penalty = true

; Enable recording/replay feature.
enable_replay = true

; The folder where replays will be kept.
replays_folder = replays

; Darken those parts of the screen that are not near a torch.
enable_lighting = false


[Enhancements]
; Turn on game fixes and enhancements.
; Below, you can pick which fixes/enhancements will be active.
; NB. If use_fixes_and_enhancements is set to 'false', all of the below options are disabled.
use_fixes_and_enhancements = false

; Adds a way to crouch immediately after climbing up: press down and forward simultaneously.
; In the original game, this could not be done (pressing down always causes the kid to climb down).
enable_crouch_after_climbing = true

; Time runs out while the level ending music plays; however, the music can be skipped by disabling sound.
; This option stops time while the ending music is playing (so there is no need to disable sound).
enable_freeze_time_during_end_music = true

; Enable guard hitpoints not resetting to their default (maximum) value when re-entering the room.
enable_remember_guard_hp = true

; If a room is linked to itself on the left, the closing sounds of the gates in that room can't be heard.
fix_gate_sounds = true

; An open gate or chomper may enable the Kid to go through walls. (Trick 7, 37, 62)
fix_two_coll_bug = true

; If a room is linked to itself at the bottom, and the Kid's column has no floors, the game hangs.
fix_infinite_down_bug = true

; When a gate is under another gate, the top of the bottom gate is not visible.
fix_gate_drawing_bug = true

; When climbing up to a floor with a big pillar top behind, turned right, Kid sees through floor.
fix_bigpillar_climb = true

; When climbing up two floors, turning around and jumping upward, the kid falls down.
; This fix makes the workaround of Trick 25 unnecessary.
fix_jump_distance_at_edge = true

; When climbing to a higher floor, the game unnecessarily checks how far away the edge below is;
; This contributes to sometimes "teleporting" considerable distances when climbing from firm ground.
fix_edge_distance_check_when_climbing = true

; Falling from a great height directly on top of guards does not hurt.
fix_painless_fall_on_guard = true

; Bumping against a wall may cause a loose floor below to drop, even though it has not been touched. (Trick 18, 34)
fix_wall_bump_triggers_tile_below = true

; When pressing a loose tile, you can temporarily stand on thin air by standing up from crouching.
fix_stand_on_thin_air = true

; Buttons directly to the right of gates can be pressed even though the gate is closed (Trick 1)
fix_press_through_closed_gates = true

; By jumping and bumping into a wall, you can sometimes grab a ledge two stories down (which should not be possible).
fix_grab_falling_speed = true

; When chomped, skeletons cause the chomper to become bloody even though skeletons do not have blood.
fix_skeleton_chomper_blood = true

; Controls do not get released properly when drinking a potion, sometimes causing unintended movements.
fix_move_after_drink = true

; A drawing bug occurs when a loose tile is placed to the left of a potion (or sword).
fix_loose_left_of_potion = true

; Guards may "follow" the kid to the room on the left or right, even though there is a closed gate in between.
fix_guard_following_through_closed_gates = true

; When landing on the edge of a spikes tile, it is considered safe. (Trick 65)
fix_safe_landing_on_spikes = true

; The kid may glide through walls after turning around while running (especially when weightless).
fix_glide_through_wall = true

; The kid can drop down through a closed gate, when there is a tapestry (doortop) above the gate.
fix_drop_through_tapestry = true

; When dropping down and landing right in front of a wall, the entire landing animation should normally play.
; However, when falling against a closed gate or a tapestry(+floor) tile, the animation aborts.
; (The game considers these tiles floor tiles; so it mistakenly assumes that no x-position adjustment is needed)
fix_land_against_gate_or_tapestry = true

; Sometimes, the kid may automatically strike immediately after drawing the sword.
; This especially happens when dropping down from a higher floor and then turning towards the opponent.
fix_unintended_sword_strike = true

; By repeatedly pressing 'back' in a swordfight, you can retreat out of a room without the room changing. (Trick 35)
fix_retreat_without_leaving_room = true

; The kid can jump through a tapestry with a running jump to the left, if there is a floor above it.
fix_running_jump_through_tapestry = true

; Guards can be pushed into walls, because the game does not correctly check for walls located behind a guard.
fix_push_guard_into_wall = true

; By doing a running jump into a wall, you can fall behind a closed gate two floors down. (e.g. skip in Level 7)
fix_jump_through_wall_above_gate = true

; If you grab a ledge that is one or more floors down, the chompers on that row will not start.
fix_chompers_not_starting = true

; As soon as a level door has completely opened, the feather fall effect is interrupted because the sound stops.
fix_feather_interrupted_by_leveldoor = true

; Guards will often not reappear in another room if they have been pushed (partly or entirely) offscreen.
fix_offscreen_guards_disappearing = true

; While putting the sword away, if you press forward and down, and then release down, the kid will still duck.
fix_move_after_sheathe = true

; After uniting with the shadow in level 12, the hidden floors will not appear until after the flashing stops.
fix_hidden_floors_during_flashing = true

; By jumping towards one of the bottom corners of the room and grabbing a ledge, you can teleport to the room above.
fix_hang_on_teleport = true

; You can enter closed exit doors after you met the shadow or Jaffar died, or after you opened one of multiple exits.
fix_exit_door = true

; You cannot save game while floating in feather mode.
fix_quicksave_during_feather = true

; 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.
fix_caped_prince_sliding_through_gate = true

; Guards become inactive if they are standing on a door top (with floor), or if the prince is standing on a door top.
fix_doortop_disabling_guard = true


[CustomGameplay]
; Turn on customization options.
; Below, you can change individual options.
; NB. If use_custom_options is set to 'false', the options below are not used.
use_custom_options = true

; Starting minutes left. (default = 60)
; To disable the time limit completely, set this to -1.
start_minutes_left = 60

; Starting number of ticks left in the first minute. (default = 719)
; 1 tick = 1/12 second, so by default there are 59.92 seconds left in the first minute.
start_ticks_left = 719

; Starting hitpoints. (default = 3)
start_hitp = 3

; Maximum number of hitpoints you can get. (default = 10)
max_hitp_allowed = 10

; First level where you can save the game. (default = 3)
saving_allowed_first_level = 3

; Last level where you can save the game. (default = 13)
saving_allowed_last_level = 13

; Start the game with the screen flipped upside down, similar to Shift+I (default = false)
start_upside_down = false

; Start in blind mode, similar to Shift+B (default = false)
start_in_blind_mode = false

; The potions level will appear before this level. Set to 'never' to disable. (default = 2)
copyprot_level = 2

; Set up edges of the level.
; Tile drawn at the top of the room if there is no room that way. (default = floor)
; E.g. 0: empty, 1: floor, 20: wall (etc.)
drawn_tile_top_level_edge = floor

; Tile drawn at the left of the room if there is no room that way. (default = wall)
drawn_tile_left_level_edge = wall

; Tile behavior at the top or left of the room if there is no room that way (default = wall)
level_edge_hit_tile = wall

; Enable triggering any tile. (default = false)
; For example, a button could make loose floors fall, or start a stuck chomper.
allow_triggering_any_tile = false

; Enable the dungeon Wall Drawing Algorithm (WDA) in the palace environment.
; N.B. Use with a modified VPALACE.DAT that provides dungeon-like wall graphics!
enable_wda_in_palace = false

; Colors of the hard-coded color palette (RGB values 0..255, will be rounded down to nearest multiple of 4).
vga_color_0 = 0, 0, 0
vga_color_1 = 0, 0, 170
vga_color_2 = 0, 170, 0
vga_color_3 = 0, 170, 170
vga_color_4 = 170, 0, 0
vga_color_5 = 170, 0, 170
vga_color_6 = 170, 85, 0
vga_color_7 = 170, 170, 170
vga_color_8 = 85, 85, 85
vga_color_9 = 85, 85, 255
vga_color_10 = 85, 255, 85
vga_color_11 = 85, 255, 255
vga_color_12 = 255, 85, 85
vga_color_13 = 255, 85, 255
vga_color_14 = 255, 255, 85
vga_color_15 = 255, 255, 255

; Level that will be loaded when starting a new game. (default = 1)
first_level = 1

; Always skip the title sequence: the first level will be loaded immediately. (default = false)
skip_title = false

; First level where level skipping with Shift+L is denied in non-cheat mode. (default = 4)
shift_L_allowed_until_level = 4

; Number of minutes left after Shift+L is used in non-cheat mode. (default = 15)
shift_L_reduced_minutes = 15

; Number of ticks left after Shift+L is used in non-cheat mode. (default = 719)
; (1 tick = 1/12 second, 719 ticks is 59.92 seconds)
shift_L_reduced_ticks = 719

; Hitpoints the kid has on the demo level. (default = 4)
demo_hitp = 4

; Demo level ending screen. (default = 24)
demo_end_room = 24

; Level where the presentation music is played when the kid crouches down. (default = 1)
intro_music_level = 1

; First level (except the demo level) where kid has the sword at the beginning of the level. (default = 2)
; Set to 'never' to always start without the sword.
have_sword_from_level = 2

; Level where there is a checkpoint. (default = 3)
; The checkpoint is triggered when leaving room 7 to the left.
checkpoint_level = 3

; Respawn direction after triggering the checkpoint. (default = left)
checkpoint_respawn_dir = left

; Room where you respawn after triggering the checkpoint. (default = 2)
checkpoint_respawn_room = 2

; Tile position (0 to 29) where you respawn after triggering the checkpoint. (default = 6)
checkpoint_respawn_tilepos = 6

; Room where a tile is cleared after respawning at the checkpoint location. (default = 7)
checkpoint_clear_tile_room = 7

; Location (column/row) of the cleared tile after respawning at the checkpoint location. (default: column = 4, row = top)
; Possible row values are: 0: top, 1: middle, 2: bottom
checkpoint_clear_tile_col = 4
checkpoint_clear_tile_row = top

; Level and room where a skeleton can come alive. (default: level = 3, room = 1)
skeleton_level = 3
skeleton_room = 1

; The skeleton will wake up if the kid is on one of these two columns. (defaults = 2,3)
skeleton_trigger_column_1 = 2
skeleton_trigger_column_2 = 3

; Location (column/row) of the skeleton tile that will awaken. (default: column = 5, row = middle)
skeleton_column = 5
skeleton_row = middle

; Whether the level door must first be opened before the skeleton awakes. (default = true)
skeleton_require_open_level_door = true

; Skill of the awoken skeleton. (default = 2)
skeleton_skill = 2

; If the skeleton falls into this room, it will reappear there. (default = 3)
skeleton_reappear_room = 3

; Horizontal coordinate where the skeleton reappears. (default = 133)
; (58 = left edge of the room, 198 = right edge)
skeleton_reappear_x = 133

; Row on which the skeleton reappears. (default = middle)
skeleton_reappear_row = middle

; Direction the skeleton is facing when it reappears. (default = right)
skeleton_reappear_dir = right

; Level and room where the mirror appears. (default: level = 4, room = 4)
mirror_level = 4
mirror_room = 4

; Location (column/row) of the tile where the mirror appears. (default: column = 4, row = top)
mirror_column = 4
mirror_row = top

; Tile type that appears when the mirror should appear. (default = mirror)
mirror_tile = mirror

; Show the kid's mirror image in the mirror. (default = true)
show_mirror_image = true

; Level where the kid can progress to the next level by falling off a specific room. (default: level = 6, room = 1)
falling_exit_level = 6
falling_exit_room = 1

; If the kid starts in this level in this room, the starting room will not be shown,
; but the room below instead, to allow for a falling entry. (default: level = 7, room = 17)
falling_entry_level = 7
falling_entry_room = 17

; Level and room where the mouse appears. (default: level = 8, room = 16)
mouse_level = 8
mouse_room = 16

; Number of ticks to wait before the mouse appears. (default = 150)
mouse_delay = 150

; Mouse object type. (default = 24)
; Be careful: a value not 24 will change the mouse for the kid.
mouse_object = 24

; Horizontal starting coordinate of the mouse. (default = 200)
mouse_start_x = 200

; Level and rooms where visible loose floor tiles will fall down. (default: level = 13, rooms = 23,16)
loose_tiles_level = 13
loose_tiles_room_1 = 23
loose_tiles_room_2 = 16

; Range of loose floor tile positions that will be pressed. (default = 22 to 27)
loose_tiles_first_tile = 22
loose_tiles_last_tile = 27

; Killing the guard in this level causes the screen to flash, and event 0 to be triggered upon leaving the room. (default = 13)
jaffar_victory_level = 13

; How long the screen will flash after killing Jaffar. (default = 18)
jaffar_victory_flash_time = 18

; First level where the level number will not be displayed. (default = 14)
hide_level_number_from_level = 14

; Level number displayed on level 13. (default = 12)
level_13_level_number = 12

; Level where Jaffar's death stops time. (default = 13)
victory_stops_time_level = 13

; Level and room where you can win the game. (default: level = 14, room = 5)
win_level = 14
win_room = 5

; Number of ticks to wait before a loose floor falls. (default = 11)
loose_floor_delay = 11

; Game speed when not fighting (delay between frames in 1/60 seconds). Smaller is faster. (default = 5)
base_speed = 5

; Game speed when fighting (delay between frames in 1/60 seconds). Smaller is faster. (default = 6)
fight_speed = 6

; Chomper speed (length of the animation cycle in frames). Smaller is faster. (default = 15)
chomper_speed = 15


; The following customization options can be used in all level sections:
; level_type = 0: dungeon, 1: palace
; 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.)
; guard_type = -1: none, 0: guard, 1: fat, 2: skel, 3: vizier, 4: shadow
; guard_hp = Base hitpoints for guards on this level.
; cutscene = 0: none, 2 or 6: standing, 4: lying down, 8: mouse leaves, 9: mouse returns, 12: standing or turn around
;    The numbers correspond to the number of the level which had that cutscene in the original game.
; entry_pose = 0: turning, 1: falling, 2: running
; seamless_exit = -1: disabled, >0: room where the level can be seamlessly exited.
; The default values can be found in doc/default_level_options.txt .
[Level 0] ; demo
[Level 1]
[Level 2]
[Level 3]
[Level 4]
[Level 5]
[Level 6]
[Level 7]
[Level 8]
[Level 9]
[Level 10]
[Level 11]
[Level 12]
[Level 13] ; Jaffar
[Level 14] ; princess
[Level 15] ; potions


; The following customization options can be used for guard skills:
; strikeprob = Probability of striking, from 0 to 255.
; restrikeprob = Probability of re-striking after block, from 0 to 255.
; blockprob = Probability of blocking, from 0 to 255.
; impblockprob = Probability of improper blocking, from 0 to 255.
; advprob = Probability of going into hit range, from 0 to 255.
; refractimer = Refractory period after pain, in frames.
; extrastrength = Extra hit points.
; The default values can be found in doc/default_skill_options.txt .
[Skill 0]
[Skill 1]
[Skill 2]
[Skill 3]
[Skill 4]
[Skill 5]
[Skill 6]
[Skill 7]
[Skill 8]
[Skill 9]
[Skill 10] ; a in apoplexy
[Skill 11] ; b in apoplexy
