diff options
-rw-r--r-- | arm9/arm9.lcf | 4 | ||||
-rw-r--r-- | arm9/asm/MATH.s | 25 | ||||
-rw-r--r-- | arm9/asm/MATH_crc.s (renamed from arm9/asm/libmath.s) | 64 | ||||
-rw-r--r-- | arm9/asm/MATH_dgt.s | 47 |
4 files changed, 75 insertions, 65 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index f1dc7c8d..9035d69e 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -244,7 +244,9 @@ SECTIONS { CTRDG_flash_MX29L010.o (.text) CTRDG_flash_MX29L512.o (.text) CTRDG_task.o (.text) - libmath.o (.text) + MATH.o (.text) + MATH_dgt.o (.text) + MATH_crc.o (.text) libstd.o (.text) /* C standard library */ libc.o (.text) diff --git a/arm9/asm/MATH.s b/arm9/asm/MATH.s new file mode 100644 index 00000000..8e127de0 --- /dev/null +++ b/arm9/asm/MATH.s @@ -0,0 +1,25 @@ + .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 diff --git a/arm9/asm/libmath.s b/arm9/asm/MATH_crc.s index e841f5da..2b9b8f26 100644 --- a/arm9/asm/libmath.s +++ b/arm9/asm/MATH_crc.s @@ -3,70 +3,6 @@ .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 - - arm_func_start MATH_CalcSHA1 -MATH_CalcSHA1: ; 0x020DDCA0 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x68 - mov r6, r0 - add r0, sp, #0x0 - mov r5, r1 - mov r4, r2 - bl DGT_Hash2Reset -_020DDCBC: ; 0x020DDCBC - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl DGT_Hash2SetSource -_020DDCCC: ; 0x020DDCCC - add r0, sp, #0x0 - mov r1, r6 - bl DGT_Hash2GetDigest - add sp, sp, #0x68 - ldmia sp!, {r4-r6,lr} - bx lr - - arm_func_start MATH_CalcMD5 -MATH_CalcMD5: ; 0x020DDCE4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x58 - mov r6, r0 - add r0, sp, #0x0 - mov r5, r1 - mov r4, r2 - bl DGT_Hash1Reset -_020DDD00: ; 0x020DDD00 - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl DGT_Hash1SetSource - add r1, sp, #0x0 - mov r0, r6 - bl DGT_Hash1GetDigest_R - add sp, sp, #0x58 - ldmia sp!, {r4-r6,lr} - bx lr - arm_func_start MATH_CalcCRC32 MATH_CalcCRC32: ; 0x020DDD28 stmdb sp!, {lr} diff --git a/arm9/asm/MATH_dgt.s b/arm9/asm/MATH_dgt.s new file mode 100644 index 00000000..12d05588 --- /dev/null +++ b/arm9/asm/MATH_dgt.s @@ -0,0 +1,47 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start MATH_CalcSHA1 +MATH_CalcSHA1: ; 0x020DDCA0 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x68 + mov r6, r0 + add r0, sp, #0x0 + mov r5, r1 + mov r4, r2 + bl DGT_Hash2Reset +_020DDCBC: ; 0x020DDCBC + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl DGT_Hash2SetSource +_020DDCCC: ; 0x020DDCCC + add r0, sp, #0x0 + mov r1, r6 + bl DGT_Hash2GetDigest + add sp, sp, #0x68 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start MATH_CalcMD5 +MATH_CalcMD5: ; 0x020DDCE4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x58 + mov r6, r0 + add r0, sp, #0x0 + mov r5, r1 + mov r4, r2 + bl DGT_Hash1Reset +_020DDD00: ; 0x020DDD00 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl DGT_Hash1SetSource + add r1, sp, #0x0 + mov r0, r6 + bl DGT_Hash1GetDigest_R + add sp, sp, #0x58 + ldmia sp!, {r4-r6,lr} + bx lr |