diff options
Diffstat (limited to 'asm/unk_text_8095904.s')
-rwxr-xr-x | asm/unk_text_8095904.s | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/asm/unk_text_8095904.s b/asm/unk_text_8095904.s new file mode 100755 index 000000000..4c1b662b3 --- /dev/null +++ b/asm/unk_text_8095904.s @@ -0,0 +1,257 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8095904 +sub_8095904: @ 8095904 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + str r0, [sp] + adds r7, r1, 0 + adds r4, r2, 0 + ldr r0, [sp, 0x3C] + lsls r4, 24 + lsrs r4, 24 + lsls r3, 16 + lsrs r3, 16 + str r3, [sp, 0x4] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + ldr r0, [sp] + bl StringLength + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + cmp r4, 0 + bne _08095988 + movs r5, 0 + cmp r5, r8 + bcs _08095A2E +_0809593E: + ldr r1, [sp] + adds r0, r1, r5 + ldrb r2, [r0] + ldr r0, _08095980 @ =0x0000fff0 + ands r0, r2 + lsls r0, 6 + movs r1, 0xF + ands r2, r1 + lsls r2, 5 + adds r0, r2 + ldr r1, _08095984 @ =gFont3LatinGlyphs + adds r4, r0, r1 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0x10 + bl CpuSet + movs r2, 0x80 + lsls r2, 2 + adds r0, r4, r2 + ldr r3, [sp, 0x4] + adds r1, r7, r3 + movs r2, 0x10 + bl CpuSet + adds r7, 0x20 + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r8 + bcc _0809593E + b _08095A2E + .align 2, 0 +_08095980: .4byte 0x0000fff0 +_08095984: .4byte gFont3LatinGlyphs +_08095988: + movs r0, 0 + mov r9, r0 + ldr r1, [sp, 0x8] + lsls r0, r1, 28 + lsrs r0, 24 + str r0, [sp, 0xC] + mov r2, r8 + lsls r0, r2, 21 + movs r1, 0 + lsrs r0, 1 + str r0, [sp, 0x10] +_0809599E: + movs r5, 0 + ldr r3, [sp, 0x4] + adds r3, r7, r3 + str r3, [sp, 0x14] + adds r0, r1, 0x1 + str r0, [sp, 0x18] + cmp r5, r8 + bcs _08095A12 + movs r2, 0xF + mov r12, r2 + lsls r1, 9 + ldr r0, _08095A40 @ =gFont3LatinGlyphs + adds r1, r0 + mov r10, r1 +_080959BA: + ldr r3, [sp] + adds r0, r3, r5 + ldrb r1, [r0] + ldr r0, _08095A44 @ =0x0000fff0 + ands r0, r1 + lsls r0, 6 + mov r2, r12 + ands r1, r2 + lsls r1, 5 + adds r0, r1 + mov r3, r10 + adds r4, r0, r3 + movs r6, 0 + adds r5, 0x1 +_080959D6: + ldrb r0, [r4] + movs r3, 0xF0 + ands r3, r0 + mov r2, r12 + ands r2, r0 + cmp r3, 0 + bne _080959E6 + ldr r3, [sp, 0xC] +_080959E6: + cmp r2, 0 + bne _080959EC + ldr r2, [sp, 0x8] +_080959EC: + mov r0, r9 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + ldr r1, [sp, 0x40] + adds r0, r1, r0 + orrs r3, r2 + strb r3, [r0] + adds r4, 0x1 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x1F + bls _080959D6 + lsls r0, r5, 16 + lsrs r5, r0, 16 + cmp r5, r8 + bcc _080959BA +_08095A12: + ldr r0, [sp, 0x40] + adds r1, r7, 0 + ldr r3, [sp, 0x10] + lsrs r2, r3, 16 + bl CpuSet + ldr r7, [sp, 0x14] + movs r0, 0 + mov r9, r0 + ldr r1, [sp, 0x18] + lsls r0, r1, 16 + lsrs r1, r0, 16 + cmp r1, 0x1 + bls _0809599E +_08095A2E: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08095A40: .4byte gFont3LatinGlyphs +_08095A44: .4byte 0x0000fff0 + thumb_func_end sub_8095904 + + thumb_func_start unref_sub_8095A48 +unref_sub_8095A48: @ 8095A48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r7, r3, 24 + movs r6, 0 +_08095A60: + movs r3, 0 + ldrb r0, [r4] + adds r1, r0, 0 + adds r2, r0, 0 + cmp r1, 0xFF + beq _08095ACE +_08095A6C: + mov r0, sp + adds r0, r3 + adds r0, 0x8 + strb r2, [r0] + adds r4, 0x1 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x3 + bhi _08095AA8 + ldrb r0, [r4] + adds r1, r0, 0 + adds r2, r0, 0 + cmp r1, 0xFF + bne _08095A6C + cmp r3, 0 + beq _08095ACE + movs r6, 0x1 + cmp r3, 0x3 + bhi _08095AA8 + movs r2, 0 +_08095A96: + adds r0, r3, 0 + adds r1, r0, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + add r0, sp + adds r0, 0x8 + strb r2, [r0] + cmp r3, 0x3 + bls _08095A96 +_08095AA8: + mov r1, sp + adds r1, r3 + adds r1, 0x8 + movs r0, 0xFF + strb r0, [r1] + str r7, [sp] + ldr r0, [sp, 0x28] + str r0, [sp, 0x4] + add r0, sp, 0x8 + adds r1, r5, 0 + mov r2, r8 + movs r3, 0x80 + bl sub_8095904 + movs r0, 0x80 + lsls r0, 1 + adds r5, r0 + cmp r6, 0 + beq _08095A60 +_08095ACE: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end unref_sub_8095A48 + + .align 2, 0 @ Don't pad with nop. |