diff --git a/include/coreinit/core.h b/include/coreinit/core.h index faa6dc5ad..d37adf011 100644 --- a/include/coreinit/core.h +++ b/include/coreinit/core.h @@ -14,6 +14,9 @@ extern "C" { #endif +#define OS_CONSOLE_TYPE_MASK 0xF0000000 + + /** * Gets the number of cores in the system. On a retail Wii U, this is always 3. * @@ -58,6 +61,22 @@ BOOL OSIsMainCore(); +/** + * Get the type of console this code is actively running on. + * + * Most of the field is relatively unknown but you can use + * \ref OS_CONSOLE_TYPE_MASK + * which returns whether the unit is a Retail/CAT-R unit with 0, + * a CAT-DEV or other CAFE development board with 1, and an orchestrax + * unit with 2. + * + * \returns + * A number representing the specific console types. + */ +uint32_t +OSGetConsoleType(); + + #ifdef __cplusplus } #endif diff --git a/include/coreinit/mcp.h b/include/coreinit/mcp.h index 5b4f2ffb4..9f601ccf7 100644 --- a/include/coreinit/mcp.h +++ b/include/coreinit/mcp.h @@ -102,6 +102,16 @@ typedef enum MCPCompatAVFile MCP_COMPAT_AV_FILE_DEINT = 0x01, } MCPCompatAVFile; +typedef enum MCPSystemMode +{ + //! This unit is in 'retail'/'production' mode. + MCP_PRODUCTION = 0x00, + //! This unit is in 'development' mode (default for CAT-DEV). + MCP_DEVELOPMENT = 0x01, + //! This unit is in 'test' mode. + MCP_TEST = 0x02, +} MCPSystemMode; + struct WUT_PACKED MCPDevice { char type[8]; @@ -241,6 +251,10 @@ MCPError MCP_GetOwnTitleInfo(int32_t handle, MCPTitleListType *titleInfo); +MCPError +MCP_GetSystemMode(int32_t handle, + MCPSystemMode *mode); + MCPError MCP_GetSysProdSettings(int32_t handle, MCPSysProdSettings *settings); @@ -363,7 +377,7 @@ MCP_CompatLoadAVFile(int32_t handle, /** * Saves the current Cafe log to the SLC logs directory. * Internally calls IOS_Ioctl() with request \c 0xCD . - * + * * \return * \c 0 on success. */