9 #ifndef C_API_ADDONINSTANCE_GAME_H
10 #define C_API_ADDONINSTANCE_GAME_H
12 #include "../addon_base.h"
19 #define DEFAULT_PORT_ID "1"
78 GAME_PCM_FORMAT_UNKNOWN,
203 GAME_PIXEL_FORMAT_UNKNOWN,
389 uintptr_t framebuffer;
399 uintptr_t framebuffer;
702 typedef enum GAME_INPUT_EVENT_SOURCE
705 GAME_INPUT_EVENT_DIGITAL_BUTTON,
708 GAME_INPUT_EVENT_ANALOG_BUTTON,
711 GAME_INPUT_EVENT_AXIS,
714 GAME_INPUT_EVENT_ANALOG_STICK,
717 GAME_INPUT_EVENT_ACCELEROMETER,
720 GAME_INPUT_EVENT_KEY,
723 GAME_INPUT_EVENT_RELATIVE_POINTER,
726 GAME_INPUT_EVENT_ABSOLUTE_POINTER,
729 GAME_INPUT_EVENT_MOTOR,
730 } GAME_INPUT_EVENT_SOURCE;
735 typedef enum GAME_KEY_MOD
738 GAME_KEY_MOD_NONE = 0x0000,
741 GAME_KEY_MOD_SHIFT = 0x0001,
744 GAME_KEY_MOD_CTRL = 0x0002,
747 GAME_KEY_MOD_ALT = 0x0004,
750 GAME_KEY_MOD_META = 0x0008,
753 GAME_KEY_MOD_SUPER = 0x0010,
756 GAME_KEY_MOD_NUMLOCK = 0x0100,
759 GAME_KEY_MOD_CAPSLOCK = 0x0200,
762 GAME_KEY_MOD_SCROLLOCK = 0x0400,
792 typedef struct game_controller_layout
796 char** digital_buttons;
797 unsigned int digital_button_count;
798 char** analog_buttons;
799 unsigned int analog_button_count;
800 char** analog_sticks;
801 unsigned int analog_stick_count;
802 char** accelerometers;
803 unsigned int accelerometer_count;
805 unsigned int key_count;
807 unsigned int rel_pointer_count;
809 unsigned int abs_pointer_count;
811 unsigned int motor_count;
812 } ATTRIBUTE_PACKED game_controller_layout;
825 const char* port_address;
831 unsigned int port_count;
854 unsigned int device_count;
947 GAME_KEY_MOD modifiers;
992 GAME_INPUT_EVENT_SOURCE type;
995 const char* controller_id;
1001 const char* port_address;
1004 const char* feature_name;
1120 typedef void* KODI_GAME_STREAM_HANDLE;
1133 KODI_HANDLE kodiInstance;
1135 void (*CloseGame)(KODI_HANDLE kodiInstance);
1137 bool (*GetStreamBuffer)(KODI_HANDLE,
1138 KODI_GAME_STREAM_HANDLE,
1142 void (*AddStreamData)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE,
const struct game_stream_packet*);
1143 void (*ReleaseStreamBuffer)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE,
struct game_stream_buffer*);
1144 void (*CloseStream)(KODI_HANDLE, KODI_GAME_STREAM_HANDLE);
1146 bool (*InputEvent)(KODI_HANDLE kodiInstance,
const struct game_input_event* event);
1156 KODI_HANDLE addonInstance;
1171 bool(__cdecl* HasFeature)(
const struct AddonInstance_Game*,
const char*,
const char*);
1175 const struct game_controller_layout*,
const uint8_t * data
Pointer for audio stream data given to Kodi.
Definition: game.h:177
size_t size
Size of data array.
Definition: game.h:180
GAME_AUDIO_CHANNEL
Audio channel
Definition: game.h:91
GAME_PCM_FORMAT
Stream Format
Definition: game.h:77
@ GAME_CH_TFC
Channel top front center.
Definition: game.h:135
@ GAME_CH_FL
Channel front left.
Definition: game.h:96
@ GAME_CH_BL
Channel back left.
Definition: game.h:108
@ GAME_CH_TBR
Channel top back right.
Definition: game.h:144
@ GAME_CH_FC
Channel front center.
Definition: game.h:102
@ GAME_CH_BLOC
Channel bacl left over center.
Definition: game.h:150
@ GAME_CH_TFL
Channel top front left.
Definition: game.h:129
@ GAME_CH_NULL
Channel list terminator.
Definition: game.h:93
@ GAME_CH_TBC
Channel top back center.
Definition: game.h:147
@ GAME_CH_SR
Channel surround/side right.
Definition: game.h:126
@ GAME_CH_TFR
Channel top front right.
Definition: game.h:132
@ GAME_CH_FR
Channel front right.
Definition: game.h:99
@ GAME_CH_BC
Channel back center.
Definition: game.h:120
@ GAME_CH_SL
Channel surround/side left.
Definition: game.h:123
@ GAME_CH_LFE
Channel Low Frequency Effects / Subwoofer.
Definition: game.h:105
@ GAME_CH_BROC
Channel back right over center.
Definition: game.h:153
@ GAME_CH_TC
Channel top center.
Definition: game.h:138
@ GAME_CH_FLOC
Channel front left over center.
Definition: game.h:114
@ GAME_CH_FROC
Channel front right over center.
Definition: game.h:117
@ GAME_CH_TBL
Channel top back left.
Definition: game.h:141
@ GAME_CH_BR
Channel back right.
Definition: game.h:111
@ GAME_PCM_FORMAT_S16NE
S16NE sample format.
Definition: game.h:81
Audio stream packet
Definition: game.h:175
Game audio stream properties
Definition: game.h:163
double sample_rate
Sampling rate of audio.
Definition: game.h:1055
double fps
FPS of video content.
Definition: game.h:1052
Game system timing.
Definition: game.h:1050
GAME_SIMD
ID values for SIMD CPU features
Definition: game.h:646
GAME_REGION
Game reguin definition
Definition: game.h:563
SPECIAL_GAME_TYPE
Special game types passed into game_load_game_special().
Definition: game.h:581
GAME_MEMORY
Game Memory
Definition: game.h:600
@ GAME_SIMD_VFPU
SIMD CPU VFPU.
Definition: game.h:687
@ GAME_SIMD_VMX128
SIMD CPU VMX128.
Definition: game.h:657
@ GAME_SIMD_SSE
SIMD CPU SSE.
Definition: game.h:648
@ GAME_SIMD_SSE4
SIMD CPU SSE4.
Definition: game.h:678
@ GAME_SIMD_NEON
SIMD CPU NEON.
Definition: game.h:663
@ GAME_SIMD_AVX2
SIMD CPU AVX2.
Definition: game.h:684
@ GAME_SIMD_SSE42
SIMD CPU SSE42.
Definition: game.h:681
@ GAME_SIMD_SSSE3
SIMD CPU SSSE3.
Definition: game.h:669
@ GAME_SIMD_SSE2
SIMD CPU SSE2.
Definition: game.h:651
@ GAME_SIMD_SSE3
SIMD CPU SSE3.
Definition: game.h:666
@ GAME_SIMD_AVX
SIMD CPU AVX.
Definition: game.h:660
@ GAME_SIMD_MMXEXT
SIMD CPU MMXEXT.
Definition: game.h:675
@ GAME_SIMD_MMX
SIMD CPU MMX.
Definition: game.h:672
@ GAME_SIMD_VMX
SIMD CPU VMX.
Definition: game.h:654
@ GAME_REGION_NTSC
Game region NTSC.
Definition: game.h:568
@ GAME_REGION_PAL
Game region PAL.
Definition: game.h:571
@ GAME_REGION_UNKNOWN
Game region unknown.
Definition: game.h:565
@ SPECIAL_GAME_TYPE_SUPER_GAME_BOY
Game Type super game boy.
Definition: game.h:592
@ SPECIAL_GAME_TYPE_BSX
Game Type BSX.
Definition: game.h:583
@ SPECIAL_GAME_TYPE_BSX_SLOTTED
Game Type BSX slotted.
Definition: game.h:586
@ SPECIAL_GAME_TYPE_SUFAMI_TURBO
Game Type sufami turbo.
Definition: game.h:589
@ GAME_MEMORY_SNES_SUFAMI_TURBO_A_RAM
Special memory type.
Definition: game.h:630
@ GAME_MEMORY_VIDEO_RAM
Video ram lets a frontend peek into a game systems video RAM (VRAM)
Definition: game.h:621
@ GAME_MEMORY_SNES_SUFAMI_TURBO_B_RAM
Special memory type.
Definition: game.h:633
@ GAME_MEMORY_SNES_GAME_BOY_RTC
Special memory type.
Definition: game.h:639
@ GAME_MEMORY_SNES_BSX_PRAM
Special memory type.
Definition: game.h:627
@ 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:603
@ GAME_MEMORY_SAVE_RAM
Regular save ram.
Definition: game.h:610
@ GAME_MEMORY_SYSTEM_RAM
System ram lets a frontend peek into a game systems main RAM.
Definition: game.h:618
@ GAME_MEMORY_SNES_BSX_RAM
Special memory type.
Definition: game.h:624
@ GAME_MEMORY_RTC
Some games have a built-in clock to keep track of time.
Definition: game.h:615
@ GAME_MEMORY_SNES_GAME_BOY_RAM
Special memory type.
Definition: game.h:636
bool cache_context
If this is true, the frontend will go very far to avoid resetting context in scenarios like toggling ...
Definition: game.h:376
unsigned int version_minor
Minor version number for core GL context or GLES 3.1+.
Definition: game.h:363
bool depth
Set if render buffers should have depth component attached.
Definition: game.h:340
unsigned int version_major
Major version number for core GL context or GLES 3.1+.
Definition: game.h:360
bool bottom_left_origin
Use conventional bottom-left origin convention.
Definition: game.h:357
GAME_HW_CONTEXT_TYPE context_type
The API to use.
Definition: game.h:334
bool debug_context
Creates a debug context.
Definition: game.h:379
bool stencil
Set if stencil buffers should be attached.
Definition: game.h:349
void(* game_proc_address_t)(void)
Hardware framebuffer process function address
Definition: game.h:406
GAME_HW_CONTEXT_TYPE
Hardware framebuffer type
Definition: game.h:303
@ GAME_HW_CONTEXT_OPENGLES2
OpenGL ES 2.0.
Definition: game.h:311
@ GAME_HW_CONTEXT_OPENGL_CORE
Modern desktop core GL context. Use major/minor fields to set GL version.
Definition: game.h:314
@ GAME_HW_CONTEXT_VULKAN
Vulkan.
Definition: game.h:323
@ GAME_HW_CONTEXT_OPENGLES_VERSION
OpenGL ES 3.1+. Set major/minor fields.
Definition: game.h:320
@ GAME_HW_CONTEXT_OPENGLES3
OpenGL ES 3.0.
Definition: game.h:317
@ GAME_HW_CONTEXT_NONE
None context.
Definition: game.h:305
@ GAME_HW_CONTEXT_OPENGL
OpenGL 2.x. Driver can choose to use latest compatibility context.
Definition: game.h:308
Hardware framebuffer buffer
Definition: game.h:387
Hardware framebuffer packet
Definition: game.h:397
Hardware framebuffer properties
Definition: game.h:331
game_stream_video_packet game_stream_sw_framebuffer_packet
Video stream packet
Definition: game.h:442
game_stream_video_properties game_stream_sw_framebuffer_properties
Game video stream properties
Definition: game.h:423
Hardware framebuffer type
Definition: game.h:430
GAME_STREAM_TYPE
Game stream types
Definition: game.h:458
@ GAME_STREAM_VIDEO
Video stream.
Definition: game.h:466
@ GAME_STREAM_AUDIO
Audio stream.
Definition: game.h:463
@ GAME_STREAM_HW_FRAMEBUFFER
Hardware framebuffer.
Definition: game.h:469
@ GAME_STREAM_UNKNOWN
Unknown.
Definition: game.h:460
@ GAME_STREAM_SW_FRAMEBUFFER
Software framebuffer.
Definition: game.h:472
Stream buffers for hardware rendering and zero-copy support
Definition: game.h:507
Stream packet and ephemeral metadata
Definition: game.h:529
Immutable stream metadata
Definition: game.h:483
float aspect_ratio
On video stream used aspect ration.
Definition: game.h:262
const uint8_t * data
Pointer for video stream data given to Kodi.
Definition: game.h:283
size_t size
Size of data array.
Definition: game.h:286
unsigned int nominal_width
The nominal used width.
Definition: game.h:248
unsigned int max_height
The maximal used height.
Definition: game.h:257
GAME_VIDEO_ROTATION rotation
Width GAME_VIDEO_ROTATION defined rotation angle.
Definition: game.h:280
unsigned int height
Video width.
Definition: game.h:277
unsigned int max_width
The maximal used width.
Definition: game.h:254
unsigned int width
Video height.
Definition: game.h:274
GAME_PIXEL_FORMAT format
The stream's pixel format.
Definition: game.h:245
unsigned int nominal_height
The nominal used height.
Definition: game.h:251
GAME_PIXEL_FORMAT
Pixel format
Definition: game.h:202
GAME_VIDEO_ROTATION
Video rotation position
Definition: game.h:222
@ GAME_PIXEL_FORMAT_RGB565
RGB565 Format.
Definition: game.h:209
@ GAME_PIXEL_FORMAT_0RGB1555
0RGB1555 Format
Definition: game.h:212
@ GAME_PIXEL_FORMAT_0RGB8888
0RGB8888 Format
Definition: game.h:206
@ GAME_VIDEO_ROTATION_180_CCW
rotate 180° counterclockwise
Definition: game.h:230
@ GAME_VIDEO_ROTATION_0
0° and Without rotation
Definition: game.h:224
@ GAME_VIDEO_ROTATION_90_CCW
rotate 90° counterclockwise
Definition: game.h:227
@ GAME_VIDEO_ROTATION_270_CCW
rotate 270° counterclockwise
Definition: game.h:233
Video stream packet
Definition: game.h:272
Game video stream properties
Definition: game.h:243
GAME_ERROR
Game add-on error codes
Definition: game.h:34
@ GAME_ERROR_FAILED
the command failed
Definition: game.h:51
@ GAME_ERROR_REJECTED
the command was rejected by the game client
Definition: game.h:45
@ GAME_ERROR_INVALID_PARAMETERS
the parameters of the method that was called are invalid for this operation
Definition: game.h:48
@ GAME_ERROR_UNKNOWN
an unknown error occurred
Definition: game.h:39
@ GAME_ERROR_NO_ERROR
no error occurred
Definition: game.h:36
@ GAME_ERROR_RESTRICTED
game requires restricted resources
Definition: game.h:57
@ GAME_ERROR_NOT_LOADED
no game is loaded
Definition: game.h:54
@ GAME_ERROR_NOT_IMPLEMENTED
the method that the frontend called is not implemented
Definition: game.h:42
std::string ATTRIBUTE_HIDDEN GetRegion(const std::string &id)
Returns your regions setting as a string for the specified id.
Definition: General.h:478
Game instance.
Definition: game.h:1200
Game properties.
Definition: game.h:1070
const char ** resource_directories
Definition: game.h:1090
unsigned int proxy_dll_count
Definition: game.h:1084
const char * profile_directory
Definition: game.h:1102
const char * game_client_dll_path
Definition: game.h:1074
unsigned int extension_count
Definition: game.h:1117
bool supports_vfs
Definition: game.h:1107
const char ** proxy_dll_paths
Definition: game.h:1079
const char ** extensions
Definition: game.h:1112
unsigned int resource_directory_count
Definition: game.h:1095
Game callbacks.
Definition: game.h:1132
Game function hooks.
Definition: game.h:1155