diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-11 10:14:59 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-11 10:14:59 -0800 |
commit | 87ef770ca23875a9b4777bff7b07c2093a1df1b2 (patch) | |
tree | 23e4dbf13078674c809b46083871c62e4c7c732b /src | |
parent | 041c0891d8516a4c6a60652347ce77de996edb1d (diff) |
decompile util
Diffstat (limited to 'src')
-rw-r--r-- | src/util.c | 87 |
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; +} |