diff options
-rw-r--r-- | asm/math_util.s | 74 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/math_util.c | 43 |
3 files changed, 44 insertions, 74 deletions
diff --git a/asm/math_util.s b/asm/math_util.s index 906706d61..cf6c6d3d9 100644 --- a/asm/math_util.s +++ b/asm/math_util.s @@ -5,80 +5,6 @@ .text - thumb_func_start sub_8151534 -sub_8151534: @ 8151534 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - muls r0, r1 - adds r1, r0, 0 - cmp r0, 0 - bge _08151548 - adds r1, 0xFF -_08151548: - lsls r0, r1, 8 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_8151534 - - thumb_func_start sub_8151550 -sub_8151550: @ 8151550 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r3, 16 - asrs r3, 16 - lsls r2, 16 - asrs r2, 16 - muls r3, r2 - movs r1, 0x1 - lsls r1, r0 - adds r0, r3, 0 - bl __divsi3 - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_8151550 - - thumb_func_start sub_8151574 -sub_8151574: @ 8151574 - push {r4-r7,lr} - adds r2, r1, 0 - adds r4, r0, 0 - asrs r5, r0, 31 - asrs r3, r2, 31 - adds r1, r5, 0 - adds r0, r4, 0 - bl __muldi3 - adds r5, r1, 0 - adds r4, r0, 0 - adds r7, r5, 0 - adds r6, r4, 0 - cmp r5, 0 - bge _0815159A - movs r6, 0xFF - movs r7, 0 - adds r6, r4 - adcs r7, r5 -_0815159A: - lsls r3, r7, 24 - lsrs r2, r6, 8 - adds r0, r3, 0 - orrs r0, r2 - asrs r1, r7, 8 - adds r5, r1, 0 - adds r4, r0, 0 - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8151574 - thumb_func_start sub_81515B0 sub_81515B0: @ 81515B0 push {lr} diff --git a/ld_script.txt b/ld_script.txt index f655711dd..bf0186b9d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -191,6 +191,7 @@ SECTIONS { asm/battle_controller_linkpartner.o(.text); src/battle_message.o(.text); asm/cable_car.o(.text); + src/math_util.o(.text); asm/math_util.o(.text); asm/roulette_util.o(.text); asm/cable_car_util.o(.text); diff --git a/src/math_util.c b/src/math_util.c new file mode 100644 index 000000000..f249d0a51 --- /dev/null +++ b/src/math_util.c @@ -0,0 +1,43 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations + +// .rodata + +// .text + +s16 sub_8151534(s16 x, s16 y) +{ + s32 result; + + result = x; + result *= y; + result /= 256; + return result; +} + +s16 sub_8151550(u8 s, s16 x, s16 y) +{ + s32 result; + + result = x; + result *= y; + result /= (1 << s); + return result; +} + +s32 sub_8151574(s32 x, s32 y) +{ + s64 result; + + result = x; + result *= y; + result /= 256; + return result; +} |