; ==================== ; 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 ; Possible values: ; * default = Auto, use hardware acceleration when available. ; * true = Force hardware acceleration. ; * false = Disable hardware acceleration. use_hardware_acceleration = default ; Render the game in the originally intended 4:3 aspect ratio. ; NB. Works best using a high resolution. use_correct_aspect_ratio = true ; 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 ; Always use the music from the data/music directory, even for custom levelsets. ; Note: Although the option is called "original", you can put custom music into the data/music directory. ; See "Using custom music" in README.md. always_use_original_music = false ; Always use the graphics from the data directory, even for custom levelsets. always_use_original_graphics = false [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 ; The mentioned tricks can be found here: https://www.popot.org/documentation.php?doc=Tricks ; 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 ; Prince in feather mode (after drinking a green potion) can jump 2 stories high. enable_super_high_jump = true ; Prince can grab tiles on the floor above while jumping. Hold Shift and up arrow, but not the forward arrow key. ; Grabbing distance: standing jump - a little over 1 full tile, running jump - about 2.5 tiles or less. enable_jump_grab = 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 ; Prince can jump over guards with a properly timed running jump fix_jumping_over_guard = true ; Prince can fall 2 rooms down while climbing a loose tile in a room above. (Trick 153) fix_drop_2_rooms_climbing_loose_tile = true ; Prince or guard can fall through the floor during a sword strike sequence. fix_falling_through_floor_during_sword_strike = true ; Prince safe steps near a wall/gate when facing in an opposite direction (Fixes tricks 1 and 2). fix_turn_running_near_wall = true ; Feather fall should not affect guards, because only the prince can drink the feather fall potion. fix_feather_fall_affects_guards = true ; If the prince has only one hit point when he defeats Jaffar, it stops blinking. fix_one_hp_stops_blinking = true ; If the prince or a guard falls to his death onto a loose floor, the floor drops, but the body stays there in the air. fix_dead_floating_in_air = 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 and room where the shadow steals a potion. shadow_steal_level = 5 shadow_steal_room = 24 ; Level and room where the shadow steps on a button. shadow_step_level = 6 shadow_step_room = 1 ; 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 ; Skip the mouse in the ending scene. (default = false) no_mouse_in_ending = false ; 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