aboutsummaryrefslogtreecommitdiff
path: root/libretro.h
diff options
context:
space:
mode:
authoraliaspider2014-10-30 00:23:30 +0100
committeraliaspider2014-10-30 00:23:30 +0100
commit804169dd621a3ad3eec1a32ce30350de667fee80 (patch)
tree5bce839a3652f6725d50639cccd3f589ee901515 /libretro.h
parent5382d193371c8db303d056b87b8ffd51316bf2e0 (diff)
downloadsnes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.tar.gz
snes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.tar.bz2
snes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.zip
apply a facelift
Diffstat (limited to 'libretro.h')
-rw-r--r--libretro.h866
1 files changed, 433 insertions, 433 deletions
diff --git a/libretro.h b/libretro.h
index c8fb147..e6063b9 100644
--- a/libretro.h
+++ b/libretro.h
@@ -425,9 +425,9 @@ enum retro_mod
* passing NULL to video frame callback.
*/
- /* Environ 4, 5 are no longer supported (GET_VARIABLE / SET_VARIABLES),
- * and reserved to avoid possible ABI clash.
- */
+/* Environ 4, 5 are no longer supported (GET_VARIABLE / SET_VARIABLES),
+ * and reserved to avoid possible ABI clash.
+ */
#define RETRO_ENVIRONMENT_SET_MESSAGE 6 /* const struct retro_message * --
* Sets a message to be displayed in implementation-specific manner
@@ -442,415 +442,415 @@ enum retro_mod
* way to shutdown the game from a menu item or similar.
*/
#define RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL 8
- /* const unsigned * --
- * Gives a hint to the frontend how demanding this implementation
- * is on a system. E.g. reporting a level of 2 means
- * this implementation should run decently on all frontends
- * of level 2 and up.
- *
- * It can be used by the frontend to potentially warn
- * about too demanding implementations.
- *
- * The levels are "floating".
- *
- * This function can be called on a per-game basis,
- * as certain games an implementation can play might be
- * particularly demanding.
- * If called, it should be called in retro_load_game().
- */
+/* const unsigned * --
+ * Gives a hint to the frontend how demanding this implementation
+ * is on a system. E.g. reporting a level of 2 means
+ * this implementation should run decently on all frontends
+ * of level 2 and up.
+ *
+ * It can be used by the frontend to potentially warn
+ * about too demanding implementations.
+ *
+ * The levels are "floating".
+ *
+ * This function can be called on a per-game basis,
+ * as certain games an implementation can play might be
+ * particularly demanding.
+ * If called, it should be called in retro_load_game().
+ */
#define RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY 9
- /* const char ** --
- * Returns the "system" directory of the frontend.
- * This directory can be used to store system specific
- * content such as BIOSes, configuration data, etc.
- * The returned value can be NULL.
- * If so, no such directory is defined,
- * and it's up to the implementation to find a suitable directory.
- *
- * NOTE: Some cores used this folder also for "save" data such as
- * memory cards, etc, for lack of a better place to put it.
- * This is now discouraged, and if possible, cores should try to
- * use the new GET_SAVE_DIRECTORY.
- */
+/* const char ** --
+ * Returns the "system" directory of the frontend.
+ * This directory can be used to store system specific
+ * content such as BIOSes, configuration data, etc.
+ * The returned value can be NULL.
+ * If so, no such directory is defined,
+ * and it's up to the implementation to find a suitable directory.
+ *
+ * NOTE: Some cores used this folder also for "save" data such as
+ * memory cards, etc, for lack of a better place to put it.
+ * This is now discouraged, and if possible, cores should try to
+ * use the new GET_SAVE_DIRECTORY.
+ */
#define RETRO_ENVIRONMENT_SET_PIXEL_FORMAT 10
- /* const enum retro_pixel_format * --
- * Sets the internal pixel format used by the implementation.
- * The default pixel format is RETRO_PIXEL_FORMAT_0RGB1555.
- * This pixel format however, is deprecated (see enum retro_pixel_format).
- * If the call returns false, the frontend does not support this pixel
- * format.
- *
- * This function should be called inside retro_load_game() or
- * retro_get_system_av_info().
- */
+/* const enum retro_pixel_format * --
+ * Sets the internal pixel format used by the implementation.
+ * The default pixel format is RETRO_PIXEL_FORMAT_0RGB1555.
+ * This pixel format however, is deprecated (see enum retro_pixel_format).
+ * If the call returns false, the frontend does not support this pixel
+ * format.
+ *
+ * This function should be called inside retro_load_game() or
+ * retro_get_system_av_info().
+ */
#define RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS 11
- /* const struct retro_input_descriptor * --
- * Sets an array of retro_input_descriptors.
- * It is up to the frontend to present this in a usable way.
- * The array is terminated by retro_input_descriptor::description
- * being set to NULL.
- * This function can be called at any time, but it is recommended
- * to call it as early as possible.
- */
+/* const struct retro_input_descriptor * --
+ * Sets an array of retro_input_descriptors.
+ * It is up to the frontend to present this in a usable way.
+ * The array is terminated by retro_input_descriptor::description
+ * being set to NULL.
+ * This function can be called at any time, but it is recommended
+ * to call it as early as possible.
+ */
#define RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK 12
- /* const struct retro_keyboard_callback * --
- * Sets a callback function used to notify core about keyboard events.
- */
+/* const struct retro_keyboard_callback * --
+ * Sets a callback function used to notify core about keyboard events.
+ */
#define RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE 13
- /* const struct retro_disk_control_callback * --
- * Sets an interface which frontend can use to eject and insert
- * disk images.
- * This is used for games which consist of multiple images and
- * must be manually swapped out by the user (e.g. PSX).
- */
+/* const struct retro_disk_control_callback * --
+ * Sets an interface which frontend can use to eject and insert
+ * disk images.
+ * This is used for games which consist of multiple images and
+ * must be manually swapped out by the user (e.g. PSX).
+ */
#define RETRO_ENVIRONMENT_SET_HW_RENDER 14
- /* struct retro_hw_render_callback * --
- * Sets an interface to let a libretro core render with
- * hardware acceleration.
- * Should be called in retro_load_game().
- * If successful, libretro cores will be able to render to a
- * frontend-provided framebuffer.
- * The size of this framebuffer will be at least as large as
- * max_width/max_height provided in get_av_info().
- * If HW rendering is used, pass only RETRO_HW_FRAME_BUFFER_VALID or
- * NULL to retro_video_refresh_t.
- */
+/* struct retro_hw_render_callback * --
+ * Sets an interface to let a libretro core render with
+ * hardware acceleration.
+ * Should be called in retro_load_game().
+ * If successful, libretro cores will be able to render to a
+ * frontend-provided framebuffer.
+ * The size of this framebuffer will be at least as large as
+ * max_width/max_height provided in get_av_info().
+ * If HW rendering is used, pass only RETRO_HW_FRAME_BUFFER_VALID or
+ * NULL to retro_video_refresh_t.
+ */
#define RETRO_ENVIRONMENT_GET_VARIABLE 15
- /* struct retro_variable * --
- * Interface to acquire user-defined information from environment
- * that cannot feasibly be supported in a multi-system way.
- * 'key' should be set to a key which has already been set by
- * SET_VARIABLES.
- * 'data' will be set to a value or NULL.
- */
+/* struct retro_variable * --
+ * Interface to acquire user-defined information from environment
+ * that cannot feasibly be supported in a multi-system way.
+ * 'key' should be set to a key which has already been set by
+ * SET_VARIABLES.
+ * 'data' will be set to a value or NULL.
+ */
#define RETRO_ENVIRONMENT_SET_VARIABLES 16
- /* const struct retro_variable * --
- * Allows an implementation to signal the environment
- * which variables it might want to check for later using
- * GET_VARIABLE.
- * This allows the frontend to present these variables to
- * a user dynamically.
- * This should be called as early as possible (ideally in
- * retro_set_environment).
- *
- * 'data' points to an array of retro_variable structs
- * terminated by a { NULL, NULL } element.
- * retro_variable::key should be namespaced to not collide
- * with other implementations' keys. E.g. A core called
- * 'foo' should use keys named as 'foo_option'.
- * retro_variable::value should contain a human readable
- * description of the key as well as a '|' delimited list
- * of expected values.
- *
- * The number of possible options should be very limited,
- * i.e. it should be feasible to cycle through options
- * without a keyboard.
- *
- * First entry should be treated as a default.
- *
- * Example entry:
- * { "foo_option", "Speed hack coprocessor X; false|true" }
- *
- * Text before first ';' is description. This ';' must be
- * followed by a space, and followed by a list of possible
- * values split up with '|'.
- *
- * Only strings are operated on. The possible values will
- * generally be displayed and stored as-is by the frontend.
- */
+/* const struct retro_variable * --
+ * Allows an implementation to signal the environment
+ * which variables it might want to check for later using
+ * GET_VARIABLE.
+ * This allows the frontend to present these variables to
+ * a user dynamically.
+ * This should be called as early as possible (ideally in
+ * retro_set_environment).
+ *
+ * 'data' points to an array of retro_variable structs
+ * terminated by a { NULL, NULL } element.
+ * retro_variable::key should be namespaced to not collide
+ * with other implementations' keys. E.g. A core called
+ * 'foo' should use keys named as 'foo_option'.
+ * retro_variable::value should contain a human readable
+ * description of the key as well as a '|' delimited list
+ * of expected values.
+ *
+ * The number of possible options should be very limited,
+ * i.e. it should be feasible to cycle through options
+ * without a keyboard.
+ *
+ * First entry should be treated as a default.
+ *
+ * Example entry:
+ * { "foo_option", "Speed hack coprocessor X; false|true" }
+ *
+ * Text before first ';' is description. This ';' must be
+ * followed by a space, and followed by a list of possible
+ * values split up with '|'.
+ *
+ * Only strings are operated on. The possible values will
+ * generally be displayed and stored as-is by the frontend.
+ */
#define RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE 17
- /* bool * --
- * Result is set to true if some variables are updated by
- * frontend since last call to RETRO_ENVIRONMENT_GET_VARIABLE.
- * Variables should be queried with GET_VARIABLE.
- */
+/* bool * --
+ * Result is set to true if some variables are updated by
+ * frontend since last call to RETRO_ENVIRONMENT_GET_VARIABLE.
+ * Variables should be queried with GET_VARIABLE.
+ */
#define RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME 18
- /* const bool * --
- * If true, the libretro implementation supports calls to
- * retro_load_game() with NULL as argument.
- * Used by cores which can run without particular game data.
- * This should be called within retro_set_environment() only.
- */
+/* const bool * --
+ * If true, the libretro implementation supports calls to
+ * retro_load_game() with NULL as argument.
+ * Used by cores which can run without particular game data.
+ * This should be called within retro_set_environment() only.
+ */
#define RETRO_ENVIRONMENT_GET_LIBRETRO_PATH 19
- /* const char ** --
- * Retrieves the absolute path from where this libretro
- * implementation was loaded.
- * NULL is returned if the libretro was loaded statically
- * (i.e. linked statically to frontend), or if the path cannot be
- * determined.
- * Mostly useful in cooperation with SET_SUPPORT_NO_GAME as assets can
- * be loaded without ugly hacks.
- */
+/* const char ** --
+ * Retrieves the absolute path from where this libretro
+ * implementation was loaded.
+ * NULL is returned if the libretro was loaded statically
+ * (i.e. linked statically to frontend), or if the path cannot be
+ * determined.
+ * Mostly useful in cooperation with SET_SUPPORT_NO_GAME as assets can
+ * be loaded without ugly hacks.
+ */
- /* Environment 20 was an obsolete version of SET_AUDIO_CALLBACK.
- * It was not used by any known core at the time,
- * and was removed from the API. */
+/* Environment 20 was an obsolete version of SET_AUDIO_CALLBACK.
+ * It was not used by any known core at the time,
+ * and was removed from the API. */
#define RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK 22
- /* const struct retro_audio_callback * --
- * Sets an interface which is used to notify a libretro core about audio
- * being available for writing.
- * The callback can be called from any thread, so a core using this must
- * have a thread safe audio implementation.
- * It is intended for games where audio and video are completely
- * asynchronous and audio can be generated on the fly.
- * This interface is not recommended for use with emulators which have
- * highly synchronous audio.
- *
- * The callback only notifies about writability; the libretro core still
- * has to call the normal audio callbacks
- * to write audio. The audio callbacks must be called from within the
- * notification callback.
- * The amount of audio data to write is up to the implementation.
- * Generally, the audio callback will be called continously in a loop.
- *
- * Due to thread safety guarantees and lack of sync between audio and
- * video, a frontend can selectively disallow this interface based on
- * internal configuration. A core using this interface must also
- * implement the "normal" audio interface.
- *
- * A libretro core using SET_AUDIO_CALLBACK should also make use of
- * SET_FRAME_TIME_CALLBACK.
- */
+/* const struct retro_audio_callback * --
+ * Sets an interface which is used to notify a libretro core about audio
+ * being available for writing.
+ * The callback can be called from any thread, so a core using this must
+ * have a thread safe audio implementation.
+ * It is intended for games where audio and video are completely
+ * asynchronous and audio can be generated on the fly.
+ * This interface is not recommended for use with emulators which have
+ * highly synchronous audio.
+ *
+ * The callback only notifies about writability; the libretro core still
+ * has to call the normal audio callbacks
+ * to write audio. The audio callbacks must be called from within the
+ * notification callback.
+ * The amount of audio data to write is up to the implementation.
+ * Generally, the audio callback will be called continously in a loop.
+ *
+ * Due to thread safety guarantees and lack of sync between audio and
+ * video, a frontend can selectively disallow this interface based on
+ * internal configuration. A core using this interface must also
+ * implement the "normal" audio interface.
+ *
+ * A libretro core using SET_AUDIO_CALLBACK should also make use of
+ * SET_FRAME_TIME_CALLBACK.
+ */
#define RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK 21
- /* const struct retro_frame_time_callback * --
- * Lets the core know how much time has passed since last
- * invocation of retro_run().
- * The frontend can tamper with the timing to fake fast-forward,
- * slow-motion, frame stepping, etc.
- * In this case the delta time will use the reference value
- * in frame_time_callback..
- */
+/* const struct retro_frame_time_callback * --
+ * Lets the core know how much time has passed since last
+ * invocation of retro_run().
+ * The frontend can tamper with the timing to fake fast-forward,
+ * slow-motion, frame stepping, etc.
+ * In this case the delta time will use the reference value
+ * in frame_time_callback..
+ */
#define RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE 23
- /* struct retro_rumble_interface * --
- * Gets an interface which is used by a libretro core to set
- * state of rumble motors in controllers.
- * A strong and weak motor is supported, and they can be
- * controlled indepedently.
- */
+/* struct retro_rumble_interface * --
+ * Gets an interface which is used by a libretro core to set
+ * state of rumble motors in controllers.
+ * A strong and weak motor is supported, and they can be
+ * controlled indepedently.
+ */
#define RETRO_ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES 24
- /* uint64_t * --
- * Gets a bitmask telling which device type are expected to be
- * handled properly in a call to retro_input_state_t.
- * Devices which are not handled or recognized always return
- * 0 in retro_input_state_t.
- * Example bitmask: caps = (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG).
- * Should only be called in retro_run().
- */
+/* uint64_t * --
+ * Gets a bitmask telling which device type are expected to be
+ * handled properly in a call to retro_input_state_t.
+ * Devices which are not handled or recognized always return
+ * 0 in retro_input_state_t.
+ * Example bitmask: caps = (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG).
+ * Should only be called in retro_run().
+ */
#define RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE (25 | RETRO_ENVIRONMENT_EXPERIMENTAL)
- /* struct retro_sensor_interface * --
- * Gets access to the sensor interface.
- * The purpose of this interface is to allow
- * setting state related to sensors such as polling rate,
- * enabling/disable it entirely, etc.
- * Reading sensor state is done via the normal
- * input_state_callback API.
- */
+/* struct retro_sensor_interface * --
+ * Gets access to the sensor interface.
+ * The purpose of this interface is to allow
+ * setting state related to sensors such as polling rate,
+ * enabling/disable it entirely, etc.
+ * Reading sensor state is done via the normal
+ * input_state_callback API.
+ */
#define RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE (26 | RETRO_ENVIRONMENT_EXPERIMENTAL)
- /* struct retro_camera_callback * --
- * Gets an interface to a video camera driver.
- * A libretro core can use this interface to get access to a
- * video camera.
- * New video frames are delivered in a callback in same
- * thread as retro_run().
- *
- * GET_CAMERA_INTERFACE should be called in retro_load_game().
- *
- * Depending on the camera implementation used, camera frames
- * will be delivered as a raw framebuffer,
- * or as an OpenGL texture directly.
- *
- * The core has to tell the frontend here which types of
- * buffers can be handled properly.
- * An OpenGL texture can only be handled when using a
- * libretro GL core (SET_HW_RENDER).
- * It is recommended to use a libretro GL core when
- * using camera interface.
- *
- * The camera is not started automatically. The retrieved start/stop
- * functions must be used to explicitly
- * start and stop the camera driver.
- */
+/* struct retro_camera_callback * --
+ * Gets an interface to a video camera driver.
+ * A libretro core can use this interface to get access to a
+ * video camera.
+ * New video frames are delivered in a callback in same
+ * thread as retro_run().
+ *
+ * GET_CAMERA_INTERFACE should be called in retro_load_game().
+ *
+ * Depending on the camera implementation used, camera frames
+ * will be delivered as a raw framebuffer,
+ * or as an OpenGL texture directly.
+ *
+ * The core has to tell the frontend here which types of
+ * buffers can be handled properly.
+ * An OpenGL texture can only be handled when using a
+ * libretro GL core (SET_HW_RENDER).
+ * It is recommended to use a libretro GL core when
+ * using camera interface.
+ *
+ * The camera is not started automatically. The retrieved start/stop
+ * functions must be used to explicitly
+ * start and stop the camera driver.
+ */
#define RETRO_ENVIRONMENT_GET_LOG_INTERFACE 27
- /* struct retro_log_callback * --
- * Gets an interface for logging. This is useful for
- * logging in a cross-platform way
- * as certain platforms cannot use use stderr for logging.
- * It also allows the frontend to
- * show logging information in a more suitable way.
- * If this interface is not used, libretro cores should
- * log to stderr as desired.
- */
+/* struct retro_log_callback * --
+ * Gets an interface for logging. This is useful for
+ * logging in a cross-platform way
+ * as certain platforms cannot use use stderr for logging.
+ * It also allows the frontend to
+ * show logging information in a more suitable way.
+ * If this interface is not used, libretro cores should
+ * log to stderr as desired.
+ */
#define RETRO_ENVIRONMENT_GET_PERF_INTERFACE 28
- /* struct retro_perf_callback * --
- * Gets an interface for performance counters. This is useful
- * for performance logging in a cross-platform way and for detecting
- * architecture-specific features, such as SIMD support.
- */
+/* struct retro_perf_callback * --
+ * Gets an interface for performance counters. This is useful
+ * for performance logging in a cross-platform way and for detecting
+ * architecture-specific features, such as SIMD support.
+ */
#define RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE 29
- /* struct retro_location_callback * --
- * Gets access to the location interface.
- * The purpose of this interface is to be able to retrieve
- * location-based information from the host device,
- * such as current latitude / longitude.
- */
+/* struct retro_location_callback * --
+ * Gets access to the location interface.
+ * The purpose of this interface is to be able to retrieve
+ * location-based information from the host device,
+ * such as current latitude / longitude.
+ */
#define RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY 30
- /* const char ** --
- * Returns the "content" directory of the frontend.
- * This directory can be used to store specific assets that the
- * core relies upon, such as art assets,
- * input data, etc etc.
- * The returned value can be NULL.
- * If so, no such directory is defined,
- * and it's up to the implementation to find a suitable directory.
- */
+/* const char ** --
+ * Returns the "content" directory of the frontend.
+ * This directory can be used to store specific assets that the
+ * core relies upon, such as art assets,
+ * input data, etc etc.
+ * The returned value can be NULL.
+ * If so, no such directory is defined,
+ * and it's up to the implementation to find a suitable directory.
+ */
#define RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY 31
- /* const char ** --
- * Returns the "save" directory of the frontend.
- * This directory can be used to store SRAM, memory cards,
- * high scores, etc, if the libretro core
- * cannot use the regular memory interface (retro_get_memory_data()).
- *
- * NOTE: libretro cores used to check GET_SYSTEM_DIRECTORY for
- * similar things before.
- * They should still check GET_SYSTEM_DIRECTORY if they want to
- * be backwards compatible.
- * The path here can be NULL. It should only be non-NULL if the
- * frontend user has set a specific save path.
- */
+/* const char ** --
+ * Returns the "save" directory of the frontend.
+ * This directory can be used to store SRAM, memory cards,
+ * high scores, etc, if the libretro core
+ * cannot use the regular memory interface (retro_get_memory_data()).
+ *
+ * NOTE: libretro cores used to check GET_SYSTEM_DIRECTORY for
+ * similar things before.
+ * They should still check GET_SYSTEM_DIRECTORY if they want to
+ * be backwards compatible.
+ * The path here can be NULL. It should only be non-NULL if the
+ * frontend user has set a specific save path.
+ */
#define RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO 32
- /* const struct retro_system_av_info * --
- * Sets a new av_info structure. This can only be called from
- * within retro_run().
- * This should *only* be used if the core is completely altering the
- * internal resolutions, aspect ratios, timings, sampling rate, etc.
- * Calling this can require a full reinitialization of video/audio
- * drivers in the frontend,
- *
- * so it is important to call it very sparingly, and usually only with
- * the users explicit consent.
- * An eventual driver reinitialize will happen so that video and
- * audio callbacks
- * happening after this call within the same retro_run() call will
- * target the newly initialized driver.
- *
- * This callback makes it possible to support configurable resolutions
- * in games, which can be useful to
- * avoid setting the "worst case" in max_width/max_height.
- *
- * ***HIGHLY RECOMMENDED*** Do not call this callback every time
- * resolution changes in an emulator core if it's
- * expected to be a temporary change, for the reasons of possible
- * driver reinitialization.
- * This call is not a free pass for not trying to provide
- * correct values in retro_get_system_av_info(). If you need to change
- * things like aspect ratio or nominal width/height,
- * use RETRO_ENVIRONMENT_SET_GEOMETRY, which is a softer variant
- * of SET_SYSTEM_AV_INFO.
- *
- * If this returns false, the frontend does not acknowledge a
- * changed av_info struct.
- */
+/* const struct retro_system_av_info * --
+ * Sets a new av_info structure. This can only be called from
+ * within retro_run().
+ * This should *only* be used if the core is completely altering the
+ * internal resolutions, aspect ratios, timings, sampling rate, etc.
+ * Calling this can require a full reinitialization of video/audio
+ * drivers in the frontend,
+ *
+ * so it is important to call it very sparingly, and usually only with
+ * the users explicit consent.
+ * An eventual driver reinitialize will happen so that video and
+ * audio callbacks
+ * happening after this call within the same retro_run() call will
+ * target the newly initialized driver.
+ *
+ * This callback makes it possible to support configurable resolutions
+ * in games, which can be useful to
+ * avoid setting the "worst case" in max_width/max_height.
+ *
+ * ***HIGHLY RECOMMENDED*** Do not call this callback every time
+ * resolution changes in an emulator core if it's
+ * expected to be a temporary change, for the reasons of possible
+ * driver reinitialization.
+ * This call is not a free pass for not trying to provide
+ * correct values in retro_get_system_av_info(). If you need to change
+ * things like aspect ratio or nominal width/height,
+ * use RETRO_ENVIRONMENT_SET_GEOMETRY, which is a softer variant
+ * of SET_SYSTEM_AV_INFO.
+ *
+ * If this returns false, the frontend does not acknowledge a
+ * changed av_info struct.
+ */
#define RETRO_ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK 33
- /* const struct retro_get_proc_address_interface * --
- * Allows a libretro core to announce support for the
- * get_proc_address() interface.
- * This interface allows for a standard way to extend libretro where
- * use of environment calls are too indirect,
- * e.g. for cases where the frontend wants to call directly into the core.
- *
- * If a core wants to expose this interface, SET_PROC_ADDRESS_CALLBACK
- * **MUST** be called from within retro_set_environment().
- */
+/* const struct retro_get_proc_address_interface * --
+ * Allows a libretro core to announce support for the
+ * get_proc_address() interface.
+ * This interface allows for a standard way to extend libretro where
+ * use of environment calls are too indirect,
+ * e.g. for cases where the frontend wants to call directly into the core.
+ *
+ * If a core wants to expose this interface, SET_PROC_ADDRESS_CALLBACK
+ * **MUST** be called from within retro_set_environment().
+ */
#define RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO 34
- /* const struct retro_subsystem_info * --
- * This environment call introduces the concept of libretro "subsystems".
- * A subsystem is a variant of a libretro core which supports
- * different kinds of games.
- * The purpose of this is to support e.g. emulators which might
- * have special needs, e.g. Super Nintendo's Super GameBoy, Sufami Turbo.
- * It can also be used to pick among subsystems in an explicit way
- * if the libretro implementation is a multi-system emulator itself.
- *
- * Loading a game via a subsystem is done with retro_load_game_special(),
- * and this environment call allows a libretro core to expose which
- * subsystems are supported for use with retro_load_game_special().
- * A core passes an array of retro_game_special_info which is terminated
- * with a zeroed out retro_game_special_info struct.
- *
- * If a core wants to use this functionality, SET_SUBSYSTEM_INFO
- * **MUST** be called from within retro_set_environment().
- */
+/* const struct retro_subsystem_info * --
+ * This environment call introduces the concept of libretro "subsystems".
+ * A subsystem is a variant of a libretro core which supports
+ * different kinds of games.
+ * The purpose of this is to support e.g. emulators which might
+ * have special needs, e.g. Super Nintendo's Super GameBoy, Sufami Turbo.
+ * It can also be used to pick among subsystems in an explicit way
+ * if the libretro implementation is a multi-system emulator itself.
+ *
+ * Loading a game via a subsystem is done with retro_load_game_special(),
+ * and this environment call allows a libretro core to expose which
+ * subsystems are supported for use with retro_load_game_special().
+ * A core passes an array of retro_game_special_info which is terminated
+ * with a zeroed out retro_game_special_info struct.
+ *
+ * If a core wants to use this functionality, SET_SUBSYSTEM_INFO
+ * **MUST** be called from within retro_set_environment().
+ */
#define RETRO_ENVIRONMENT_SET_CONTROLLER_INFO 35
- /* const struct retro_controller_info * --
- * This environment call lets a libretro core tell the frontend
- * which controller types are recognized in calls to
- * retro_set_controller_port_device().
- *
- * Some emulators such as Super Nintendo
- * support multiple lightgun types which must be specifically
- * selected from.
- * It is therefore sometimes necessary for a frontend to be able
- * to tell the core about a special kind of input device which is
- * not covered by the libretro input API.
- *
- * In order for a frontend to understand the workings of an input device,
- * it must be a specialized type
- * of the generic device types already defined in the libretro API.
- *
- * Which devices are supported can vary per input port.
- * The core must pass an array of const struct retro_controller_info which
- * is terminated with a blanked out struct. Each element of the struct
- * corresponds to an ascending port index to
- * retro_set_controller_port_device().
- * Even if special device types are set in the libretro core,
- * libretro should only poll input based on the base input device types.
- */
+/* const struct retro_controller_info * --
+ * This environment call lets a libretro core tell the frontend
+ * which controller types are recognized in calls to
+ * retro_set_controller_port_device().
+ *
+ * Some emulators such as Super Nintendo
+ * support multiple lightgun types which must be specifically
+ * selected from.
+ * It is therefore sometimes necessary for a frontend to be able
+ * to tell the core about a special kind of input device which is
+ * not covered by the libretro input API.
+ *
+ * In order for a frontend to understand the workings of an input device,
+ * it must be a specialized type
+ * of the generic device types already defined in the libretro API.
+ *
+ * Which devices are supported can vary per input port.
+ * The core must pass an array of const struct retro_controller_info which
+ * is terminated with a blanked out struct. Each element of the struct
+ * corresponds to an ascending port index to
+ * retro_set_controller_port_device().
+ * Even if special device types are set in the libretro core,
+ * libretro should only poll input based on the base input device types.
+ */
#define RETRO_ENVIRONMENT_SET_MEMORY_MAPS (36 | RETRO_ENVIRONMENT_EXPERIMENTAL)
- /* const struct retro_memory_map * --
- * This environment call lets a libretro core tell the frontend
- * about the memory maps this core emulates.
- * This can be used to implement, for example, cheats in a core-agnostic way.
- *
- * Should only be used by emulators; it doesn't make much sense for
- * anything else.
- * It is recommended to expose all relevant pointers through
- * retro_get_memory_* as well.
- *
- * Can be called from retro_init and retro_load_game.
- */
+/* const struct retro_memory_map * --
+ * This environment call lets a libretro core tell the frontend
+ * about the memory maps this core emulates.
+ * This can be used to implement, for example, cheats in a core-agnostic way.
+ *
+ * Should only be used by emulators; it doesn't make much sense for
+ * anything else.
+ * It is recommended to expose all relevant pointers through
+ * retro_get_memory_* as well.
+ *
+ * Can be called from retro_init and retro_load_game.
+ */
#define RETRO_ENVIRONMENT_SET_GEOMETRY 37
- /* const struct retro_game_geometry * --
- * This environment call is similar to SET_SYSTEM_AV_INFO for changing
- * video parameters, but provides a guarantee that drivers will not be
- * reinitialized.
- * This can only be called from within retro_run().
- *
- * The purpose of this call is to allow a core to alter nominal
- * width/heights as well as aspect ratios on-the-fly, which can be
- * useful for some emulators to change in run-time.
- *
- * max_width/max_height arguments are ignored and cannot be changed
- * with this call as this could potentially require a reinitialization or a
- * non-constant time operation.
- * If max_width/max_height are to be changed, SET_SYSTEM_AV_INFO is required.
- *
- * A frontend must guarantee that this environment call completes in
- * constant time.
- */
+/* const struct retro_game_geometry * --
+ * This environment call is similar to SET_SYSTEM_AV_INFO for changing
+ * video parameters, but provides a guarantee that drivers will not be
+ * reinitialized.
+ * This can only be called from within retro_run().
+ *
+ * The purpose of this call is to allow a core to alter nominal
+ * width/heights as well as aspect ratios on-the-fly, which can be
+ * useful for some emulators to change in run-time.
+ *
+ * max_width/max_height arguments are ignored and cannot be changed
+ * with this call as this could potentially require a reinitialization or a
+ * non-constant time operation.
+ * If max_width/max_height are to be changed, SET_SYSTEM_AV_INFO is required.
+ *
+ * A frontend must guarantee that this environment call completes in
+ * constant time.
+ */
#define RETRO_ENVIRONMENT_GET_USERNAME 38
- /* const char **
- * Returns the specified username of the frontend, if specified by the user.
- * This username can be used as a nickname for a core that has online facilities
- * or any other mode where personalization of the user is desirable.
- * The returned value can be NULL.
- * If this environ callback is used by a core that requires a valid username,
- * a default username should be specified by the core.
- */
+/* const char **
+ * Returns the specified username of the frontend, if specified by the user.
+ * This username can be used as a nickname for a core that has online facilities
+ * or any other mode where personalization of the user is desirable.
+ * The returned value can be NULL.
+ * If this environ callback is used by a core that requires a valid username,
+ * a default username should be specified by the core.
+ */
#define RETRO_ENVIRONMENT_GET_LANGUAGE 39
- /* unsigned * --
- * Returns the specified language of the frontend, if specified by the user.
- * It can be used by the core for localization purposes.
- */
+/* unsigned * --
+ * Returns the specified language of the frontend, if specified by the user.
+ * It can be used by the core for localization purposes.
+ */
#define RETRO_MEMDESC_CONST (1 << 0) /* The frontend will never change this memory area once retro_load_game has returned. */
#define RETRO_MEMDESC_BIGENDIAN (1 << 1) /* The memory area contains big endian data. Default is little endian. */
@@ -877,7 +877,7 @@ struct retro_memory_descriptor
* open bus). No flags should be set if the pointer is NULL.
* It's recommended to minimize the number of descriptors if possible,
* but not mandatory. */
- void *ptr;
+ void* ptr;
size_t offset;
/* This is the location in the emulated address space
@@ -934,7 +934,7 @@ struct retro_memory_descriptor
* would refer to.
* The length can't be used for that purpose; the frontend may want
* to append arbitrary data to an address, without a separator. */
- const char *addrspace;
+ const char* addrspace;
};
/* The frontend may use the largest value of 'start'+'select' in a
@@ -977,7 +977,7 @@ struct retro_memory_descriptor
struct retro_memory_map
{
- const struct retro_memory_descriptor *descriptors;
+ const struct retro_memory_descriptor* descriptors;
unsigned num_descriptors;
};
@@ -986,7 +986,7 @@ struct retro_controller_description
/* Human-readable description of the controller. Even if using a generic
* input device type, this can be set to the particular device type the
* core uses. */
- const char *desc;
+ const char* desc;
/* Device type passed to retro_set_controller_port_device(). If the device
* type is a sub-class of a generic input device type, use the
@@ -998,14 +998,14 @@ struct retro_controller_description
struct retro_controller_info
{
- const struct retro_controller_description *types;
+ const struct retro_controller_description* types;
unsigned num_types;
};
struct retro_subsystem_memory_info
{
/* The extension associated with a memory type, e.g. "psram". */
- const char *extension;
+ const char* extension;
/* The memory type for retro_get_memory(). This should be at
* least 0x100 to avoid conflict with standardized
@@ -1016,10 +1016,10 @@ struct retro_subsystem_memory_info
struct retro_subsystem_rom_info
{
/* Describes what the content is (SGB BIOS, GB ROM, etc). */
- const char *desc;
+ const char* desc;
/* Same definition as retro_get_system_info(). */
- const char *valid_extensions;
+ const char* valid_extensions;
/* Same definition as retro_get_system_info(). */
bool need_fullpath;
@@ -1033,21 +1033,21 @@ struct retro_subsystem_rom_info
/* Content can have multiple associated persistent
* memory types (retro_get_memory()). */
- const struct retro_subsystem_memory_info *memory;
+ const struct retro_subsystem_memory_info* memory;
unsigned num_memory;
};
struct retro_subsystem_info
{
/* Human-readable string of the subsystem type, e.g. "Super GameBoy" */
- const char *desc;
+ const char* desc;
/* A computer friendly short string identifier for the subsystem type.
* This name must be [a-z].
* E.g. if desc is "Super GameBoy", this can be "sgb".
* This identifier can be used for command-line interfaces, etc.
*/
- const char *ident;
+ const char* ident;
/* Infos for each content file. The first entry is assumed to be the
* "most significant" content for frontend purposes.
@@ -1055,7 +1055,7 @@ struct retro_subsystem_info
* as it is the most "significant" content to a user.
* If a frontend creates new file paths based on the content used
* (e.g. savestates), it should use the path for the first ROM to do so. */
- const struct retro_subsystem_rom_info *roms;
+ const struct retro_subsystem_rom_info* roms;
/* Number of content files associated with a subsystem. */
unsigned num_roms;
@@ -1080,7 +1080,7 @@ typedef void (*retro_proc_address_t)(void);
* e.g. if void retro_foo(void); exists, the symbol must be called "retro_foo".
* The returned function pointer must be cast to the corresponding type.
*/
-typedef retro_proc_address_t (*retro_get_proc_address_t)(const char *sym);
+typedef retro_proc_address_t (*retro_get_proc_address_t)(const char* sym);
struct retro_get_proc_address_interface
{
@@ -1099,7 +1099,7 @@ enum retro_log_level
/* Logging function. Takes log level argument as well. */
typedef void (*retro_log_printf_t)(enum retro_log_level level,
- const char *fmt, ...);
+ const char* fmt, ...);
struct retro_log_callback
{
@@ -1131,7 +1131,7 @@ typedef int64_t retro_time_t;
struct retro_perf_counter
{
- const char *ident;
+ const char* ident;
retro_perf_tick_t start;
retro_perf_tick_t total;
retro_perf_tick_t call_cnt;
@@ -1163,13 +1163,13 @@ typedef void (*retro_perf_log_t)(void);
* retro_perf_counter must be 0.
* Registering can be called multiple times. To avoid calling to
* frontend redundantly, you can check registered field first. */
-typedef void (*retro_perf_register_t)(struct retro_perf_counter *counter);
+typedef void (*retro_perf_register_t)(struct retro_perf_counter* counter);
/* Starts a registered counter. */
-typedef void (*retro_perf_start_t)(struct retro_perf_counter *counter);
+typedef void (*retro_perf_start_t)(struct retro_perf_counter* counter);
/* Stops a registered counter. */
-typedef void (*retro_perf_stop_t)(struct retro_perf_counter *counter);
+typedef void (*retro_perf_stop_t)(struct retro_perf_counter* counter);
/* For convenience it can be useful to wrap register, start and stop in macros.
* E.g.:
@@ -1235,7 +1235,7 @@ enum retro_sensor_action
typedef bool (*retro_set_sensor_state_t)(unsigned port,
enum retro_sensor_action action, unsigned rate);
-typedef float (*retro_sensor_get_input_t)(unsigned port, unsigned id);
+typedef float(*retro_sensor_get_input_t)(unsigned port, unsigned id);
struct retro_sensor_interface
{
@@ -1267,7 +1267,7 @@ typedef void (*retro_camera_lifetime_status_t)(void);
* Width, height and pitch are similar to retro_video_refresh_t.
* First pixel is top-left origin.
*/
-typedef void (*retro_camera_frame_raw_framebuffer_t)(const uint32_t *buffer,
+typedef void (*retro_camera_frame_raw_framebuffer_t)(const uint32_t* buffer,
unsigned width, unsigned height, size_t pitch);
/* A callback for when OpenGL textures are used.
@@ -1289,7 +1289,7 @@ typedef void (*retro_camera_frame_raw_framebuffer_t)(const uint32_t *buffer,
* the API definition.
*/
typedef void (*retro_camera_frame_opengl_texture_t)(unsigned texture_id,
- unsigned texture_target, const float *affine);
+ unsigned texture_target, const float* affine);
struct retro_camera_callback
{
@@ -1344,8 +1344,8 @@ typedef void (*retro_location_stop_t)(void);
/* Get the position of the current location. Will set parameters to
* 0 if no new location update has happened since the last time. */
-typedef bool (*retro_location_get_position_t)(double *lat, double *lon,
- double *horiz_accuracy, double *vert_accuracy);
+typedef bool (*retro_location_get_position_t)(double* lat, double* lon,
+ double* horiz_accuracy, double* vert_accuracy);
/* Callback which signals when the location driver is initialized
* and/or deinitialized.
@@ -1446,7 +1446,7 @@ typedef void (*retro_hw_context_reset_t)(void);
typedef uintptr_t (*retro_hw_get_current_framebuffer_t)(void);
/* Get a symbol from HW context. */
-typedef retro_proc_address_t (*retro_hw_get_proc_address_t)(const char *sym);
+typedef retro_proc_address_t (*retro_hw_get_proc_address_t)(const char* sym);
enum retro_hw_context_type
{
@@ -1563,7 +1563,7 @@ struct retro_hw_render_callback
* character, character should be 0.
*/
typedef void (*retro_keyboard_event_t)(bool down, unsigned keycode,
- uint32_t character, uint16_t key_modifiers);
+ uint32_t character, uint16_t key_modifiers);
struct retro_keyboard_callback
{
@@ -1594,7 +1594,7 @@ 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.
*/
-typedef unsigned (*retro_get_image_index_t)(void);
+typedef unsigned(*retro_get_image_index_t)(void);
/* Sets image index. Can only be called when disk is ejected.
* The implementation supports setting "no disk" by using an
@@ -1603,7 +1603,7 @@ 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);
+typedef unsigned(*retro_get_num_images_t)(void);
struct retro_game_info;
@@ -1620,7 +1620,7 @@ struct retro_game_info;
* Index 1 will be removed, and the new index is 3.
*/
typedef bool (*retro_replace_image_index_t)(unsigned index,
- const struct retro_game_info *info);
+ 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.
@@ -1667,7 +1667,7 @@ enum retro_pixel_format
struct retro_message
{
- const char *msg; /* Message to be displayed. */
+ const char* msg; /* Message to be displayed. */
unsigned frames; /* Duration in frames of message. */
};
@@ -1685,7 +1685,7 @@ struct retro_input_descriptor
/* Human readable description for parameters.
* The pointer must remain valid until
* retro_unload_game() is called. */
- const char *description;
+ const char* description;
};
struct retro_system_info
@@ -1693,11 +1693,11 @@ struct retro_system_info
/* All pointers are owned by libretro implementation, and pointers must
* remain valid until retro_deinit() is called. */
- const char *library_name; /* Descriptive name of library. Should not
+ const char* library_name; /* Descriptive name of library. Should not
* contain any version numbers, etc. */
- const char *library_version; /* Descriptive version of core. */
+ const char* library_version; /* Descriptive version of core. */
- const char *valid_extensions; /* A string listing probably content
+ const char* valid_extensions; /* A string listing probably content
* extensions the core will be able to
* load, separated with pipe.
* I.e. "bin|rom|iso".
@@ -1759,31 +1759,31 @@ struct retro_variable
* delimited by semicolons as so:
* "key1=value1;key2=value2;..."
*/
- const char *key;
+ const char* key;
/* Value to be obtained. If key does not exist, it is set to NULL. */
- const char *value;
+ const char* value;
};
struct retro_game_info
{
- const char *path; /* Path to game, UTF-8 encoded.
+ const char* path; /* Path to game, UTF-8 encoded.
* Usually used as a reference.
* May be NULL if rom was loaded from stdin
* or similar.
* retro_system_info::need_fullpath guaranteed
* that this path is valid. */
- const void *data; /* Memory buffer of loaded game. Will be NULL
+ const void* data; /* Memory buffer of loaded game. Will be NULL
* if need_fullpath was set. */
size_t size; /* Size of memory buffer. */
- const char *meta; /* String of implementation specific meta-data. */
+ const char* meta; /* String of implementation specific meta-data. */
};
/* Callbacks */
/* Environment callback. Gives implementations a way of performing
* uncommon tasks. Extensible. */
-typedef bool (*retro_environment_t)(unsigned cmd, void *data);
+typedef bool (*retro_environment_t)(unsigned cmd, void* data);
/* Render a frame. Pixel format is 15-bit 0RGB1555 native endian
* unless changed (see RETRO_ENVIRONMENT_SET_PIXEL_FORMAT).
@@ -1796,8 +1796,8 @@ typedef bool (*retro_environment_t)(unsigned cmd, void *data);
* Certain graphic APIs, such as OpenGL ES, do not like textures
* that are not packed in memory.
*/
-typedef void (*retro_video_refresh_t)(const void *data, unsigned width,
- unsigned height, size_t pitch);
+typedef void (*retro_video_refresh_t)(const void* data, unsigned width,
+ unsigned height, size_t pitch);
/* Renders a single audio frame. Should only be used if implementation
* generates a single sample at a time.
@@ -1811,7 +1811,7 @@ typedef void (*retro_audio_sample_t)(int16_t left, int16_t right);
* I.e. int16_t buf[4] = { l, r, l, r }; would be 2 frames.
* Only one of the audio callbacks must ever be used.
*/
-typedef size_t (*retro_audio_sample_batch_t)(const int16_t *data,
+typedef size_t (*retro_audio_sample_batch_t)(const int16_t* data,
size_t frames);
/* Polls input. */
@@ -1825,7 +1825,7 @@ typedef void (*retro_input_poll_t)(void);
* will still use the higher level RETRO_DEVICE_JOYPAD to request input.
*/
typedef int16_t (*retro_input_state_t)(unsigned port, unsigned device,
- unsigned index, unsigned id);
+ unsigned index, unsigned id);
/* Sets callbacks. retro_set_environment() is guaranteed to be called
* before retro_init().
@@ -1850,7 +1850,7 @@ unsigned retro_api_version(void);
/* Gets statically known system info. Pointers provided in *info
* must be statically allocated.
* Can be called at any time, even before retro_init(). */
-void retro_get_system_info(struct retro_system_info *info);
+void retro_get_system_info(struct retro_system_info* info);
/* Gets information about system audio/video timings and geometry.
* Can be called only after retro_load_game() has successfully completed.
@@ -1858,7 +1858,7 @@ void retro_get_system_info(struct retro_system_info *info);
* variable if needed.
* E.g. geom.aspect_ratio might not be initialized if core doesn't
* desire a particular aspect ratio. */
-void retro_get_system_av_info(struct retro_system_av_info *info);
+void retro_get_system_av_info(struct retro_system_av_info* info);
/* Sets device to be used for player 'port'.
* By default, RETRO_DEVICE_JOYPAD is assumed to be plugged into all
@@ -1893,20 +1893,20 @@ size_t retro_serialize_size(void);
/* Serializes internal state. If failed, or size is lower than
* retro_serialize_size(), it should return false, true otherwise. */
-bool retro_serialize(void *data, size_t size);
-bool retro_unserialize(const void *data, size_t size);
+bool retro_serialize(void* data, size_t size);
+bool retro_unserialize(const void* data, size_t size);
void retro_cheat_reset(void);
-void retro_cheat_set(unsigned index, bool enabled, const char *code);
+void retro_cheat_set(unsigned index, bool enabled, const char* code);
/* Loads a game. */
-bool retro_load_game(const struct retro_game_info *game);
+bool retro_load_game(const struct retro_game_info* game);
/* Loads a "special" kind of game. Should not be used,
* except in extreme cases. */
bool retro_load_game_special(
- unsigned game_type,
- const struct retro_game_info *info, size_t num_info
+ unsigned game_type,
+ const struct retro_game_info* info, size_t num_info
);
/* Unloads a currently loaded game. */
@@ -1916,7 +1916,7 @@ void retro_unload_game(void);
unsigned retro_get_region(void);
/* Gets region of memory. */
-void *retro_get_memory_data(unsigned id);
+void* retro_get_memory_data(unsigned id);
size_t retro_get_memory_size(unsigned id);
#ifdef __cplusplus