1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-09 14:47:02 +02:00

#368 GBA matrixRotateYXZ_fast_asm (pre-shifted angles)

This commit is contained in:
XProger
2022-12-04 02:16:38 +03:00
parent f7d6d4de9e
commit 4bb76c204f
3 changed files with 11 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
#ifndef H_COMMON
#define H_COMMON
//#define STATIC_ITEMS
#define PROFILING
//#define PROFILING
#ifdef PROFILING
#define STATIC_ITEMS
#define PROFILE_FRAMETIME

View File

@@ -5,9 +5,10 @@ angles .req r1 // arg
x .req pos
y .req angles
z .req r2
mask .req r3
packed .req r12
.extern matrixTranslateRel_asm, matrixRotateYXZ_asm
.extern matrixTranslateRel_asm, matrixRotateYXZ_fast_asm
.global matrixFrame_asm
matrixFrame_asm:
@@ -20,20 +21,14 @@ matrixFrame_asm:
bl matrixTranslateRel_asm // doesn't affect user mode r12
lsl z, packed, #22
asr z, #16
mov mask, #4096
sub mask, #4
lsr packed, #10
lsl y, packed, #22
asr y, #16
lsr packed, #10
lsl x, packed, #22
asr x, #16
and z, mask, packed, lsl #2
and y, mask, packed, lsr #(10 - 2)
and x, mask, packed, lsr #(20 - 2)
ldmfd sp!, {lr}
b matrixRotateYXZ_asm
b matrixRotateYXZ_fast_asm
// TODO matrixFrameLerp

View File

@@ -142,7 +142,7 @@ cosZ .req angleZ
mask .req tmp
mm .req tmp
.global matrixRotateYXZ_asm
.global matrixRotateYXZ_asm, matrixRotateYXZ_fast_asm
matrixRotateYXZ_asm:
mov mask, #0xFF
orr mask, mask, #0xF00 ; mask = 0xFFF
@@ -151,6 +151,7 @@ matrixRotateYXZ_asm:
and angleY, mask, angleY, lsr #4
and angleZ, mask, angleZ, lsr #4
matrixRotateYXZ_fast_asm:
orr mask, angleX, angleY
orrs mask, mask, angleZ
bxeq lr