Kodi Development 22.0
for Binary and Script based Add-Ons
 
Loading...
Searching...
No Matches
game.h
1/*
2 * Copyright (C) 2014-2024 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#ifndef C_API_ADDONINSTANCE_GAME_H
10#define C_API_ADDONINSTANCE_GAME_H
11
12#include "../addon_base.h"
13
14#include <stddef.h> /* size_t */
15
16#ifdef __cplusplus
17extern "C"
18{
19#endif /* __cplusplus */
20
21 //============================================================================
53 //----------------------------------------------------------------------------
54
55 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
64
65 //============================================================================
70 typedef enum GAME_PCM_FORMAT
71 {
72 GAME_PCM_FORMAT_UNKNOWN,
73
77 //----------------------------------------------------------------------------
78
79 //============================================================================
149 //----------------------------------------------------------------------------
150
151 //============================================================================
157 {
158 GAME_PCM_FORMAT format;
159 const GAME_AUDIO_CHANNEL* channel_map;
160 } ATTR_PACKED game_stream_audio_properties;
161 //----------------------------------------------------------------------------
162
163 //============================================================================
169 {
171 const uint8_t* data;
172
174 size_t size;
175 } ATTR_PACKED game_stream_audio_packet;
176 //----------------------------------------------------------------------------
177
179
180 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
189
190 //============================================================================
208 //----------------------------------------------------------------------------
209
210 //============================================================================
229 //----------------------------------------------------------------------------
230
231 //============================================================================
237 {
240
242 unsigned int nominal_width;
243
245 unsigned int nominal_height;
246
248 unsigned int max_width;
249
251 unsigned int max_height;
252
257 } ATTR_PACKED game_stream_video_properties;
258 //----------------------------------------------------------------------------
259
260 //============================================================================
266 {
268 unsigned int width;
269
271 unsigned int height;
272
275
277 const uint8_t* data;
278
280 size_t size;
281 } ATTR_PACKED game_stream_video_packet;
282 //----------------------------------------------------------------------------
283
285
286 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
292
293 //============================================================================
319 //----------------------------------------------------------------------------
320
321 //==============================================================================
329 {
333
338 bool depth;
339
348
356
358 unsigned int version_major;
359
361 unsigned int version_minor;
362
375
378
379 } ATTR_PACKED game_hw_rendering_properties;
380 //------------------------------------------------------------------------------
381
382 //==============================================================================
389 {
390 char dummy; // Occupier for empty struct
392 //----------------------------------------------------------------------------
393
394 //============================================================================
398 {
400 uintptr_t framebuffer;
402 //----------------------------------------------------------------------------
403
404 //============================================================================
408 {
410 uintptr_t framebuffer;
412 //----------------------------------------------------------------------------
413
414 //============================================================================
417 typedef void (*game_proc_address_t)(void);
418 //----------------------------------------------------------------------------
419
421
422 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
428
429 //============================================================================
435 //----------------------------------------------------------------------------
436
437 //============================================================================
441 {
442 GAME_PIXEL_FORMAT format;
443 uint8_t* data;
444 size_t size;
446 //----------------------------------------------------------------------------
447
448 //============================================================================
454 //----------------------------------------------------------------------------
455
457
458 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
464
465 //============================================================================
485 //----------------------------------------------------------------------------
486
487 //============================================================================
513 //----------------------------------------------------------------------------
514
515 //============================================================================
532 //----------------------------------------------------------------------------
533
534 //============================================================================
561 //----------------------------------------------------------------------------
562
564
565 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
571
572 //============================================================================
587 //----------------------------------------------------------------------------
588
589 //============================================================================
608 //----------------------------------------------------------------------------
609
610 //============================================================================
655 //----------------------------------------------------------------------------
656
657 //============================================================================
659 typedef enum GAME_SIMD
660 {
662 GAME_SIMD_SSE = (1 << 0),
663
665 GAME_SIMD_SSE2 = (1 << 1),
666
668 GAME_SIMD_VMX = (1 << 2),
669
672
674 GAME_SIMD_AVX = (1 << 4),
675
677 GAME_SIMD_NEON = (1 << 5),
678
680 GAME_SIMD_SSE3 = (1 << 6),
681
683 GAME_SIMD_SSSE3 = (1 << 7),
684
686 GAME_SIMD_MMX = (1 << 8),
687
690
692 GAME_SIMD_SSE4 = (1 << 10),
693
695 GAME_SIMD_SSE42 = (1 << 11),
696
698 GAME_SIMD_AVX2 = (1 << 12),
699
701 GAME_SIMD_VFPU = (1 << 13),
702 } GAME_SIMD;
703 //----------------------------------------------------------------------------
704
706
707 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
734
735 //==============================================================================
737#define ROOT_PORT_ADDRESS "/"
738 //------------------------------------------------------------------------------
739
740 //==============================================================================
742#define DEFAULT_PORT_ID "1"
743 //------------------------------------------------------------------------------
744
745 //==============================================================================
747#define KEYBOARD_PORT_ID "keyboard"
748 //------------------------------------------------------------------------------
749
750 //==============================================================================
752#define MOUSE_PORT_ID "mouse"
753 //------------------------------------------------------------------------------
754
755 //==============================================================================
757#define DEFAULT_PORT_ADDRESS "/1"
758 //------------------------------------------------------------------------------
759
760 //==============================================================================
762#define KEYBOARD_PORT_ADDRESS "/keyboard"
763 //------------------------------------------------------------------------------
764
765 //==============================================================================
767#define MOUSE_PORT_ADDRESS "/mouse"
768 //------------------------------------------------------------------------------
769
770 //============================================================================
801 //----------------------------------------------------------------------------
802
803 //============================================================================
805 typedef enum GAME_KEY_MOD
806 {
809
812
815
818
821
824
827
830
833 } GAME_KEY_MOD;
834 //----------------------------------------------------------------------------
835
836 //============================================================================
852 //----------------------------------------------------------------------------
853
862 {
863 char* controller_id;
864 bool provides_input; // False for multitaps
865 char** digital_buttons;
866 unsigned int digital_button_count;
867 char** analog_buttons;
868 unsigned int analog_button_count;
869 char** analog_sticks;
870 unsigned int analog_stick_count;
871 char** accelerometers;
872 unsigned int accelerometer_count;
873 char** keys;
874 unsigned int key_count;
875 char** rel_pointers;
876 unsigned int rel_pointer_count;
877 char** abs_pointers;
878 unsigned int abs_pointer_count;
879 char** motors;
880 unsigned int motor_count;
881 } ATTR_PACKED game_controller_layout;
882
883 struct game_input_port;
884
885 //============================================================================
887 typedef struct game_input_device
888 {
890 const char* controller_id;
891
893 const char* port_address;
894
897
899 unsigned int port_count;
900 } ATTR_PACKED game_input_device;
901 //----------------------------------------------------------------------------
902
903 //============================================================================
906 typedef struct game_input_port
907 {
910
912 const char* port_id;
913
920
923
925 unsigned int device_count;
926 } ATTR_PACKED game_input_port;
927 //----------------------------------------------------------------------------
928
929 //============================================================================
936 typedef struct game_input_topology
937 {
940
942 unsigned int port_count;
943
946 } ATTR_PACKED game_input_topology;
947 //----------------------------------------------------------------------------
948
949 //============================================================================
952 {
955 } ATTR_PACKED game_digital_button_event;
956 //----------------------------------------------------------------------------
957
958 //============================================================================
961 {
964 } ATTR_PACKED game_analog_button_event;
965 //----------------------------------------------------------------------------
966
967 //============================================================================
969 typedef struct game_axis_event
970 {
972 float position;
973 } ATTR_PACKED game_axis_event;
974 //----------------------------------------------------------------------------
975
976 //============================================================================
982 {
984 float x;
985
987 float y;
988 } ATTR_PACKED game_analog_stick_event;
989 //----------------------------------------------------------------------------
990
991 //============================================================================
994 {
996 float x;
997
999 float y;
1000
1002 float z;
1003 } ATTR_PACKED game_accelerometer_event;
1004 //----------------------------------------------------------------------------
1005
1006 //============================================================================
1008 typedef struct game_key_event
1009 {
1012
1018 uint32_t unicode;
1019
1022 } ATTR_PACKED game_key_event;
1023 //----------------------------------------------------------------------------
1024
1025 //============================================================================
1028 {
1030 int x;
1031
1033 int y;
1034 } ATTR_PACKED game_rel_pointer_event;
1035 //----------------------------------------------------------------------------
1036
1037 //============================================================================
1040 {
1043
1045 float x;
1046
1048 float y;
1049 } ATTR_PACKED game_abs_pointer_event;
1050 //----------------------------------------------------------------------------
1051
1052 //============================================================================
1054 typedef struct game_motor_event
1055 {
1058 } ATTR_PACKED game_motor_event;
1059 //----------------------------------------------------------------------------
1060
1061 //============================================================================
1063 typedef struct game_input_event
1064 {
1067
1069 const char* controller_id;
1070
1073
1075 const char* port_address;
1076
1078 const char* feature_name;
1079
1080 union
1081 {
1084
1087
1089 struct game_axis_event axis;
1090
1093
1096
1098 struct game_key_event key;
1099
1102
1105
1107 struct game_motor_event motor;
1108 };
1109 } ATTR_PACKED game_input_event;
1110 //----------------------------------------------------------------------------
1111
1113
1114 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
1120
1121 //============================================================================
1125 {
1127 double fps;
1128
1131 };
1132 //----------------------------------------------------------------------------
1133
1135
1136 //--==----==----==----==----==----==----==----==----==----==----==----==----==--
1137
1143 typedef struct AddonProps_Game
1144 {
1149
1153 const char** proxy_dll_paths;
1154
1158 unsigned int proxy_dll_count;
1159
1167
1172
1180
1185
1189 const char** extensions;
1190
1194 unsigned int extension_count;
1196
1197 typedef void* KODI_GAME_STREAM_HANDLE;
1198
1202 struct AddonInstance_Game;
1203
1210 {
1211 KODI_HANDLE kodiInstance;
1212
1213 bool (*EnableHardwareRendering)(void*, const game_hw_rendering_properties*);
1214 void (*CloseGame)(KODI_HANDLE kodiInstance);
1215 KODI_GAME_STREAM_HANDLE (*OpenStream)(KODI_HANDLE, const struct game_stream_properties*);
1216 bool (*GetStreamBuffer)(KODI_HANDLE,
1217 KODI_GAME_STREAM_HANDLE,
1218 unsigned int,
1219 unsigned int,
1220 struct game_stream_buffer*);
1221 void (*AddStreamData)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE, const struct game_stream_packet*);
1222 void (*ReleaseStreamBuffer)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE, struct game_stream_buffer*);
1223 void (*CloseStream)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE);
1224 game_proc_address_t (*HwGetProcAddress)(KODI_HANDLE kodiInstance, const char* symbol);
1225 bool (*InputEvent)(KODI_HANDLE kodiInstance, const struct game_input_event* event);
1227
1234 {
1235 KODI_HANDLE addonInstance;
1236
1237 GAME_ERROR(__cdecl* LoadGame)(const struct AddonInstance_Game*, const char*);
1238 GAME_ERROR(__cdecl* LoadGameSpecial)
1239 (const struct AddonInstance_Game*, enum SPECIAL_GAME_TYPE, const char**, size_t);
1240 GAME_ERROR(__cdecl* LoadStandalone)(const struct AddonInstance_Game*);
1241 GAME_ERROR(__cdecl* UnloadGame)(const struct AddonInstance_Game*);
1242 GAME_ERROR(__cdecl* GetGameTiming)
1243 (const struct AddonInstance_Game*, struct game_system_timing*);
1244 GAME_REGION(__cdecl* GetRegion)(const struct AddonInstance_Game*);
1245 bool(__cdecl* RequiresGameLoop)(const struct AddonInstance_Game*);
1246 GAME_ERROR(__cdecl* RunFrame)(const struct AddonInstance_Game*);
1247 GAME_ERROR(__cdecl* Reset)(const struct AddonInstance_Game*);
1248 GAME_ERROR(__cdecl* HwContextReset)(const struct AddonInstance_Game*);
1249 GAME_ERROR(__cdecl* HwContextDestroy)(const struct AddonInstance_Game*);
1250 bool(__cdecl* HasFeature)(const struct AddonInstance_Game*, const char*, const char*);
1251 game_input_topology*(__cdecl* GetTopology)(const struct AddonInstance_Game*);
1252 void(__cdecl* FreeTopology)(const struct AddonInstance_Game*, struct game_input_topology*);
1253 void(__cdecl* SetControllerLayouts)(const struct AddonInstance_Game*,
1254 const struct game_controller_layout*,
1255 unsigned int);
1256 bool(__cdecl* EnableKeyboard)(const struct AddonInstance_Game*, bool, const char*);
1257 bool(__cdecl* EnableMouse)(const struct AddonInstance_Game*, bool, const char*);
1258 bool(__cdecl* ConnectController)(const struct AddonInstance_Game*,
1259 bool,
1260 const char*,
1261 const char*);
1262 bool(__cdecl* InputEvent)(const struct AddonInstance_Game*, const struct game_input_event*);
1263 size_t(__cdecl* SerializeSize)(const struct AddonInstance_Game*);
1264 GAME_ERROR(__cdecl* Serialize)(const struct AddonInstance_Game*, uint8_t*, size_t);
1265 GAME_ERROR(__cdecl* Deserialize)(const struct AddonInstance_Game*, const uint8_t*, size_t);
1266 GAME_ERROR(__cdecl* CheatReset)(const struct AddonInstance_Game*);
1267 GAME_ERROR(__cdecl* GetMemory)
1268 (const struct AddonInstance_Game*, enum GAME_MEMORY, uint8_t**, size_t*);
1269 GAME_ERROR(__cdecl* SetCheat)
1270 (const struct AddonInstance_Game*, unsigned int, bool, const char*);
1271 GAME_ERROR(__cdecl* RCGenerateHashFromFile)
1272 (const AddonInstance_Game*, char**, unsigned int, const char*);
1273 GAME_ERROR(__cdecl* RCGetGameIDUrl)(const AddonInstance_Game*, char**, const char*);
1274 GAME_ERROR(__cdecl* RCGetPatchFileUrl)
1275 (const AddonInstance_Game*, char**, const char*, const char*, unsigned int);
1276 GAME_ERROR(__cdecl* RCPostRichPresenceUrl)
1277 (const AddonInstance_Game*,
1278 char**,
1279 char**,
1280 const char*,
1281 const char*,
1282 unsigned int,
1283 const char*);
1284 GAME_ERROR(__cdecl* RCEnableRichPresence)(const AddonInstance_Game*, const char*);
1285 GAME_ERROR(__cdecl* RCGetRichPresenceEvaluation)
1286 (const AddonInstance_Game*, char**, unsigned int);
1287 GAME_ERROR(__cdecl* RCResetRuntime)(const AddonInstance_Game*);
1288 void(__cdecl* FreeString)(const AddonInstance_Game*, char*);
1290
1296 typedef struct AddonInstance_Game
1297 {
1298 struct AddonProps_Game* props;
1299 struct AddonToKodiFuncTable_Game* toKodi;
1300 struct KodiToAddonFuncTable_Game* toAddon;
1302
1303#ifdef __cplusplus
1304}
1305#endif /* __cplusplus */
1306
1307#endif /* !C_API_ADDONINSTANCE_GAME_H */
const uint8_t * data
Pointer for audio stream data given to Kodi.
Definition game.h:171
size_t size
Size of data array.
Definition game.h:174
GAME_AUDIO_CHANNEL
Audio channel
Definition game.h:85
GAME_PCM_FORMAT
Stream Format
Definition game.h:71
@ GAME_CH_TFC
Channel top front center.
Definition game.h:129
@ GAME_CH_FL
Channel front left.
Definition game.h:90
@ GAME_CH_BL
Channel back left.
Definition game.h:102
@ GAME_CH_TBR
Channel top back right.
Definition game.h:138
@ GAME_CH_FC
Channel front center.
Definition game.h:96
@ GAME_CH_BLOC
Channel back left over center.
Definition game.h:144
@ GAME_CH_TFL
Channel top front left.
Definition game.h:123
@ GAME_CH_NULL
Channel list terminator.
Definition game.h:87
@ GAME_CH_TBC
Channel top back center.
Definition game.h:141
@ GAME_CH_SR
Channel surround/side right.
Definition game.h:120
@ GAME_CH_TFR
Channel top front right.
Definition game.h:126
@ GAME_CH_FR
Channel front right.
Definition game.h:93
@ GAME_CH_BC
Channel back center.
Definition game.h:114
@ GAME_CH_SL
Channel surround/side left.
Definition game.h:117
@ GAME_CH_LFE
Channel low frequency effects / subwoofer.
Definition game.h:99
@ GAME_CH_BROC
Channel back right over center.
Definition game.h:147
@ GAME_CH_TC
Channel top center.
Definition game.h:132
@ GAME_CH_FLOC
Channel front left over center.
Definition game.h:108
@ GAME_CH_FROC
Channel front right over center.
Definition game.h:111
@ GAME_CH_TBL
Channel top back left.
Definition game.h:135
@ GAME_CH_BR
Channel back right.
Definition game.h:105
@ GAME_PCM_FORMAT_S16NE
S16NE sample format.
Definition game.h:75
Audio stream packet
Definition game.h:169
Game audio stream properties
Definition game.h:157
double sample_rate
Sampling rate of audio.
Definition game.h:1130
double fps
FPS of video content.
Definition game.h:1127
Game system timing.
Definition game.h:1125
GAME_SIMD
ID values for SIMD CPU features
Definition game.h:660
GAME_REGION
Game region definition
Definition game.h:577
SPECIAL_GAME_TYPE
Special game types passed into game_load_game_special().
Definition game.h:595
GAME_MEMORY
Game Memory
Definition game.h:614
@ GAME_SIMD_VFPU
SIMD CPU VFPU.
Definition game.h:701
@ GAME_SIMD_VMX128
SIMD CPU VMX128.
Definition game.h:671
@ GAME_SIMD_SSE
SIMD CPU SSE.
Definition game.h:662
@ GAME_SIMD_SSE4
SIMD CPU SSE4.
Definition game.h:692
@ GAME_SIMD_NEON
SIMD CPU NEON.
Definition game.h:677
@ GAME_SIMD_AVX2
SIMD CPU AVX2.
Definition game.h:698
@ GAME_SIMD_SSE42
SIMD CPU SSE42.
Definition game.h:695
@ GAME_SIMD_SSSE3
SIMD CPU SSSE3.
Definition game.h:683
@ GAME_SIMD_SSE2
SIMD CPU SSE2.
Definition game.h:665
@ GAME_SIMD_SSE3
SIMD CPU SSE3.
Definition game.h:680
@ GAME_SIMD_AVX
SIMD CPU AVX.
Definition game.h:674
@ GAME_SIMD_MMXEXT
SIMD CPU MMXEXT.
Definition game.h:689
@ GAME_SIMD_MMX
SIMD CPU MMX.
Definition game.h:686
@ GAME_SIMD_VMX
SIMD CPU VMX.
Definition game.h:668
@ GAME_REGION_NTSC
Game region NTSC.
Definition game.h:582
@ GAME_REGION_PAL
Game region PAL.
Definition game.h:585
@ GAME_REGION_UNKNOWN
Game region unknown.
Definition game.h:579
@ SPECIAL_GAME_TYPE_SUPER_GAME_BOY
Game Type super game boy.
Definition game.h:606
@ SPECIAL_GAME_TYPE_BSX
Game Type BSX.
Definition game.h:597
@ SPECIAL_GAME_TYPE_BSX_SLOTTED
Game Type BSX slotted.
Definition game.h:600
@ SPECIAL_GAME_TYPE_SUFAMI_TURBO
Game Type sufami turbo.
Definition game.h:603
@ GAME_MEMORY_SNES_SUFAMI_TURBO_A_RAM
Special memory type.
Definition game.h:644
@ GAME_MEMORY_VIDEO_RAM
Video ram lets a frontend peek into a game systems video RAM (VRAM)
Definition game.h:635
@ GAME_MEMORY_SNES_SUFAMI_TURBO_B_RAM
Special memory type.
Definition game.h:647
@ GAME_MEMORY_SNES_GAME_BOY_RTC
Special memory type.
Definition game.h:653
@ GAME_MEMORY_SNES_BSX_PRAM
Special memory type.
Definition game.h:641
@ GAME_MEMORY_MASK
Passed to game_get_memory_data/size(). If the memory type doesn't apply to the implementation NULL/0 ...
Definition game.h:617
@ GAME_MEMORY_SAVE_RAM
Regular save ram.
Definition game.h:624
@ GAME_MEMORY_SYSTEM_RAM
System ram lets a frontend peek into a game systems main RAM.
Definition game.h:632
@ GAME_MEMORY_SNES_BSX_RAM
Special memory type.
Definition game.h:638
@ GAME_MEMORY_RTC
Some games have a built-in clock to keep track of time.
Definition game.h:629
@ GAME_MEMORY_SNES_GAME_BOY_RAM
Special memory type.
Definition game.h:650
bool cache_context
If this is true, the frontend will go very far to avoid resetting context in scenarios like toggling ...
Definition game.h:374
unsigned int version_minor
Minor version number for core GL context or GLES 3.1+.
Definition game.h:361
bool depth
Set if render buffers should have depth component attached.
Definition game.h:338
unsigned int version_major
Major version number for core GL context or GLES 3.1+.
Definition game.h:358
bool bottom_left_origin
Use conventional bottom-left origin convention.
Definition game.h:355
GAME_HW_CONTEXT_TYPE context_type
The API to use.
Definition game.h:332
bool debug_context
Creates a debug context.
Definition game.h:377
bool stencil
Set if stencil buffers should be attached.
Definition game.h:347
void(* game_proc_address_t)(void)
Hardware framebuffer process function address
Definition game.h:417
GAME_HW_CONTEXT_TYPE
Hardware framebuffer type
Definition game.h:297
@ GAME_HW_CONTEXT_OPENGLES2
OpenGL ES 2.0.
Definition game.h:305
@ GAME_HW_CONTEXT_OPENGL_CORE
Modern desktop core GL context. Use major/minor fields to set GL version.
Definition game.h:308
@ GAME_HW_CONTEXT_VULKAN
Vulkan.
Definition game.h:317
@ GAME_HW_CONTEXT_OPENGLES_VERSION
OpenGL ES 3.1+. Set major/minor fields.
Definition game.h:314
@ GAME_HW_CONTEXT_OPENGLES3
OpenGL ES 3.0.
Definition game.h:311
@ GAME_HW_CONTEXT_NONE
None context.
Definition game.h:299
@ GAME_HW_CONTEXT_OPENGL
OpenGL 2.x. Driver can choose to use latest compatibility context.
Definition game.h:302
Hardware rendering properties
Definition game.h:329
Hardware framebuffer buffer
Definition game.h:398
Hardware framebuffer packet
Definition game.h:408
Hardware framebuffer properties
Definition game.h:389
int y
The relative Y position of the pointer.
Definition game.h:1033
struct game_accelerometer_event accelerometer
Accelerometer event.
bool pressed
True if the button is pressed, false if it is released.
Definition game.h:954
const char * feature_name
The name of the feature that generated the event.
Definition game.h:1078
GAME_INPUT_EVENT_SOURCE type
The type of input event.
Definition game.h:1066
unsigned int port_count
The number of ports in the available ports list.
Definition game.h:899
struct game_key_event key
Key event.
game_input_port * ports
The list of ports on the virtual game console.
Definition game.h:939
struct game_axis_event axis
Axis event.
struct game_analog_button_event analog_button
Analog button event.
bool force_connected
Flag to prevent a port from being disconnected.
Definition game.h:919
struct game_motor_event motor
Motor vibration event.
unsigned int device_count
The number of devices in the accepted devices list.
Definition game.h:925
int x
The relative X position of the pointer.
Definition game.h:1030
struct game_analog_stick_event analog_stick
Analog stick event.
GAME_PORT_TYPE type
The type of port.
Definition game.h:909
float position
The position of the axis, from -1.0 to 1.0.
Definition game.h:972
struct game_input_port * available_ports
The list of ports that the device can be connected to.
Definition game.h:896
float magnitude
The magnitude of the button press, from 0.0 to 1.0.
Definition game.h:963
const char * controller_id
ID used in the Kodi controller API, e.g. game.controller.default
Definition game.h:890
struct game_digital_button_event digital_button
Digital button event.
float y
The position of the stick along the Y axis, from -1.0 to 1.0.
Definition game.h:987
const char * port_address
The address of the port that the device is connected to.
Definition game.h:893
uint32_t unicode
If the keypress generates a printing character.
Definition game.h:1018
GAME_KEY_MOD modifiers
Modifier keys pressed with the event key.
Definition game.h:1021
GAME_PORT_TYPE port_type
The type of port that the controller is connected to.
Definition game.h:1072
float x
The position of the stick along the X axis, from -1.0 to 1.0.
Definition game.h:984
int player_limit
A limit on the number of input-providing devices, or -1 for no limit.
Definition game.h:945
const char * port_id
Required for GAME_PORT_CONTROLLER type.
Definition game.h:912
struct game_abs_pointer_event abs_pointer
Absolute pointer event.
game_input_device * accepted_devices
The list of devices that can be connected to the port.
Definition game.h:922
struct game_rel_pointer_event rel_pointer
Relative pointer event.
float z
The accelerometer Z axis, from -1.0 to 1.0.
Definition game.h:1002
GAME_INPUT_EVENT_SOURCE
Type of input event.
Definition game.h:773
GAME_KEY_MOD
A modifier key pressed to give another key a special meaning.
Definition game.h:806
GAME_PORT_TYPE
Type of port on the virtual game console.
Definition game.h:839
@ GAME_INPUT_EVENT_DIGITAL_BUTTON
Digital button press or release.
Definition game.h:775
@ GAME_INPUT_EVENT_ANALOG_STICK
Analog stick motion.
Definition game.h:784
@ GAME_INPUT_EVENT_ABSOLUTE_POINTER
Absolute pointer motion.
Definition game.h:796
@ GAME_INPUT_EVENT_RELATIVE_POINTER
Relative pointer motion.
Definition game.h:793
@ GAME_INPUT_EVENT_MOTOR
Motor vibration.
Definition game.h:799
@ GAME_INPUT_EVENT_ACCELEROMETER
Accelerometer motion.
Definition game.h:787
@ GAME_INPUT_EVENT_KEY
Key press or release.
Definition game.h:790
@ GAME_INPUT_EVENT_AXIS
Axis motion.
Definition game.h:781
@ GAME_INPUT_EVENT_ANALOG_BUTTON
Analog button motion.
Definition game.h:778
@ GAME_KEY_MOD_ALT
Alt key.
Definition game.h:817
@ GAME_KEY_MOD_CAPSLOCK
Caps Lock key.
Definition game.h:829
@ GAME_KEY_MOD_CTRL
Control key.
Definition game.h:814
@ GAME_KEY_MOD_META
Meta key.
Definition game.h:820
@ GAME_KEY_MOD_SCROLLOCK
Scroll Lock key.
Definition game.h:832
@ GAME_KEY_MOD_NUMLOCK
Num Lock key.
Definition game.h:826
@ GAME_KEY_MOD_SUPER
Windows key.
Definition game.h:823
@ GAME_KEY_MOD_NONE
No modifier key.
Definition game.h:808
@ GAME_KEY_MOD_SHIFT
Shift key.
Definition game.h:811
@ GAME_PORT_MOUSE
Game port mouse.
Definition game.h:847
@ GAME_PORT_CONTROLLER
Game port controller.
Definition game.h:850
@ GAME_PORT_KEYBOARD
Game port Keyboard.
Definition game.h:844
@ GAME_PORT_UNKNOWN
Game port unknown.
Definition game.h:841
An absolute pointer event, such as a touchscreen or tablet motion.
Definition game.h:1040
An accelerometer event.
Definition game.h:994
An analog button event, such as a trigger press or release.
Definition game.h:961
An analog stick event, such as a joystick's motion.
Definition game.h:982
An axis event, such as a joystick or accelerometer.
Definition game.h:970
"C" Game add-on controller layout.
Definition game.h:862
A digital button event, such as a button press or release.
Definition game.h:952
Device that can provide input.
Definition game.h:888
An input event.
Definition game.h:1064
Port that can provide input.
Definition game.h:907
The input topology is the possible ways to connect input devices.
Definition game.h:937
A key event, such as a key press or release.
Definition game.h:1009
A motor vibration event.
Definition game.h:1055
A relative pointer event, such as a mouse motion.
Definition game.h:1028
game_stream_video_packet game_stream_sw_framebuffer_packet
Software framebuffer packet
Definition game.h:453
game_stream_video_properties game_stream_sw_framebuffer_properties
Game software framebuffer stream properties
Definition game.h:434
Software framebuffer type
Definition game.h:441
GAME_STREAM_TYPE type
The stream type.
Definition game.h:496
game_stream_video_properties video
The video stream properties.
game_stream_sw_framebuffer_properties sw_framebuffer
The software framebuffer properties.
game_stream_audio_properties audio
The audio stream properties.
game_stream_hw_framebuffer_properties hw_framebuffer
The hardware framebuffer properties.
GAME_STREAM_TYPE
Game stream types
Definition game.h:469
@ GAME_STREAM_VIDEO
Video stream.
Definition game.h:477
@ GAME_STREAM_AUDIO
Audio stream.
Definition game.h:474
@ GAME_STREAM_HW_FRAMEBUFFER
Hardware framebuffer.
Definition game.h:480
@ GAME_STREAM_UNKNOWN
Unknown.
Definition game.h:471
@ GAME_STREAM_SW_FRAMEBUFFER
Software framebuffer.
Definition game.h:483
Stream buffers for hardware rendering and zero-copy support
Definition game.h:519
Stream packet and ephemeral metadata
Definition game.h:542
Immutable stream metadata
Definition game.h:494
float aspect_ratio
On video stream used aspect ration.
Definition game.h:256
const uint8_t * data
Pointer for video stream data given to Kodi.
Definition game.h:277
size_t size
Size of data array.
Definition game.h:280
unsigned int nominal_width
The nominal used width.
Definition game.h:242
unsigned int max_height
The maximal used height.
Definition game.h:251
GAME_VIDEO_ROTATION rotation
Width GAME_VIDEO_ROTATION defined rotation angle.
Definition game.h:274
unsigned int height
Video width.
Definition game.h:271
unsigned int max_width
The maximal used width.
Definition game.h:248
unsigned int width
Video height.
Definition game.h:268
GAME_PIXEL_FORMAT format
The stream's pixel format.
Definition game.h:239
unsigned int nominal_height
The nominal used height.
Definition game.h:245
GAME_PIXEL_FORMAT
Pixel format
Definition game.h:196
GAME_VIDEO_ROTATION
Video rotation position
Definition game.h:216
@ GAME_PIXEL_FORMAT_RGB565
RGB565 Format.
Definition game.h:203
@ GAME_PIXEL_FORMAT_0RGB1555
0RGB1555 Format
Definition game.h:206
@ GAME_PIXEL_FORMAT_0RGB8888
0RGB8888 Format
Definition game.h:200
@ GAME_VIDEO_ROTATION_180_CCW
rotate 180° counterclockwise
Definition game.h:224
@ GAME_VIDEO_ROTATION_0
0° and Without rotation
Definition game.h:218
@ GAME_VIDEO_ROTATION_90_CCW
rotate 90° counterclockwise
Definition game.h:221
@ GAME_VIDEO_ROTATION_270_CCW
rotate 270° counterclockwise
Definition game.h:227
Video stream packet
Definition game.h:266
Game video stream properties
Definition game.h:237
GAME_ERROR
Game add-on error codes
Definition game.h:28
@ GAME_ERROR_FAILED
the command failed
Definition game.h:45
@ GAME_ERROR_REJECTED
the command was rejected by the game client
Definition game.h:39
@ GAME_ERROR_INVALID_PARAMETERS
the parameters of the method that was called are invalid for this operation
Definition game.h:42
@ GAME_ERROR_UNKNOWN
an unknown error occurred
Definition game.h:33
@ GAME_ERROR_NO_ERROR
no error occurred
Definition game.h:30
@ GAME_ERROR_RESTRICTED
game requires restricted resources
Definition game.h:51
@ GAME_ERROR_NOT_LOADED
no game is loaded
Definition game.h:48
@ GAME_ERROR_NOT_IMPLEMENTED
the method that the frontend called is not implemented
Definition game.h:36
Game instance.
Definition game.h:1297
Game properties.
Definition game.h:1144
const char ** resource_directories
The "system" directories of the frontend.
Definition game.h:1166
unsigned int proxy_dll_count
Number of proxy DLL paths provided.
Definition game.h:1158
const char * profile_directory
The writable directory of the frontend.
Definition game.h:1179
const char * game_client_dll_path
The path of the game client being loaded.
Definition game.h:1148
unsigned int extension_count
Number of extensions provided.
Definition game.h:1194
bool supports_vfs
The value of the <supports_vfs> property from addon.xml.
Definition game.h:1184
const char ** proxy_dll_paths
Paths to proxy DLLs used to load the game client.
Definition game.h:1153
const char ** extensions
The extensions in the <extensions> property from addon.xml.
Definition game.h:1189
unsigned int resource_directory_count
Number of resource directories provided.
Definition game.h:1171
Game callbacks.
Definition game.h:1210
Game function hooks.
Definition game.h:1234