summaryrefslogtreecommitdiff
path: root/arm9/asm/NNS_G3D_nsbtp.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/NNS_G3D_nsbtp.s')
-rw-r--r--arm9/asm/NNS_G3D_nsbtp.s180
1 files changed, 180 insertions, 0 deletions
diff --git a/arm9/asm/NNS_G3D_nsbtp.s b/arm9/asm/NNS_G3D_nsbtp.s
new file mode 100644
index 00000000..0ae2aa13
--- /dev/null
+++ b/arm9/asm/NNS_G3D_nsbtp.s
@@ -0,0 +1,180 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dAnmCalcNsBtp
+NNSi_G3dAnmCalcNsBtp: ; 0x020BE334
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldr r3, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ mov r1, r2, lsl #0x10
+ mov r2, r3, lsl #0x4
+ mov r7, r0
+ mov r0, r5
+ mov r1, r1, lsr #0x10
+ mov r2, r2, lsr #0x10
+ bl NNSi_G3dGetTexPatAnmFV
+ mov r4, r0
+ ldrb r1, [r4, #0x2]
+ mov r0, r5
+ bl NNSi_G3dGetTexPatAnmTexNameByIdx
+ mov r1, r0
+ ldr r0, [r6, #0x14]
+ mov r2, r7
+ bl SetTexParamaters_
+ ldrb r1, [r4, #0x3]
+ cmp r1, #0xff
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ mov r0, r5
+ bl NNSi_G3dGetTexPatAnmPlttNameByIdx
+ mov r1, r0
+ ldr r0, [r6, #0x14]
+ mov r2, r7
+ bl SetPlttParamaters_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNSi_G3dAnmCalcNsBtp
+
+ arm_func_start SetPlttParamaters_
+SetPlttParamaters_: ; 0x020BE3B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldrh r0, [r5, #0x34]
+ mov r4, r2
+ add r0, r5, r0
+ bl NNS_G3dGetResDataByName
+ ldr r1, [r5, #0x2c]
+ ldrh r2, [r0, #0x2]
+ mov r1, r1, lsl #0x10
+ mov r3, r1, lsr #0x10
+ ands r1, r2, #0x1
+ ldrh r0, [r0, #0x0]
+ moveq r1, r3, lsl #0xf
+ moveq r3, r1, lsr #0x10
+ moveq r0, r0, lsl #0xf
+ moveq r0, r0, lsr #0x10
+ add r0, r0, r3
+ str r0, [r4, #0x14]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end SetPlttParamaters_
+
+ arm_func_start SetTexParamaters_
+SetTexParamaters_: ; 0x020BE408
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ add r0, r5, #0x3c
+ mov r4, r2
+ bl NNS_G3dGetResDataByName
+ ldr r1, [r0, #0x0]
+ ldr r3, [r4, #0x10]
+ and r1, r1, #0x1c000000
+ cmp r1, #0x14000000
+ ldrne r2, [r5, #0x8]
+ ldrne r1, _020BE4E0 ; =0x0000FFFF
+ andne r5, r2, r1
+ ldreq r2, [r5, #0x18]
+ ldreq r1, _020BE4E0 ; =0x0000FFFF
+ andeq r5, r2, r1
+ ldr r1, _020BE4E4 ; =0xC00F0000
+ ldr r2, _020BE4E8 ; =0x000007FF
+ and r1, r3, r1
+ str r1, [r4, #0x10]
+ ldr r1, [r0, #0x0]
+ ldr r3, [r4, #0x10]
+ add r1, r1, r5
+ orr r1, r3, r1
+ str r1, [r4, #0x10]
+ ldr r3, [r0, #0x4]
+ ldr r1, _020BE4EC ; =0x003FF800
+ and r3, r3, r2
+ strh r3, [r4, #0x2c]
+ ldr r3, [r0, #0x4]
+ and r1, r3, r1
+ mov r1, r1, lsr #0xb
+ strh r1, [r4, #0x2e]
+ ldr r3, [r0, #0x4]
+ ldrh r1, [r4, #0x2c]
+ and r0, r3, r2
+ and r5, r2, r3, lsr #0xb
+ cmp r0, r1
+ moveq r0, #0x1000
+ beq _020BE4B4
+ mov r0, r0, lsl #0xc
+ mov r1, r1, lsl #0xc
+ bl FX_Div
+_020BE4B4:
+ str r0, [r4, #0x30]
+ ldrh r1, [r4, #0x2e]
+ cmp r5, r1
+ moveq r0, #0x1000
+ beq _020BE4D4
+ mov r0, r5, lsl #0xc
+ mov r1, r1, lsl #0xc
+ bl FX_Div
+_020BE4D4:
+ str r0, [r4, #0x34]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BE4E0: .word 0x0000FFFF
+_020BE4E4: .word 0xC00F0000
+_020BE4E8: .word 0x000007FF
+_020BE4EC: .word 0x003FF800
+ arm_func_end SetTexParamaters_
+
+ arm_func_start NNSi_G3dAnmObjInitNsBtp
+NNSi_G3dAnmObjInitNsBtp: ; 0x020BE4F0
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r3, _020BE59C ; =NNS_G3dFuncAnmMatNsBtpDefault
+ ldr r4, [r2, #0x8]
+ ldr r3, [r3, #0x0]
+ mov r9, r0
+ str r3, [r9, #0xc]
+ ldrb r0, [r2, #0x18]
+ mov r8, r1
+ add r4, r2, r4
+ strb r0, [r9, #0x19]
+ str r8, [r9, #0x8]
+ ldrb r2, [r9, #0x19]
+ add r1, r9, #0x1a
+ mov r0, #0x0
+ mov r2, r2, lsl #0x1
+ bl MIi_CpuClear16
+ ldrb r0, [r8, #0xd]
+ mov r7, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r9,pc}
+ mov r6, r7
+ add r5, r8, #0xc
+ add r4, r4, #0x4
+_020BE554:
+ ldrh r1, [r8, #0x12]
+ mov r0, r4
+ add r2, r5, r1
+ ldrh r1, [r2, #0x2]
+ add r1, r2, r1
+ add r1, r1, r6
+ bl NNS_G3dGetResDictIdxByName
+ cmp r0, #0x0
+ orrge r1, r7, #0x100
+ addge r0, r9, r0, lsl #0x1
+ strgeh r1, [r0, #0x1a]
+ ldrb r0, [r8, #0xd]
+ add r7, r7, #0x1
+ add r6, r6, #0x10
+ cmp r7, r0
+ blo _020BE554
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020BE59C: .word NNS_G3dFuncAnmMatNsBtpDefault
+ arm_func_end NNSi_G3dAnmObjInitNsBtp