summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-11 10:14:59 -0800
committersceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-11 10:14:59 -0800
commit87ef770ca23875a9b4777bff7b07c2093a1df1b2 (patch)
tree23e4dbf13078674c809b46083871c62e4c7c732b /src
parent041c0891d8516a4c6a60652347ce77de996edb1d (diff)
decompile util
Diffstat (limited to 'src')
-rw-r--r--src/util.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
new file mode 100644
index 0000000..0c9c2dd
--- /dev/null
+++ b/src/util.c
@@ -0,0 +1,87 @@
+#include "global.h"
+#include "util.h"
+
+void ReverseString(u8 *s, s32 len)
+{
+ u8 *l = s;
+ s32 right = len - 1;
+ u8 *r = s + right;
+ s32 left = 0;
+
+ while (left < right)
+ {
+ u8 temp = *l;
+ *l++ = *r;
+ *r-- = temp;
+ left++;
+ right--;
+ }
+}
+
+s32 ConvertToDecimal(s32 *decimal, s32 n, s32 len)
+{
+ s32 sign;
+ s32 i;
+
+ if (n > 0)
+ {
+ sign = 1;
+ }
+ else
+ {
+ n = -n;
+ sign = -1;
+ }
+
+ for (i = 0; i < len; i++)
+ {
+ decimal[i] = n % 10;
+ n /= 10;
+ }
+
+ return sign;
+}
+
+s32 ConvertFromDecimal(s32 *decimal, s32 sign, s32 len)
+{
+ s32 i;
+ s32 powerOfTen;
+ s32 n = *decimal++;
+
+ for (i = 1, powerOfTen = 10; i < len; i++, powerOfTen *= 10)
+ {
+ n += *decimal++ * powerOfTen;
+ }
+
+ return (sign < 0) ? -n : n;
+}
+
+s32 ConvertFromBCD(s32 bcd)
+{
+ s32 powerOfTen = 1;
+ s32 n = 0;
+
+ while (bcd > 0)
+ {
+ n += (bcd & 0xF) * powerOfTen;
+ powerOfTen *= 10;
+ bcd >>= 4;
+ }
+
+ return n;
+}
+
+s32 ConvertToBCD(s32 n)
+{
+ s32 shift = 0;
+ s32 bcd = 0;
+
+ while (n > 0)
+ {
+ bcd += (n % 10) << shift;
+ shift += 4;
+ n /= 10;
+ }
+
+ return bcd;
+}