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 #ifndef H_COMMON
#define H_COMMON #define H_COMMON
//#define STATIC_ITEMS //#define STATIC_ITEMS
#define PROFILING //#define PROFILING
#ifdef PROFILING #ifdef PROFILING
#define STATIC_ITEMS #define STATIC_ITEMS
#define PROFILE_FRAMETIME #define PROFILE_FRAMETIME

View File

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

View File

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