1 /*---------------------------------------------------------------------------*
2 
3   Copyright (C) Nintendo.  All rights reserved.
4 
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law.  They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10 
11  *---------------------------------------------------------------------------*/
12 
13 ////////////////////////////////////////////////////
14 //
15 // Helper functions
16 //
17 ////////////////////////////////////////////////////
18 
19     // Returns darker or lighter with a higher status (opposite brightness if status == -1)
WhiteDarker(int status)20 CVec4 WhiteDarker(int status) {if (status == -1) return CVec4(0, 0, 0, 1.0); /* else */ return CVec4(0.8 - 0.2 * status, 0.8 - 0.2 * status, 0.8 - 0.2 * status, 1.0);}
BlackLighter(int status)21 CVec4 BlackLighter(int status) {if (status == -1) return CVec4(0.6, 0.6, 0.6, 1.0); /* else */ return CVec4(0.05 + 0.1 * status, 0.05 + 0.1 * status, 0.05 + 0.1 * status, 1.0);}
22 
23     // Literally does nothing
DoNothing()24 void DoNothing() {}
DoNothingVoidP(void *)25 void DoNothingVoidP(void*) {}
26 
27     // Does nothing, returns true
BoolDoNothing()28 bool BoolDoNothing() {return true;}
BoolDoNothingVoidP(void *)29 bool BoolDoNothingVoidP(void*) {return true;}
30 
31     // Returns if the values are close
CloseEnough(float a,float b)32 bool CloseEnough(float a, float b)
33 {
34     if (a - b > 0.1)
35         return false;
36 
37     return (a - b >= -0.1);
38 }
39 
40     // Takes the core as 0, 1, or 2 and turns it into the value the system wants (1, 2, 4)
GetCore(int core)41 int GetCore(int core)
42 {
43     switch (core)
44     {
45     case 0:
46         core = OS_THREAD_ATTR_AFFINITY_CORE0;
47         break;
48     case 1:
49         core = OS_THREAD_ATTR_AFFINITY_CORE1;
50         break;
51     case 2:
52         core = OS_THREAD_ATTR_AFFINITY_CORE2;
53         break;
54     default:
55         OSHalt("Invalid core chosen!");
56     }
57 
58     return core;
59 }
60 
61     // A "safe" version of strcat
strcat_s(char * dest,int len,const char * src)62 char* strcat_s(char* dest, int len, const char* src)
63 {
64     dest[len - 1] = 0;
65 
66     strcat(dest, src);
67 
68     ASSERT(dest[len - 1] == 0);
69 
70     return dest;
71 }
72 
73     // A "safe" version of strcpy
strcpy_s(char * dest,int len,const char * src)74 char* strcpy_s(char* dest, int len, const char* src)
75 {
76     dest[len - 1] = 0;
77 
78     strcpy(dest, src);
79 
80     ASSERT(dest[len - 1] == 0);
81 
82     return dest;
83 }
84 
85     // A "safe" version of sprintf
sprintf_s(char * dest,int len,const char * src,...)86 int sprintf_s(char* dest, int len, const char* src, ...)
87 {
88     dest[len - 1] = 0;
89 
90     va_list args;
91     va_start (args, src);
92     int count = vsprintf(dest, src, args);
93     va_end (args);
94 
95     ASSERT(dest[len - 1] == 0);
96 
97     return count;
98 }
99 
100     // A "safe" version of vsprintf
vsprintf_s(char * dest,int len,const char * src,va_list list)101 int vsprintf_s(char* dest, int len, const char* src, va_list list)
102 {
103     dest[len - 1] = 0;
104 
105     int count = vsprintf(dest, src, list);
106 
107     ASSERT(dest[len - 1] == 0);
108 
109     return count;
110 }
111