Difference between revisions of "SceHdmi"

From Vita Development Wiki
Jump to navigation Jump to search
(→‎SceHdmiForDriver: add sceHdmiGetMonitorInfo)
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Module ==
 
== Module ==
  
=== Known NIDs ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Version !! Name !! World !! Privilege !! NID
+
! Version !! World !! Privilege
 
|-
 
|-
| 1.69 || SceHdmi || Non-secure || Kernel || 0x930015D0
+
| 1.69-3.65 || Non-secure || Kernel
|-
 
| 3.65 || SceHdmi || Non-secure || Kernel || 0x7C2BF963
 
 
|}
 
|}
  
Line 25: Line 22:
  
 
<source lang="C">
 
<source lang="C">
typedef SceUInt16 SceHdmiScreenMode;
+
typedef SceUInt16 SceHdmiScreenMode; // internal VIC, translated to VIC defined in CEA861D in sceHdmiSetupTx
  
 
typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.60
 
typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.60
 
     SceHdmiScreenMode screenMode;
 
     SceHdmiScreenMode screenMode;
 +
    SceUInt16 unk_2;
 
     SceUInt16 unk_4;
 
     SceUInt16 unk_4;
 
     SceUInt16 unk_6;
 
     SceUInt16 unk_6;
Line 36: Line 34:
 
     SceUInt16 unk_E;
 
     SceUInt16 unk_E;
 
} SceHdmiSetupTxParam;
 
} SceHdmiSetupTxParam;
 +
 +
typedef struct SceHdmiMonitorInfo {
 +
// 0x0
 +
short manufacturer_id;
 +
short product_code;
 +
int serial_number;
 +
char manufacture_week;
 +
char manufacture_year;
 +
char unk_a;
 +
char name[0x10];
 +
char pad_1b;
 +
int flags_1c;
 +
// 0x20
 +
int unk_20;
 +
int flags_24;
 +
char unk_28[0x38];
 +
// 0x60
 +
int unk_60;
 +
int unk_64;
 +
short unk_68;
 +
char screen_width;              // in centimetre
 +
char screen_height;              // in centimetre
 +
int unk_6c;
 +
// 0x70
 +
char unk_70[0x84];
 +
} SceHdmiMonitorInfo; // 0xF4 in total
 
</source>
 
</source>
  
Line 43: Line 67:
 
<pre>
 
<pre>
 
HdmiSetRgbRangeMode
 
HdmiSetRgbRangeMode
HdmiClearCecInfo
 
HdmiGetCecInfo
 
 
HdmiSetResolution
 
HdmiSetResolution
HdmiCecEnable
 
HdmiCecDisable
 
HdmiEnableCec
 
HdmiDisableCec
 
HdmiCecCmdForcedPollingMsg
 
 
</pre>
 
</pre>
  
Line 63: Line 80:
 
| 0.940-3.60 || 0x08AFFB03 || sceHdmiCmdSetAudioMuteForDriver
 
| 0.940-3.60 || 0x08AFFB03 || sceHdmiCmdSetAudioMuteForDriver
 
|-
 
|-
| 0.940-3.60 || 0x0F12364A || int SceHdmiForDriver_0F12364A(SceUInt32 some_id, SceUInt32 value); Sets a global variable to value according to the id (between 0 and 5)
+
| 0.940-3.60 || 0x0F12364A || int sceHdmiRegisterSomeCallback(SceUInt32 slot, (void*)(void) fptr); Sets a callback slot (between 0 and 5)
 
|-
 
|-
 
| 0.940 || 0x11CDF06E || sceHdmiCmdSetTMDSCtrlForDriver
 
| 0.940 || 0x11CDF06E || sceHdmiCmdSetTMDSCtrlForDriver
Line 103: Line 120:
 
| 0.940 || 0xD9D29A67 || not implemented on FW 0.940
 
| 0.940 || 0xD9D29A67 || not implemented on FW 0.940
 
|-
 
|-
| 0.940-3.60 || 0xE331EC90 || int SceHdmiForDriver_E331EC90(SceUInt32 some_id); Sets a global variable to 0 according to the id (between 0 and 5)
+
| 0.940-3.60 || 0xE331EC90 || int sceHdmiUnregisterSomeCallback(SceUInt32 slot); Clear callback slot (between 0 and 5)
 
|-
 
|-
 
| 0.940-3.60 || 0xE66D5A4D || sceHdmiCmdSetAvMuteForDriver (temp name was sceHdmiSetTxMuteForDriver)
 
