RetroArch
platform_xdk.h
Go to the documentation of this file.
1 #ifdef _XBOX1
2 #include <pshpack4.h>
3 
4 // Don't do __declspec(dllimport) for things like emulators
5 #if defined(NTSYSAPI) && defined(DONT_IMPORT_INTERNAL)
6 #undef NTSYSAPI
7 #endif
8 #ifdef DONT_IMPORT_INTERNAL
9 #define NTSYSAPI
10 #endif
11 
12 // The normal headers don't have this...?
13 #define FASTCALL __fastcall
14 
15 // The usual NTSTATUS
16 typedef LONG NTSTATUS;
17 
18 // The usual NT_SUCCESS
19 #define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
20 
21 // Just for documentation
22 #define EXPORTNUM(x)
23 
24 
25 // Needed for object structures and related things
26 typedef CONST SHORT CSHORT;
27 
28 
29 // String types
30 typedef CHAR *PSZ;
31 typedef CONST CHAR *PCSZ;
32 
33 // ANSI_STRING
34 // Differences from NT: None.
35 typedef struct _STRING {
36  USHORT Length;
37  USHORT MaximumLength;
38  PCHAR Buffer;
39 } STRING;
40 typedef STRING *PSTRING;
41 
42 typedef STRING ANSI_STRING;
43 typedef PSTRING PANSI_STRING;
44 
45 
46 // IO Status Block type (UNVERIFIED)
47 // Differences from NT: None.
48 typedef struct _IO_STATUS_BLOCK {
49  union {
50  NTSTATUS Status;
51  PVOID Pointer;
52  };
53 
54  ULONG_PTR Information;
55 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
56 
57 // APC routine
58 typedef
59 VOID
60 (NTAPI *PIO_APC_ROUTINE) (
61  IN PVOID ApcContext,
62  IN PIO_STATUS_BLOCK IoStatusBlock,
63  IN ULONG Reserved
64  );
65 
66 
67 // Header for dispatcher objects
68 // Differences from NT: None.
69 typedef struct _DISPATCHER_HEADER {
70  UCHAR Type;
71  UCHAR Absolute;
72  UCHAR Size;
73  UCHAR Inserted;
74  LONG SignalState;
75  LIST_ENTRY WaitListHead;
76 } DISPATCHER_HEADER;
77 
78 
79 // Object types
80 #define NotificationTimerObject 8
81 #define SynchronizationTimerObject 9
82 #define DpcObject 19
83 
84 
85 // Object Attributes type
86 // Differences from NT: There are no Length, SecurityDescriptor, or
87 // SecurityQualityOfService fields. Also, ObjectName is ANSI, not
88 // Unicode.
89 typedef struct _OBJECT_ATTRIBUTES {
90  HANDLE RootDirectory;
91  PANSI_STRING ObjectName;
92  ULONG Attributes;
93 } OBJECT_ATTRIBUTES;
94 typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
95 
96 // Flags for OBJECT_ATTRIBUTES::Attributes
97 #define OBJ_INHERIT 0x00000002L
98 #define OBJ_PERMANENT 0x00000010L
99 #define OBJ_EXCLUSIVE 0x00000020L
100 #define OBJ_CASE_INSENSITIVE 0x00000040L
101 #define OBJ_OPENIF 0x00000080L
102 #define OBJ_OPENLINK 0x00000100L
103 #define OBJ_KERNEL_HANDLE 0x00000200L
104 #define OBJ_VALID_ATTRIBUTES 0x000003F2L
105 
106 // CreateDisposition values for NtCreateFile()
107 #define FILE_SUPERSEDE 0x00000000
108 #define FILE_OPEN 0x00000001
109 #define FILE_CREATE 0x00000002
110 #define FILE_OPEN_IF 0x00000003
111 #define FILE_OVERWRITE 0x00000004
112 #define FILE_OVERWRITE_IF 0x00000005
113 #define FILE_MAXIMUM_DISPOSITION 0x00000005
114 
115 // CreateOption values for NtCreateFile()
116 // FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT is what CreateFile
117 // uses for most things when translating to NtCreateFile.
118 #define FILE_DIRECTORY_FILE 0x00000001
119 #define FILE_WRITE_THROUGH 0x00000002
120 #define FILE_SEQUENTIAL_ONLY 0x00000004
121 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
122 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
123 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
124 #define FILE_NON_DIRECTORY_FILE 0x00000040
125 #define FILE_CREATE_TREE_CONNECTION 0x00000080
126 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
127 #define FILE_NO_EA_KNOWLEDGE 0x00000200
128 #define FILE_OPEN_FOR_RECOVERY 0x00000400
129 #define FILE_RANDOM_ACCESS 0x00000800
130 #define FILE_DELETE_ON_CLOSE 0x00001000
131 #define FILE_OPEN_BY_FILE_ID 0x00002000
132 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
133 #define FILE_NO_COMPRESSION 0x00008000
134 #define FILE_RESERVE_OPFILTER 0x00100000
135 #define FILE_OPEN_REPARSE_POINT 0x00200000
136 #define FILE_OPEN_NO_RECALL 0x00400000
137 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
138 #define FILE_COPY_STRUCTURED_STORAGE 0x00000041
139 #define FILE_STRUCTURED_STORAGE 0x00000441
140 #define FILE_VALID_OPTION_FLAGS 0x00ffffff
141 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
142 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
143 #define FILE_VALID_SET_FLAGS 0x00000036
144 
145 
146 // NtQueryVolumeInformation / NtSetVolumeInformation stuff
147 // Type of information to retrieve; FileFsSizeInformation and
148 // FileFsDeviceInformation are the only ones confirmed to work.
149 typedef enum _FSINFOCLASS {
150  FileFsVolumeInformation = 1,
151  FileFsLabelInformation,
152  FileFsSizeInformation,
153  FileFsDeviceInformation,
154  FileFsAttributeInformation,
155  FileFsControlInformation,
156  FileFsFullSizeInformation,
157  FileFsObjectInformation
158 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
159 
160 // Structure of FileFsSizeInformation
161 typedef struct _FILE_FS_SIZE_INFORMATION {
162  LARGE_INTEGER TotalAllocationUnits;
163  LARGE_INTEGER AvailableAllocationUnits;
164  ULONG SectorsPerAllocationUnit;
165  ULONG BytesPerSector;
166 } FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
167 
168 #define DEVICE_TYPE ULONG
169 
170 // Structure of FileFsDeviceInformation
171 typedef struct _FILE_FS_DEVICE_INFORMATION {
172  DEVICE_TYPE DeviceType;
173  ULONG Characteristics;
174 } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
175 
176 // DEVICE_TYPEs (I took a guess as to which the XBOX might have.)
177 #define FILE_DEVICE_CD_ROM 0x00000002
178 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
179 #define FILE_DEVICE_CONTROLLER 0x00000004
180 #define FILE_DEVICE_DISK 0x00000007
181 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
182 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
183 #define FILE_DEVICE_NULL 0x00000015
184 #define FILE_DEVICE_SCREEN 0x0000001c
185 #define FILE_DEVICE_SOUND 0x0000001d
186 #define FILE_DEVICE_UNKNOWN 0x00000022
187 #define FILE_DEVICE_VIDEO 0x00000023
188 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
189 #define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
190 
191 // Characteristics
192 #define FILE_REMOVABLE_MEDIA 0x00000001
193 #define FILE_READ_ONLY_DEVICE 0x00000002
194 #define FILE_FLOPPY_DISKETTE 0x00000004
195 #define FILE_WRITE_ONCE_MEDIA 0x00000008
196 #define FILE_REMOTE_DEVICE 0x00000010
197 #define FILE_DEVICE_IS_MOUNTED 0x00000020
198 #define FILE_VIRTUAL_VOLUME 0x00000040
199 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
200 #define FILE_DEVICE_SECURE_OPEN 0x00000100
201 
202 /* Physical address
203  * Differences from NT: 32 bit address instead of 64. */
204 typedef ULONG PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
205 
206 /* NtCreateFile/NtOpenFile stuff */
207 #define FILE_SUPERSEDED 0x00000000
208 #define FILE_OPENED 0x00000001
209 #define FILE_CREATED 0x00000002
210 #define FILE_OVERWRITTEN 0x00000003
211 #define FILE_EXISTS 0x00000004
212 #define FILE_DOES_NOT_EXIST 0x00000005
213 
214 // NtReadFile/NtWriteFile stuff
215 #define FILE_WRITE_TO_END_OF_FILE 0xffffffff
216 #define FILE_USE_FILE_POINTER_POSITION 0xfffffffe
217 
218 // Device types
219 #define FILE_DEVICE_CD_ROM 0x00000002
220 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
221 #define FILE_DEVICE_CONTROLLER 0x00000004
222 #define FILE_DEVICE_SCSI FILE_DEVICE_CONTROLLER
223 #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
224 #define FILE_DEVICE_DISK 0x00000007
225 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
226 #define FILE_DEVICE_DVD 0x00000033
227 
228 // Access types
229 #define FILE_ANY_ACCESS 0
230 #define FILE_READ_ACCESS 0x0001 /* file & pipe */
231 #define FILE_WRITE_ACCESS 0x0002 /* file & pipe */
232 
233 // Method types
234 #define METHOD_BUFFERED 0
235 #define METHOD_IN_DIRECT 1
236 #define METHOD_OUT_DIRECT 2
237 #define METHOD_NEITHER 3
238 
239 // The all-important CTL_CODE
240 #define CTL_CODE( DeviceType, Function, Method, Access ) ( \
241  ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
242 )
243 
244 // IDE/SCSI codes
245 // IOCTL_SCSI_PASS_THROUGH_DIRECT is the only one known to be used.
246 // Differences from NT: None.
247 #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
248 #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
249 #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
250 #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
251 #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
252 #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
253 #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
254 #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
255 #define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
256 #define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
257 
258 // Special XBOX code?
259 #define IOCTL_CDROM_AUTHENTICATE_DISK CTL_CODE(FILE_DEVICE_CD_ROM, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
260 
261 /* Structure for IOCTL_SCSI_PASS_THROUGH_DIRECT
262  * Differences from NT: None, believe it or not. */
263 typedef struct _SCSI_PASS_THROUGH_DIRECT {
264  /*000*/ USHORT Length;
265  /*002*/ UCHAR ScsiStatus;
266  /*003*/ UCHAR PathId;
267  /*004*/ UCHAR TargetId;
268  /*005*/ UCHAR Lun;
269  /*006*/ UCHAR CdbLength;
270  /*007*/ UCHAR SenseInfoLength;
271  /*008*/ UCHAR DataIn;
272  /*00C*/ ULONG DataTransferLength;
273  /*010*/ ULONG TimeOutValue;
274  /*014*/ PVOID DataBuffer;
275  /*018*/ ULONG SenseInfoOffset;
276  /*01C*/ UCHAR Cdb[16];
277 }SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
278 
279 /* DataIn fields for IOCTL_SCSI_PASS_THROUGH_DIRECT */
280 #define SCSI_IOCTL_DATA_OUT 0
281 #define SCSI_IOCTL_DATA_IN 1
282 #define SCSI_IOCTL_DATA_UNSPECIFIED 2
283 
284 /* Kernel object type (unsure about the structure...) */
285 typedef struct _OBJECT_TYPE
286 {
287  // Same prototype as ExAllocatePoolWithTag, because that's the usual one
288  PVOID
289  (NTAPI *AllocationFunction)(
290  SIZE_T NumberOfBytes,
291  ULONG Tag
292  );
293 
294  // Same prototype as ExFreePool, because that's the usual one
295  VOID
296  (NTAPI *FreeFunction)(
297  IN PVOID P
298  );
299 
300  // The prototypes of these are unknown
301  void *CloseFunction;
302  void *DeleteFunction;
303  void *ParseFunction;
304 
305  // Unknown DWORD... Size of this object type maybe?
306  void *DefaultObjectMaybe;
307 
308  // 4 letter tag for this object type
309  CHAR Tag[4];
310 } OBJECT_TYPE;
311 typedef OBJECT_TYPE *POBJECT_TYPE;
312 
313 // Object types
314 extern POBJECT_TYPE IoFileObjectType;
315 extern POBJECT_TYPE ExEventObjectType;
316 extern POBJECT_TYPE ExSemaphoreObjectType;
317 extern POBJECT_TYPE IoCompletionObjectType;
318 extern POBJECT_TYPE IoDeviceObjectType;
319 
320 
321 // *_OBJECT and related structures (mostly opaque since I'm lazy)
322 typedef struct _DRIVER_OBJECT {
323  CSHORT Type;
324  CSHORT Size;
325  struct _DEVICE_OBJECT *DeviceObject;
326  // ...
327 } DRIVER_OBJECT;
328 typedef DRIVER_OBJECT *PDRIVER_OBJECT;
329 
330 typedef struct _DEVICE_OBJECT {
331  CSHORT Type;
332  USHORT Size;
333  LONG ReferenceCount;
334  PDRIVER_OBJECT DriverObject;
335  // ...
336 } DEVICE_OBJECT;
337 typedef DEVICE_OBJECT *PDEVICE_OBJECT;
338 
339 typedef struct _FILE_OBJECT {
340  CSHORT Type;
341  CSHORT Size;
342  PDEVICE_OBJECT DeviceObject;
343  // ...
344 } FILE_OBJECT;
345 typedef FILE_OBJECT *PFILE_OBJECT;
346 
347 
348 /* Thread information structures */
349 
350 /* IRQL */
351 typedef UCHAR KIRQL, *PKIRQL;
352 #define PASSIVE_LEVEL 0 // Passive release level
353 #define LOW_LEVEL 0 // Lowest interrupt level
354 #define APC_LEVEL 1 // APC interrupt level
355 #define DISPATCH_LEVEL 2 // Dispatcher level
356 
357 // Thread entry point
358 // NOTE: This is not a standard call! You can't call this function from C code!
359 // You push registers like stdcall, but ebp + 4 must point to the first argument before the call!
360 //
361 // Differences from NT: 2 parameters instead of 1; strange calling convention
362 typedef
363 VOID
364 (NTAPI *PKSTART_ROUTINE) (
365  IN PVOID StartContext1,
366  IN PVOID StartContext2
367  );
368 
369 // Structure of a critical section
370 // Same as the XBOX's RTL_CRITICAL_SECTION, but with the more explicit header
371 typedef struct _KCRITICAL_SECTION
372 {
373  // 000 Dispatcher header
374  DISPATCHER_HEADER Header;
375  // 010 Lock count of the critical section
376  LONG LockCount;
377  // 014 Recursion count of the critical section
378  LONG RecursionCount;
379  // 018 Thread ID of the thread that currently owns this critical section
380  ULONG OwningThread;
381 } KCRITICAL_SECTION, *PKCRITICAL_SECTION;
382 
383 // Structure of a thread object
384 typedef struct _KTHREAD
385 {
386  // 000 Dispatcher header
387  DISPATCHER_HEADER Header;
388  // 010 Unknown
389  BYTE unknown[0x18];
390  // 028 Pointer to TLS data
391  PVOID TlsData;
392  // ??? just padding - real size is unknown
393  BYTE unknown2[0x100];
394 } KTHREAD, *PKTHREAD;
395 
396 // Structure of the data at FS
397 typedef struct _FS_STRUCTURE
398 {
399  // 000 Current exception handler information
400  PVOID *ExceptionFrame;
401  // 004 Pointer to current TLS data top
402  PVOID TlsDataTop;
403  // 008
404  BYTE unknown2[0x1C];
405  // 024 Current IRQL of the OS
406  KIRQL CurrentIrql;
407  // 028 Thread structure of the current thread
408  PKTHREAD ThreadObject;
409  // ??? just padding - real size is unknown
410  BYTE unknown3[0x100];
411 } FS_STRUCTURE, *PFS_STRUCTURE;
412 
413 // DPC routine
414 typedef
415 VOID
416 (*PKDEFERRED_ROUTINE) (
417  IN struct _KDPC *Dpc,
418  IN PVOID DeferredContext,
419  IN PVOID SystemArgument1,
420  IN PVOID SystemArgument2
421  );
422 
423 // DPC information
424 // It's not known which of these fields are used on XBOX.
425 typedef struct _KDPC {
426  CSHORT Type;
427  UCHAR Number;
428  UCHAR Importance;
429  LIST_ENTRY DpcListEntry;
430  PKDEFERRED_ROUTINE DeferredRoutine;
431  PVOID DeferredContext;
432  PVOID SystemArgument1;
433  PVOID SystemArgument2;
434  PULONG_PTR Lock;
435 } KDPC, *PKDPC;
436 
437 
438 // Timers
439 typedef enum _TIMER_TYPE {
440  NotificationTimer,
441  SynchronizationTimer
442  } TIMER_TYPE;
443 
444 typedef struct _KTIMER {
445  DISPATCHER_HEADER Header;
446  ULARGE_INTEGER DueTime;
447  LIST_ENTRY TimerListEntry;
448  struct _KDPC *Dpc;
449  LONG Period;
450 } KTIMER, *PKTIMER;
451 
452 /* XBE stuff
453  * Not used in any exported kernel calls, but still useful.
454  */
455 
456 /* XBE header information */
457 typedef struct _XBE_HEADER
458 {
459  // 000 "XBEH"
460  CHAR Magic[4];
461  // 004 RSA digital signature of the entire header area
462  UCHAR HeaderSignature[256];
463  // 104 Base address of XBE image (must be 0x00010000?)
464  PVOID BaseAddress;
465  // 108 Size of all headers combined - other headers must be within this
466  ULONG HeaderSize;
467  // 10C Size of entire image
468  ULONG ImageSize;
469  // 110 Size of this header (always 0x178?)
470  ULONG XbeHeaderSize;
471  // 114 Image timestamp - unknown format
472  ULONG Timestamp;
473  // 118 Pointer to certificate data (must be within HeaderSize)
474  struct _XBE_CERTIFICATE *Certificate;
475  // 11C Number of sections
476  DWORD NumSections;
477  // 120 Pointer to section headers (must be within HeaderSize)
478  struct _XBE_SECTION *Sections;
479  // 124 Initialization flags
480  ULONG InitFlags;
481  // 128 Entry point (XOR'd; see xboxhacker.net)
482  PVOID EntryPoint;
483  // 12C Pointer to TLS directory
484  struct _XBE_TLS_DIRECTORY *TlsDirectory;
485  // 130 Stack commit size
486  ULONG StackCommit;
487  // 134 Heap reserve size
488  ULONG HeapReserve;
489  // 138 Heap commit size
490  ULONG HeapCommit;
491  // 13C PE base address (?)
492  PVOID PeBaseAddress;
493  // 140 PE image size (?)
494  ULONG PeImageSize;
495  // 144 PE checksum (?)
496  ULONG PeChecksum;
497  // 148 PE timestamp (?)
498  ULONG PeTimestamp;
499  // 14C PC path and filename to EXE file from which XBE is derived
500  PCSZ PcExePath;
501  // 150 PC filename (last part of PcExePath) from which XBE is derived
502  PCSZ PcExeFilename;
503  // 154 PC filename (Unicode version of PcExeFilename)
504  PWSTR PcExeFilenameUnicode;
505  // 158 Pointer to kernel thunk table (XOR'd; EFB1F152 debug)
506  ULONG_PTR *KernelThunkTable;
507  // 15C Non-kernel import table (debug only)
508  PVOID DebugImportTable;
509  // 160 Number of library headers
510  ULONG NumLibraries;
511  // 164 Pointer to library headers
512  struct _XBE_LIBRARY *Libraries;
513  // 168 Pointer to kernel library header
514  struct _XBE_LIBRARY *KernelLibrary;
515  // 16C Pointer to XAPI library
516  struct _XBE_LIBRARY *XapiLibrary;
517  // 170 Pointer to logo bitmap (NULL = use default of Microsoft)
518  PVOID LogoBitmap;
519  // 174 Size of logo bitmap
520  ULONG LogoBitmapSize;
521  // 178
522 } XBE_HEADER, *PXBE_HEADER;
523 
524 // Certificate structure
525 typedef struct _XBE_CERTIFICATE {
526  // 000 Size of certificate
527  ULONG Size;
528  // 004 Certificate timestamp (unknown format)
529  ULONG Timestamp;
530  // 008 Title ID
531  ULONG TitleId;
532  // 00C Name of the game (Unicode)
533  WCHAR TitleName[40];
534  // 05C Alternate title ID's (0-terminated)
535  ULONG AlternateTitleIds[16];
536  // 09C Allowed media types - 1 bit match between XBE and media = boots
537  ULONG MediaTypes;
538  // 0A0 Allowed game regions - 1 bit match between this and XBOX = boots
539  ULONG GameRegion;
540  // 0A4 Allowed game ratings - 1 bit match between this and XBOX = boots
541  ULONG GameRating;
542  // 0A8 Disk number (?)
543  ULONG DiskNumber;
544  // 0AC Version (?)
545  ULONG Version;
546  // 0B0 LAN key for this game
547  UCHAR LanKey[16];
548  // 0C0 Signature key for this game
549  UCHAR SignatureKey[16];
550  // 0D0 Signature keys for the alternate title ID's
551  UCHAR AlternateSignatureKeys[16][16];
552  // 1D0
553 } XBE_CERTIFICATE, *PXBE_CERTIFICATE;
554 
555 // Section headers
556 typedef struct _XBE_SECTION {
557  // 000 Flags
558  ULONG Flags;
559  // 004 Virtual address (where this section loads in RAM)
560  PVOID VirtualAddress;
561  // 008 Virtual size (size of section in RAM; after FileSize it's 00'd)
562  ULONG VirtualSize;
563  // 00C File address (where in the file from which this section comes)
564  ULONG FileAddress;
565  // 010 File size (size of the section in the XBE file)
566  ULONG FileSize;
567  // 014 Pointer to section name
568  PCSZ SectionName;
569  // 018 Section reference count - when >= 1, section is loaded
570  LONG SectionReferenceCount;
571  // 01C Pointer to head shared page reference count
572  WORD *HeadReferenceCount;
573  // 020 Pointer to tail shared page reference count
574  WORD *TailReferenceCount;
575  // 024 SHA hash. Hash DWORD containing FileSize, then hash section.
576  DWORD ShaHash[5];
577  // 038
578 } XBE_SECTION, *PXBE_SECTION;
579 
580 /* TLS directory information needed later
581  * Library version data needed later */
582 
583 /* Initialization flags */
584 #define XBE_INIT_MOUNT_UTILITY 0x00000001
585 #define XBE_INIT_FORMAT_UTILITY 0x00000002
586 #define XBE_INIT_64M_RAM_ONLY 0x00000004
587 #define XBE_INIT_DONT_SETUP_HDD 0x00000008
588 
589 /* Region codes */
590 #define XBE_REGION_US_CANADA 0x00000001
591 #define XBE_REGION_JAPAN 0x00000002
592 #define XBE_REGION_ELSEWHERE 0x00000004
593 #define XBE_REGION_DEBUG 0x80000000
594 
595 /* Media types */
596 #define XBE_MEDIA_HDD 0x00000001
597 #define XBE_MEDIA_XBOX_DVD 0x00000002
598 #define XBE_MEDIA_ANY_CD_OR_DVD 0x00000004
599 #define XBE_MEDIA_CD 0x00000008
600 #define XBE_MEDIA_1LAYER_DVDROM 0x00000010
601 #define XBE_MEDIA_2LAYER_DVDROM 0x00000020
602 #define XBE_MEDIA_1LAYER_DVDR 0x00000040
603 #define XBE_MEDIA_2LAYER_DVDR 0x00000080
604 #define XBE_MEDIA_USB 0x00000100
605 #define XBE_MEDIA_ALLOW_UNLOCKED_HDD 0x40000000
606 
607 /* Section flags */
608 #define XBE_SEC_WRITABLE 0x00000001
609 #define XBE_SEC_PRELOAD 0x00000002
610 #define XBE_SEC_EXECUTABLE 0x00000004
611 #define XBE_SEC_INSERTED_FILE 0x00000008
612 #define XBE_SEC_RO_HEAD_PAGE 0x00000010
613 #define XBE_SEC_RO_TAIL_PAGE 0x00000020
614 
615 /* x86 page size */
616 #define PAGE_SIZE 0x1000
617 
618 /* Native NT API calls on the XBOX */
619 
620 /* PAGE_ALIGN:
621  * Returns an address rounded down to the nearest page boundary.
622  *
623  * Differences from NT: None.
624  */
625 #define PAGE_ALIGN(Va) ((PVOID)((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
626 
627 // NtReadFile:
628 // Reads a file.
629 //
630 // Differences from NT: There is no Key parameter.
631 NTSYSAPI
632 EXPORTNUM(219)
633 NTSTATUS
634 NTAPI
635 NtReadFile(
636  IN HANDLE FileHandle,
637  IN HANDLE Event OPTIONAL,
638  IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
639  IN PVOID ApcContext OPTIONAL,
640  OUT PIO_STATUS_BLOCK IoStatusBlock,
641  OUT PVOID Buffer,
642  IN ULONG Length,
643  IN PLARGE_INTEGER ByteOffset
644  );
645 
646 // NtWriteFile:
647 // Writes a file.
648 //
649 // Differences from NT: There is no Key parameter.
650 NTSYSAPI
651 EXPORTNUM(236)
652 NTSTATUS
653 NTAPI
654 NtWriteFile(
655  IN HANDLE FileHandle,
656  IN HANDLE Event OPTIONAL,
657  IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
658  IN PVOID ApcContext OPTIONAL,
659  OUT PIO_STATUS_BLOCK IoStatusBlock,
660  IN PVOID Buffer,
661  IN ULONG Length,
662  IN PLARGE_INTEGER ByteOffset
663  );
664 
665 // NtQueryVolumeInformation:
666 // Queries information about a file system. This is not documented by
667 // Microsoft even under NT.
668 //
669 // Differences from NT: None known.
670 NTSYSAPI
671 EXPORTNUM(218)
672 NTSTATUS
673 NTAPI
674 NtQueryVolumeInformationFile(
675  IN HANDLE FileHandle,
676  OUT PIO_STATUS_BLOCK IoStatusBlock,
677  OUT PVOID VolumeInformation,
678  IN ULONG VolumeInformationLength,
679  IN FS_INFORMATION_CLASS VolumeInformationClass
680  );
681 
682 // NtClose:
683 // Closes a file or other handle.
684 //
685 // Differences from NT: None.
686 NTSYSAPI
687 EXPORTNUM(187)
688 NTSTATUS
689 NTAPI
690 NtClose(
691  IN HANDLE Handle
692  );
693 
694 // NtAllocateVirtualMemory:
695 // Allocates virtual memory.
696 //
697 // Differences from NT: There is no ProcessHandle parameter.
698 NTSYSAPI
699 EXPORTNUM(184)
700 NTSTATUS
701 NTAPI
702 NtAllocateVirtualMemory(
703  IN OUT PVOID *BaseAddress,
704  IN ULONG ZeroBits,
705  IN OUT PULONG AllocationSize,
706  IN ULONG AllocationType,
707  IN ULONG Protect
708  );
709 
710 // NtFreeVirtualMemory:
711 // Frees virtual memory.
712 //
713 // Differences from NT: There is no ProcessHandle parameter.
714 NTSYSAPI
715 EXPORTNUM(199)
716 NTSTATUS
717 NTAPI
718 NtFreeVirtualMemory(
719  IN OUT PVOID *BaseAddress,
720  IN OUT PULONG FreeSize,
721  IN ULONG FreeType
722  );
723 
724 
725 // Kernel-level routines
726 
727 // MmMapIoSpace:
728 // Maps a physical address area into the virtual address space.
729 // DO NOT USE MEMORY MAPPED WITH THIS AS A BUFFER TO OTHER CALLS. For
730 // example, don't WriteFile or NtWriteFile these buffers. Copy them first.
731 //
732 // Differences from NT: PhysicalAddress is 32 bit, not 64. ProtectionType
733 // specifies the page protections, but it's a Win32 PAGE_ macro instead
734 // of the normal NT enumeration. PAGE_READWRITE is probably what you
735 // want...
736 NTSYSAPI
737 EXPORTNUM(177)
738 PVOID
739 NTAPI
740 MmMapIoSpace(
741  IN PHYSICAL_ADDRESS PhysicalAddress,
742  IN ULONG NumberOfBytes,
743  IN ULONG ProtectionType
744  );
745 
746 // MmGetPhysicalAddress:
747 // Translates a virtual address into a physical address.
748 //
749 // Differences from NT: PhysicalAddress is 32 bit, not 64.
750 NTSYSAPI
751 EXPORTNUM(173)
752 PHYSICAL_ADDRESS
753 NTAPI
754 MmGetPhysicalAddress(
755  IN PVOID BaseAddress
756  );
757 
758 // MmUnmapIoSpace:
759 // Unmaps a virtual address mapping made by MmMapIoSpace.
760 //
761 // Differences from NT: None.
762 NTSYSAPI
763 EXPORTNUM(183)
764 PVOID
765 NTAPI
766 MmUnmapIoSpace(
767  IN PVOID BaseAddress,
768  IN ULONG NumberOfBytes
769  );
770 
771 // MmAllocateContiguousMemory:
772 // Allocates a range of physically contiguous, cache-aligned memory from the
773 // non-paged pool (= main pool on XBOX).
774 //
775 // Differences from NT: HighestAcceptableAddress was deleted, opting instead
776 // to not care about the highest address.
777 NTSYSAPI
778 EXPORTNUM(165)
779 PVOID
780 NTAPI
781 MmAllocateContiguousMemory(
782  IN ULONG NumberOfBytes
783  );
784 
785 // MmFreeContiguousMemory:
786 // Frees memory allocated with MmAllocateContiguousMemory.
787 //
788 // Differences from NT: None.
789 NTSYSAPI
790 EXPORTNUM(171)
791 VOID
792 NTAPI
793 MmFreeContiguousMemory(
794  IN PVOID BaseAddress
795  );
796 
797 // IoCreateSymbolicLink:
798 // Creates a symbolic link in the object namespace.
799 // NtCreateSymbolicLinkObject is much harder to use than this simple
800 // function, so just use this one.
801 //
802 // Differences from NT: Uses ANSI_STRING instead of UNICODE_STRING.
803 NTSYSAPI
804 EXPORTNUM(67)
805 NTSTATUS
806 NTAPI
807 IoCreateSymbolicLink(
808  IN PANSI_STRING SymbolicLinkName,
809  IN PANSI_STRING DeviceName
810  );
811 
812 // IoDeleteSymbolicLink:
813 // Creates a symbolic link in the object namespace. Deleting symbolic links
814 // through the Nt* functions is a pain, so use this instead.
815 //
816 // Differences from NT: Uses ANSI_STRING instead of UNICODE_STRING.
817 NTSYSAPI
818 EXPORTNUM(69)
819 NTSTATUS
820 NTAPI
821 IoDeleteSymbolicLink(
822  IN PANSI_STRING SymbolicLinkName
823  );
824 
825 
826 // ObReferenceObjectByHandle:
827 // Turns a handle into a kernel object pointer. The ObjectType parameter
828 // specifies what type of object it is. This function also increments the
829 // object's reference count.
830 //
831 // Differences from NT: There are no DesiredAccess, AccessMode, or
832 // HandleInformation parameters.
833 NTSYSAPI
834 EXPORTNUM(246)
835 NTSTATUS
836 NTAPI
837 ObReferenceObjectByHandle(
838  IN HANDLE Handle,
839  IN POBJECT_TYPE ObjectType OPTIONAL,
840  OUT PVOID *Object
841  );
842 
843 // ObfReferenceObject/ObReferenceObject:
844 // Increments the object's reference count.
845 //
846 // Differences from NT: None.
847 #define ObReferenceObject(Object) ObfReferenceObject(Object)
848 NTSYSAPI
849 EXPORTNUM(251)
850 VOID
851 FASTCALL
852 ObfReferenceObject(
853  IN PVOID Object
854  );
855 
856 // ObfDereferenceObject/ObDereferenceObject:
857 // Decrements the object's reference count, deleting it if it is now unused.
858 //
859 // Differences from NT: None.
860 #define ObDereferenceObject(a) ObfDereferenceObject(a)
861 NTSYSAPI
862 EXPORTNUM(250)
863 VOID
864 FASTCALL
865 ObfDereferenceObject(
866  IN PVOID Object
867  );
868 
869 // Kernel routines only in the XBOX
870 
871 // HalEnableSecureTrayEject:
872 // Notifies the SMBUS that ejecting the DVD-ROM should not reset the system.
873 // Note that this function can't really be called directly...
874 //
875 // New to the XBOX.
876 NTSYSAPI
877 EXPORTNUM(365)
878 VOID
879 NTAPI
880 HalEnableSecureTrayEject(
881  VOID
882  );
883 
884 // XeLoadSection:
885 // Adds one to the reference count of the specified section and loads if the
886 // count is now above zero.
887 //
888 // New to the XBOX.
889 NTSYSAPI
890 EXPORTNUM(327)
891 NTSTATUS
892 NTAPI
893 XeLoadSection(
894  IN OUT PXBE_SECTION section
895  );
896 
897 /* Error codes */
898 #define STATUS_SUCCESS 0x00000000
899 #define STATUS_UNSUCCESSFUL 0xC0000001
900 #define STATUS_UNRECOGNIZED_MEDIA 0xC0000014
901 
902 /* The SCSI input buffer was too large (not necessarily an error!) */
903 #define STATUS_DATA_OVERRUN 0xC000003C
904 #define STATUS_INVALID_IMAGE_FORMAT 0xC000007B
905 #define STATUS_INSUFFICIENT_RESOURCES 0xC000009A
906 #define STATUS_TOO_MANY_SECRETS 0xC0000156
907 #define STATUS_REGION_MISMATCH 0xC0050001
908 
909 #include <poppack.h>
910 
911  // Thanks and credit go to Woodoo
912  extern VOID WINAPI HalWriteSMBusValue(BYTE, BYTE, BOOL, BYTE);
913  extern VOID WINAPI HalReadSMCTrayState(DWORD* state, DWORD* count);
914 
915  // Thanks and credit go to Team Evox
916  extern VOID WINAPI HalReturnToFirmware(DWORD);
917 
918  extern INT WINAPI XNetLoadConfigParams(LPBYTE);
919  extern INT WINAPI XNetSaveConfigParams(LPBYTE);
920 
921  extern INT WINAPI XWriteTitleInfoNoReboot(LPVOID,LPVOID,DWORD,DWORD,LPVOID);
922 
923  extern DWORD* LaunchDataPage;
924 
925 static HRESULT xbox_io_mount(char *szDrive, char *szDevice)
926 {
927  STRING DeviceName, LinkName;
928 #ifndef IS_SALAMANDER
929  bool original_verbose = verbosity_is_enabled();
930 #endif
931  char szSourceDevice[48] = {0};
932  char szDestinationDrive[16] = {0};
933 
934  snprintf(szSourceDevice, sizeof(szSourceDevice),
935  "\\Device\\%s", szDevice);
936  snprintf(szDestinationDrive, sizeof(szDestinationDrive),
937  "\\??\\%s", szDrive);
938 
939  DeviceName.Length = strlen(szSourceDevice);
940  DeviceName.MaximumLength = strlen(szSourceDevice) + 1;
941  DeviceName.Buffer = szSourceDevice;
942 
943  LinkName.Length = strlen(szDestinationDrive);
944  LinkName.MaximumLength = strlen(szDestinationDrive) + 1;
945  LinkName.Buffer = szDestinationDrive;
946 
947  IoCreateSymbolicLink(&LinkName, &DeviceName);
948 
949 #ifndef IS_SALAMANDER
950  if (original_verbose)
952  else
954 #endif
955  return S_OK;
956 }
957 
958 static HRESULT xbox_io_unmount(char *szDrive)
959 {
960  STRING LinkName;
961  char szDestinationDrive[16] = {0};
962 
963  snprintf(szDestinationDrive, sizeof(szDestinationDrive),
964  "\\??\\%s", szDrive);
965 
966  LinkName.Length = strlen(szDestinationDrive);
967  LinkName.MaximumLength = strlen(szDestinationDrive) + 1;
968  LinkName.Buffer = szDestinationDrive;
969 
970  IoDeleteSymbolicLink(&LinkName);
971 
972  return S_OK;
973 }
974 #endif
975 
976 #ifdef _XBOX360
977 typedef struct _STRING
978 {
979  USHORT Length;
980  USHORT MaximumLength;
981  PCHAR Buffer;
982 } STRING, *PSTRING;
983 
984 VOID RtlInitAnsiString(PSTRING DestinationString, PCHAR SourceString);
985 HRESULT ObDeleteSymbolicLink(PSTRING SymbolicLinkName);
986 HRESULT ObCreateSymbolicLink(PSTRING SymbolicLinkName, PSTRING DeviceName);
987 
988 static HRESULT xbox_io_mount(const char* szDrive, char* szDevice)
989 {
990  STRING DeviceName, LinkName;
991  char szDestinationDrive[PATH_MAX_LENGTH];
992 
993  snprintf(szDestinationDrive, sizeof(szDestinationDrive),
994  "\\??\\%s", szDrive);
995  RtlInitAnsiString(&DeviceName, szDevice);
996  RtlInitAnsiString(&LinkName, (PCHAR)szDestinationDrive);
997  ObDeleteSymbolicLink(&LinkName);
998  return (HRESULT)ObCreateSymbolicLink(&LinkName, &DeviceName);
999 }
1000 #endif
Compilador desconhecido Dispositivo desconectado da porta Este arquivo já existe Salvando no buffer de backup Conexão recebida Endereço público Definindo disco na bandeja Você deixou o jogo Você se juntou ao dispositivo de entrada *s *s se juntou como jogador u Uma tentativa de conexão de jogo em rede falhou porque o par não está executando o RetroArch ou está executando uma versão antiga do RetroArch use a mesma versão use a mesma versão Este núcleo não suporta jogo em rede entre diferentes sistemas Senha incorreta Um cliente de jogo em rede desconectou Você não tem permissão para jogar Os dispositivos de entrada solicitados não estão disponíveis Par do jogo em rede s pausou Dar aos núcleos renderizados por hardware seu próprio contexto privado Evita ter que assumir mudanças de estado de hardware entre quadros Ajusta as configurações de aparência da tela de menu Melhora o desempenho ao custo de latência e mais engasgamento de vídeo Use somente se você não puder obter velocidade total de outra forma Detectar automaticamente Capacidades Conectando a porta não Senha Nome de usuário Ponto Final da Lista de Contas Lista de Conquistas Contiuar Conquistas no Modo Hardcore Analisar Conteúdo Importar conteúdo Perguntar Bloquear Quadros Driver de Áudio Habilitar Áudio Turbo Zona Morta Desvio Máximo de Tempo do Áudio Taxa da Saída de Controle Dinâmico da Taxa de Áudio Áudio Nível de Volume de WASAPI Modo Exclusivo WASAPI Tamanho do Buffer Compartilhado Carrega Automaticamente Arquivos de Redefinição Carrega Automaticamente Predefinições de Shader Confirmar Sair Rolar para Cima Alternar Teclado Controles Básicos de Menu Informação Rolar para Cima Alternar Teclado Não sobregravar a SRAM ao carregar Estado de Jogo URL de Recursos do Buildbot Permitir Câmera Trapaça Iniciar Pesquisa Por um Novo Código de Trapaça Arquivo de Trapaça Carregar Arquivo de Trapaça Salvar Arquivo de Trapaça Como Descrição Tabelas de Classificação Conquistas Bloqueada Testar Conquistas Não Oficiais Desbloqueada Modo Detalhado das Conquistas Fechar Conteúdo Carregar Configuração Salvar Configuração ao Sair Base de Dados Tamanho da Lista de Histórico Menu Rápido Downloads Contadores do Núcleo Informação do Núcleo Categorias Nome do núcleo Permissões Fabricante do sistema Controles Opções Iniciar um Núcleo Automaticamente URL de Núcleos do Buildbot Atualizador Cores da Cursor Proporção Personalizada Seleção de Base de Dados Diretório Inicial< Padrão > Diretório não encontrado Condição da Bandeja do Ciclo de Disco Índice de Disco Não importa Baixar Núcleo Habilitar Redefinição de DPI Driver Verificar por Firmware que Falta Antes de Carregar Planos de Fundo Dinâmicos Cor do item de menu ao passar o cursor Falso Favoritos Controlar Velocidade Máxima de Execução Controle de Quadros Carrega Automaticamente Opções de Núcleo Específicas do Conteúdo Salvar arquivo de opções do jogo Solução de Problemas de Áudio Vídeo Controles Básicos de Menu Carregando Conteúdo O Que é um Núcleo Histórico Imagem Informação Todos os Usuários Controlam o Menu Analógico Esquerdo Analógico Esquerdo Analógico Esquerdo Y Analógico Esquerdo Analógico Direito X Analógico Direito Analógico Direito Y Analógico Direito Gatinho da Pistola Aux A da Pistola Aux C da Pistola Select da Pistola D pad Baixo da Pistola D pad Direito da Pistola Zona Morta do Controle Analógico Vincular Todos Tempo Limite para Vincular Ocultar Descritores de Entrada do Núcleo Não Vinculados Índice de Dispositivo Índice de Mouse Ciclo de Trabalho Habilitar Mapeamento de Gamepad no Teclado Botão Direcional para baixo Botão Botão Direcional Esquerdo Botão Botão Direcional Direito Botão Start Botão Botão Mouse Mouse Mouse Roda do Mouse para Baixo Roda do Mouse para Direita Usuários Máximos Índice de Trapaça Alternar Trapaça Próximo disco Habilitar teclas de atalho Alternar Avanço Rápido Alternar tela cheia Alternar foco do jogo Carregar Estado de Jogo Alternar gravação de filme Alternar modo jogador espectador do jogo em rede Próxima Transparência Sair do RetroArch Rebobinar Iniciar ou Continuar a Pesquisa de Trapaça Capturar tela Shader anterior Alternar câmera lenta Compartimento do Estado de Jogo Volume Ocultar Transparência no Menu Porta de Escuta do Exibir Comandos Mais cedo Normal Remapeamento de Entrada Salvar Auto Configuração Habilitar Teclado Pequeno Habilitar Turbo Vínculos de Entrada do Usuário u Condição do armazenamento interno Driver de Joypad Holandês Esperanto Alemão Japonês Polonês Russo Vietnamita Grego Núcleo Nível de Registro de Eventos do Núcleo Carregar Arquivo Carregar Conteúdo Permitir Localização Registro de Eventos Menu Principal Tema de Cor do Menu Cinza Azulado Verde Vermelho Opacidade do Rodapé Driver de Menu Configurações Animação Horizontal Plano de Fundo Faltando Suporte para Mouse Música Navegação Retorna ao Início Jogo em Rede Verificar Quadros do Jogo em Rede Faixa de Quadros de Latência de Entrada Desconectar do hospedeiro de jogo em rede Conectar ao hospedeiro de jogo em rede Parar hospedeiro de jogo em rede Analisar a rede local Usuário Anunciar Jogo em Rede Publicamente Não Permitir Clientes em Modo Não Escravo Compartilhamento de Entrada Analógica Médio Compartilhar Eleger Sem preferência Modo sem Estados de Jogo do Jogo em Rede Habilitar Espectador do Jogo em Rede Travessia de NAT do Jogo em Rede Porta de Comando de Rede Gamepad de Rede Rede Nenhum Não há Conquistas para mostrar Nenhum núcleo disponível Não há opções de núcleo disponíveis Não há histórico disponível Sem itens Nenhuma rede encontrada Não há listas de reprodução Nenhuma configuração encontrada DESLIGADO Online Exibição na Tela Opções de controles de Notificações na Tela ou Molduras Ajusta as Notificações na Tela Opcional Carrega Automaticamente Transparência Favorita Opacidade da Transparência Escala da Transparência Utilizar Modo PAL60 Pausar quando o menu for ativado Contadores de Desempenho Lista de Reprodução Suporte para Toque Presente MIDI Analógico suportado Classificação CERO CRC32 Desenvolvedor Classificação da Revista Edge Classificação ELSPA Classificação ESRB Franquia MD5 Origem Editor Ano de Lançamento Número de Série Iniciar Conteúdo Reiniciar Saída de Gravação Carregar Configuração de Gravação Driver de Gravação Habilitar Gravação Salvar Gravações no Diretório de Saída Carregar Arquivo de Remapeamento Salvar Remapeamento de Controle para o Diretório de Conteúdo Excluir Arquivo de Remapeamento de Núcleo Excluir Arquivo de Remapeamento de Jogo do Diretório de Conteúdo Reiniciar Continuar RetroKeyboard RetroPad com Analógico Habilitar Rebobinagem Aplicar Automaticamente Trapaças Durante o Carregamento do Jogo Tamanho do Buffer da Tamanho do Intervalo de Ajuste do Buffer(MB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS
_In_ D3D_ROOT_SIGNATURE_VERSION Version
Definition: d3d12.h:3372
GenericPointer< Value, CrtAllocator > Pointer
Definition: fwd.h:126
ObjectType
Definition: vulkan.hpp:16876
Unknown compiler Device disconnected from port File already exists Saving to backup buffer Got connection Port Mapping Successful No arguments supplied and no menu displaying help Waiting for client You have joined as player u Player *s has left the game *s has joined with input devices *s The netplay peer is running an old version of RetroArch Cannot connect A netplay peer is running a different core Cannot connect This core does not support inter architecture netplay between these systems Enter netplay server Incorrect password A netplay client has disconnected You do not have permission to play The input devices requested are not available Netplay peer s paused Give hardware rendered cores their own private context Avoids having to assume hardware state changes inbetween frames Adjusts menu screen appearance settings Improves performance at the cost of latency and more video stuttering Use only if you cannot obtain full speed otherwise Autodetect Capabilities Connecting to port Password Username Accounts List Endpoint Achievements Resume Achievements Hardcore Mode Scan Content Import content Ask Block Frames Audio Driver Audio Enable Turbo Deadzone Audio Maximum Timing Skew Audio Output Dynamic Audio Rate Control Audio Audio Volume WASAPI Exclusive Mode WASAPI Shared Buffer Length Load Override Files Automatically Load Shader Presets Automatically Confirm Quit Scroll Up Toggle Keyboard Basic menu controls Info Scroll Up Toggle Keyboard Don t overwrite SaveRAM on loading savestate Buildbot Assets URL Allow Camera Cheat Start Search For New Cheat Code Cheat File Load Cheat Load Cheat Save Cheat File As Description Leaderboards Locked Locked Test Unofficial Achievements Unlocked Verbose Mode Close Content Load Configuration Save Configuration on Exit Database History List Size Quick Menu Downloads Core Counters Core Information Categories Core name Permissions System manufacturer Controls Install or Restore a Core Core installation succesful Core Automatically extract downloaded archive Core Updater CPU CPU Cursor Custom Ratio Database Selection Start directory< Default > Directory not found Disk Cycle Tray Status Disk Index Don t care Download a Core DPI Override Enable Driver Check for Missing Firmware Before Loading Dynamic Backgrounds Menu entry hover color False Favorites Include Memory Details Sync to Exact Content Frame Throttle Load Content Specific Core Options Automatically Save Game options file Audio Video Troubleshooting Basic Menu Controls Loading Content What Is A Core History Image Information All Users Control Menu Left analog Left analog Left Analog Y Left analog Right Analog X Right analog Right Analog Y Right analog Gun Trigger Gun Aux A Gun Aux C Gun Select Gun D pad Down Gun D pad Right Analog Stick Deadzone Bind All Bind Timeout Hide Unbound Core Input Descriptors Device Index Mouse Index Duty Cycle Keyboard Gamepad Mapping Enable B Down D pad L3 L Left D pad R3 R Right D pad Start button X Y Mouse Mouse Mouse Wheel Down Wheel Right Max Users Cheat index Cheat toggle Disk next Enable hotkeys Fast forward toggle FPS toggle Grab mouse toggle Desktop menu toggle Menu toggle Audio mute toggle On screen keyboard toggle Pause toggle Reset game Cheat Details Save state Next shader Slow motion hold Savestate slot Volume Display Overlay Show Inputs On Overlay Poll Type Behavior Late Prefer Front Touch Remap Binds Enable Input Touch Enable Turbo Period Latency Input Autoconfig Services Dutch Esperanto German Japanese Polish Russian Vietnamese Greek Core Core Logging Level Load Archive Load Content Allow Location Logging Main Menu Menu Color Theme Blue Grey Green Red Footer Opacity Menu Driver Settings Horizontal Animation Background Missing Mouse Support Music Navigation Wrap Around Netplay Netplay Check Frames Input Latency Frames Range Disconnect from netplay host Connect to netplay host Stop netplay host Scan local network Username Publicly Announce Netplay Disallow Non Slave Mode Clients Analog Input Sharing Average Share Vote No preference Netplay Stateless Mode Netplay Spectator Enable Netplay NAT Traversal Network Command Port Network Gamepad Network None No achievements to display No cores available No core options available No history available No items No networks found No playlists No settings found OFF Online Onscreen Display Adjust Bezels and Onscreen controls Adjust the Onscreen Notifications Optional Autoload Preferred Overlay Overlay Opacity Overlay Scale Use PAL60 Mode Pause when menu activated Performance Counters Playlist Touch Support Present MIDI Analog supported CERO Rating CRC32 Developer Edge Magazine Rating ELSPA Rating ESRB Rating Franchise MD5 Origin Publisher Releasedate Year Serial Start Content Reboot Recording Output Custom Record Config Record Driver Enable Recording Save Recordings in Output Dir Load Remap File Save Content Directory Remap File Delete Core Remap File Delete Game Content Directory Remap File Restart Resume RetroKeyboard RetroPad w Analog Rewind Enable Auto Apply Cheats During Game Load Rewind Buffer Size(MB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP
#define P(a, b, c, d, k, s, t)
void verbosity_disable(void)
Definition: verbosity.c:85
typedef HRESULT(WINAPI *PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(_In_ const D3D12_ROOT_SIGNATURE_DESC *pRootSignature
#define PATH_MAX_LENGTH
Definition: retro_miscellaneous.h:83
const char * SourceString(int source)
Definition: doc.cpp:77
struct Header Header
GLuint GLuint GLsizei count
Definition: glext.h:6292
size_t strlen(const char *str)
Definition: compat_ctype.c:152
static uint64_t state[MAX_PADS]
Definition: xenon360_input.c:33
void verbosity_enable(void)
Definition: verbosity.c:76
unsigned int BOOL
Definition: gctypes.h:51
#define STRING(literal)
Definition: glslang_tab.cpp:135
bool verbosity_is_enabled(void)
Definition: verbosity.c:94
Definition: glslang_tab.cpp:133
Definition: glslang_tab.cpp:198
Type
Type of JSON value.
Definition: rapidjson.h:603
Definition: shader_vulkan.cpp:129
#define Protect(x)
Definition: lvm.c:747
#define VOID(p)
Definition: luac.c:224
Definition: glslang_tab.cpp:197