diff --git a/libretro.h b/libretro.h index f765a66047..7fd75067c8 100755 --- a/libretro.h +++ b/libretro.h @@ -435,7 +435,7 @@ struct retro_keyboard_callback retro_keyboard_event_t callback; }; -// Callback for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. +// Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. // Should be set for implementations which can swap out multiple disk images in runtime. // If the implementation can do this automatically, it should strive to do so. // However, there are cases where the user must manually do so. @@ -443,9 +443,10 @@ struct retro_keyboard_callback // Overview: To swap a disk image, eject the disk image with set_eject_state(true). // Set the disk index with set_image_index(index). Insert the disk again with set_eject_state(false). -// If ejected is true, "ejects" the virtual disk tray. When ejected, the disk image index can be set. +// If ejected is true, "ejects" the virtual disk tray. +// When ejected, the disk image index can be set. typedef bool (*retro_set_eject_state_t)(bool ejected); -// Gets current eject state. The initial state is not ejected. +// Gets current eject state. The initial state is 'not ejected'. typedef bool (*retro_get_eject_state_t)(void); // Gets current disk index. First disk is index 0. // If return value is >= get_num_images(), no disk is currently inserted. @@ -455,6 +456,16 @@ typedef unsigned (*retro_get_image_index_t)(void); typedef bool (*retro_set_image_index_t)(unsigned index); // Gets total number of images which are available to use. typedef unsigned (*retro_get_num_images_t)(void); +// +// Replaces the disk image associated with index. +// Arguments to pass in info have same requirements as retro_load_game(). +// Virtual disk tray must be ejected when calling this. +struct retro_game_info; +typedef bool (*retro_replace_image_index_t)(unsigned index, const struct retro_game_info *info); +// Adds a new valid index (get_num_images()) to the internal disk list. +// This will increment subsequent return values from get_num_images() by 1. +// This image index cannot be used until a disk image has been set with replace_image_index. +typedef bool (*retro_add_image_index_t)(void); struct retro_disk_control_callback { @@ -464,6 +475,9 @@ struct retro_disk_control_callback retro_get_image_index_t get_image_index; retro_set_image_index_t set_image_index; retro_get_num_images_t get_num_images; + + retro_replace_image_index_t replace_image_index; + retro_add_image_index_t add_image_index; }; enum retro_pixel_format