import * as _$ini from "ini"; import * as _$path_browserify0 from "path-browserify"; //#region src/types/retroarch-emscripten.d.ts interface RetroArchEmscriptenModule extends EmscriptenModule { asm: any; callMain: (args: string[]) => void; canvas: HTMLCanvasElement; EmscriptenSendCommand?: (command: string) => void; ERRNO_CODES: any; FS: any; mainScriptUrlOrBlob: Blob | string; monitorRunDependencies: (left?: number) => Promise | void; PATH: any; preRun: ((...args: any) => void)[]; setCanvasSize: (width: number, height: number) => void; } type RetroArchEmscriptenModuleOptions = Partial; //#endregion //#region src/libs/utils.d.ts type ResolvableWrapped = ((...args: any[]) => T) | Promise; type Resolvable = ResolvableWrapped> | ResolvableWrapped | T; //#endregion //#region src/classes/resolvable-file.d.ts type ResolvableFilePrimitive = ArrayBuffer | Blob | FileSystemFileHandle | Request | Response | string | Uint8Array | URL; type ResolvableFileObjects = { fileContent: Resolvable; fileName: Resolvable; } | ResolvableFilePrimitive; type ResolvableFileInput = Resolvable | ResolvableFileObjects; type ResolvableFileInputs = Resolvable; interface ResolvableFileConstructorParameters { blobType?: string; name?: string; raw: ResolvableFileInput; signal?: AbortSignal | undefined; urlResolver?: (raw: unknown) => unknown; } type ResolvableFileParameter = ResolvableFile | ResolvableFileConstructorParameters | ResolvableFileConstructorParameters['raw']; declare class ResolvableFile { name: string; /** The base name of the file, without its extension. */ get baseName(): string; /** The extension name of the file, with a leading ".". */ get extension(): string; private arrayBuffer; private blob; private readonly blobType; private objectUrl?; private readonly raw; private readonly signal; private text; private uint8Array; private readonly urlResolver?; constructor({ blobType, name, raw, signal, urlResolver }: ResolvableFileConstructorParameters); static create(rawOrOption: ResolvableFileParameter): Promise; dispose(): void; getArrayBuffer(): Promise; getBlob(): Blob; getObjectUrl(): string; getText(): Promise; getUint8Array(): Promise>; private load; private loadArrayBuffer; private loadContent; private loadFetchable; private loadFileSystemFileHandle; private loadObject; private loadPlainText; private loadResponse; private loadUint8Array; } //#endregion //#region src/types/retroarch-config/input.d.ts type RetroArchInputButton$1 = number | string; interface RetroArchInputConfig { input_close_content: RetroArchInputButton$1; input_close_content_axis: RetroArchInputButton$1; input_close_content_btn: RetroArchInputButton$1; input_close_content_mbtn: RetroArchInputButton$1; input_desktop_menu_toggle: RetroArchInputButton$1; input_desktop_menu_toggle_axis: RetroArchInputButton$1; input_desktop_menu_toggle_btn: RetroArchInputButton$1; input_desktop_menu_toggle_mbtn: RetroArchInputButton$1; input_fps_toggle: RetroArchInputButton$1; input_fps_toggle_axis: RetroArchInputButton$1; input_fps_toggle_btn: RetroArchInputButton$1; input_fps_toggle_mbtn: RetroArchInputButton$1; input_game_focus_toggle: RetroArchInputButton$1; input_game_focus_toggle_axis: RetroArchInputButton$1; input_game_focus_toggle_btn: RetroArchInputButton$1; input_game_focus_toggle_mbtn: RetroArchInputButton$1; input_hold_fast_forward_btn: RetroArchInputButton$1; input_hold_slowmotion: RetroArchInputButton$1; input_netplay_game_watch: RetroArchInputButton$1; input_netplay_player_chat: RetroArchInputButton$1; input_netplay_player_chat_axis: RetroArchInputButton$1; input_netplay_player_chat_btn: RetroArchInputButton$1; input_netplay_player_chat_mbtn: RetroArchInputButton$1; input_preempt_toggle: RetroArchInputButton$1; input_preempt_toggle_axis: RetroArchInputButton$1; input_preempt_toggle_btn: RetroArchInputButton$1; input_preempt_toggle_mbtn: RetroArchInputButton$1; input_record_replay: RetroArchInputButton$1; input_record_replay_axis: RetroArchInputButton$1; input_record_replay_btn: RetroArchInputButton$1; input_record_replay_mbtn: RetroArchInputButton$1; input_recording_toggle: RetroArchInputButton$1; input_recording_toggle_axis: RetroArchInputButton$1; input_recording_toggle_btn: RetroArchInputButton$1; input_recording_toggle_mbtn: RetroArchInputButton$1; input_replay_slot_decrease: RetroArchInputButton$1; input_replay_slot_decrease_axis: RetroArchInputButton$1; input_replay_slot_decrease_btn: RetroArchInputButton$1; input_replay_slot_decrease_mbtn: RetroArchInputButton$1; input_replay_slot_increase: RetroArchInputButton$1; input_replay_slot_increase_axis: RetroArchInputButton$1; input_replay_slot_increase_btn: RetroArchInputButton$1; input_replay_slot_increase_mbtn: RetroArchInputButton$1; input_reset_axis: RetroArchInputButton$1; input_reset_btn: RetroArchInputButton$1; input_reset_mbtn: RetroArchInputButton$1; input_rewind_axis: RetroArchInputButton$1; input_rewind_btn: RetroArchInputButton$1; input_rewind_mbtn: RetroArchInputButton$1; input_rumble_gain: RetroArchInputButton$1; input_runahead_toggle: RetroArchInputButton$1; input_runahead_toggle_axis: RetroArchInputButton$1; input_runahead_toggle_btn: RetroArchInputButton$1; input_runahead_toggle_mbtn: RetroArchInputButton$1; input_save_state_axis: RetroArchInputButton$1; input_save_state_btn: RetroArchInputButton$1; input_save_state_mbtn: RetroArchInputButton$1; input_screenshot_axis: RetroArchInputButton$1; input_screenshot_btn: RetroArchInputButton$1; input_screenshot_mbtn: RetroArchInputButton$1; input_sensors_enable: RetroArchInputButton$1; input_shader_next_axis: RetroArchInputButton$1; input_shader_next_btn: RetroArchInputButton$1; input_shader_next_mbtn: RetroArchInputButton$1; input_shader_prev_axis: RetroArchInputButton$1; input_shader_prev_btn: RetroArchInputButton$1; input_shader_prev_mbtn: RetroArchInputButton$1; input_shader_toggle_axis: RetroArchInputButton$1; input_shader_toggle_btn: RetroArchInputButton$1; input_shader_toggle_mbtn: RetroArchInputButton$1; input_state_slot_decrease_axis: RetroArchInputButton$1; input_state_slot_decrease_btn: RetroArchInputButton$1; input_state_slot_decrease_mbtn: RetroArchInputButton$1; input_state_slot_increase_axis: RetroArchInputButton$1; input_state_slot_increase_btn: RetroArchInputButton$1; input_state_slot_increase_mbtn: RetroArchInputButton$1; input_streaming_toggle: RetroArchInputButton$1; input_streaming_toggle_axis: RetroArchInputButton$1; input_streaming_toggle_btn: RetroArchInputButton$1; input_streaming_toggle_mbtn: RetroArchInputButton$1; input_toggle_fast_forward_axis: RetroArchInputButton$1; input_toggle_fast_forward_btn: RetroArchInputButton$1; input_toggle_fast_forward_mbtn: RetroArchInputButton$1; input_toggle_fullscreen_axis: RetroArchInputButton$1; input_toggle_fullscreen_btn: RetroArchInputButton$1; input_toggle_fullscreen_mbtn: RetroArchInputButton$1; input_toggle_slowmotion: RetroArchInputButton$1; input_toggle_slowmotion_axis: RetroArchInputButton$1; input_toggle_slowmotion_btn: RetroArchInputButton$1; input_toggle_slowmotion_mbtn: RetroArchInputButton$1; input_toggle_statistics_axis: RetroArchInputButton$1; input_toggle_statistics_btn: RetroArchInputButton$1; input_toggle_statistics_mbtn: RetroArchInputButton$1; input_toggle_vrr_runloop_axis: RetroArchInputButton$1; input_toggle_vrr_runloop_btn: RetroArchInputButton$1; input_toggle_vrr_runloop_mbtn: RetroArchInputButton$1; input_touch_scale: RetroArchInputButton$1; input_turbo_default_button: RetroArchInputButton$1; input_turbo_mode: RetroArchInputButton$1; input_volume_down_axis: RetroArchInputButton$1; input_volume_down_btn: RetroArchInputButton$1; input_volume_down_mbtn: RetroArchInputButton$1; input_volume_up_axis: RetroArchInputButton$1; input_volume_up_btn: RetroArchInputButton$1; input_volume_up_mbtn: RetroArchInputButton$1; } //#endregion //#region src/types/retroarch-config/input-player.d.ts type RetroArchInputButton = number | string; interface RetroArchInputPlayerConfig { input_player1_a_axis: RetroArchInputButton; input_player1_a_mbtn: RetroArchInputButton; input_player1_analog_dpad_mode: RetroArchInputButton; input_player1_b_axis: RetroArchInputButton; input_player1_b_mbtn: RetroArchInputButton; input_player1_down_mbtn: RetroArchInputButton; input_player1_gun_aux_a: RetroArchInputButton; input_player1_gun_aux_a_axis: RetroArchInputButton; input_player1_gun_aux_a_btn: RetroArchInputButton; input_player1_gun_aux_a_mbtn: RetroArchInputButton; input_player1_gun_aux_b: RetroArchInputButton; input_player1_gun_aux_b_axis: RetroArchInputButton; input_player1_gun_aux_b_btn: RetroArchInputButton; input_player1_gun_aux_b_mbtn: RetroArchInputButton; input_player1_gun_aux_c: RetroArchInputButton; input_player1_gun_aux_c_axis: RetroArchInputButton; input_player1_gun_aux_c_btn: RetroArchInputButton; input_player1_gun_aux_c_mbtn: RetroArchInputButton; input_player1_gun_dpad_down: RetroArchInputButton; input_player1_gun_dpad_down_axis: RetroArchInputButton; input_player1_gun_dpad_down_btn: RetroArchInputButton; input_player1_gun_dpad_down_mbtn: RetroArchInputButton; input_player1_gun_dpad_left: RetroArchInputButton; input_player1_gun_dpad_left_axis: RetroArchInputButton; input_player1_gun_dpad_left_btn: RetroArchInputButton; input_player1_gun_dpad_left_mbtn: RetroArchInputButton; input_player1_gun_dpad_right: RetroArchInputButton; input_player1_gun_dpad_right_axis: RetroArchInputButton; input_player1_gun_dpad_right_btn: RetroArchInputButton; input_player1_gun_dpad_right_mbtn: RetroArchInputButton; input_player1_gun_dpad_up: RetroArchInputButton; input_player1_gun_dpad_up_axis: RetroArchInputButton; input_player1_gun_dpad_up_btn: RetroArchInputButton; input_player1_gun_dpad_up_mbtn: RetroArchInputButton; input_player1_gun_offscreen_shot: RetroArchInputButton; input_player1_gun_offscreen_shot_axis: RetroArchInputButton; input_player1_gun_offscreen_shot_btn: RetroArchInputButton; input_player1_gun_offscreen_shot_mbtn: RetroArchInputButton; input_player1_gun_select: RetroArchInputButton; input_player1_gun_select_axis: RetroArchInputButton; input_player1_gun_select_btn: RetroArchInputButton; input_player1_gun_select_mbtn: RetroArchInputButton; input_player1_gun_start: RetroArchInputButton; input_player1_gun_start_axis: RetroArchInputButton; input_player1_gun_start_btn: RetroArchInputButton; input_player1_gun_start_mbtn: RetroArchInputButton; input_player1_gun_trigger: RetroArchInputButton; input_player1_gun_trigger_axis: RetroArchInputButton; input_player1_gun_trigger_btn: RetroArchInputButton; input_player1_gun_trigger_mbtn: RetroArchInputButton; input_player1_l_axis: RetroArchInputButton; input_player1_l_mbtn: RetroArchInputButton; input_player1_l_x_minus_axis: RetroArchInputButton; input_player1_l_x_minus_btn: RetroArchInputButton; input_player1_l_x_minus_mbtn: RetroArchInputButton; input_player1_l_x_plus_axis: RetroArchInputButton; input_player1_l_x_plus_btn: RetroArchInputButton; input_player1_l_x_plus_mbtn: RetroArchInputButton; input_player1_l_y_minus_axis: RetroArchInputButton; input_player1_l_y_minus_btn: RetroArchInputButton; input_player1_l_y_minus_mbtn: RetroArchInputButton; input_player1_l_y_plus_axis: RetroArchInputButton; input_player1_l_y_plus_btn: RetroArchInputButton; input_player1_l_y_plus_mbtn: RetroArchInputButton; input_player1_l2_axis: RetroArchInputButton; input_player1_l2_mbtn: RetroArchInputButton; input_player1_l3_axis: RetroArchInputButton; input_player1_l3_mbtn: RetroArchInputButton; input_player1_left_mbtn: RetroArchInputButton; input_player1_mouse_index: RetroArchInputButton; input_player1_r_axis: RetroArchInputButton; input_player1_r_mbtn: RetroArchInputButton; input_player1_r_x_minus_axis: RetroArchInputButton; input_player1_r_x_minus_btn: RetroArchInputButton; input_player1_r_x_minus_mbtn: RetroArchInputButton; input_player1_r_x_plus_axis: RetroArchInputButton; input_player1_r_x_plus_btn: RetroArchInputButton; input_player1_r_x_plus_mbtn: RetroArchInputButton; input_player1_r_y_minus_axis: RetroArchInputButton; input_player1_r_y_minus_btn: RetroArchInputButton; input_player1_r_y_minus_mbtn: RetroArchInputButton; input_player1_r_y_plus_axis: RetroArchInputButton; input_player1_r_y_plus_btn: RetroArchInputButton; input_player1_r_y_plus_mbtn: RetroArchInputButton; input_player1_r2_axis: RetroArchInputButton; input_player1_r2_mbtn: RetroArchInputButton; input_player1_r3_axis: RetroArchInputButton; input_player1_r3_mbtn: RetroArchInputButton; input_player1_right_mbtn: RetroArchInputButton; input_player1_select_axis: RetroArchInputButton; input_player1_select_mbtn: RetroArchInputButton; input_player1_start_axis: RetroArchInputButton; input_player1_start_mbtn: RetroArchInputButton; input_player1_turbo_axis: RetroArchInputButton; input_player1_turbo_btn: RetroArchInputButton; input_player1_turbo_mbtn: RetroArchInputButton; input_player1_up_mbtn: RetroArchInputButton; input_player1_x_axis: RetroArchInputButton; input_player1_x_mbtn: RetroArchInputButton; input_player1_y_axis: RetroArchInputButton; input_player1_y_mbtn: RetroArchInputButton; input_player2_a: RetroArchInputButton; input_player2_a_axis: RetroArchInputButton; input_player2_a_btn: RetroArchInputButton; input_player2_a_mbtn: RetroArchInputButton; input_player2_analog_dpad_mode: RetroArchInputButton; input_player2_b: RetroArchInputButton; input_player2_b_axis: RetroArchInputButton; input_player2_b_btn: RetroArchInputButton; input_player2_b_mbtn: RetroArchInputButton; input_player2_down: RetroArchInputButton; input_player2_down_axis: RetroArchInputButton; input_player2_down_btn: RetroArchInputButton; input_player2_down_mbtn: RetroArchInputButton; input_player2_gun_aux_a: RetroArchInputButton; input_player2_gun_aux_a_axis: RetroArchInputButton; input_player2_gun_aux_a_btn: RetroArchInputButton; input_player2_gun_aux_a_mbtn: RetroArchInputButton; input_player2_gun_aux_b: RetroArchInputButton; input_player2_gun_aux_b_axis: RetroArchInputButton; input_player2_gun_aux_b_btn: RetroArchInputButton; input_player2_gun_aux_b_mbtn: RetroArchInputButton; input_player2_gun_aux_c: RetroArchInputButton; input_player2_gun_aux_c_axis: RetroArchInputButton; input_player2_gun_aux_c_btn: RetroArchInputButton; input_player2_gun_aux_c_mbtn: RetroArchInputButton; input_player2_gun_dpad_down: RetroArchInputButton; input_player2_gun_dpad_down_axis: RetroArchInputButton; input_player2_gun_dpad_down_btn: RetroArchInputButton; input_player2_gun_dpad_down_mbtn: RetroArchInputButton; input_player2_gun_dpad_left: RetroArchInputButton; input_player2_gun_dpad_left_axis: RetroArchInputButton; input_player2_gun_dpad_left_btn: RetroArchInputButton; input_player2_gun_dpad_left_mbtn: RetroArchInputButton; input_player2_gun_dpad_right: RetroArchInputButton; input_player2_gun_dpad_right_axis: RetroArchInputButton; input_player2_gun_dpad_right_btn: RetroArchInputButton; input_player2_gun_dpad_right_mbtn: RetroArchInputButton; input_player2_gun_dpad_up: RetroArchInputButton; input_player2_gun_dpad_up_axis: RetroArchInputButton; input_player2_gun_dpad_up_btn: RetroArchInputButton; input_player2_gun_dpad_up_mbtn: RetroArchInputButton; input_player2_gun_offscreen_shot: RetroArchInputButton; input_player2_gun_offscreen_shot_axis: RetroArchInputButton; input_player2_gun_offscreen_shot_btn: RetroArchInputButton; input_player2_gun_offscreen_shot_mbtn: RetroArchInputButton; input_player2_gun_select: RetroArchInputButton; input_player2_gun_select_axis: RetroArchInputButton; input_player2_gun_select_btn: RetroArchInputButton; input_player2_gun_select_mbtn: RetroArchInputButton; input_player2_gun_start: RetroArchInputButton; input_player2_gun_start_axis: RetroArchInputButton; input_player2_gun_start_btn: RetroArchInputButton; input_player2_gun_start_mbtn: RetroArchInputButton; input_player2_gun_trigger: RetroArchInputButton; input_player2_gun_trigger_axis: RetroArchInputButton; input_player2_gun_trigger_btn: RetroArchInputButton; input_player2_gun_trigger_mbtn: RetroArchInputButton; input_player2_l: RetroArchInputButton; input_player2_l_axis: RetroArchInputButton; input_player2_l_btn: RetroArchInputButton; input_player2_l_mbtn: RetroArchInputButton; input_player2_l_x_minus: RetroArchInputButton; input_player2_l_x_minus_axis: RetroArchInputButton; input_player2_l_x_minus_btn: RetroArchInputButton; input_player2_l_x_minus_mbtn: RetroArchInputButton; input_player2_l_x_plus: RetroArchInputButton; input_player2_l_x_plus_axis: RetroArchInputButton; input_player2_l_x_plus_btn: RetroArchInputButton; input_player2_l_x_plus_mbtn: RetroArchInputButton; input_player2_l_y_minus: RetroArchInputButton; input_player2_l_y_minus_axis: RetroArchInputButton; input_player2_l_y_minus_btn: RetroArchInputButton; input_player2_l_y_minus_mbtn: RetroArchInputButton; input_player2_l_y_plus: RetroArchInputButton; input_player2_l_y_plus_axis: RetroArchInputButton; input_player2_l_y_plus_btn: RetroArchInputButton; input_player2_l_y_plus_mbtn: RetroArchInputButton; input_player2_l2: RetroArchInputButton; input_player2_l2_axis: RetroArchInputButton; input_player2_l2_btn: RetroArchInputButton; input_player2_l2_mbtn: RetroArchInputButton; input_player2_l3: RetroArchInputButton; input_player2_l3_axis: RetroArchInputButton; input_player2_l3_btn: RetroArchInputButton; input_player2_l3_mbtn: RetroArchInputButton; input_player2_left: RetroArchInputButton; input_player2_left_axis: RetroArchInputButton; input_player2_left_btn: RetroArchInputButton; input_player2_left_mbtn: RetroArchInputButton; input_player2_mouse_index: RetroArchInputButton; input_player2_r: RetroArchInputButton; input_player2_r_axis: RetroArchInputButton; input_player2_r_btn: RetroArchInputButton; input_player2_r_mbtn: RetroArchInputButton; input_player2_r_x_minus: RetroArchInputButton; input_player2_r_x_minus_axis: RetroArchInputButton; input_player2_r_x_minus_btn: RetroArchInputButton; input_player2_r_x_minus_mbtn: RetroArchInputButton; input_player2_r_x_plus: RetroArchInputButton; input_player2_r_x_plus_axis: RetroArchInputButton; input_player2_r_x_plus_btn: RetroArchInputButton; input_player2_r_x_plus_mbtn: RetroArchInputButton; input_player2_r_y_minus: RetroArchInputButton; input_player2_r_y_minus_axis: RetroArchInputButton; input_player2_r_y_minus_btn: RetroArchInputButton; input_player2_r_y_minus_mbtn: RetroArchInputButton; input_player2_r_y_plus: RetroArchInputButton; input_player2_r_y_plus_axis: RetroArchInputButton; input_player2_r_y_plus_btn: RetroArchInputButton; input_player2_r_y_plus_mbtn: RetroArchInputButton; input_player2_r2: RetroArchInputButton; input_player2_r2_axis: RetroArchInputButton; input_player2_r2_btn: RetroArchInputButton; input_player2_r2_mbtn: RetroArchInputButton; input_player2_r3: RetroArchInputButton; input_player2_r3_axis: RetroArchInputButton; input_player2_r3_btn: RetroArchInputButton; input_player2_r3_mbtn: RetroArchInputButton; input_player2_right: RetroArchInputButton; input_player2_right_axis: RetroArchInputButton; input_player2_right_btn: RetroArchInputButton; input_player2_right_mbtn: RetroArchInputButton; input_player2_select: RetroArchInputButton; input_player2_select_axis: RetroArchInputButton; input_player2_select_btn: RetroArchInputButton; input_player2_select_mbtn: RetroArchInputButton; input_player2_start: RetroArchInputButton; input_player2_start_axis: RetroArchInputButton; input_player2_start_btn: RetroArchInputButton; input_player2_start_mbtn: RetroArchInputButton; input_player2_turbo: RetroArchInputButton; input_player2_turbo_axis: RetroArchInputButton; input_player2_turbo_btn: RetroArchInputButton; input_player2_turbo_mbtn: RetroArchInputButton; input_player2_up: RetroArchInputButton; input_player2_up_axis: RetroArchInputButton; input_player2_up_btn: RetroArchInputButton; input_player2_up_mbtn: RetroArchInputButton; input_player2_x: RetroArchInputButton; input_player2_x_axis: RetroArchInputButton; input_player2_x_btn: RetroArchInputButton; input_player2_x_mbtn: RetroArchInputButton; input_player2_y: RetroArchInputButton; input_player2_y_axis: RetroArchInputButton; input_player2_y_btn: RetroArchInputButton; input_player2_y_mbtn: RetroArchInputButton; input_player3_a: RetroArchInputButton; input_player3_a_axis: RetroArchInputButton; input_player3_a_btn: RetroArchInputButton; input_player3_a_mbtn: RetroArchInputButton; input_player3_analog_dpad_mode: RetroArchInputButton; input_player3_b: RetroArchInputButton; input_player3_b_axis: RetroArchInputButton; input_player3_b_btn: RetroArchInputButton; input_player3_b_mbtn: RetroArchInputButton; input_player3_down: RetroArchInputButton; input_player3_down_axis: RetroArchInputButton; input_player3_down_btn: RetroArchInputButton; input_player3_down_mbtn: RetroArchInputButton; input_player3_gun_aux_a: RetroArchInputButton; input_player3_gun_aux_a_axis: RetroArchInputButton; input_player3_gun_aux_a_btn: RetroArchInputButton; input_player3_gun_aux_a_mbtn: RetroArchInputButton; input_player3_gun_aux_b: RetroArchInputButton; input_player3_gun_aux_b_axis: RetroArchInputButton; input_player3_gun_aux_b_btn: RetroArchInputButton; input_player3_gun_aux_b_mbtn: RetroArchInputButton; input_player3_gun_aux_c: RetroArchInputButton; input_player3_gun_aux_c_axis: RetroArchInputButton; input_player3_gun_aux_c_btn: RetroArchInputButton; input_player3_gun_aux_c_mbtn: RetroArchInputButton; input_player3_gun_dpad_down: RetroArchInputButton; input_player3_gun_dpad_down_axis: RetroArchInputButton; input_player3_gun_dpad_down_btn: RetroArchInputButton; input_player3_gun_dpad_down_mbtn: RetroArchInputButton; input_player3_gun_dpad_left: RetroArchInputButton; input_player3_gun_dpad_left_axis: RetroArchInputButton; input_player3_gun_dpad_left_btn: RetroArchInputButton; input_player3_gun_dpad_left_mbtn: RetroArchInputButton; input_player3_gun_dpad_right: RetroArchInputButton; input_player3_gun_dpad_right_axis: RetroArchInputButton; input_player3_gun_dpad_right_btn: RetroArchInputButton; input_player3_gun_dpad_right_mbtn: RetroArchInputButton; input_player3_gun_dpad_up: RetroArchInputButton; input_player3_gun_dpad_up_axis: RetroArchInputButton; input_player3_gun_dpad_up_btn: RetroArchInputButton; input_player3_gun_dpad_up_mbtn: RetroArchInputButton; input_player3_gun_offscreen_shot: RetroArchInputButton; input_player3_gun_offscreen_shot_axis: RetroArchInputButton; input_player3_gun_offscreen_shot_btn: RetroArchInputButton; input_player3_gun_offscreen_shot_mbtn: RetroArchInputButton; input_player3_gun_select: RetroArchInputButton; input_player3_gun_select_axis: RetroArchInputButton; input_player3_gun_select_btn: RetroArchInputButton; input_player3_gun_select_mbtn: RetroArchInputButton; input_player3_gun_start: RetroArchInputButton; input_player3_gun_start_axis: RetroArchInputButton; input_player3_gun_start_btn: RetroArchInputButton; input_player3_gun_start_mbtn: RetroArchInputButton; input_player3_gun_trigger: RetroArchInputButton; input_player3_gun_trigger_axis: RetroArchInputButton; input_player3_gun_trigger_btn: RetroArchInputButton; input_player3_gun_trigger_mbtn: RetroArchInputButton; input_player3_l: RetroArchInputButton; input_player3_l_axis: RetroArchInputButton; input_player3_l_btn: RetroArchInputButton; input_player3_l_mbtn: RetroArchInputButton; input_player3_l_x_minus: RetroArchInputButton; input_player3_l_x_minus_axis: RetroArchInputButton; input_player3_l_x_minus_btn: RetroArchInputButton; input_player3_l_x_minus_mbtn: RetroArchInputButton; input_player3_l_x_plus: RetroArchInputButton; input_player3_l_x_plus_axis: RetroArchInputButton; input_player3_l_x_plus_btn: RetroArchInputButton; input_player3_l_x_plus_mbtn: RetroArchInputButton; input_player3_l_y_minus: RetroArchInputButton; input_player3_l_y_minus_axis: RetroArchInputButton; input_player3_l_y_minus_btn: RetroArchInputButton; input_player3_l_y_minus_mbtn: RetroArchInputButton; input_player3_l_y_plus: RetroArchInputButton; input_player3_l_y_plus_axis: RetroArchInputButton; input_player3_l_y_plus_btn: RetroArchInputButton; input_player3_l_y_plus_mbtn: RetroArchInputButton; input_player3_l2: RetroArchInputButton; input_player3_l2_axis: RetroArchInputButton; input_player3_l2_btn: RetroArchInputButton; input_player3_l2_mbtn: RetroArchInputButton; input_player3_l3: RetroArchInputButton; input_player3_l3_axis: RetroArchInputButton; input_player3_l3_btn: RetroArchInputButton; input_player3_l3_mbtn: RetroArchInputButton; input_player3_left: RetroArchInputButton; input_player3_left_axis: RetroArchInputButton; input_player3_left_btn: RetroArchInputButton; input_player3_left_mbtn: RetroArchInputButton; input_player3_mouse_index: RetroArchInputButton; input_player3_r: RetroArchInputButton; input_player3_r_axis: RetroArchInputButton; input_player3_r_btn: RetroArchInputButton; input_player3_r_mbtn: RetroArchInputButton; input_player3_r_x_minus: RetroArchInputButton; input_player3_r_x_minus_axis: RetroArchInputButton; input_player3_r_x_minus_btn: RetroArchInputButton; input_player3_r_x_minus_mbtn: RetroArchInputButton; input_player3_r_x_plus: RetroArchInputButton; input_player3_r_x_plus_axis: RetroArchInputButton; input_player3_r_x_plus_btn: RetroArchInputButton; input_player3_r_x_plus_mbtn: RetroArchInputButton; input_player3_r_y_minus: RetroArchInputButton; input_player3_r_y_minus_axis: RetroArchInputButton; input_player3_r_y_minus_btn: RetroArchInputButton; input_player3_r_y_minus_mbtn: RetroArchInputButton; input_player3_r_y_plus: RetroArchInputButton; input_player3_r_y_plus_axis: RetroArchInputButton; input_player3_r_y_plus_btn: RetroArchInputButton; input_player3_r_y_plus_mbtn: RetroArchInputButton; input_player3_r2: RetroArchInputButton; input_player3_r2_axis: RetroArchInputButton; input_player3_r2_btn: RetroArchInputButton; input_player3_r2_mbtn: RetroArchInputButton; input_player3_r3: RetroArchInputButton; input_player3_r3_axis: RetroArchInputButton; input_player3_r3_btn: RetroArchInputButton; input_player3_r3_mbtn: RetroArchInputButton; input_player3_right: RetroArchInputButton; input_player3_right_axis: RetroArchInputButton; input_player3_right_btn: RetroArchInputButton; input_player3_right_mbtn: RetroArchInputButton; input_player3_select: RetroArchInputButton; input_player3_select_axis: RetroArchInputButton; input_player3_select_btn: RetroArchInputButton; input_player3_select_mbtn: RetroArchInputButton; input_player3_start: RetroArchInputButton; input_player3_start_axis: RetroArchInputButton; input_player3_start_btn: RetroArchInputButton; input_player3_start_mbtn: RetroArchInputButton; input_player3_turbo: RetroArchInputButton; input_player3_turbo_axis: RetroArchInputButton; input_player3_turbo_btn: RetroArchInputButton; input_player3_turbo_mbtn: RetroArchInputButton; input_player3_up: RetroArchInputButton; input_player3_up_axis: RetroArchInputButton; input_player3_up_btn: RetroArchInputButton; input_player3_up_mbtn: RetroArchInputButton; input_player3_x: RetroArchInputButton; input_player3_x_axis: RetroArchInputButton; input_player3_x_btn: RetroArchInputButton; input_player3_x_mbtn: RetroArchInputButton; input_player3_y: RetroArchInputButton; input_player3_y_axis: RetroArchInputButton; input_player3_y_btn: RetroArchInputButton; input_player3_y_mbtn: RetroArchInputButton; input_player4_a: RetroArchInputButton; input_player4_a_axis: RetroArchInputButton; input_player4_a_btn: RetroArchInputButton; input_player4_a_mbtn: RetroArchInputButton; input_player4_analog_dpad_mode: RetroArchInputButton; input_player4_b: RetroArchInputButton; input_player4_b_axis: RetroArchInputButton; input_player4_b_btn: RetroArchInputButton; input_player4_b_mbtn: RetroArchInputButton; input_player4_down: RetroArchInputButton; input_player4_down_axis: RetroArchInputButton; input_player4_down_btn: RetroArchInputButton; input_player4_down_mbtn: RetroArchInputButton; input_player4_gun_aux_a: RetroArchInputButton; input_player4_gun_aux_a_axis: RetroArchInputButton; input_player4_gun_aux_a_btn: RetroArchInputButton; input_player4_gun_aux_a_mbtn: RetroArchInputButton; input_player4_gun_aux_b: RetroArchInputButton; input_player4_gun_aux_b_axis: RetroArchInputButton; input_player4_gun_aux_b_btn: RetroArchInputButton; input_player4_gun_aux_b_mbtn: RetroArchInputButton; input_player4_gun_aux_c: RetroArchInputButton; input_player4_gun_aux_c_axis: RetroArchInputButton; input_player4_gun_aux_c_btn: RetroArchInputButton; input_player4_gun_aux_c_mbtn: RetroArchInputButton; input_player4_gun_dpad_down: RetroArchInputButton; input_player4_gun_dpad_down_axis: RetroArchInputButton; input_player4_gun_dpad_down_btn: RetroArchInputButton; input_player4_gun_dpad_down_mbtn: RetroArchInputButton; input_player4_gun_dpad_left: RetroArchInputButton; input_player4_gun_dpad_left_axis: RetroArchInputButton; input_player4_gun_dpad_left_btn: RetroArchInputButton; input_player4_gun_dpad_left_mbtn: RetroArchInputButton; input_player4_gun_dpad_right: RetroArchInputButton; input_player4_gun_dpad_right_axis: RetroArchInputButton; input_player4_gun_dpad_right_btn: RetroArchInputButton; input_player4_gun_dpad_right_mbtn: RetroArchInputButton; input_player4_gun_dpad_up: RetroArchInputButton; input_player4_gun_dpad_up_axis: RetroArchInputButton; input_player4_gun_dpad_up_btn: RetroArchInputButton; input_player4_gun_dpad_up_mbtn: RetroArchInputButton; input_player4_gun_offscreen_shot: RetroArchInputButton; input_player4_gun_offscreen_shot_axis: RetroArchInputButton; input_player4_gun_offscreen_shot_btn: RetroArchInputButton; input_player4_gun_offscreen_shot_mbtn: RetroArchInputButton; input_player4_gun_select: RetroArchInputButton; input_player4_gun_select_axis: RetroArchInputButton; input_player4_gun_select_btn: RetroArchInputButton; input_player4_gun_select_mbtn: RetroArchInputButton; input_player4_gun_start: RetroArchInputButton; input_player4_gun_start_axis: RetroArchInputButton; input_player4_gun_start_btn: RetroArchInputButton; input_player4_gun_start_mbtn: RetroArchInputButton; input_player4_gun_trigger: RetroArchInputButton; input_player4_gun_trigger_axis: RetroArchInputButton; input_player4_gun_trigger_btn: RetroArchInputButton; input_player4_gun_trigger_mbtn: RetroArchInputButton; input_player4_l: RetroArchInputButton; input_player4_l_axis: RetroArchInputButton; input_player4_l_btn: RetroArchInputButton; input_player4_l_mbtn: RetroArchInputButton; input_player4_l_x_minus: RetroArchInputButton; input_player4_l_x_minus_axis: RetroArchInputButton; input_player4_l_x_minus_btn: RetroArchInputButton; input_player4_l_x_minus_mbtn: RetroArchInputButton; input_player4_l_x_plus: RetroArchInputButton; input_player4_l_x_plus_axis: RetroArchInputButton; input_player4_l_x_plus_btn: RetroArchInputButton; input_player4_l_x_plus_mbtn: RetroArchInputButton; input_player4_l_y_minus: RetroArchInputButton; input_player4_l_y_minus_axis: RetroArchInputButton; input_player4_l_y_minus_btn: RetroArchInputButton; input_player4_l_y_minus_mbtn: RetroArchInputButton; input_player4_l_y_plus: RetroArchInputButton; input_player4_l_y_plus_axis: RetroArchInputButton; input_player4_l_y_plus_btn: RetroArchInputButton; input_player4_l_y_plus_mbtn: RetroArchInputButton; input_player4_l2: RetroArchInputButton; input_player4_l2_axis: RetroArchInputButton; input_player4_l2_btn: RetroArchInputButton; input_player4_l2_mbtn: RetroArchInputButton; input_player4_l3: RetroArchInputButton; input_player4_l3_axis: RetroArchInputButton; input_player4_l3_btn: RetroArchInputButton; input_player4_l3_mbtn: RetroArchInputButton; input_player4_left: RetroArchInputButton; input_player4_left_axis: RetroArchInputButton; input_player4_left_btn: RetroArchInputButton; input_player4_left_mbtn: RetroArchInputButton; input_player4_mouse_index: RetroArchInputButton; input_player4_r: RetroArchInputButton; input_player4_r_axis: RetroArchInputButton; input_player4_r_btn: RetroArchInputButton; input_player4_r_mbtn: RetroArchInputButton; input_player4_r_x_minus: RetroArchInputButton; input_player4_r_x_minus_axis: RetroArchInputButton; input_player4_r_x_minus_btn: RetroArchInputButton; input_player4_r_x_minus_mbtn: RetroArchInputButton; input_player4_r_x_plus: RetroArchInputButton; input_player4_r_x_plus_axis: RetroArchInputButton; input_player4_r_x_plus_btn: RetroArchInputButton; input_player4_r_x_plus_mbtn: RetroArchInputButton; input_player4_r_y_minus: RetroArchInputButton; input_player4_r_y_minus_axis: RetroArchInputButton; input_player4_r_y_minus_btn: RetroArchInputButton; input_player4_r_y_minus_mbtn: RetroArchInputButton; input_player4_r_y_plus: RetroArchInputButton; input_player4_r_y_plus_axis: RetroArchInputButton; input_player4_r_y_plus_btn: RetroArchInputButton; input_player4_r_y_plus_mbtn: RetroArchInputButton; input_player4_r2: RetroArchInputButton; input_player4_r2_axis: RetroArchInputButton; input_player4_r2_btn: RetroArchInputButton; input_player4_r2_mbtn: RetroArchInputButton; input_player4_r3: RetroArchInputButton; input_player4_r3_axis: RetroArchInputButton; input_player4_r3_btn: RetroArchInputButton; input_player4_r3_mbtn: RetroArchInputButton; input_player4_right: RetroArchInputButton; input_player4_right_axis: RetroArchInputButton; input_player4_right_btn: RetroArchInputButton; input_player4_right_mbtn: RetroArchInputButton; input_player4_select: RetroArchInputButton; input_player4_select_axis: RetroArchInputButton; input_player4_select_btn: RetroArchInputButton; input_player4_select_mbtn: RetroArchInputButton; input_player4_start: RetroArchInputButton; input_player4_start_axis: RetroArchInputButton; input_player4_start_btn: RetroArchInputButton; input_player4_start_mbtn: RetroArchInputButton; input_player4_turbo: RetroArchInputButton; input_player4_turbo_axis: RetroArchInputButton; input_player4_turbo_btn: RetroArchInputButton; input_player4_turbo_mbtn: RetroArchInputButton; input_player4_up: RetroArchInputButton; input_player4_up_axis: RetroArchInputButton; input_player4_up_btn: RetroArchInputButton; input_player4_up_mbtn: RetroArchInputButton; input_player4_x: RetroArchInputButton; input_player4_x_axis: RetroArchInputButton; input_player4_x_btn: RetroArchInputButton; input_player4_x_mbtn: RetroArchInputButton; input_player4_y: RetroArchInputButton; input_player4_y_axis: RetroArchInputButton; input_player4_y_btn: RetroArchInputButton; input_player4_y_mbtn: RetroArchInputButton; } //#endregion //#region src/types/retroarch-config/notification.d.ts interface RetroArchNotificationConfig { notification_show_autoconfig: boolean; notification_show_cheats_applied: boolean; notification_show_config_override_load: boolean; notification_show_fast_forward: boolean; notification_show_netplay_extra: boolean; notification_show_patch_applied: boolean; notification_show_refresh_rate: boolean; notification_show_remap_load: boolean; notification_show_save_state: boolean; notification_show_screenshot: boolean; notification_show_screenshot_duration: number; notification_show_screenshot_flash: number; notification_show_set_initial_disk: boolean; notification_show_when_menu_is_alive: boolean; } //#endregion //#region src/types/retroarch-config/quick-menu.d.ts interface RetroArchQuickMenuConfig { quick_menu_show_add_to_favorites: boolean; quick_menu_show_cheats: boolean; quick_menu_show_close_content: boolean; quick_menu_show_controls: boolean; quick_menu_show_core_options_flush: boolean; quick_menu_show_download_thumbnails: boolean; quick_menu_show_information: boolean; quick_menu_show_options: boolean; quick_menu_show_replay: boolean; quick_menu_show_reset_core_association: boolean; quick_menu_show_restart_content: boolean; quick_menu_show_resume_content: boolean; quick_menu_show_save_content_dir_overrides: boolean; quick_menu_show_save_core_overrides: boolean; quick_menu_show_save_game_overrides: boolean; quick_menu_show_save_load_state: boolean; quick_menu_show_savestate_submenu: boolean; quick_menu_show_set_core_association: boolean; quick_menu_show_shaders: boolean; quick_menu_show_start_recording: boolean; quick_menu_show_start_streaming: boolean; quick_menu_show_take_screenshot: boolean; quick_menu_show_undo_save_load_state: boolean; } //#endregion //#region src/types/retroarch-config/rewind.d.ts interface RetroArchRewindConfig { rewind_buffer_size: number; rewind_buffer_size_step: number; rewind_enable: boolean; rewind_granularity: number; } //#endregion //#region src/types/retroarch-config/run-ahead.d.ts interface RetroArchRunAheadConfig { run_ahead_enabled: boolean; run_ahead_frames: number; run_ahead_hide_warnings: boolean; run_ahead_secondary_instance: boolean; } //#endregion //#region src/types/retroarch-config/save.d.ts interface RetroArchSaveConfig { save_file_compression: boolean; savefile_directory: string; savefiles_in_content_dir: boolean; savestate_auto_index: boolean; savestate_directory: string; savestate_file_compression: boolean; savestate_max_keep: number; savestate_thumbnail_enable: boolean; savestates_in_content_dir: boolean; } //#endregion //#region src/types/retroarch-config/skeleton.d.ts /** * @see {@link https://github.com/libretro/RetroArch/blob/master/retroarch.cfg | RetroArch Skeleton config file in the repo of RetroArch} */ interface RetroArchSkeletonConfig { /** * If set to a directory, the content history playlist will be saved * to this directory. */ content_history_dir: string; savestate_auto_load: boolean; /** * Automatically saves a savestate at the end of RetroArch's lifetime. * The path is $SRAM_PATH.auto. * RetroArch will automatically load any savestate with this path on startup if savestate_auto_load is set. */ savestate_auto_save: boolean; /** * Path to a libretro implementation. */ libretro_path: string; /** * Sets log level for libretro cores (GET_LOG_INTERFACE). * If a log level issued by a libretro core is below libretro_log_level, it is ignored. * DEBUG logs are always ignored unless verbose mode is activated (--verbose). * DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3. */ libretro_log_level: number | string; /** * Enable or disable verbosity level of frontend. */ log_verbosity: boolean; /** * If this option is enabled, every content file loaded in RetroArch will be * automatically added to a history list. */ history_list_enable: boolean; /** * Enable performance counters */ perfcnt_enable: boolean; /** * Path to core options config file. * This config file is used to expose core-specific options. * It will be written to by RetroArch. * A default path will be assigned if not set. */ core_options_path: string; /** * Path to content history file. * RetroArch keeps track of all content loaded in the menu and from CLI directly for convenient quick loading. * A default path will be assigned if not set. */ content_history_path: string; /** * Path to music content history file (optional). * RetroArch keeps track of all music content loaded in the menu and from CLI directly for convenient quick loading. * A default path will be assigned if not set. */ content_music_history_path: string; /** * Path to image content history file (optional). * RetroArch keeps track of all image content loaded in the menu and from CLI directly for convenient quick loading. * A default path will be assigned if not set. */ content_image_history_path: string; /** * Path to video content history file (optional). * RetroArch keeps track of all video content loaded in the menu and from CLI directly for convenient quick loading. * A default path will be assigned if not set. */ content_video_history_path: string; /** * Number of entries that will be kept in content history file. */ content_history_size: number; /** * Content directory. Interacts with RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY. * Usually set by developers who bundle libretro/RetroArch apps to point to assets. */ content_directory: string; /** * Sets start directory for menu config browser. */ rgui_config_directory: string; /** * Show startup screen in menu. * Is automatically set to false when seen for the first time. * This is only updated in config if config_save_on_exit is set to true, however. */ rgui_show_start_screen: boolean; /** * Flushes config to disk on exit. Useful for menu as settings can be modified. * Overwrites the config. #include's and comments are not preserved. */ config_save_on_exit: boolean; /** * Shows hidden files and folders in directory listings. */ show_hidden_files: false; /** * Input driver. Depending on video driver, it might force a different input driver. */ input_driver: string; /** * Joypad driver. ("udev", "linuxraw", "paraport", "sdl2", "hid", "dinput") */ input_joypad_driver: string; /** * Video driver to use. "gl", "xvideo", "sdl", "d3d" */ video_driver: string; /** * Which context implementation to use. * Possible ones for desktop are: glx, x-egl, kms-egl, sdl-gl, wgl. * By default, tries to use first suitable driver. */ video_context_driver: string; /** * Audio driver backend. Depending on configuration possible candidates are: alsa, pulse, oss, jack, rsound, roar, openal, sdl, xaudio. */ audio_driver: string; /** * Audio resampler driver backend. Which audio resampler to use. * Default will use "sinc". */ audio_resampler: string; /** * Camera driver. */ camera_driver: string; /** * Location driver. */ location_driver: string; /** * Menu driver to use. ("rgui", "xmb", "glui") */ menu_driver: string; /** * Record driver. Used when recording video. */ record_driver: string; /** * Suspends the screensaver if set to true. Is a hint that does not necessarily have to be honored * by video driver. */ suspend_screensaver_enable: boolean; /** * Display framerate. */ fps_show: boolean; /** * Display memory. */ memory_show: boolean; /** * Display total number of frames rendered. (only displays if fps_show is enabled) */ framecount_show: string; /** * Which monitor to prefer. 0 (default) means no particular monitor is preferred, 1 and up (1 being first monitor), * suggests RetroArch to use that particular monitor. */ video_monitor_index: number; /** * Start in fullscreen. Can be changed at runtime. */ video_fullscreen: boolean; /** * If fullscreen, prefer using a windowed fullscreen mode. */ video_windowed_fullscreen: boolean; /** * Fullscreen resolution. Resolution of 0 uses the resolution of the desktop. */ video_fullscreen_x: number; /** * Fullscreen resolution. Resolution of 0 uses the resolution of the desktop. */ video_fullscreen_y: number; /** * Video refresh rate of your CRT monitor. * Used to calculate a suitable audio input rate. */ crt_video_refresh_rate: number; /** * Video refresh rate of your monitor. * Used to calculate a suitable audio input rate. */ video_refresh_rate: number; /** * Forcibly disable sRGB FBO support. Some Intel OpenGL drivers on Windows * have video problems with sRGB FBO support enabled. */ video_force_srgb_disable: boolean; /** * If this is true and video_aspect_ratio is not set, * aspect ratio is decided by libretro implementation. * If this is false, 1:1 PAR will always be assumed if video_aspect_ratio is not set. */ video_aspect_ratio_auto: boolean; /** * A floating point value for video aspect ratio (width / height). * If this is not set, aspect ratio is assumed to be automatic. * Behavior then is defined by video_aspect_ratio_auto. */ video_aspect_ratio: string; /** * Windowed x resolution scale and y resolution scale * (Real x res: base_size * xscale * aspect_ratio, real y res: base_size * yscale) */ video_scale: number; /** * Percentage of opacity to use for the window (100 is completely opaque). */ video_window_opacity: number; /** * Whether to enable the default window decorations like border, titlebar etc. */ video_window_show_decorations: boolean; /** * Forcibly disable composition. Only works in Windows Vista/7 for now. */ video_disable_composition: boolean; /** * Video vsync. */ video_vsync: boolean; /** * Interval at which a Vsync swap is performed. * 1 is normal, 2 is doubled frames, 3 is tripled frames, etc. */ video_swap_interval: number; /** * Max amount of swapchain images. * Single buffering = 1, Double buffering = 2, 3 = Triple buffering */ video_max_swapchain_images: number; /** * Attempts to hard-synchronize CPU and GPU. Can reduce latency at cost of performance. */ video_hard_sync: boolean; /** * Sets how many frames CPU can run ahead of GPU when using video_hard_sync. * Maximum is 3. */ video_hard_sync_frames: number; /** * Sets how many milliseconds to delay after VSync before running the core. * Can reduce latency at cost of higher risk of stuttering. * Maximum is 15. */ video_frame_delay: number; /** * Inserts a black frame inbetween frames. * Useful for 120 Hz monitors who want to play 60 Hz material with eliminated ghosting. * video_refresh_rate should still be configured as if it is a 60 Hz monitor (divide refresh rate by 2). */ video_black_frame_insertion: boolean; /** * Use threaded video driver. Using this might improve performance at possible cost of latency and more video stuttering. */ video_threaded: boolean; /** * Use a shared context for HW rendered libretro cores. * Avoids having to assume HW state changes inbetween frames. */ video_shared_context: boolean; /** * Smoothens picture with bilinear filtering. Should be disabled if using pixel shaders. */ video_smooth: boolean; /** * Forces rendering area to stay equal to content aspect ratio or as defined in video_aspect_ratio. */ video_force_aspect: boolean; /** * Only scales video in integer steps. * The base size depends on system-reported geometry and aspect ratio. * If video_force_aspect is not set, X/Y will be integer scaled independently. */ video_scale_integer: boolean; /** * Index of the aspect ratio selection in the menu. * 20 = Config, 21 = 1:1 PAR, 22 = Core Provided, 23 = Custom Aspect Ratio */ aspect_ratio_index: number; /** * Forces cropping of overscanned frames. * Exact behavior of this option is implementation specific. */ video_crop_overscan: boolean; /** * Path to shader. Shader can be either Cg, CGP (Cg preset) or GLSL, GLSLP (GLSL preset) */ video_shader: string; /** * Load video_shader on startup. * Other shaders can still be loaded later in runtime. */ video_shader_enable: boolean; /** * CPU-based video filter. Path to a dynamic library. */ video_filter: string; /** * Path to a font used for rendering messages. This path must be defined to enable fonts. * Do note that the _full_ path of the font is necessary! */ video_font_path: string; /** * Size of the font rendered in points. */ video_font_size: number; /** * Enable usage of OSD messages. */ video_font_enable: boolean; /** * Offset for where messages will be placed on screen. Values are in range 0.0 to 1.0 for both x and y values. * [0.0, 0.0] maps to the lower left corner of the screen. */ video_message_pos_x: number; /** * Offset for where messages will be placed on screen. Values are in range 0.0 to 1.0 for both x and y values. * [0.0, 0.0] maps to the lower left corner of the screen. */ video_message_pos_y: number; /** * Color for message. The value is treated as a hexadecimal value. * It is a regular RGB hex number, i.e. red is "ff0000". */ video_message_color: string; /** * Background color for OSD messages. Red/Green/Blue values are from 0 to 255 and opacity is 0.0 to 1.0. */ video_message_bgcolor_enable: boolean; /** * Background color for OSD messages. Red/Green/Blue values are from 0 to 255 and opacity is 0.0 to 1.0. */ video_message_bgcolor_red: number; /** * Background color for OSD messages. Red/Green/Blue values are from 0 to 255 and opacity is 0.0 to 1.0. */ video_message_bgcolor_green: number; /** * Background color for OSD messages. Red/Green/Blue values are from 0 to 255 and opacity is 0.0 to 1.0. */ video_message_bgcolor_blue: number; /** * Background color for OSD messages. Red/Green/Blue values are from 0 to 255 and opacity is 0.0 to 1.0. */ video_message_bgcolor_opacity: number; /** * Allows libretro cores to set rotation modes. * Setting this to false will honor, but ignore this request. * This is useful for vertically oriented content where one manually rotates the monitor. */ video_allow_rotate: boolean; /** * Forces a certain rotation of the video. * The rotation is added to rotations which the libretro core sets (see video_allow_rotate). * The angle is * 90 degrees counter-clockwise. */ video_rotation: number; /** * Forces a certain orientation of the screen from the operating system. * The angle is * 90 degrees counter-clockwise. */ screen_orientation: number; /** * HDR settings */ video_hdr_enable: boolean; /** * HDR settings */ video_hdr_max_nits: string; /** * HDR settings */ video_hdr_paper_white_nits: string; /** * HDR settings */ video_hdr_contrast: string; /** * HDR settings */ video_hdr_expand_gamut: boolean; /** * Enable audio. */ audio_enable: boolean; /** * Enable menu audio sounds. */ audio_enable_menu: boolean; /** * Enable menu audio sounds. */ audio_enable_menu_ok: boolean; /** * Enable menu audio sounds. */ audio_enable_menu_cancel: boolean; /** * Enable menu audio sounds. */ audio_enable_menu_notice: boolean; /** * Enable menu audio sounds. */ audio_enable_menu_bgm: boolean; /** * Mutes audio. */ audio_mute_enable: boolean; /** * Mutes audio mixer volume globally. */ audio_mixer_mute_enable: boolean; /** * Audio output samplerate. */ audio_out_rate: number; /** * Override the default audio device the audio_driver uses. This is driver dependant. E.g. ALSA wants a PCM device, OSS wants a path (e.g. /dev/dsp), Jack wants portnames (e.g. system:playback1,system:playback_2), and so on ... */ audio_device: string; /** * Audio DSP plugin that processes audio before it's sent to the driver. Path to a dynamic library. */ audio_dsp_plugin: string; /** * Will sync (block) on audio. Recommended. */ audio_sync: boolean; /** * Desired audio latency in milliseconds. Might not be honored if driver can't provide given latency. */ audio_latency: number; /** * Enable audio rate control. */ audio_rate_control: boolean; /** * Controls audio rate control delta. Defines how much input rate can be adjusted dynamically. * Input rate = in_rate * (1.0 +/- audio_rate_control_delta) */ audio_rate_control_delta: number; /** * Controls maximum audio timing skew. Defines the maximum change in input rate. * Input rate = in_rate * (1.0 +/- max_timing_skew) */ audio_max_timing_skew: number; /** * Audio volume. Volume is expressed in dB. * 0 dB is normal volume. No gain will be applied. * Gain can be controlled in runtime with input_volume_up/input_volume_down. */ audio_volume: number; /** * Audio mixer volume. Volume is expressed in dB. * 0 dB is normal volume. No gain will be applied. */ audio_mixer_volume: number; /** * Enable microphone support. */ microphone_enable: boolean; /** * Desired microphone latency in milliseconds. Might not be honored if driver can't provide given latency. */ microphone_latency: number; /** * Enable the overlay. */ input_overlay_enable: boolean; /** * Show the overlay behind the menu instead of in front. */ input_overlay_behind_menu: boolean; /** * Hide the current overlay from appearing inside the menu. */ input_overlay_hide_in_menu: boolean; /** * Path to input overlay. */ input_overlay: string; /** * Opacity of all the UI elements of the overlay. */ input_overlay_opacity: number; /** * Scale of all UI elements of the overlay. */ input_overlay_scale: number; /** * Center of all UI elements of the overlay. */ input_overlay_center_x: number; /** * Center of all UI elements of the overlay. */ input_overlay_center_y: number; /** * Path to input remapping file. */ input_remapping_path: string; /** * Input bind timer timeout. * Amount of seconds to wait until proceeding to the next bind. Default: 5, minimum: 1 */ input_bind_timeout: number; /** * If enabled, overrides the input binds with the remapped binds set for the current core. */ input_remap_binds_enable: boolean; /** * Maximum amount of users supported by RetroArch. */ input_max_users: number; /** * Keyboard layout for input driver if applicable (udev/evdev for now). * Syntax is either just layout (e.g. "no"), or a layout and variant separated with colon ("no:nodeadkeys"). */ input_keyboard_layout: string; /** * Defines axis threshold. Possible values are [0.0, 1.0] */ input_axis_threshold: number; input_analog_deadzone: number; input_analog_sensitivity: number; /** * Enable input auto-detection. Will attempt to autoconfigure * joypads, Plug-and-Play style. */ input_autodetect_enable: boolean; /** * Show the input descriptors set by the core instead of the * default ones. */ input_descriptor_label_show: boolean; /** * Hide input descriptors that were not set by the core. */ input_descriptor_hide_unbound: boolean; /** * Influence how input polling is done inside RetroArch. * 0 : Early - Input polling is performed before call to retro_run. * 1 : Normal - Input polling is performed when retro_input_poll is * requested. * 2 : Late - Input polling is performed on first call to retro_input_state * per frame * * Setting it to 0 or 2 can result in less latency depending on * your configuration. * * When netplay is enabled, the default polling behavior (1) will * be used regardless of the value set here. */ input_poll_type_behavior: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p1: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p2: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p3: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p4: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p5: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p6: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p7: number; /** * Sets which libretro device is used for a user. * Devices are indentified with a number. * This is normally saved by the menu. * Device IDs are found in libretro.h. * These settings are overridden by explicit command-line arguments which refer to input devices. * None: 0 * Joypad (RetroPad): 1 * Mouse: 2 * Keyboard: 3 * Generic Lightgun: 4 * Joypad w/ Analog (RetroPad + Analog sticks): 5 * Multitap (SNES specific): 257 * Super Scope (SNES specific): 260 * Justifier (SNES specific): 516 * Justifiers (SNES specific): 772 */ input_libretro_device_p8: number; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_a: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_b: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_y: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_x: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_start: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_select: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_l: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_r: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_left: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_right: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_up: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_down: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_l2: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_r2: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_l3: string; /** * Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_" * is for keypad keys): * * left, right, up, down, enter, kp_enter, tab, insert, del, end, home, * rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus, * f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, * num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown, * keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9, * period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock, * tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket, * backslash, rightbracket, kp_period, kp_equals, rctrl, ralt * * Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely, * rather than relying on a default. */ input_player1_r3: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_l_x_plus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_l_x_minus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_l_y_plus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_l_y_minus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_r_x_plus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_r_x_minus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_r_y_plus: string; /** * Two analog sticks (DualShock-esque). * Bound as usual, however, if a real analog axis is bound, * it can be read as a true analog. * Positive X axis is right, Positive Y axis is down. */ input_player1_r_y_minus: string; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player1_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player2_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player3_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player4_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player5_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player6_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player7_joypad_index: number; /** * If desired, it is possible to override which joypads are being used for user 1 through 8. * First joypad available is 0. */ input_player8_joypad_index: number; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_a_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_b_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_y_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_x_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_start_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_select_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_l_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_r_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_left_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_right_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_up_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_down_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_l2_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_r2_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_l3_btn: string; /** * Input device buttons. * Figure these out by using the RetroArch configuration menu * You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction. * E.g. "h0up" */ input_player1_r3_btn: string; /** * Menu buttons. */ menu_search_btn: string; /** * Menu buttons. */ menu_info_btn: string; /** * Menu buttons. */ menu_default_btn: string; /** * Menu buttons. */ menu_scroll_down_btn: string; /** * Menu buttons. */ menu_scroll_up_btn: string; /** * Swap buttons for OK/Cancel */ menu_swap_ok_cancel_buttons: boolean; /** * Swap buttons for scrolling (10 items vs alphabetical) */ menu_swap_scroll_buttons: boolean; /** * Axis for RetroArch D-Pad. * Needs to be either '+' or '-' in the first character signaling either positive or negative direction of the axis, then the axis number. * Do note that every other input option has the corresponding _btn and _axis binds as well; they are omitted here for clarity. */ input_player1_left_axis: string; /** * Axis for RetroArch D-Pad. * Needs to be either '+' or '-' in the first character signaling either positive or negative direction of the axis, then the axis number. * Do note that every other input option has the corresponding _btn and _axis binds as well; they are omitted here for clarity. */ input_player1_right_axis: string; /** * Axis for RetroArch D-Pad. * Needs to be either '+' or '-' in the first character signaling either positive or negative direction of the axis, then the axis number. * Do note that every other input option has the corresponding _btn and _axis binds as well; they are omitted here for clarity. */ input_player1_up_axis: string; /** * Axis for RetroArch D-Pad. * Needs to be either '+' or '-' in the first character signaling either positive or negative direction of the axis, then the axis number. * Do note that every other input option has the corresponding _btn and _axis binds as well; they are omitted here for clarity. */ input_player1_down_axis: string; /** * Holding the turbo while pressing another button will let the button enter a turbo mode * where the button state is modulated with a periodic signal. * The modulation stops when the button itself (not turbo button) is released. */ input_player1_turbo: string; /** * Describes the period and how long of that period a turbo-enabled button should behave. * Numbers are described in frames. */ input_turbo_period: number; /** * Describes the period and how long of that period a turbo-enabled button should behave. * Numbers are described in frames. */ input_turbo_duty_cycle: number; /** * This goes all the way to user 8 (*_player2_*, *_player3_*, etc), but omitted for clarity. * All input binds have corresponding binds for keyboard (none), joykeys (_btn) and joyaxes (_axis) as well. /** * Toggles fullscreen. */ input_toggle_fullscreen: string; /** * Saves state. */ input_save_state: string; /** * Loads state. */ input_load_state: string; /** * State slots. With slot set to 0, save state name is *.state (or whatever defined on commandline). * When slot is != 0, path will be $path%d, where %d is slot number. */ input_state_slot_increase: string; /** * State slots. With slot set to 0, save state name is *.state (or whatever defined on commandline). * When slot is != 0, path will be $path%d, where %d is slot number. * defaults to f6 */ input_state_slot_decrease: string; /** * Toggles between fast-forwarding and normal speed. * defaults to space */ input_toggle_fast_forward: string; /** * Hold for fast-forward. Releasing button disables fast-forward. * defaults to l */ input_hold_fast_forward: string; /** * Key to exit RetroArch cleanly. * Killing it in any hard way (SIGKILL, etc) will terminate RetroArch without saving RAM, etc. * On Unix-likes, SIGINT/SIGTERM allows a clean deinitialization. * defaults to escape */ input_exit_emulator: string; /** * Applies next and previous shader in directory. * defaults to m */ input_shader_next: string; /** * Applies next and previous shader in directory. * defaults to n */ input_shader_prev: string; /** * Applies next and previous shader in directory. * defaults to comma */ input_shader_toggle: string; /** * Hold button down to rewind. Rewinding must be enabled. * defaults to r */ input_rewind: string; /** * Toggle between recording and not. * defaults to o */ input_movie_record_toggle: string; /** * Toggle between paused and non-paused state * defaults to p */ input_pause_toggle: string; /** * Frame advance when content is paused * defaults to k */ input_frame_advance: string; /** * Reset the content. * defaults to h */ input_reset: string; /** * Cheats. * defaults to y */ input_cheat_index_plus: string; /** * Cheats. * defaults to t */ input_cheat_index_minus: string; /** * Cheats. * defaults to u */ input_cheat_toggle: string; /** * Mute/unmute audio * defaults to f9 */ input_audio_mute: string; /** * Take screenshot * defaults to f8 */ input_screenshot: string; /** * Netplay flip users. * defaults to i */ input_netplay_flip_players: string; /** * Hold for slowmotion. * defaults to e */ input_slowmotion: string; /** * Toggles sync to exact content framerate. */ input_toggle_vrr_runloop: string; /** * Enable other hotkeys. * If this hotkey is bound to either keyboard, joybutton or joyaxis, * all other hotkeys will be disabled unless this hotkey is also held at the same time. * This is useful for RETRO_KEYBOARD centric implementations * which query a large area of the keyboard, where it is not desirable * that hotkeys get in the way. * * Alternatively, all hotkeys for keyboard could be disabled by the user. */ input_enable_hotkey_btn: number; /** * Adds a delay in frames before the assigned hotkey blocks input. Useful if the the * hotkey input is mapped to another action. */ input_hotkey_block_delay: number; /** * Increases audio volume. */ input_volume_up: string; /** * Decreases audio volume. */ input_volume_down: string; /** * Toggles to next overlay. Wraps around. */ input_overlay_next: string; /** * Toggles eject for disks. Used for multiple-disk content. */ input_disk_eject_toggle: string; /** * Cycles through disk images. Use after ejecting. * Complete by toggling eject again. */ input_disk_next: string; /** * Toggles menu. */ input_menu_toggle: string; /** * Toggles display of on-screen technical statistics. */ input_toggle_statistics: string; /** * RetroPad button combination to toggle menu * 0: None * 1: Down + Y + L1 + R1 * 2: L3 + R3 * 3: L1 + R1 + Start + Select * 4: Start + Select * 5: L3 + R1 * 6: L1 + R1 * 7: Hold Start (2 seconds) * 8: Hold Select (2 seconds) * 9: Down + Select * 10: L2 + R2 */ input_menu_toggle_gamepad_combo: number; /** * RetroPad button combination to quit * 0: None * 1: Down + Y + L1 + R1 * 2: L3 + R3 * 3: L1 + R1 + Start + Select * 4: Start + Select * 5: L3 + R1 * 6: L1 + R1 * 7: Hold Start (2 seconds) * 8: Hold Select (2 seconds) * 9: Down + Select * 10: L2 + R2 */ input_quit_gamepad_combo: number; /** * allow any RetroPad to control the menu */ all_users_control_menu: boolean; /** * Toggles mouse grab. When mouse is grabbed, RetroArch hides the mouse, * and keeps the mouse pointer inside the window to allow relative mouse input * to work better. */ input_grab_mouse_toggle: string; /** * If disabled, will hide 'Online Updater' inside the menu. */ menu_show_online_updater: boolean; /** * If disabled, will hide the ability to update cores (and core info files) inside the menu. */ menu_show_core_updater: boolean; /** * If disabled, the libretro core will keep running in the background when we * are in the menu. */ menu_pause_libretro: boolean; /** * If disabled, we use separate controls for menu operation. */ menu_unified_controls: boolean; /** * Enable mouse controls inside the menu. */ menu_mouse_enable: boolean; /** * Enable touch controls inside the menu. */ menu_pointer_enable: boolean; /** * Shows current date and/or time inside menu. */ menu_timedate_enable: boolean; /** * Shows current battery level inside menu. */ menu_battery_level_enable: boolean; /** * Shows current core inside menu. */ menu_core_enable: boolean; /** * Path to an image to set as menu wallpaper. */ menu_wallpaper: string; /** * Dynamically load a new wallpaper depending on context. */ menu_dynamic_wallpaper_enable: boolean; /** * Type of thumbnail to display. 0 = none, 1 = snaps, 2 = titles, 3 = boxarts */ menu_thumbnails: number; /** * Type of thumbnail to display. 0 = none, 1 = snaps, 2 = titles, 3 = boxarts */ menu_left_thumbnails: number; /** * Wrap-around to beginning and/or end if boundary of list is reached horizontally or vertically. */ menu_navigation_wraparound_enable: boolean; /** * Filter files being shown in filebrowser by supported extensions. */ menu_navigation_browser_filter_supported_extensions_enable: boolean; /** * Collapse subgroup settings into main group to create one big listing of settings * per category. */ menu_collapse_subgroups_enable: boolean; /** * Prevent libretro cores from closing RetroArch on exit by loading a dummy core. */ load_dummy_on_core_shutdown: boolean; /** * Check for firmware requirement(s) before loading a content. */ check_firmware_before_loading: boolean; /** * Start UI companion driver's interface on boot (if available). */ ui_companion_start_on_boot: boolean; /** * Toggle companion UI on startup (currently only used to show the WIMP UI) */ ui_companion_toggle: boolean; /** * Only init the WIMP UI for this session if this is enabled */ desktop_menu_enable: boolean; /** * Override the default camera device the camera driver uses. This is driver dependant. */ camera_device: string; /** * Override the default privacy permission for cores that want to access camera services. Is "false" by default. */ camera_allow: boolean; /** * Override the default privacy permission for cores that want to access location services. Is "false" by default. */ location_allow: boolean; /** * URL to core update directory on buildbot. */ core_updater_buildbot_url: string; /** * URL to assets update directory on buildbot. */ core_updater_buildbot_assets_url: string; /** * After downloading, automatically extract archives that the downloads are contained inside. */ core_updater_auto_extract_archive: boolean; /** * When being client over netplay, use keybinds for user 1. */ netplay_client_swap_input: boolean; /** * The username of the person running RetroArch. This will be used for playing online, for instance. */ netplay_nickname: string; /** * The amount of delay frames to use for netplay. Increasing this value will increase * performance, but introduce more latency. */ netplay_delay_frames: number; /** * Netplay mode for the current user. * false is Server, true is Client. */ netplay_mode: boolean; /** * Enable or disable spectator mode for the user during netplay. */ netplay_spectator_mode_enable: boolean; /** * The IP Address of the host to connect to. */ netplay_ip_address: string; /** * The port of the host IP Address. Can be either a TCP or UDP port. */ netplay_ip_port: number; /** * Force game hosting to go through a man-in-the-middle server to get around firewalls and NAT/UPnP problems. */ netplay_use_mitm_server: boolean; /** * The requested MITM server to use. */ netplay_mitm_server: string; /** * Sets the System/BIOS directory. * Implementations can query for this directory to load BIOSes, system-specific configs, etc. */ system_directory: string; /** * Save all downloaded files to this directory. */ core_assets_directory: string; /** * Assets directory. This location is queried by default when menu interfaces try to look for * loadable assets, etc. */ assets_directory: string; /** * Dynamic wallpapers directory. The place to store the wallpapers dynamically * loaded by the menu depending on context. */ dynamic_wallpapers_directory: string; /** * Thumbnails directory. To store thumbnail files. */ thumbnails_directory: string; /** * File browser directory. Sets start directory for menu file browser. */ rgui_browser_directory: string; /** * Core directory for libretro core implementations. */ libretro_directory: string; /** * Core info directory for libretro core information. */ libretro_info_path: string; /** * Path to content database directory. */ content_database_path: string; /** * Saved queries are stored to this directory. */ cursor_directory: string; /** * Path to cheat database directory. */ cheat_database_path: string; /** * Defines a directory where CPU-based video filters are kept. */ video_filter_dir: string; /** * Directory where DSP plugins are kept. */ audio_filter_dir: string; /** * Defines a directory where shaders (Cg, CGP, GLSL) are kept for easy access. */ video_shader_dir: string; /** * Recording output directory. Where recordings are saved. */ recording_output_directory: string; /** * Recording config directory. Where recording settings are kept. */ recording_config_directory: string; /** * Overlay directory. Where overlays are kept for easy access. */ overlay_directory: string; /** * Directory to dump screenshots to. */ screenshot_directory: string; /** * Directory for joypad autoconfigs. * If a joypad is plugged in, that joypad will be autoconfigured if a config file * corresponding to that joypad is present in joypad_autoconfig_dir. * Input binds which are made explicit (input_playerN_*_btn/axis) will take priority over autoconfigs. * Autoconfigs can be created with manually, or with the frontend. * Requires input_autodetect_enable to be enabled. */ joypad_autoconfig_dir: string; /** * Save all remapped controls to this directory. */ input_remapping_directory: string; /** * Save all playlists/collections to this directory. */ playlist_directory: string; /** * Save all save files (*.srm) to this directory. This includes related files like .bsv, .rtc, .psrm, etc ... * This will be overridden by explicit command line options. */ savefile_directory: string; /** * Save all save states (*.state) to this directory. * This will be overridden by explicit command line options. */ savestate_directory: string; /** * If set to a directory, content which is temporarily extracted * will be extracted to this directory. */ cache_directory: string; /** * Enable the RetroAchievements feature. */ cheevos_enable: boolean; /** * RetroAchievements.org credentials. */ cheevos_username: string; /** * RetroAchievements.org credentials. */ cheevos_password: string; /** * Show a popup when logging in to RetroAchievements. */ cheevos_visibility_account: boolean; /** * The hardcore mode disables savestates and cheating features. Achievements * earned in hardcore mode are uniquely marked so that you can show others * what you've achieved without emulator assistance features. */ cheevos_hardcore_mode_enable: boolean; /** * Show a popup when an achievement is unlocked. */ cheevos_visibility_unlock: boolean; /** * Play the 'unlock' audio sound when an achievement is unlocked. */ cheevos_unlock_sound_enable: boolean; /** * Take a screenshot when an achievement is triggered. */ cheevos_auto_screenshot: boolean; /** * Show a popup when all achievements for a game are unlocked. */ cheevos_visibility_mastery: boolean; /** * Shows additional diagnostic and error messages */ cheevos_verbose_enable: boolean; /** * Show achievements' badges in Quick Menu \> Achievements List. * (note: has no effect if menu_driver = rgui). */ cheevos_badges_enable: boolean; /** * Show an on-screen indicator when attempting challenging achievements * to provide feedback when the attempt has failed (for achievements that * support it) */ cheevos_challenge_indicators: boolean; /** * Shows a message when a leaderboard activates. */ cheevos_visibility_lboard_start: boolean; /** * Shows a message with your score when a leaderboard is submitted to the server. */ cheevos_visibility_lboard_submit: boolean; /** * Shows an on-screen tracker with the current value of active leaderboards. */ cheevos_visibility_lboard_trackers: boolean; /** * Send some messages to the RetroAchievements.org saying, for example, * where you are in the game, how many lives you have, your score, etc. */ cheevos_richpresence_enable: boolean; /** * Even after unlocking achievements in previous sessions, you may still want * to see them triggering in the current session. (encore mode) */ cheevos_start_active: boolean; /** * Unnoficial achievements are used only for achievement creators and testers. */ cheevos_test_unofficial: boolean; /** * Enable rewinding. This will take a performance hit when playing, so it is disabled by default. */ rewind_enable: boolean; /** * Rewinding buffer size in megabytes. Bigger rewinding buffer means you can rewind longer. * The buffer should be approx. 20MB per minute of buffer time. */ rewind_buffer_size: number; /** * Rewind granularity. When rewinding defined number of frames, you can rewind several frames at a time, increasing the rewinding speed. */ rewind_granularity: number; /** * Pause gameplay when window focus is lost. */ pause_nonactive: boolean; /** * Pause gameplay when controller disconnects. */ pause_on_disconnect: boolean; /** * Autosaves the non-volatile SRAM at a regular interval. This is disabled by default unless set otherwise. * The interval is measured in seconds. A value of 0 disables autosave. */ autosave_interval: string; /** * Records video after CPU video filter. */ video_post_filter_record: boolean; /** * Records output of GPU shaded material if available. */ video_gpu_record: boolean; /** * Screenshots output of GPU shaded material if available. */ video_gpu_screenshot: boolean; /** * Watch content shader files for changes and auto-apply as necessary. */ video_shader_watch_files: boolean; /** * Block SRAM from being overwritten when loading save states. * Might potentially lead to buggy games. */ block_sram_overwrite: boolean; /** * When saving a savestate, save state index is automatically increased before * it is saved. * Also, when loading content, the index will be set to the highest existing index. * There is no upper bound on the index. */ savestate_auto_index: boolean; /** * Slowmotion ratio. When slowmotion, content will slow down by factor. */ slowmotion_ratio: number; /** * The maximum rate at which content will be run when using fast forward. (E.g. 5.0 for 60 fps content =\> 300 fps cap). * RetroArch will go to sleep to ensure that the maximum rate will not be exceeded. * Do not rely on this cap to be perfectly accurate. * If this is set at 0, then fastforward ratio is unlimited (no FPS cap) */ fastforward_ratio: number; /** * Enable stdin/network command interface. */ network_cmd_enable: boolean; network_cmd_port: number; /** * Enable stdin/network command interface. */ stdin_cmd_enable: boolean; /** * Enable Sustained Performance Mode in Android 7.0+ */ sustained_performance_mode: boolean; /** * File format to use when writing playlists to disk */ playlist_use_old_format: boolean; /** * Keep track of how long each core+content has been running for over time */ content_runtime_log: boolean; /** */ vibrate_on_keypress: boolean; /** * Enable device vibration for supported cores */ enable_device_vibration: boolean; /** * Enable game mode on supported platforms. * Depending on the system, it can result in more stable frame times, less audio * crackling, better performance and lower latency. On Linux, Feral GameMode * needs to be installed (https://github.com/FeralInteractive/gamemode). */ gamemode_enable: boolean; } //#endregion //#region src/types/retroarch-config/theme.d.ts interface RetroArchThemeConfig { ozone_collapse_sidebar: boolean; ozone_menu_color_theme: number; ozone_scroll_content_metadata: boolean; ozone_sort_after_truncate_playlist_name: boolean; ozone_thumbnail_scale_factor: number; ozone_truncate_playlist_name: boolean; materialui_auto_rotate_nav_bar: boolean; materialui_dual_thumbnail_list_view_enable: boolean; materialui_icons_enable: boolean; materialui_landscape_layout_optimization: number; materialui_menu_color_theme: number; materialui_menu_transition_animation: number; materialui_playlist_icons_enable: boolean; materialui_show_nav_bar: boolean; materialui_switch_icons: boolean; materialui_thumbnail_background_enable: boolean; materialui_thumbnail_view_landscape: number; materialui_thumbnail_view_portrait: number; rgui_aspect_ratio: number; rgui_aspect_ratio_lock: number; rgui_background_filler_thickness_enable: boolean; rgui_border_filler_enable: boolean; rgui_border_filler_thickness_enable: boolean; rgui_browser_directory: string; rgui_config_directory: string; rgui_extended_ascii: boolean; rgui_inline_thumbnails: boolean; rgui_internal_upscale_level: number; rgui_menu_color_theme: number; rgui_menu_theme_preset: number; rgui_particle_effect: number; rgui_particle_effect_screensaver: boolean; rgui_particle_effect_speed: number; rgui_show_start_screen: boolean; rgui_swap_thumbnails: boolean; rgui_switch_icons: boolean; rgui_thumbnail_delay: number; rgui_thumbnail_downscaler: number; xmb_alpha_factor: number; xmb_font: string; xmb_layout: number; xmb_menu_color_theme: number; xmb_shadows_enable: boolean; xmb_switch_icons: boolean; xmb_theme: number; xmb_vertical_thumbnails: boolean; } //#endregion //#region src/types/retroarch-config/video.d.ts interface RetroArchVideoConfig { video_adaptive_vsync: boolean; video_allow_rotate: boolean; video_aspect_ratio_auto: boolean; video_autoswitch_pal_threshold: number; video_autoswitch_refresh_rate: number; video_context_driver: string; video_crop_overscan: boolean; video_ctx_scaling: boolean; video_disable_composition: boolean; video_driver: string; video_filter: string; video_filter_dir: string; video_font_enable: boolean; video_font_path: string; video_font_size: number; video_force_aspect: boolean; video_force_srgb_disable: boolean; video_frame_delay: number; video_frame_delay_auto: boolean; video_fullscreen: boolean; video_fullscreen_x: number; video_fullscreen_y: number; video_gpu_record: boolean; video_gpu_screenshot: boolean; video_hard_sync: boolean; video_hard_sync_frames: number; video_hdr_display_contrast: number; video_hdr_enable: boolean; video_hdr_expand_gamut: boolean; video_max_frame_latency: number; video_max_swapchain_images: number; video_message_color: string; video_message_pos_x: number; video_message_pos_y: number; video_monitor_index: number; video_msg_bgcolor_blue: number; video_msg_bgcolor_enable: boolean; video_msg_bgcolor_green: number; video_msg_bgcolor_opacity: number; video_msg_bgcolor_red: number; video_notch_write_over_enable: boolean; video_post_filter_record: boolean; video_record_config: string; video_record_quality: number; video_record_scale_factor: number; video_record_threads: number; video_refresh_rate: number; video_rotation: number; video_scale: number; video_scale_integer: boolean; video_scale_integer_overscale: boolean; video_shader_delay: number; video_shader_dir: string; video_shader_enable: boolean; video_shader_preset_save_reference_enable: boolean; video_shader_remember_last_dir: boolean; video_shader_watch_files: boolean; video_shared_context: boolean; video_smooth: boolean; video_stream_config: string; video_stream_port: number; video_stream_quality: number; video_stream_scale_factor: number; video_stream_url: string; video_swap_interval: number; video_threaded: boolean; video_vsync: boolean; video_waitable_swapchains: boolean; video_window_auto_height_max: number; video_window_auto_width_max: number; video_window_custom_size_enable: boolean; video_window_opacity: number; video_window_save_positions: boolean; video_window_show_decorations: boolean; video_windowed_fullscreen: boolean; video_windowed_position_height: number; video_windowed_position_width: number; video_windowed_position_x: number; video_windowed_position_y: number; } //#endregion //#region src/types/retroarch-config/index.d.ts interface RetroArchFullConfig extends RetroArchInputConfig, RetroArchInputPlayerConfig, RetroArchNotificationConfig, RetroArchQuickMenuConfig, RetroArchRewindConfig, RetroArchRunAheadConfig, RetroArchSaveConfig, RetroArchSkeletonConfig, RetroArchThemeConfig, RetroArchVideoConfig { fps_update_interval: number; frame_time_counter_reset_after_fastforwarding: boolean; frame_time_counter_reset_after_load_state: boolean; frame_time_counter_reset_after_save_state: boolean; frontend_log_level: number; game_specific_options: boolean; gamma_correction: number; global_core_options: boolean; quit_press_twice: boolean; } /** * RetroArch config list. * These config fields are just copied from templates so not all options can make effects in browser. */ type RetroArchConfig = Partial; //#endregion //#region src/types/nostalgist-options.d.ts interface NostalgistCoreDict { /** the name of core */ name: string; /** the resolvable file of core's js file */ js: ResolvableFileInput; /** the resolvable file of core's wasm file */ wasm: ResolvableFileInput; } type NostalgistResolveFileFunction = (file: string, options: NostalgistOptions) => ResolvableFileInput; interface NostalgistOptions { /** * The canvas element to use. * @defaultValue '' an empty string */ element: HTMLCanvasElement | string; /** * The style of the canvas element. * * The CSS rule name should be "camelCase" instead of "kebab-case". For example, `{ backgroundColor: 'black' }` is valid, but `{ background-color: '' }` is not. * * If the canvas element is created automatically, the style will be * ```js * { * position: 'fixed', * top: '0', * left: '0', * width: '100%', * height: '100%', * backgroundColor: 'black', * zIndex: '1', * } * ``` * otherwise it will be `undefined`. */ style?: Partial; /** * * The size of the canvas element. * If it's `'auto'`, the canvas element will keep its original size, or it's width and height will be updated as specified. */ size?: 'auto' | { height: number; width: number; }; core: NostalgistCoreDict | string; /** * The rom needs to be launched. * * This property can be: * + a string. * + a [File object](https://developer.mozilla.org/en-US/docs/Web/API/File). * + a plain object, with a fileName property and a fileContent property. * + an array of above. * * @example * If it's a url, that's saying, it starts with `"http://"` or `"https://"`, a request will be sent to grab its content. * ```js * const nostalgist = await Nostalgist.launch({ * rom: 'https://example.com/contra.nes' * }) * ``` * * @example * If it's a normal string, it will be passed to `options.resolveRom`, another function option that should return a [resolvable file](https://nostalgist.js.org/apis/resolvable-file). * ```js * const nostalgist = await Nostalgist.launch({ * rom: 'contra.nes', * resolveRom({ file }) { * return `https://example.com/roms/${file}` * }, * }) * ``` * * Bear in mind if you want to load your ROM via url, you should make sure you can access that url by CORS. * * @example * If it's a `File` object, its content and file name will be directly used for emulation. * ```js * const rom = await showFilePicker() * const nostalgist = await Nostalgist.launch({ * rom, * }) * * ``` * * @example * If it's an plain object, here is an example. * ```js * const fileContent = await fetch('http://example.com/contra.nes') * const nostalgist = await Nostalgist.launch({ * rom: { * fileName: 'contra.nes', * fileContent, * } * }) * ``` * * @example * For some situations, we may need multiple files for emulation. Then we need to pass an array here. * ```js * const blob = await showFilePicker() * const fileContent = await fetch('http://example.com/contra.nes') * const nostalgist = await Nostalgist.launch({ * rom: ['rom1.bin', blob, { * fileName: 'rom2.bin', * fileContent, * }] * }) * ``` */ rom?: ResolvableFileInput | ResolvableFileInputs; /** * The name of the shader to be used. * By default, shaders will be loaded from https://github.com/libretro/glsl-shaders in a loose way, while this can be changed by customizing the `resolveShader` option. */ shader?: string; /** * The BIOS files needed to be launched with roms. * * This property can be: * + a string * + a [File object](https://developer.mozilla.org/en-US/docs/Web/API/File) * + an object, with a fileName property and a fileContent property. for example: `{ filename: 'xx.nes', fileContent: someBlob }` * + an array of above */ bios?: ResolvableFileInput | ResolvableFileInputs; /** * The initial state to be loaded after launching. */ state?: ResolvableFileInput; /** * The initial SRAM to be loaded after launching. */ sram?: ResolvableFileInput; /** * The type of battery save the core generates. */ sramType?: 'sav' | 'srm'; respondToGlobalEvents?: boolean; /** * RetroArch config. * Not all options can make effects in browser. */ retroarchConfig: RetroArchConfig; /** * RetroArch core config. * Not all options can make effects in browser. */ retroarchCoreConfig: Record; /** * DO NOT use this option. It's for CI testing purposes only. * @internal */ setupEmulatorManually: boolean; /** * If this is set to true, emulator will not run automatically. * To run the emulator, `nostalgist.launchEmulator` should be called later. * Default value is `false`. */ runEmulatorManually: boolean; /** * An option to override the `Module` object for Emscripten. See [Module object](https://emscripten.org/docs/api_reference/module.html). * * This is a low level option and not well tested, so use it at your own risk. */ emscriptenModule?: RetroArchEmscriptenModuleOptions; /** * The `AbortSignal` object used for cancelling a launch. */ signal?: AbortSignal; cache?: { bios?: boolean; core?: boolean; rom?: boolean; shader?: boolean; sram?: boolean; state?: boolean; } | boolean; beforeLaunch?: (nostalgist: Nostalgist) => Promise | void; onLaunch?: (nostalgist: Nostalgist) => Promise | void; resolveBios: NostalgistResolveFileFunction; resolveCoreJs: (core: NostalgistOptions['core'], options: NostalgistOptions) => ResolvableFileInput; resolveCoreWasm: (core: NostalgistOptions['core'], options: NostalgistOptions) => ResolvableFileInput; resolveRom: NostalgistResolveFileFunction; resolveShader: (shader: NostalgistOptions['shader'], options: NostalgistOptions) => ResolvableFileInput | ResolvableFileInputs; /** * @deprecated Use `Nostalgist.prepare` instead. */ waitForInteraction?: (params: { done: () => void; }) => void; } type NostalgistOptionsPartial = Partial; type NostalgistLaunchOptions = NostalgistOptionsPartial & Pick; interface NostalgistLaunchRomObjectOptions extends Omit { rom: ResolvableFileInput | ResolvableFileInputs; } type NostalgistLaunchRomOptions = NostalgistLaunchRomObjectOptions | ResolvableFileInput | ResolvableFileInputs; //#endregion //#region src/types/retroarch-command.d.ts type RetroArchCommand = 'CHEAT_INDEX_MINUS' | 'CHEAT_INDEX_PLUS' | 'CHEAT_TOGGLE' | 'DISK_EJECT_TOGGLE' | 'DISK_NEXT' | 'DISK_PREV' | 'FAST_FORWARD_HOLD' | 'FAST_FORWARD' | 'FRAMEADVANCE' | 'FULLSCREEN_TOGGLE' | 'GRAB_MOUSE_TOGGLE' | 'LOAD_STATE' | 'MENU_TOGGLE' | 'MOVIE_RECORD_TOGGLE' | 'MUTE' | 'NETPLAY_FLIP' | 'OVERLAY_NEXT' | 'PAUSE_TOGGLE' | 'QUIT' | 'RESET' | 'REWIND' | 'SAVE_STATE' | 'SCREENSHOT' | 'SHADER_NEXT' | 'SHADER_PREV' | 'SLOWMOTION' | 'STATE_SLOT_MINUS' | 'STATE_SLOT_PLUS' | 'VOLUME_DOWN' | 'VOLUME_UP'; //#endregion //#region src/classes/emulator-options.d.ts declare class EmulatorOptions { static readonly cacheStorage: { bios: Map, ResolvableFile[]>; core: Map, { /** the name of core */name: string; /** the core's resolvable js file */ js: ResolvableFile; /** the core's resolvable wasm file */ wasm: ResolvableFile; }>; rom: Map, ResolvableFile[]>; shader: Map; sram: Map, ResolvableFile | undefined>; state: Map, ResolvableFile | undefined>; }; beforeLaunch?: (() => Promise | void) | undefined; bios: ResolvableFile[]; cache: { bios: boolean; core: boolean; rom: boolean; shader: boolean; sram: boolean; state: boolean; }; core: { /** the name of core */name: string; /** the core's resolvable js file */ js: ResolvableFile; /** the core's resolvable wasm file */ wasm: ResolvableFile; }; element: HTMLCanvasElement; /** * An option to override the `Module` object for Emscripten. See [Module object](https://emscripten.org/docs/api_reference/module.html). * * This is a low level option and not well tested, so use it at your own risk. */ emscriptenModule: RetroArchEmscriptenModuleOptions; respondToGlobalEvents: boolean; rom: ResolvableFile[]; shader: ResolvableFile[]; signal?: AbortSignal | undefined; /** * * The size of the canvas element. * If it's `'auto'`, the canvas element will keep its original size, or it's width and height will be updated as specified. */ size?: 'auto' | { height: number; width: number; }; sram?: ResolvableFile | undefined; sramType?: 'sav' | 'srm'; state?: ResolvableFile | undefined; waitForInteraction: ((params: { done: () => void; }) => void) | undefined; /** * RetroArch config. * Not all options can make effects in browser. */ get retroarchConfig(): typeof this.nostalgistOptions.retroarchConfig; /** * RetroArch core config. * Not all options can make effects in browser. */ get retroarchCoreConfig(): typeof this.nostalgistOptions.retroarchCoreConfig; get style(): Partial; private loadPromises; private readonly nostalgistOptions; private constructor(); static create(options: NostalgistOptions): Promise; static resetCacheStore(): void; load(): Promise; loadFromCache(): void; saveToCache(): void; updateSRAM(): Promise; updateState(): Promise; private getElement; private updateBios; private updateCore; private updateRom; private updateShader; } //#endregion //#region src/classes/emulator.d.ts type GameStatus = 'initial' | 'paused' | 'running' | 'terminated'; type EmulatorEvent = 'beforeLaunch' | 'onLaunch'; interface EmulatorEmscripten { AL: any; Browser: any; exit: (code: number) => void; JSEvents: any; Module: RetroArchEmscriptenModule; } declare class Emulator { private blobUrlJs; private blobUrlWasm; private cachedKeyboardCodes; private cachedRetroarchConfigMtime; private canvasInitialSize; private emscripten; private readonly eventListeners; private fileSystem; private gameStatus; private readonly globalDOMEventListeners; private readonly messageQueue; private readonly options; private get coreFullName(); private get fs(); private get romBaseName(); private get sramFileDirectory(); private get sramFilePath(); private get sramFileType(); private get stateFileDirectory(); private get stateFilePath(); private get stateThumbnailFilePath(); constructor(options: EmulatorOptions); callCommand(command: string): void; exit(statusCode?: number): void; getEmscripten(): EmulatorEmscripten; getOptions(): EmulatorOptions; getStatus(): GameStatus; launch(): Promise; loadState(state: ResolvableFile): Promise; on(event: EmulatorEvent, callback: (...args: unknown[]) => unknown): this; pause(): void; press(button: string, player?: number, time?: number): Promise; pressDown(button: string, player?: number): void; pressUp(button: string, player?: number): void; resize({ height, width }: { height: number; width: number; }): void; restart(): void; resume(): void; saveSRAM(): Promise; saveState(): Promise<{ state: Blob; thumbnail: Blob | undefined; }>; screenshot(): Promise; sendCommand(msg: RetroArchCommand): void; setup(): Promise; private clearStateFile; private fireKeyboardEvent; private getCurrentRetroarchConfig; private getElementSize; private getKeyboardCode; private guessScreenshotFileName; private keyboardDown; private keyboardPress; private keyboardUp; private postRun; private recordGlobalDOMEventListeners; private removeGlobalDOMEventListeners; private runEventListeners; private runMain; private setupEmscripten; private setupFileSystem; private setupRaConfigFiles; private setupRaShaderFiles; private stdin; private updateKeyboardEventHandlers; } //#endregion //#region src/classes/nostalgist.d.ts declare class Nostalgist { static readonly Nostalgist: typeof Nostalgist; static readonly vendors: { ini: typeof _$ini; path: _$path_browserify0.Path; }; private emulator; private emulatorOptions; private readonly options; private constructor(); static clearCache(): void; /** * Update the global options for `Nostalgist`, so everytime the `Nostalgist.launch` method or shortcuts like `Nostalgist.nes` is called, the default options specified here will be used. * * You may want to specify how to resolve ROMs and RetroArch cores here. * * @see {@link https://nostalgist.js.org/apis/configure/} * * @example * ```js * Nostalgist.configure({ * resolveRom({ file }) { * return `https://example.com/roms/${file}` * }, * // other configuation can also be specified here * }) * ``` */ static configure(options: NostalgistOptionsPartial): void; /** * A shortcut method for Nostalgist.launch method, with some additional default options for GB emulation. * * It will use mgba as the default core for emulation. * * @see {@link https://nostalgist.js.org/apis/gb/} */ static gb(options: NostalgistLaunchRomOptions): Promise; /** * A shortcut method for Nostalgist.launch method, with some additional default options for GBA emulation. * * It will use mgba as the default core for emulation. * * @see {@link https://nostalgist.js.org/apis/gba/} */ static gba(options: NostalgistLaunchRomOptions): Promise; /** * A shortcut method for Nostalgist.launch method, with some additional default options for GBC emulation. * * It will use mgba as the default core for emulation. * * @see {@link https://nostalgist.js.org/apis/gbc/} */ static gbc(options: NostalgistLaunchRomOptions): Promise; /** * Launch an emulator and return a `Promise` of the instance of the emulator. * * @see {@link https://nostalgist.js.org/apis/launch/} * * @example * A simple example: * ```js * const nostalgist = await Nostalgist.launch({ * core: 'fceumm', * rom: 'flappybird.nes', * }) * ``` * * @example * A more complex one: * ```js * const nostalgist = await Nostalgist.launch({ * element: document.querySelector('.emulator-canvas'), * core: 'fbneo', * rom: ['mslug.zip'], * bios: ['neogeo.zip'], * retroarchConfig: { * rewind_enable: true, * savestate_thumbnail_enable: true, * } * runEmulatorManually: false, * resolveCoreJs(core) { * return `https://example.com/core/${core}_libretro.js` * }, * resolveCoreWasm(core) { * return `https://example.com/core/${core}_libretro.wasm` * }, * resolveRom(file) { * return `https://example.com/roms/${file}` * }, * resolveBios(bios) { * return `https://example.com/system/${bios}` * }, * }) * ``` */ static launch(options: NostalgistLaunchOptions): Promise; /** * A shortcut method for Nostalgist.launch method, with some additional default options for Sega Genesis / Megadrive emulation. * * It will use genesis_plus_gx as the default core for emulation. * * @see {@link https://nostalgist.js.org/apis/megadrive/} */ static megadrive(options: NostalgistLaunchRomOptions): Promise; /** * A shortcut method for Nostalgist.launch method, with some additional default options for NES emulation. * * It will use fceumm as the default core for emulation. * * @see {@link https://nostalgist.js.org/apis/nes/} */ static nes(options: NostalgistLaunchRomOptions): Promise; static prepare(options: NostalgistLaunchOptions): Promise; /** * Reset the global configuation set by `Nostalgist.configure` to default. * * @see {@link https://nostalgist.js.org/apis/reset-to-default/} */ static resetToDefault(): void; /** * A shortcut method for Nostalgist.launch method, with some additional default options for SNES emulation. * * It will use snes9x as the default core for emulation. * * @see {@link https://nostalgist.js.org/apis/snes/} */ static snes(options: NostalgistLaunchRomOptions): Promise; private static launchSystem; /** * Exit the current running game and the emulator. Remove the canvas element used by the emulator if needed. * * @see {@link https://nostalgist.js.org/apis/exit/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.exit() * ``` * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * // the canvas element will not be removed * nostalgist.exit({ removeCanvas: false }) * ``` */ exit({ removeCanvas }?: { removeCanvas?: boolean; }): void; /** * Get the canvas DOM element that the current emulator is using. * * @see {@link https://nostalgist.js.org/apis/get-canvas/} */ getCanvas(): HTMLCanvasElement; /** * Get the Emscripten object exposed by RetroArch. * * @see {@link https://nostalgist.js.org/apis/get-emscripten-module/} */ getEmscripten(): any; /** * Get the Emscripten AL object exposed by RetroArch. * * @see {@link https://nostalgist.js.org/apis/get-emscripten-module/} */ getEmscriptenAL(): any; /** * Get the Emscripten FS object of the current running emulator. * * @see {@link https://nostalgist.js.org/apis/get-emscripten-fs/} */ getEmscriptenFS(): any; /** * Get the Emscripten Module object of the current running emulator. * * @see {@link https://nostalgist.js.org/apis/get-emscripten-module/} */ getEmscriptenModule(): RetroArchEmscriptenModule; getEmulator(): Emulator; getEmulatorOptions(): EmulatorOptions; getOptions(): NostalgistOptions; /** * Get the status of current emulation. * * @see {@link https://nostalgist.js.org/apis/get-status/} * * @returns One of 'initial' | 'paused' | 'running' | 'terminated' * @example * ```js * const nostalgist = await Nostalgist.prepare('flappybird.nes') * console.log(nostalgist.getStatus()) // 'initial' * await nostalgist.launch() * console.log(nostalgist.getStatus()) // 'running' * await nostalgist.pause() * console.log(nostalgist.getStatus()) // 'paused' * nostalgist.exit() * console.log(nostalgist.getStatus()) // 'terminated' * ``` */ getStatus(): "initial" | "paused" | "running" | "terminated"; /** * Launch the emulator, if it's not launched, because of the launch option `runEmulatorManually` being set to `true`. * @deprecated Use the `start` method instead. * @see {@link https://nostalgist.js.org/apis/launch-emulator/} */ launchEmulator(): Promise; /** * Load a state for the current running emulator and game. * * @see {@link https://nostalgist.js.org/apis/load-state/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * // save the state * const { state } = await nostalgist.saveState() * * // load the state * await nostalgist.loadState(state) * ``` */ loadState(state: ResolvableFileInput): Promise; /** * Pause the current running game. * * @see {@link https://nostalgist.js.org/apis/pause/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.pause() * ``` */ pause(): void; /** * Press a button and then release it programmatically. Analog Joysticks are not supported by now. * * @see {@link https://nostalgist.js.org/apis/press/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * await nostalgist.press('start') * ``` */ press(options: { button: string; player?: number; time?: number; } | string): Promise; /** * Press a button programmatically. Analog Joysticks are not supported by now. * * @see {@link https://nostalgist.js.org/apis/press-down/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.pressDown('start') * ``` */ pressDown(options: { button: string; player?: number; } | string): void; /** * Release it programmatically. Analog Joysticks are not supported by now. * * @see {@link https://nostalgist.js.org/apis/press-up/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.pressUp('start') * ``` */ pressUp(options: { button: string; player?: number; } | string): void; /** * Resize the canvas element of the emulator. * * @see {@link https://nostalgist.js.org/apis/resize/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.resize({ width: 1000, height: 800 }) * ``` */ resize(size: { height: number; width: number; }): void; /** * Restart the current running game. * * @see {@link https://nostalgist.js.org/apis/restart/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.restart() * ``` */ restart(): void; /** * Resume the current running game, if it has been paused by `pause`. * * @see {@link https://nostalgist.js.org/apis/resume/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.pause() * await new Promise(resolve => setTimeout(resolve, 1000)) * nostalgist.resume() * ``` */ resume(): void; /** * Save the SRAM of the current running game. * * @see {@link https://nostalgist.js.org/apis/save-sram/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * const sram = await nostalgist.saveSRAM() * ``` */ saveSRAM(): Promise; /** * Save the state of the current running game. * * @see {@link https://nostalgist.js.org/apis/save-state/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * // save the state * const { state } = await nostalgist.saveState() * * // load the state * await nostalgist.loadState(state) * ``` * @returns * A Promise of the state of the current running game. * * Its type is like `Promise<{ state: Blob, thumbnail: Blob | undefined }>`. * * If RetroArch is launched with the option `savestate_thumbnail_enable` set to `true`, which is the default value inside Nostalgist.js, then the `thumbnail` will be a `Blob`. Otherwise the `thumbnail` will be `undefined`. */ saveState(): Promise<{ state: Blob; thumbnail: Blob | undefined; }>; /** * Take a screenshot for the current running game. * * @see {@link https://nostalgist.js.org/apis/screenshot/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * const blob = await nostalgist.screenshot() * ``` */ screenshot(): Promise; /** * Send a command to RetroArch. * The commands are listed here: https://docs.libretro.com/development/retroarch/network-control-interface/#commands . * But not all of them are supported inside a browser. * * @see {@link https://nostalgist.js.org/apis/send-command/} * * @example * ```js * const nostalgist = await Nostalgist.nes('flappybird.nes') * * nostalgist.sendCommand('FAST_FORWARD') * ``` */ sendCommand(command: RetroArchCommand): void; /** * Start the emulator if it's not started because of the instance is returned by `Nostalgist.prepare` rather than `Nostalgist.launch`, or the option `runEmulatorManually` for `Nostalgist.launch` being set to `true`. * * @see {@link https://nostalgist.js.org/apis/start/} */ start(): Promise; /** * Load options and then launch corresponding emulator if should */ private load; private setupEmulator; } //#endregion export { Nostalgist };