summaryrefslogtreecommitdiff
path: root/arm9/asm/NNS_G2D_g2d_nft_load.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/NNS_G2D_g2d_nft_load.s')
-rw-r--r--arm9/asm/NNS_G2D_g2d_nft_load.s180
1 files changed, 180 insertions, 0 deletions
diff --git a/arm9/asm/NNS_G2D_g2d_nft_load.s b/arm9/asm/NNS_G2D_g2d_nft_load.s
new file mode 100644
index 00000000..3f9c0e77
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_nft_load.s
@@ -0,0 +1,180 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dUnpackNFT
+NNSi_G2dUnpackNFT: ; 0x020B7468
+ stmdb sp!, {r4-r6,lr}
+ ldrh r2, [r0, #0xc]
+ ldrh r3, [r0, #0xe]
+ mov r1, #0x0
+ add r2, r0, r2
+ cmp r3, #0x0
+ ldmleia sp!, {r4-r6,pc}
+ ldr r3, _020B7548 ; =0x46494E46
+ ldr ip, _020B754C ; =0x43574448
+ ldr r4, _020B7550 ; =0x434D4150
+ ldr lr, _020B7554 ; =0x43474C50
+_020B7494:
+ ldr r5, [r2, #0x0]
+ cmp r5, r4
+ bhi _020B74B0
+ cmp r5, r4
+ bhs _020B7518
+ cmp r5, lr
+ b _020B752C
+_020B74B0:
+ cmp r5, r12
+ bhi _020B74C4
+ cmp r5, r12
+ beq _020B7500
+ b _020B752C
+_020B74C4:
+ cmp r5, r3
+ bne _020B752C
+ add r6, r2, #0x8
+ ldr r5, [r6, #0x8]
+ add r5, r5, r0
+ str r5, [r6, #0x8]
+ ldr r5, [r6, #0xc]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0xc]
+ ldr r5, [r6, #0x10]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0x10]
+ b _020B752C
+_020B7500:
+ add r6, r2, #0x8
+ ldr r5, [r6, #0x4]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0x4]
+ b _020B752C
+_020B7518:
+ add r6, r2, #0x8
+ ldr r5, [r6, #0x8]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0x8]
+_020B752C:
+ ldrh r5, [r0, #0xe]
+ ldr r6, [r2, #0x4]
+ add r1, r1, #0x1
+ cmp r1, r5
+ add r2, r2, r6
+ blt _020B7494
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B7548: .word 0x46494E46
+_020B754C: .word 0x43574448
+_020B7550: .word 0x434D4150
+_020B7554: .word 0x43474C50
+ arm_func_end NNSi_G2dUnpackNFT
+
+ arm_func_start NNSi_G2dGetUnpackedFont
+NNSi_G2dGetUnpackedFont: ; 0x020B7558
+ stmdb sp!, {r4-r6,lr}
+ movs r6, r0
+ mov r5, r1
+ beq _020B75C8
+ cmp r6, #0x0
+ beq _020B7584
+ ldr r1, [r6, #0x0]
+ ldr r0, _020B76A8 ; =0x4E465452
+ cmp r1, r0
+ moveq r0, #0x1
+ beq _020B7588
+_020B7584:
+ mov r0, #0x0
+_020B7588:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B75CC
+ cmp r6, #0x0
+ beq _020B75B4
+ ldrh r0, [r6, #0x6]
+ cmp r0, #0x100
+ movcs r0, #0x1
+ bhs _020B75B8
+_020B75B4:
+ mov r0, #0x0
+_020B75B8:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ b _020B75CC
+_020B75C8:
+ mov r0, #0x0
+_020B75CC:
+ cmp r0, #0x0
+ movne r4, #0x0
+ bne _020B7654
+ cmp r6, #0x0
+ beq _020B7640
+ cmp r6, #0x0
+ beq _020B75FC
+ ldr r1, [r6, #0x0]
+ ldr r0, _020B76A8 ; =0x4E465452
+ cmp r1, r0
+ moveq r0, #0x1
+ beq _020B7600
+_020B75FC:
+ mov r0, #0x0
+_020B7600:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B7644
+ cmp r6, #0x0
+ beq _020B762C
+ ldrh r0, [r6, #0x6]
+ cmp r0, #0x1
+ movcs r0, #0x1
+ bhs _020B7630
+_020B762C:
+ mov r0, #0x0
+_020B7630:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ b _020B7644
+_020B7640:
+ mov r0, #0x0
+_020B7644:
+ cmp r0, #0x0
+ movne r4, #0x1
+ bne _020B7654
+ bl OS_Terminate
+_020B7654:
+ mov r0, r6
+ bl NNSi_G2dUnpackNFT
+ ldr r1, _020B76AC ; =0x46494E46
+ mov r0, r6
+ bl NNS_G2dFindBinaryBlock
+ cmp r0, #0x0
+ moveq r0, #0x0
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r6,pc}
+ add r0, r0, #0x8
+ str r0, [r5, #0x0]
+ cmp r4, #0x0
+ beq _020B76A0
+ ldr r2, [r5, #0x0]
+ mov r1, #0x0
+ ldrsb r0, [r2, #0x6]
+ strb r0, [r2, #0x7]
+ ldr r0, [r5, #0x0]
+ strb r1, [r0, #0x6]
+_020B76A0:
+ add r0, r4, #0x1
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B76A8: .word 0x4E465452
+_020B76AC: .word 0x46494E46
+ arm_func_end NNSi_G2dGetUnpackedFont