tp/include/revolution/sc.h

157 lines
3.8 KiB
C

#ifndef _REVOLUTION_SC_H_
#define _REVOLUTION_SC_H_
#include <revolution/os.h>
#include <revolution/nand.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef u8 SCType;
typedef struct {
u8 mode;
u8 led;
} SCIdleModeInfo;
typedef struct {
union {
u8 type_u8;
s8 type_s8;
u16 type_u16;
s16 type_s16;
u32 type_u32;
s32 type_s32;
u64 type_u64;
s64 type_s64;
u8 longPrecision64[sizeof(u64)];
} integer;
SCType typeInteger;
SCType typeByteArray;
u32 nameLen;
u32 dataSize;
char* name;
u8* data;
u32 packedSize;
} SCItem;
typedef void (*SCReloadConfFileCallback)(s32 result);
typedef void (*SCFlushCallback)(u32 result);
typedef enum {
SC_ITEM_ID_IPL_COUNTER_BIAS,
SC_ITEM_ID_IPL_ASPECT_RATIO,
SC_ITEM_ID_IPL_AUTORUN_MODE,
SC_ITEM_ID_IPL_CONFIG_DONE,
SC_ITEM_ID_IPL_CONFIG_DONE2,
SC_ITEM_ID_IPL_DISPLAY_OFFSET_H,
SC_ITEM_ID_IPL_EURGB60_MODE,
SC_ITEM_ID_IPL_EULA,
SC_ITEM_ID_IPL_FREE_CHANNEL_APP_COUNT,
SC_ITEM_ID_IPL_IDLE_MODE,
SC_ITEM_ID_IPL_INSTALLED_CHANNEL_APP_COUNT,
SC_ITEM_ID_IPL_LANGUAGE,
SC_ITEM_ID_IPL_OWNER_NICKNAME,
SC_ITEM_ID_IPL_PARENTAL_CONTROL,
SC_ITEM_ID_IPL_PROGRESSIVE_MODE,
SC_ITEM_ID_IPL_SCREEN_SAVER_MODE,
SC_ITEM_ID_IPL_SIMPLE_ADDRESS,
SC_ITEM_ID_IPL_SOUND_MODE,
SC_ITEM_ID_IPL_UPDATE_TYPE,
SC_ITEM_ID_NET_CONFIG,
SC_ITEM_ID_NET_CONTENT_RESTRICTIONS,
SC_ITEM_ID_NET_PROFILE,
SC_ITEM_ID_NET_WC_RESTRICTION,
SC_ITEM_ID_NET_WC_FLAGS,
SC_ITEM_ID_DEV_BOOT_MODE,
SC_ITEM_ID_DEV_VIDEO_MODE,
SC_ITEM_ID_DEV_COUNTRY_CODE,
SC_ITEM_ID_DEV_DRIVESAVING_MODE,
SC_ITEM_ID_BT_DEVICE_INFO,
SC_ITEM_ID_BT_CMPDEV_INFO,
SC_ITEM_ID_BT_DPD_SENSIBILITY,
SC_ITEM_ID_BT_SPEAKER_VOLUME,
SC_ITEM_ID_BT_MOTOR_MODE,
SC_ITEM_ID_BT_SENSOR_BAR_POSITION,
SC_ITEM_ID_DVD_CONFIG,
SC_ITEM_ID_WWW_RESTRICTION,
SC_ITEM_ID_MOTION_PLUS_MOVIE,
SC_ITEM_ID_TEMPORARY_TITLE_ID,
SC_ITEM_ID_MAX_PLUS1
} SCItemID;
typedef struct {
OSThreadQueue threadQueue;
NANDFileInfo nandFileInfo;
NANDCommandBlock nandCommandBlock;
union {
u8 nandType;
NANDStatus nandStatus;
} u;
u8 nandStep;
u8 nandNeedClose;
u8 reloadFileCount;
SCReloadConfFileCallback reloadCallback;
s32 reloadResult;
const char* reloadFileName[2];
u8* reloadBufp[2];
u32 reloadSizeExpected[2];
u32 reloadedSize[2];
SCFlushCallback flushCallback;
u32 flushResult;
u32 flushSize;
} SCControl;
#define SC_LANG_JAPANESE 0u
#define SC_LANG_ENGLISH 1u
#define SC_LANG_GERMAN 2u
#define SC_LANG_FRENCH 3u
#define SC_LANG_SPANISH 4u
#define SC_LANG_ITALIAN 5u
#define SC_LANG_DUTCH 6u
#define SC_LANG_SIMP_CHINESE 7u
#define SC_LANG_TRAD_CHINESE 8u
#define SC_LANG_KOREAN 9u
// scapi
u8 SCGetAspectRatio(void);
s8 SCGetDisplayOffsetH(void);
u8 SCGetEuRgb60Mode(void);
BOOL SCGetIdleMode(SCIdleModeInfo* data);
u8 SCGetLanguage(void);
u8 SCGetProgressiveMode(void);
u8 SCGetScreenSaverMode(void);
u8 SCGetSoundMode(void);
u32 SCGetCounterBias(void);
// scapi_prdinfo
BOOL SCGetProductAreaString(char* buf, u32 bufSize);
s8 SCGetProductArea(void);
s8 SCGetProductGameRegion(void);
// scsystem
void SCInit(void);
BOOL SCFindByteArrayItem(void* data, u32 size, SCItemID id);
BOOL SCReplaceByteArrayItem(const void* data, u32 size, SCItemID id);
BOOL SCFindIntegerItem(void* data, SCItemID id, SCType type);
BOOL SCReplaceIntegerItem(const void* data, SCItemID id, SCType type);
BOOL SCFindU8Item(u8* data, SCItemID id);
BOOL SCFindS8Item(s8* data, SCItemID id);
BOOL SCFindU32Item(u32* data, SCItemID id);
BOOL SCReplaceU8Item(u8 data, SCItemID id);
u32 SCCheckStatus(void);
s32 SCReloadConfFileAsync(u8* bufp, u32 bufSize, SCReloadConfFileCallback callback);
BOOL SCFlush(void);
#ifdef __cplusplus
}
#endif
#endif