1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: types.h 4 5 Copyright (C)2009-2012 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: 46347 $ 14 *---------------------------------------------------------------------------*/ 15 16 /* Please see man pages for details 17 18 19 20 */ 21 22 #ifndef NN_TYPES_H_ 23 #define NN_TYPES_H_ 24 25 26 // TORIAEZU: Transition period provision 27 #ifdef SDK_ASM 28 #define NN_SWITCH_INCLUDE_FROM_NON_C 29 #endif 30 31 32 #ifdef NN_SWITCH_INCLUDE_FROM_NON_C 33 #else // ifdef NN_SWITCH_INCLUDE_FROM_NON_C 34 35 #if !defined(_MSC_VER) || (_MSC_VER >= 1500) 36 #include <inttypes.h> 37 #endif 38 39 #include <stddef.h> 40 #include <stdarg.h> 41 42 #ifndef __cplusplus 43 #include <stdbool.h> 44 #endif 45 46 47 // 48 // 49 // 50 51 // 52 typedef unsigned char u8; 53 // 54 typedef unsigned short int u16; 55 // 56 typedef unsigned int u32; 57 // 58 typedef unsigned long long int u64; 59 60 // 61 typedef signed char s8; 62 // 63 typedef signed short int s16; 64 // 65 typedef signed int s32; 66 // 67 typedef signed long long int s64; 68 69 // 70 typedef intptr_t sptr; 71 // 72 typedef uintptr_t uptr; 73 74 // 75 typedef char char8; 76 // 77 typedef wchar_t char16; 78 79 typedef volatile u8 vu8; 80 typedef volatile u16 vu16; 81 typedef volatile u32 vu32; 82 typedef volatile u64 vu64; 83 84 typedef volatile s8 vs8; 85 typedef volatile s16 vs16; 86 typedef volatile s32 vs32; 87 typedef volatile s64 vs64; 88 89 // 90 typedef float f32; 91 // 92 typedef double f64; 93 94 typedef volatile f32 vf32; 95 typedef volatile f64 vf64; 96 97 // 98 typedef unsigned char bit8; 99 // 100 typedef unsigned short bit16; 101 // 102 typedef unsigned int bit32; 103 // 104 typedef unsigned long long int bit64; 105 106 // 107 108 109 /* 110 Macros and types used with io_register_list_XX.h 111 */ 112 113 typedef u8 REGType8; 114 typedef u16 REGType16; 115 typedef u32 REGType32; 116 typedef u64 REGType64; 117 118 typedef vu8 REGType8v; 119 typedef vu16 REGType16v; 120 typedef vu32 REGType32v; 121 typedef vu64 REGType64v; 122 123 #ifdef __cplusplus 124 namespace nn 125 { 126 typedef bit64 ProgramID; // TODO: Delete 127 typedef bit64 ProgramId; 128 129 struct ProductCode 130 { 131 char code[16]; 132 }; 133 134 struct ProductInfo 135 { 136 char productCode[16]; 137 bit16 companyCode; 138 u16 remasterVersion; 139 }; 140 } 141 #endif 142 143 #if defined(SDK_128M) || defined(SDK_64M) || defined(SDK_WIN32) 144 typedef int BOOL; 145 #define TRUE 1 146 #define FALSE 0 147 148 typedef struct 149 { 150 u32 w[3]; 151 } 152 u96; 153 154 typedef struct 155 { 156 u32 w[4]; 157 } 158 u128; 159 160 typedef volatile u96 vu96; 161 typedef volatile u128 vu128; 162 163 typedef u96 REGType96; 164 typedef u128 REGType128; 165 typedef vu96 REGType96v; 166 typedef vu128 REGType128v; 167 #endif 168 169 #endif // ifdef NN_SWITCH_INCLUDE_FROM_NON_C else 170 171 172 /* NN_TYPES_H_ */ 173 #endif 174