Decompile MATH.c

This commit is contained in:
Egor Ananyin 2020-05-21 14:10:58 +03:00
parent dace495d47
commit 793e1eba87
3 changed files with 19 additions and 25 deletions

View File

@ -1,25 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start MATH_CountPopulation
MATH_CountPopulation: ; 0x020DDC5C
ldr r1, _020DDC94 ; =0x55555555
ldr r2, _020DDC98 ; =0x33333333
and r1, r1, r0, lsr #0x1
sub r0, r0, r1
and r1, r0, r2
and r0, r2, r0, lsr #0x2
add r1, r1, r0
ldr r0, _020DDC9C ; =0x0F0F0F0F
add r1, r1, r1, lsr #0x4
and r0, r1, r0
add r0, r0, r0, lsr #0x8
add r0, r0, r0, lsr #0x10
and r0, r0, #0xff
bx lr
.balign 4
_020DDC94: .word 0x55555555
_020DDC98: .word 0x33333333
_020DDC9C: .word 0x0F0F0F0F

8
arm9/lib/include/MATH.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef GUARD_MATH_H
#define GUARD_MATH_H
#include "types.h"
u8 MATH_CountPopulation(u32);
#endif

11
arm9/lib/src/MATH.c Normal file
View File

@ -0,0 +1,11 @@
#include "MATH.h"
u8 MATH_CountPopulation(u32 x) {
x -= (x >> 1) & 0x55555555;
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
x += x >> 4;
x &= 0x0f0f0f0f;
x += x >> 8;
x += x >> 16;
return (u8)x;
}