1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     types.h
4 
5   Copyright (C)2009 Nintendo Co., Ltd.  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   $Rev: 21036 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_TYPES_H_
17 #define NN_TYPES_H_
18 
19 
20 // TORIAEZU: 過渡期暫定
21 #ifdef  SDK_ASM
22     #define NN_SWITCH_INCLUDE_FROM_NON_C
23 #endif
24 
25 
26 #ifdef  NN_SWITCH_INCLUDE_FROM_NON_C
27 #else  // ifdef NN_SWITCH_INCLUDE_FROM_NON_C
28 
29 	#if !defined(_MSC_VER) || (_MSC_VER >= 1500)
30 	    #include <inttypes.h>
31 	#endif
32 
33     #include <stddef.h>
34     #include <stdarg.h>
35 
36     #ifndef __cplusplus
37         #include <stdbool.h>
38     #endif
39 
40     typedef unsigned char           u8;
41     typedef unsigned short int      u16;
42     typedef unsigned int            u32;
43     typedef unsigned long long int  u64;
44 
45     typedef signed char             s8;
46     typedef signed short int        s16;
47     typedef signed int              s32;
48     typedef signed long long int    s64;
49 
50     typedef intptr_t                sptr;
51     typedef uintptr_t               uptr;
52 
53     typedef char                    char8;
54     typedef wchar_t                 char16;
55 
56     typedef volatile u8             vu8;
57     typedef volatile u16            vu16;
58     typedef volatile u32            vu32;
59     typedef volatile u64            vu64;
60 
61     typedef volatile s8             vs8;
62     typedef volatile s16            vs16;
63     typedef volatile s32            vs32;
64     typedef volatile s64            vs64;
65 
66     typedef float                   f32;
67     typedef double                  f64;
68 
69     typedef volatile f32            vf32;
70     typedef volatile f64            vf64;
71 
72     typedef unsigned char           bit8;
73     typedef unsigned short          bit16;
74     typedef unsigned int            bit32;
75     typedef unsigned long long int  bit64;
76 
77     /*
78         io_register_list_XX.hで使用するマクロと型
79      */
80 
81     typedef u8      REGType8;
82     typedef u16     REGType16;
83     typedef u32     REGType32;
84     typedef u64     REGType64;
85 
86     typedef vu8     REGType8v;
87     typedef vu16    REGType16v;
88     typedef vu32    REGType32v;
89     typedef vu64    REGType64v;
90 
91     #ifdef __cplusplus
92     namespace nn
93     {
94         typedef bit64 ProgramID;    // TODO: 削除
95         typedef bit64 ProgramId;
96 
97         struct ProductCode
98         {
99             char    code[16];
100         };
101 
102         struct ProductInfo
103         {
104             char    productCode[16];
105             bit16   companyCode;
106             u16     remasterVersion;
107         };
108     }
109     #endif
110 
111     #if defined(SDK_128M) || defined(SDK_64M) || defined(SDK_WIN32)
112         typedef int     BOOL;
113         #define TRUE    1
114         #define FALSE   0
115 
116         typedef struct
117         {
118             u32 w[3];
119         }
120         u96;
121 
122         typedef struct
123         {
124             u32 w[4];
125         }
126         u128;
127 
128         typedef volatile u96    vu96;
129         typedef volatile u128   vu128;
130 
131         typedef u96     REGType96;
132         typedef u128    REGType128;
133         typedef vu96    REGType96v;
134         typedef vu128   REGType128v;
135     #endif
136 
137 #endif // ifdef NN_SWITCH_INCLUDE_FROM_NON_C else
138 
139 
140 /* NN_TYPES_H_ */
141 #endif
142