9 #ifndef C_API_ADDONINSTANCE_GAME_H 10 #define C_API_ADDONINSTANCE_GAME_H 12 #include "../addon_base.h" 27 typedef enum GAME_ERROR
36 GAME_ERROR_NOT_IMPLEMENTED,
42 GAME_ERROR_INVALID_PARAMETERS,
48 GAME_ERROR_NOT_LOADED,
51 GAME_ERROR_RESTRICTED,
72 GAME_PCM_FORMAT_UNKNOWN,
158 GAME_PCM_FORMAT format;
159 const GAME_AUDIO_CHANNEL* channel_map;
197 GAME_PIXEL_FORMAT_UNKNOWN,
383 uintptr_t framebuffer;
393 uintptr_t framebuffer;
425 GAME_PIXEL_FORMAT format;
720 #define ROOT_PORT_ADDRESS "/" 725 #define DEFAULT_PORT_ID "1" 730 #define KEYBOARD_PORT_ID "keyboard" 735 #define MOUSE_PORT_ID "mouse" 740 #define DEFAULT_PORT_ADDRESS "/1" 745 #define KEYBOARD_PORT_ADDRESS "/keyboard" 750 #define MOUSE_PORT_ADDRESS "/mouse" 848 char** digital_buttons;
849 unsigned int digital_button_count;
850 char** analog_buttons;
851 unsigned int analog_button_count;
852 char** analog_sticks;
853 unsigned int analog_stick_count;
854 char** accelerometers;
855 unsigned int accelerometer_count;
857 unsigned int key_count;
859 unsigned int rel_pointer_count;
861 unsigned int abs_pointer_count;
863 unsigned int motor_count;
1066 struct game_digital_button_event digital_button;
1069 struct game_analog_button_event analog_button;
1072 struct game_axis_event axis;
1075 struct game_analog_stick_event analog_stick;
1078 struct game_accelerometer_event accelerometer;
1081 struct game_key_event key;
1084 struct game_rel_pointer_event rel_pointer;
1087 struct game_abs_pointer_event abs_pointer;
1090 struct game_motor_event motor;
1180 typedef void* KODI_GAME_STREAM_HANDLE;
1194 KODI_HANDLE kodiInstance;
1196 void (*CloseGame)(KODI_HANDLE kodiInstance);
1197 KODI_GAME_STREAM_HANDLE (*OpenStream)(KODI_HANDLE,
const struct game_stream_properties*);
1198 bool (*GetStreamBuffer)(KODI_HANDLE,
1199 KODI_GAME_STREAM_HANDLE,
1202 struct game_stream_buffer*);
1203 void (*AddStreamData)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE,
const struct game_stream_packet*);
1204 void (*ReleaseStreamBuffer)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE,
struct game_stream_buffer*);
1205 void (*CloseStream)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE);
1207 bool (*InputEvent)(KODI_HANDLE kodiInstance,
const struct game_input_event* event);
1217 KODI_HANDLE addonInstance;
1220 GAME_ERROR(__cdecl* LoadGameSpecial)
1224 GAME_ERROR(__cdecl* GetGameTiming)
1232 bool(__cdecl* HasFeature)(
const struct AddonInstance_Game*,
const char*,
const char*);
1234 void(__cdecl* FreeTopology)(
const struct AddonInstance_Game*,
struct game_input_topology*);
1236 const struct game_controller_layout*,
1244 bool(__cdecl* InputEvent)(
const struct AddonInstance_Game*,
const struct game_input_event*);
1247 GAME_ERROR(__cdecl* Deserialize)(
const struct AddonInstance_Game*,
const uint8_t*, size_t);
1249 GAME_ERROR(__cdecl* GetMemory)
1251 GAME_ERROR(__cdecl* SetCheat)
1253 GAME_ERROR(__cdecl* RCGenerateHashFromFile)
1256 GAME_ERROR(__cdecl* RCGetPatchFileUrl)
1258 GAME_ERROR(__cdecl* RCPostRichPresenceUrl)
1267 GAME_ERROR(__cdecl* RCGetRichPresenceEvaluation)
Hardware framebuffer packet
Definition: game.h:390
A motor vibration event.
Definition: game.h:1037
struct game_stream_video_properties game_stream_video_properties
Game video stream properties
float y
The absolute Y position of the pointer.
Definition: game.h:1031
Channel back right over center.
Definition: game.h:147
unsigned int height
Video width.
Definition: game.h:271
struct game_stream_packet game_stream_packet
Stream packet and ephemeral metadata
unsigned int version_major
Major version number for core GL context or GLES 3.1+.
Definition: game.h:354
float y
The position of the stick along the Y axis, from -1.0 to 1.0.
Definition: game.h:970
game_stream_hw_framebuffer_buffer hw_framebuffer
The audio stream packet.
Definition: game.h:509
Video ram lets a frontend peek into a game systems video RAM (VRAM)
Definition: game.h:618
Game callbacks.
Definition: game.h:1192
0RGB8888 Format
Definition: game.h:200
A relative pointer event, such as a mouse motion.
Definition: game.h:1010
double fps
FPS of video content.
Definition: game.h:1110
unsigned int max_width
The maximal used width.
Definition: game.h:248
Unknown.
Definition: game.h:454
Game properties.
Definition: game.h:1126
GAME_AUDIO_CHANNEL
Audio channel
Definition: game.h:84
Channel back left over center.
Definition: game.h:144
Regular save ram.
Definition: game.h:607
Hardware framebuffer properties
Definition: game.h:324
SIMD CPU AVX.
Definition: game.h:657
Special memory type.
Definition: game.h:627
GAME_VIDEO_ROTATION
Video rotation position
Definition: game.h:215
rotate 270° counterclockwise
Definition: game.h:227
unsigned int nominal_width
The nominal used width.
Definition: game.h:242
Hardware framebuffer.
Definition: game.h:463
Channel low frequency effects / subwoofer.
Definition: game.h:99
Vulkan.
Definition: game.h:317
int x
The relative X position of the pointer.
Definition: game.h:1013
A key event, such as a key press or release.
Definition: game.h:991
Channel top center.
Definition: game.h:132
Channel front center.
Definition: game.h:96
Channel surround/side right.
Definition: game.h:120
OpenGL ES 3.1+. Set major/minor fields.
Definition: game.h:314
float x
The position of the stick along the X axis, from -1.0 to 1.0.
Definition: game.h:967
game_stream_video_properties game_stream_sw_framebuffer_properties
Game software framebuffer stream properties
Definition: game.h:417
struct game_stream_hw_framebuffer_buffer game_stream_hw_framebuffer_buffer
Hardware framebuffer buffer
SPECIAL_GAME_TYPE
**Special game types passed into game_load_game_special().
Definition: game.h:577
Some games have a built-in clock to keep track of time.
Definition: game.h:612
const uint8_t * data
Pointer for video stream data given to Kodi.
Definition: game.h:277
game_stream_audio_packet audio
The audio stream packet.
Definition: game.h:532
float x
The accelerometer X axis, from -1.0 to 1.0.
Definition: game.h:979
SIMD CPU SSSE3.
Definition: game.h:666
bool supports_vfs
The value of the <supports_vfs> property from addon.xml.
Definition: game.h:1167
GAME_PCM_FORMAT
Stream Format
Definition: game.h:70
struct game_stream_sw_framebuffer_buffer game_stream_sw_framebuffer_buffer
Software framebuffer type
game_stream_video_properties video
The video stream properties.
Definition: game.h:487
GAME_STREAM_TYPE type
The stream type.
Definition: game.h:504
OpenGL ES 3.0.
Definition: game.h:311
Channel top front center.
Definition: game.h:129
Special memory type.
Definition: game.h:624
int y
The relative Y position of the pointer.
Definition: game.h:1016
unsigned int extension_count
Number of extensions provided.
Definition: game.h:1177
SIMD CPU VFPU.
Definition: game.h:684
Channel front right over center.
Definition: game.h:111
Channel back left.
Definition: game.h:102
game_stream_sw_framebuffer_packet sw_framebuffer
The software framebuffer packet.
Definition: game.h:541
SIMD CPU MMX.
Definition: game.h:669
Channel top back right.
Definition: game.h:138
GAME_VIDEO_ROTATION rotation
Width GAME_VIDEO_ROTATION defined rotation angle.
Definition: game.h:274
rotate 180° counterclockwise
Definition: game.h:224
Channel front left over center.
Definition: game.h:108
Game video stream properties
Definition: game.h:236
"C" Game add-on controller layout.
Definition: game.h:844
Audio stream.
Definition: game.h:457
unsigned int width
Video height.
Definition: game.h:268
Game Type super game boy.
Definition: game.h:589
void(* game_proc_address_t)(void)
Hardware framebuffer process function address
Definition: game.h:400
Channel top back center.
Definition: game.h:141
An accelerometer event.
Definition: game.h:976
Channel surround/side left.
Definition: game.h:117
OpenGL ES 2.0.
Definition: game.h:305
An analog stick event, such as a joystick's motion.
Definition: game.h:964
Channel top front left.
Definition: game.h:123
float y
The accelerometer Y axis, from -1.0 to 1.0.
Definition: game.h:982
struct game_stream_hw_framebuffer_properties game_stream_hw_framebuffer_properties
Hardware framebuffer properties
Stream packet and ephemeral metadata
Definition: game.h:524
const uint8_t * data
Pointer for audio stream data given to Kodi.
Definition: game.h:171
Special memory type.
Definition: game.h:630
uint32_t unicode
If the keypress generates a printing character.
Definition: game.h:1001
GAME_HW_CONTEXT_TYPE context_type
The API to use.
Definition: game.h:328
size_t size
Size of data array.
Definition: game.h:280
float x
The absolute X position of the pointer.
Definition: game.h:1028
None context.
Definition: game.h:299
Channel top front right.
Definition: game.h:126
const char ** resource_directories
The "system" directories of the frontend.
Definition: game.h:1149
Special memory type.
Definition: game.h:636
GAME_STREAM_TYPE type
The stream type.
Definition: game.h:479
bool stencil
Set if stencil buffers should be attached.
Definition: game.h:343
GAME_HW_CONTEXT_TYPE
Hardware framebuffer type
Definition: game.h:296
const char * profile_directory
The writable directory of the frontend.
Definition: game.h:1162
unsigned int max_height
The maximal used height.
Definition: game.h:251
float z
The accelerometer Z axis, from -1.0 to 1.0.
Definition: game.h:985
S16NE sample format.
Definition: game.h:75
Game Type BSX.
Definition: game.h:580
Game region NTSC.
Definition: game.h:565
Game function hooks.
Definition: game.h:1215
const char ** proxy_dll_paths
Paths to proxy DLLs used to load the game client.
Definition: game.h:1136
SIMD CPU AVX2.
Definition: game.h:681
game_stream_hw_framebuffer_properties hw_framebuffer
The hardware framebuffer properties.
Definition: game.h:490
bool cache_context
If this is true, the frontend will go very far to avoid resetting context in scenarios like toggling ...
Definition: game.h:370
OpenGL 2.x. Driver can choose to use latest compatibility context.
Definition: game.h:302
GAME_MEMORY
Game Memory
Definition: game.h:596
struct game_stream_video_packet game_stream_video_packet
Video stream packet
Channel top back left.
Definition: game.h:135
0RGB1555 Format
Definition: game.h:206
game_stream_video_packet game_stream_sw_framebuffer_packet
Software framebuffer packet
Definition: game.h:436
struct game_stream_hw_framebuffer_packet game_stream_hw_framebuffer_packet
Hardware framebuffer packet
Software framebuffer.
Definition: game.h:466
bool bottom_left_origin
Use conventional bottom-left origin convention.
Definition: game.h:351
Software framebuffer type
Definition: game.h:423
const char * game_client_dll_path
The path of the game client being loaded.
Definition: game.h:1131
Stream buffers for hardware rendering and zero-copy support
Definition: game.h:501
RGB565 Format.
Definition: game.h:203
unsigned int version_minor
Minor version number for core GL context or GLES 3.1+.
Definition: game.h:357
SIMD CPU VMX128.
Definition: game.h:654
Channel back right.
Definition: game.h:105
GAME_PIXEL_FORMAT
Pixel format
Definition: game.h:195
struct game_stream_properties game_stream_properties
Immutable stream metadata
Game Type BSX slotted.
Definition: game.h:583
GAME_SIMD
ID values for SIMD CPU features
Definition: game.h:642
struct game_stream_buffer game_stream_buffer
Stream buffers for hardware rendering and zero-copy support
SIMD CPU SSE2.
Definition: game.h:648
rotate 90° counterclockwise
Definition: game.h:221
SIMD CPU SSE4.
Definition: game.h:675
Hardware framebuffer buffer
Definition: game.h:380
SIMD CPU SSE3.
Definition: game.h:663
GAME_REGION
Game region definition
Definition: game.h:559
const char ** extensions
The extensions in the <extensions> property from addon.xml.
Definition: game.h:1172
float magnitude
The magnitude of the vibration, from 0.0 to 1.0.
Definition: game.h:1040
struct game_stream_audio_packet game_stream_audio_packet
Audio stream packet
float position
The position of the axis, from -1.0 to 1.0.
Definition: game.h:955
Channel front left.
Definition: game.h:90
SIMD CPU MMXEXT.
Definition: game.h:672
Passed to game_get_memory_data/size().
Definition: game.h:600
Modern desktop core GL context. Use major/minor fields to set GL version.
Definition: game.h:308
unsigned int proxy_dll_count
Number of proxy DLL paths provided.
Definition: game.h:1141
game_stream_hw_framebuffer_packet hw_framebuffer
The hardware framebuffer packet.
Definition: game.h:538
game_stream_sw_framebuffer_properties sw_framebuffer
The software framebuffer properties.
Definition: game.h:493
GAME_PIXEL_FORMAT format
The stream's pixel format.
Definition: game.h:239
SIMD CPU SSE42.
Definition: game.h:678
GAME_STREAM_TYPE type
The stream type.
Definition: game.h:527
An axis event, such as a joystick or accelerometer.
Definition: game.h:952
Game instance.
Definition: game.h:1278
struct game_stream_audio_properties game_stream_audio_properties
Game audio stream properties
Channel back center.
Definition: game.h:114
game_stream_video_packet video
The video stream packet.
Definition: game.h:535
Game Type sufami turbo.
Definition: game.h:586
System ram lets a frontend peek into a game systems main RAM.
Definition: game.h:615
Channel front right.
Definition: game.h:93
Video stream.
Definition: game.h:460
bool depth
Set if render buffers should have depth component attached.
Definition: game.h:334
game_stream_audio_properties audio
The audio stream properties.
Definition: game.h:484
bool pressed
True if the key is pressed, false if it is released.
Definition: game.h:994
float aspect_ratio
On video stream used aspect ration.
Definition: game.h:256
Audio stream packet
Definition: game.h:168
Immutable stream metadata
Definition: game.h:476
unsigned int resource_directory_count
Number of resource directories provided.
Definition: game.h:1154
Special memory type.
Definition: game.h:633
SIMD CPU SSE.
Definition: game.h:645
double sample_rate
Sampling rate of audio.
Definition: game.h:1113
game_stream_sw_framebuffer_buffer sw_framebuffer
The video stream packet.
Definition: game.h:512
Channel list terminator.
Definition: game.h:87
SIMD CPU VMX.
Definition: game.h:651
Game region unknown.
Definition: game.h:562
Game region PAL.
Definition: game.h:568
bool debug_context
Creates a debug context.
Definition: game.h:373
Game system timing.
Definition: game.h:1107
Game audio stream properties
Definition: game.h:156
GAME_KEY_MOD modifiers
Modifier keys pressed with the event key.
Definition: game.h:1004
SIMD CPU NEON.
Definition: game.h:660
GAME_STREAM_TYPE
Game stream types
Definition: game.h:451
Video stream packet
Definition: game.h:265
An absolute pointer event, such as a touchscreen or tablet motion.
Definition: game.h:1022
bool pressed
True if the pointer is pressed, false if it is released.
Definition: game.h:1025
0° and Without rotation
Definition: game.h:218
unsigned int nominal_height
The nominal used height.
Definition: game.h:245
size_t size
Size of data array.
Definition: game.h:174
Special memory type.
Definition: game.h:621