From 282500b7244e793a93adb54e759f7c663a710376 Mon Sep 17 00:00:00 2001 From: Aetias Date: Wed, 20 Dec 2023 10:38:50 +0100 Subject: [PATCH] Name function `FastDivide` --- asm/global.inc | 2 +- asm/main.s | 60 +++++++++++++++--------------- asm/ov00/include/ov00_0209bea0.inc | 2 +- asm/ov00/ov00_0209bea0.s | 2 +- asm/ov01.s | 4 +- asm/ov03.s | 2 +- asm/ov11.s | 10 ++--- asm/ov13.s | 2 +- asm/ov26.s | 22 +++++------ asm/ov40.s | 4 +- asm/ov60.s | 4 +- asm/ov61.s | 10 ++--- include/lib/math.h | 8 ++++ 13 files changed, 70 insertions(+), 62 deletions(-) create mode 100644 include/lib/math.h diff --git a/asm/global.inc b/asm/global.inc index 4877fe70..ea22d87e 100644 --- a/asm/global.inc +++ b/asm/global.inc @@ -251370,7 +251370,7 @@ .extern func_02002bf4 .extern func_02002c14 .extern func_02002e0c -.extern func_02002e20 +.extern FastDivide .extern func_02002e28 .extern func_0200301c .extern func_02003040 diff --git a/asm/main.s b/asm/main.s index dc246c20..0a429da4 100644 --- a/asm/main.s +++ b/asm/main.s @@ -3030,12 +3030,12 @@ _02002e0c: bx lr arm_func_end func_02002c14 - .global func_02002e20 - arm_func_start func_02002e20 -func_02002e20: ; 0x02002e20 + .global FastDivide + arm_func_start FastDivide +FastDivide: ; 0x02002e20 cmp r1, #0 bxeq lr - arm_func_end func_02002e20 + arm_func_end FastDivide .global func_02002e28 arm_func_start func_02002e28 @@ -21299,7 +21299,7 @@ _0200fab0: ldrh r0, [sb, #0x4c] mov r1, r1, lsl #0x18 mov r1, r1, lsr #0x18 - bl func_02002e20 + bl FastDivide cmp r1, #0 bne _0200fb04 ldr r1, [sb, #0x24] @@ -21526,7 +21526,7 @@ _0200fd04: mov r1, r0, lsl #0x8 mov r0, r2, asr #0xc mov r1, r1, lsr #0x18 - bl func_02002e20 + bl FastDivide cmp r1, #0 bne _0200fe3c mov r0, r6 @@ -23752,7 +23752,7 @@ _02011dbc: ldr r1, [fp, #8] mov r1, r1, lsl #0x18 mov r1, r1, lsr #0x18 - bl func_02002e20 + bl FastDivide ldrb r0, [fp, r1] ldrh r1, [r8, #0x2c] bic r1, r1, #0xff @@ -23789,7 +23789,7 @@ _02011ebc: ldr r1, [r1, #0x4c] mov r1, r1, lsl #0x18 mov r1, r1, lsr #0x18 - bl func_02002e20 + bl FastDivide strh r0, [r8, #0x28] ldrh r1, [r8, #0x24] ldr r0, _02011f4c ; =0x0000ffff @@ -28029,7 +28029,7 @@ func_02015740: ; 0x02015740 str r5, [sp, #0x14] mov fp, r5 str r2, [sp, #0x10] - bl func_02002e20 + bl FastDivide mov r1, #0x19 mul r3, r0, r1 str r0, [sp, #0xc] @@ -28376,7 +28376,7 @@ _02015c40: mov r0, #0x1f40 umull r3, r1, r2, r1 mov r1, r1, lsr #0x3 - bl func_02002e20 + bl FastDivide ldr r1, [sp, #0x1c] ldr r2, _020166d4 ; =data_0205adc0 mul r3, r1, r0 @@ -31210,7 +31210,7 @@ _02017918: _0201793e: sub r0, r0, r4 add r1, r5, #0 - blx func_02002e20 + blx FastDivide str r0, [sp, #4] cmp r0, #0 bne _02017952 @@ -31283,7 +31283,7 @@ func_020179ac: ; 0x020179ac mov r2, r0 add r0, r1, #1 ldr r1, [r2, #4] - bl func_02002e20 + bl FastDivide mov r0, r1, lsl #0x10 mov r0, r0, lsr #0x10 ldmia sp!, {r3, pc} @@ -40020,7 +40020,7 @@ func_0201e8c0: ; 0x0201e8c0 cmp r7, #0 ldr r1, [sp, #0x88] moveq r0, sl, lsr #0x1 - bl func_02002e20 + bl FastDivide ldr r1, [sp, #0x2c] mov fp, #0x20 mul r0, r1, r0 @@ -40180,7 +40180,7 @@ _0201eb5c: str r3, [r6, #8] str r2, [r6, #0x10] str sl, [r6, #0x14] - bl func_02002e20 + bl FastDivide ldr r3, [sp, #0x88] ldr r2, [sp, #0x8c] ldr r1, [sp, #0x90] @@ -44359,7 +44359,7 @@ _02021e70: ldr r2, [r4, #0x130] ldrb r1, [r4, #0x124] mul r0, r2, r6 - bl func_02002e20 + bl FastDivide ldrh r3, [r4, #0xc6] mov r2, #4 ldr r1, _02021f14 ; =func_020222f0 @@ -44969,7 +44969,7 @@ _02022638: ldr r5, [r0, #0x160] mov r1, r4 mov r0, r5 - bl func_02002e20 + bl FastDivide ldr r1, [sp, #0x3c] ldr r1, [r1, #0xd4] sub r1, r1, #1 @@ -45759,7 +45759,7 @@ _020230ac: mov r0, fp, lsl #0x5 mul r1, r2, r0 mov r0, r4 - bl func_02002e20 + bl FastDivide mul r1, r0, fp mov r0, r1, lsl #0x5 ldr r2, [sp, #0x40] @@ -45768,7 +45768,7 @@ _020230ac: moveq r0, r0, lsr #0x1 mul r0, r2, r0 mov r1, fp - bl func_02002e20 + bl FastDivide str r0, [sp, #0x18] bl func_020200c8 cmp r0, #0 @@ -46013,7 +46013,7 @@ func_020233dc: ; 0x020233dc mov r4, r1 ldr r0, [r5, #0x28] ldr r1, [r5, #0x2c] - bl func_02002e20 + bl FastDivide ldr r1, [r5, #0x48] ldr r2, [r5, #0x38] mov r3, r0 @@ -62158,7 +62158,7 @@ func_0202eabc: ; 0x0202eabc bic r0, r0, #3 add r0, r0, r1 sub r0, r0, #1 - bl func_02002e20 + bl FastDivide mov r5, r0 mov r1, r5 add r0, r4, #0x10 @@ -85901,7 +85901,7 @@ func_0203f668: ; 0x0203f668 add r2, r5, r4 mov r1, r0 sub r0, r2, #1 - bl func_02002e20 + bl FastDivide ldrh r1, [r6] mov r0, r0, lsl #0x10 sub r0, r1, r0, lsr #16 @@ -85921,7 +85921,7 @@ func_0203f6b0: ; 0x0203f6b0 ldr r2, [r4, #8] mov r1, r0 add r0, r3, r2 - bl func_02002e20 + bl FastDivide strh r0, [r4] ldmia sp!, {r4, pc} arm_func_end func_0203f6b0 @@ -93705,7 +93705,7 @@ _020432fc: movne r0, #0 strne r0, [sb, #0x28] mov r0, r6 - bl func_02002e20 + bl FastDivide add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} arm_func_end func_02043078 @@ -94576,11 +94576,11 @@ _02043de8: _02043df0: mov r0, sl mov r1, r4 - bl func_02002e20 + bl FastDivide mov sb, r1 mov r0, sl mov r1, r4 - bl func_02002e20 + bl FastDivide cmp sb, #0xa mov sl, r0 addlt sb, sb, #0x30 @@ -100004,7 +100004,7 @@ _0204873c: beq _02048754 mov r1, sb mvn r0, #0 - bl func_02002e20 + bl FastDivide str r0, [sp, #4] _02048754: mvn fp, #0 @@ -100122,7 +100122,7 @@ _020488c8: bne _020488ec mov r0, fp mov r1, sb - bl func_02002e20 + bl FastDivide str r0, [sp, #4] _020488ec: cmp r6, #0 @@ -101232,11 +101232,11 @@ _02049760: _02049768: mov r0, sl mov r1, r4 - bl func_02002e20 + bl FastDivide mov sb, r1 mov r0, sl mov r1, r4 - bl func_02002e20 + bl FastDivide cmp sb, #0xa mov sl, r0 addlt sb, sb, #0x30 @@ -107558,7 +107558,7 @@ _0204edb0: _0204edd0: ldr r1, [sp, #0x10] add r4, r4, r0 - bl func_02002e20 + bl FastDivide movs r6, r0 beq _0204ee04 mvn sl, #0 diff --git a/asm/ov00/include/ov00_0209bea0.inc b/asm/ov00/include/ov00_0209bea0.inc index be06fbb0..9a1b4ef5 100644 --- a/asm/ov00/include/ov00_0209bea0.inc +++ b/asm/ov00/include/ov00_0209bea0.inc @@ -218,7 +218,7 @@ .extern func_01ff9b88 .extern func_01ff98e0 .extern func_02002c14 -.extern func_02002e20 +.extern FastDivide .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectdlEPv .extern func_01ff98f0 diff --git a/asm/ov00/ov00_0209bea0.s b/asm/ov00/ov00_0209bea0.s index d611c62e..728d1896 100644 --- a/asm/ov00/ov00_0209bea0.s +++ b/asm/ov00/ov00_0209bea0.s @@ -5012,7 +5012,7 @@ func_ov00_0209fe18: ; 0x0209fe18 str r1, [sp, #4] str lr, [sp, #8] str ip, [sp, #0xc] - bl func_02002e20 + bl FastDivide cmp r0, #0 ble _0209feb0 ldr r1, [sp, #0x34] diff --git a/asm/ov01.s b/asm/ov01.s index 54e3e90e..dba66179 100644 --- a/asm/ov01.s +++ b/asm/ov01.s @@ -6143,7 +6143,7 @@ _020f2fa0: str r0, [sp, #4] add r0, r0, r1 sub r0, r0, #1 - blx func_02002e20 + blx FastDivide lsl r1, r5, #1 lsl r0, r0, #0x10 ldrh r1, [r7, r1] @@ -8790,7 +8790,7 @@ _020f4314: mov r0, #7 mul r0, r1 mov r1, #0x14 - blx func_02002e20 + blx FastDivide add r0, r1, #0 add sp, #8 pop {r3, pc} diff --git a/asm/ov03.s b/asm/ov03.s index 33ab2e36..52697b9a 100644 --- a/asm/ov03.s +++ b/asm/ov03.s @@ -701,7 +701,7 @@ _020ef1f8: ldr r1, [sp, #0x20] lsl r0, r0, #0x10 add r1, r1, #1 - blx func_02002e20 + blx FastDivide str r0, [sp, #0x40] add r0, r4, #0 str r0, [sp, #0x2c] diff --git a/asm/ov11.s b/asm/ov11.s index d2202889..cdd17e2d 100644 --- a/asm/ov11.s +++ b/asm/ov11.s @@ -3814,7 +3814,7 @@ _021149a4: ldr r1, [sp] add r0, r7, r0 ldr r1, [r1, #0xc] - blx func_02002e20 + blx FastDivide ldrb r0, [r4, r1] add r6, r6, #1 strb r7, [r4, r1] @@ -3872,14 +3872,14 @@ func_ov11_02114a00: ; 0x02114a00 ldr r0, [r5] ldr r1, [sp] add r0, r0, #1 - blx func_02002e20 + blx FastDivide lsl r0, r1, #0x18 lsr r7, r0, #0x18 ldrb r6, [r4, r7] ldr r0, [r5, #4] ldr r1, [sp] add r0, r6, r0 - blx func_02002e20 + blx FastDivide lsl r0, r1, #0x18 lsr r1, r0, #0x18 ldrb r0, [r4, r1] @@ -3889,7 +3889,7 @@ func_ov11_02114a00: ; 0x02114a00 strb r0, [r4, r7] ldr r1, [r5, #0xc] add r0, r6, r0 - blx func_02002e20 + blx FastDivide ldrb r0, [r4, r1] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -47383,7 +47383,7 @@ _0212928e: ldr r4, [r1, r0] mov r1, #0x1e add r0, r4, #0 - blx func_02002e20 + blx FastDivide cmp r1, #1 bne _021292f8 cmp r4, #0x37 diff --git a/asm/ov13.s b/asm/ov13.s index 28c0757d..7209002a 100644 --- a/asm/ov13.s +++ b/asm/ov13.s @@ -2635,7 +2635,7 @@ _02114db8: ldr r0, [r0, #0x14] add r0, r0, r1 sub r0, r0, #1 - bl func_02002e20 + bl FastDivide mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 str r0, [r4, #8] diff --git a/asm/ov26.s b/asm/ov26.s index 56d9e20a..124c8be2 100644 --- a/asm/ov26.s +++ b/asm/ov26.s @@ -8192,7 +8192,7 @@ _02173cfa: ldr r5, [r0] lsl r1, r1, #4 ldr r0, [r5, #0xc] - blx func_02002e20 + blx FastDivide cmp r0, #0xf bhs _02173d3a mov r3, #0 @@ -8201,7 +8201,7 @@ _02173d3a: mov r1, #0xe1 ldr r0, [r5, #0xc] lsl r1, r1, #4 - blx func_02002e20 + blx FastDivide cmp r0, #0x14 bhs _02173d4c mov r3, #1 @@ -8663,12 +8663,12 @@ func_ov26_02174078: ; 0x02174078 mov r1, #0xe1 ldr r0, [r0] lsl r1, r1, #4 - blx func_02002e20 + blx FastDivide mov r1, #0xa add r6, r0, #0 - blx func_02002e20 + blx FastDivide mov r1, #0xa - blx func_02002e20 + blx FastDivide str r4, [sp] add r0, sp, #8 str r0, [sp, #4] @@ -8679,7 +8679,7 @@ func_ov26_02174078: ; 0x02174078 blx func_020349cc add r0, r6, #0 mov r1, #0xa - blx func_02002e20 + blx FastDivide str r4, [sp] add r0, sp, #8 str r0, [sp, #4] @@ -8692,15 +8692,15 @@ func_ov26_02174078: ; 0x02174078 add r0, #0xa4 ldr r0, [r0] mov r1, #0x3c - blx func_02002e20 + blx FastDivide mov r1, #0x3c - blx func_02002e20 + blx FastDivide add r6, r1, #0 add r0, r6, #0 mov r1, #0xa - blx func_02002e20 + blx FastDivide mov r1, #0xa - blx func_02002e20 + blx FastDivide str r4, [sp] add r0, sp, #8 str r0, [sp, #4] @@ -8711,7 +8711,7 @@ func_ov26_02174078: ; 0x02174078 blx func_020349cc add r0, r6, #0 mov r1, #0xa - blx func_02002e20 + blx FastDivide str r4, [sp] add r0, sp, #8 str r0, [sp, #4] diff --git a/asm/ov40.s b/asm/ov40.s index 77a5ab7b..05b20c0f 100644 --- a/asm/ov40.s +++ b/asm/ov40.s @@ -11101,7 +11101,7 @@ func_ov40_021847ec: ; 0x021847ec ldr r7, [r0, #0x818] mov r0, #0xc000 mov r1, r7 - bl func_02002e20 + bl FastDivide ldr r2, _021848e4 ; =data_027e0d44 ldr ip, _021848e8 ; =data_ov40_021881f8 mov r3, r0 @@ -11131,7 +11131,7 @@ _0218486c: ldr r7, [r0, #0x820] mov r0, #0x200 mov r1, r7 - bl func_02002e20 + bl FastDivide ldr r2, _021848e4 ; =data_027e0d44 ldr ip, _021848e8 ; =data_ov40_021881f8 mov r3, r0 diff --git a/asm/ov60.s b/asm/ov60.s index bddbd488..a3ed53fb 100644 --- a/asm/ov60.s +++ b/asm/ov60.s @@ -9018,7 +9018,7 @@ func_ov60_02144fd0: ; 0x02144fd0 bl func_ov60_0214154c ldr r1, _02145058 ; =data_ov60_021480a6 ldrb r1, [r1] - bl func_02002e20 + bl FastDivide ldr r0, _0214505c ; =data_ov60_021480a8 and r2, r1, #0xff ldrh r3, [r0] @@ -11030,7 +11030,7 @@ _02146940: sub r1, r0, #0xe add r0, r2, r1 sub r0, r0, #1 - bl func_02002e20 + bl FastDivide add r0, r0, #0x1f mov r0, r0, lsr #0x2 mov r5, r0, lsl #0x4 diff --git a/asm/ov61.s b/asm/ov61.s index 5d237e3a..5cba8e4e 100644 --- a/asm/ov61.s +++ b/asm/ov61.s @@ -41179,7 +41179,7 @@ _0216003c: add r0, r0, #0x2000 ldr r6, [r0, #0x284] mov r0, r6 - bl func_02002e20 + bl FastDivide cmp r1, #0 bne _021600a8 ldr r4, _021601e8 ; =0x00000728 @@ -42809,7 +42809,7 @@ _02161568: and r0, r5, r0 bls _02161588 mov r1, sb - bl func_02002e20 + bl FastDivide mov r0, r1 _02161588: cmp r0, sb @@ -44263,7 +44263,7 @@ _02162708: bne _021626f4 _02162718: mov r0, ip - bl func_02002e20 + bl FastDivide mov r0, r1 ldmia sp!, {r3, pc} .align 2, 0 @@ -45594,7 +45594,7 @@ _021636d8: bne _021636c4 _021636e8: mov r0, ip - bl func_02002e20 + bl FastDivide mov r0, r1 ldmia sp!, {r3, pc} .align 2, 0 @@ -67857,7 +67857,7 @@ func_ov61_02176108: ; 0x02176108 ldrh r0, [r2, #4] ldr r2, [r2] mul r0, r2, r0 - bl func_02002e20 + bl FastDivide mov r0, r1 ldmia sp!, {r3, pc} arm_func_end func_ov61_02176108 diff --git a/include/lib/math.h b/include/lib/math.h new file mode 100644 index 00000000..153ac2c6 --- /dev/null +++ b/include/lib/math.h @@ -0,0 +1,8 @@ +#ifndef LIB_MATH_H +#define LIB_MATH_H + +#include "types.h" + +extern "C" u32 FastDivide(u32 a, u32 b); + +#endif