1 /*---------------------------------------------------------------------------*
2   Project:  SC library
3   File:     sc.h
4 
5   Copyright 2006 Nintendo. All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law. They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $NoKeywords: $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef __SC_H__
17 #define __SC_H__
18 
19 #include <revolution/types.h>
20 #include <revolution/sc/SCRegIdHi.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 extern void SCInit(void);
27 
28 #define SC_STATUS_OK        0
29 #define SC_STATUS_BUSY      1
30 #define SC_STATUS_ERROR     2
31 #define SC_STATUS_INTERNAL3 3 // not returned by SCCheckStatus()
32 
33 extern u32 SCCheckStatus(void);
34 
35 typedef void (*SCFlushCallback)(u32 result);
36 
37 extern u32  SCFlush(void);
38 extern void SCFlushAsync(SCFlushCallback callback);
39 
40 #define SC_SOUND_MODE_MONO          0u
41 #define SC_SOUND_MODE_STEREO        1u
42 #define SC_SOUND_MODE_SURROUND      2u
43 #define SC_SOUND_MODE_DEFAULT       SC_SOUND_MODE_STEREO
44 
45 extern u8 SCGetSoundMode(void);
46 
47 #define SC_LANG_JAPANESE            0u
48 #define SC_LANG_ENGLISH             1u
49 #define SC_LANG_GERMAN              2u
50 #define SC_LANG_FRENCH              3u
51 #define SC_LANG_SPANISH             4u
52 #define SC_LANG_ITALIAN             5u
53 #define SC_LANG_DUTCH               6u
54 #define SC_LANG_SIMP_CHINESE        7u
55 #define SC_LANG_TRAD_CHINESE        8u
56 #define SC_LANG_KOREAN              9u
57 
58 extern u8 SCGetLanguage(void);
59 
60 #define SC_ASPECT_RATIO_4x3         0u
61 #define SC_ASPECT_RATIO_16x9        1u
62 #define SC_ASPECT_RATIO_DEFAULT     SC_ASPECT_RATIO_4x3
63 
64 extern u8 SCGetAspectRatio(void);
65 
66 #define SC_PROGRESSIVE_MODE_OFF     0u
67 #define SC_PROGRESSIVE_MODE_ON      1u
68 #define SC_PROGRESSIVE_MODE_DEFAULT SC_PROGRESSIVE_MODE_OFF
69 
70 extern u8 SCGetProgressiveMode(void);
71 
72 #define SC_EURGB60_MODE_OFF           0u
73 #define SC_EURGB60_MODE_ON            1u
74 #define SC_EURGB60_MODE_DEFAULT       SC_EURGB60_MODE_OFF // temporary
75 
76 extern u8 SCGetEuRgb60Mode(void);
77 
78 extern BOOL SCCheckPCMessageRestriction(void);
79 extern BOOL SCCheckPCShoppingRestriction(void);
80 extern BOOL SCCheckPCPassword(char *password);
81 
82 #define SC_OWNER_NICKNAME_LENGTH_MAX   10
83 typedef struct {
84     u16 name[SC_OWNER_NICKNAME_LENGTH_MAX]; // not zero-terminated
85     u16 length;
86 } SCOwnerNickNameInfo;
87 
88 extern BOOL SCGetOwnerNickName(SCOwnerNickNameInfo *info);
89 
90 //////////////////////////////////////////////////////////////////////
91 // Emulated API (OBSOLETE; they do nothing and return FALSE)
92 //////////////////////////////////////////////////////////////////////
93 
94 extern BOOL SCEmuSetAspectRatio(u8 ratio);
95 extern BOOL SCEmuSetLanguage(u8 language);
96 
97 #ifdef __cplusplus
98 }
99 #endif
100 
101 #endif // __SC_H__
102