| 0.940-3.60 || 0xE66D5A4D || sceHdmiCmdSetAvMuteForDriver (temp name was sceHdmiSetTxMuteForDriver)

Revision as of 01:19, 30 September 2020

Module

Version World Privilege
1.69-3.65 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
1.69-3.60 SceHdmiForDriver Non-secure Kernel 0x58A1A1C5

Types

typedef SceUInt16 SceHdmiScreenMode; // internal VIC, translated to VIC defined in CEA861D in sceHdmiSetupTx

typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.60
    SceHdmiScreenMode screenMode;
    SceUInt16 unk_2;
    SceUInt16 unk_4;
    SceUInt16 unk_6;
    SceUInt16 unk_8;
    SceUInt16 unk_A;
    SceUInt16 unk_C;
    SceUInt16 unk_E;
} SceHdmiSetupTxParam;

typedef struct SceHdmiMonitorInfo {
// 0x0
	short manufacturer_id;
	short product_code;
	int serial_number;
	char manufacture_week;
	char manufacture_year;
	char unk_a;
	char name[0x10];
	char pad_1b;
	int flags_1c;
// 0x20
	int unk_20;
	int flags_24;
	char unk_28[0x38];
// 0x60
	int unk_60;
	int unk_64;
	short unk_68;
	char screen_width;               // in centimetre
	char screen_height;              // in centimetre
	int unk_6c;
// 0x70
	char unk_70[0x84];
} SceHdmiMonitorInfo; // 0xF4 in total

SceHdmiForDriver

To find:

HdmiSetRgbRangeMode
HdmiSetResolution
Version NID Name
3.60 0x05174BC2
0.940-3.60 0x0686FBD6 sceHdmiSetHdcpModeForDriver_0
0.940-3.60 0x08AFFB03 sceHdmiCmdSetAudioMuteForDriver
0.940-3.60 0x0F12364A int sceHdmiRegisterSomeCallback(SceUInt32 slot, (void*)(void) fptr); Sets a callback slot (between 0 and 5)
0.940 0x11CDF06E sceHdmiCmdSetTMDSCtrlForDriver
3.60 0x291F000B int sceHdmiCecDisableForDriver(void);
3.60 0x3126A070 Registers a callback
3.60 0x47894820 Used to init ?
3.60 0x47B753EB int sceHdmiClearCecInfo(void);
3.60 0x4C31F5E8 int sceHdmiCecCmdOneTouchPlayForDriver(SceUInt32 cmd); // cmd can be 0, 1 or 2
0.940-3.60 0x5A212BB3 int sceHdmiSetupTxForDriver(SceHdmiSetupTxParam *pParam);
0.940 0x6478E8B6 not implemented on FW 0.940
3.60 0x6D2D10D8 sceHdmiCecCmdForcedPollingMsgForDriver
0.940-3.60 0x7AD0F6C9 int sceHdmiGetChipIdForDriver(void *pBuf, SceSize inBufSize, SceSize *pOutBufSize);
0.940-3.60 0x854EEB78 gets VIC and Audio Config and setups memory
3.60 0x8EB0FD9C int sceHdmiGetMonitorInfo(void *pBuf); Gets 0xF4 bytes of data for the active id (between 0 and 6), data is derived from the EDID.
3.60 0x93AA48AC int sceHdmiGetCecInfoForDriver(SceHdmiCecInfo *pCecInfo); // SceHdmiCecInfo is 0x20 bytes on FW 3.60
0.940-3.60 0x99A3CABE sceHdmiCmdSetVideoMuteForDriver. Black image functionality.
3.60 0xB04F5B6A
0.940 0xB2CD590E not implemented on FW 0.940
0.940 0xCB0D8AF5 not implemented on FW 0.940
3.60 0xD929E4E5
0.940 0xD9D29A67 not implemented on FW 0.940
0.940-3.60 0xE331EC90 int sceHdmiUnregisterSomeCallback(SceUInt32 slot); Clear callback slot (between 0 and 5)
0.940-3.60 0xE66D5A4D sceHdmiCmdSetAvMuteForDriver (temp name was sceHdmiSetTxMuteForDriver)
3.60 0xEA486A37
3.60 0xF20529CC int sceHdmiCmdSetEdidMode(SceBool mode); // mode: 0: Pass, 1: On
3.60 0xFA30ACFC int sceHdmiCecEnableForDriver(void);
0.940-3.60 0xFAB3A2E9 sceHdmiSetHdcpModeForDriver_1
0.940 0xFBE18ADE not implemented on FW 0.940
3.60 0xFF5546D8