diff --git a/asm/text.s b/asm/text.s index e444bc20e..f7a105b12 100644 --- a/asm/text.s +++ b/asm/text.s @@ -5,308 +5,6 @@ .text - thumb_func_start sub_800677C -sub_800677C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r4, r1, 0 - str r2, [sp] - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - movs r1, 0 - ldrsh r0, [r6, r1] - subs r3, r0, 0x1 - cmp r4, 0x1C - ble _080067A0 - b _080069AE -_080067A0: - cmp r4, 0 - bge _080067A6 - b _080069AE -_080067A6: - ldr r0, [r6, 0xC] - cmp r0, 0x7 - bls _080067AE - b _080069AE -_080067AE: - lsls r0, 2 - ldr r1, _080067B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080067B8: .4byte _080067BC - .align 2, 0 -_080067BC: - .4byte _080069AE - .4byte _080069AE - .4byte _080069AE - .4byte _080067DC - .4byte _0800689C - .4byte _08006920 - .4byte _080069AE - .4byte _0800696C -_080067DC: - lsls r1, r3, 1 - lsls r2, r4, 6 - ldr r4, [sp] - adds r0, r2, r4 - adds r1, r0 - ldr r7, _08006800 - adds r0, r7, 0 - strh r0, [r1] - adds r5, r2, 0 - mov r0, r9 - cmp r0, 0 - beq _08006808 - movs r2, 0x80 - lsls r2, 4 - adds r1, r2 - ldr r4, _08006804 - adds r0, r4, 0 - b _08006812 - .align 2, 0 -_08006800: .4byte 0x0000f2d8 -_08006804: .4byte 0x0000f293 -_08006808: - movs r7, 0x80 - lsls r7, 4 - adds r1, r7 - ldr r2, _08006878 - adds r0, r2, 0 -_08006812: - strh r0, [r1] - adds r3, 0x1 - movs r4, 0 - movs r7, 0x4 - ldrsh r0, [r6, r7] - cmp r4, r0 - bge _08006856 - ldr r0, _0800687C - mov r8, r0 - lsls r0, r3, 1 - ldr r2, [sp] - movs r7, 0x80 - lsls r7, 4 - adds r1, r2, r7 - adds r1, r5, r1 - adds r2, r0, r1 - ldr r7, [sp] - adds r1, r5, r7 - adds r1, r0, r1 - ldr r0, _08006878 - mov r12, r0 -_0800683C: - mov r7, r8 - strh r7, [r1] - mov r0, r12 - strh r0, [r2] - adds r2, 0x2 - adds r1, 0x2 - adds r3, 0x1 - adds r4, 0x1 - movs r0, 0x4 - ldrsh r7, [r6, r0] - mov r10, r7 - cmp r4, r10 - blt _0800683C -_08006856: - lsls r0, r3, 1 - ldr r2, [sp] - adds r1, r5, r2 - adds r1, r0, r1 - ldr r4, _08006880 - adds r0, r4, 0 - strh r0, [r1] - mov r7, r9 - cmp r7, 0 - beq _08006888 - movs r0, 0x80 - lsls r0, 4 - adds r1, r0 - ldr r2, _08006884 - adds r0, r2, 0 - strh r0, [r1] - b _080069AE - .align 2, 0 -_08006878: .4byte 0x0000f2db -_0800687C: .4byte 0x0000f2d9 -_08006880: .4byte 0x0000f6d8 -_08006884: .4byte 0x0000f693 -_08006888: - movs r4, 0x80 - lsls r4, 4 - adds r1, r4 - ldr r7, _08006898 - adds r0, r7, 0 - strh r0, [r1] - b _080069AE - .align 2, 0 -_08006898: .4byte 0x0000f2db -_0800689C: - lsls r1, r3, 1 - lsls r2, r4, 6 - ldr r0, [sp] - adds r0, r2 - mov r12, r0 - add r1, r12 - ldr r4, _08006910 - adds r0, r4, 0 - strh r0, [r1] - movs r7, 0x80 - lsls r7, 4 - mov r8, r7 - add r1, r8 - ldr r0, _08006914 - mov r9, r0 - strh r0, [r1] - adds r3, 0x1 - movs r4, 0 - movs r1, 0x4 - ldrsh r0, [r6, r1] - adds r5, r2, 0 - cmp r4, r0 - bge _080068F6 - ldr r2, _08006918 - mov r10, r2 - lsls r1, r3, 1 - ldr r0, [sp] - add r0, r8 - adds r0, r5, r0 - adds r2, r1, r0 - add r1, r12 - mov r12, r9 -_080068DC: - mov r7, r10 - strh r7, [r1] - mov r0, r12 - strh r0, [r2] - adds r2, 0x2 - adds r1, 0x2 - adds r3, 0x1 - adds r4, 0x1 - movs r0, 0x4 - ldrsh r7, [r6, r0] - mov r8, r7 - cmp r4, r8 - blt _080068DC -_080068F6: - lsls r0, r3, 1 - ldr r2, [sp] - adds r1, r5, r2 - adds r0, r1 - ldr r4, _0800691C - adds r1, r4, 0 - strh r1, [r0] - movs r7, 0x80 - lsls r7, 4 - adds r0, r7 - ldr r2, _08006914 - adds r1, r2, 0 - b _080069AC - .align 2, 0 -_08006910: .4byte 0x0000f2e8 -_08006914: .4byte 0x0000f2db -_08006918: .4byte 0x0000f2e9 -_0800691C: .4byte 0x0000f6e8 -_08006920: - lsls r0, r3, 1 - lsls r2, r4, 6 - ldr r4, [sp] - adds r4, r2 - mov r12, r4 - add r0, r12 - ldr r7, _08006960 - adds r1, r7, 0 - strh r1, [r0] - adds r3, 0x1 - movs r1, 0x4 - ldrsh r0, [r6, r1] - adds r5, r2, 0 - cmp r0, 0 - ble _08006954 - ldr r2, _08006964 - adds r1, r2, 0 - adds r4, r0, 0 - lsls r0, r3, 1 - add r0, r12 -_08006948: - strh r1, [r0] - adds r0, 0x2 - adds r3, 0x1 - subs r4, 0x1 - cmp r4, 0 - bne _08006948 -_08006954: - lsls r0, r3, 1 - ldr r4, [sp] - adds r1, r5, r4 - adds r0, r1 - ldr r7, _08006968 - b _080069AA - .align 2, 0 -_08006960: .4byte 0x0000f2dc -_08006964: .4byte 0x0000f2dd -_08006968: .4byte 0x0000f6dc -_0800696C: - lsls r0, r3, 1 - lsls r2, r4, 6 - ldr r1, [sp] - adds r1, r2 - mov r12, r1 - add r0, r12 - ldr r4, _080069C0 - adds r1, r4, 0 - strh r1, [r0] - adds r3, 0x1 - movs r7, 0x4 - ldrsh r0, [r6, r7] - adds r5, r2, 0 - cmp r0, 0 - ble _080069A0 - ldr r2, _080069C4 - adds r1, r2, 0 - adds r4, r0, 0 - lsls r0, r3, 1 - add r0, r12 -_08006994: - strh r1, [r0] - adds r0, 0x2 - adds r3, 0x1 - subs r4, 0x1 - cmp r4, 0 - bne _08006994 -_080069A0: - lsls r0, r3, 1 - ldr r4, [sp] - adds r1, r5, r4 - adds r0, r1 - ldr r7, _080069C8 -_080069AA: - adds r1, r7, 0 -_080069AC: - strh r1, [r0] -_080069AE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080069C0: .4byte 0x0000f293 -_080069C4: .4byte 0x0000f297 -_080069C8: .4byte 0x0000f693 - thumb_func_end sub_800677C - thumb_func_start sub_80069CC sub_80069CC: push {r4-r6,lr} diff --git a/src/text2.c b/src/text2.c index 95a637b3f..c608142ee 100644 --- a/src/text2.c +++ b/src/text2.c @@ -126,4 +126,78 @@ void sub_8006554(struct UnkTextStruct1 *a0, void *a1, u8 *a2, u16 *a3, u32 a4, c sub_8008C6C(a0, a4); t1->unk46 = 0; +} + +void sub_800677C(struct UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3) +{ + s32 iVar5; + s32 i; + + iVar5 = a0->unk0 - 1; + + if (a1 > 28) + return; + // Cannot combine these ifs for matching + if (a1 < 0) + return; + + switch (a0->unkC) { + case 0: + case 1: + case 2: + case 6: + break; + case 3: + (a2 + a1 * 0x20)[iVar5] = 0xF2D8; + if (a3 != 0) + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF293; + else + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + iVar5++; + for (i = 0; i < a0->unk4; i++) { + (a2 + a1 * 0x20)[iVar5] = 0xF2D9; + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + iVar5++; + } + + (a2 + a1 * 0x20)[iVar5] = 0xF6D8; + if (a3 != 0) + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF693; + else + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + break; + case 4: + (a2 + a1 * 0x20)[iVar5] = 0xF2E8; + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + iVar5++; + for (i = 0; i < a0->unk4; i++) { + (a2 + a1 * 0x20)[iVar5] = 0xF2E9; + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + iVar5++; + } + + (a2 + a1 * 0x20)[iVar5] = 0xF6E8; + (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + break; + case 5: + (a2 + a1 * 0x20)[iVar5] = 0xF2DC; + iVar5++; + for (i = 0; i < a0->unk4; i++) { + (a2 + a1 * 0x20)[iVar5] = 0xF2DD; + iVar5++; + } + + (a2 + a1 * 0x20)[iVar5] = 0xF6DC; + break; + case 7: + (a2 + a1 * 0x20)[iVar5] = 0xF293; + iVar5++; + for (i = 0; i < a0->unk4; i++) { + (a2 + a1 * 0x20)[iVar5] = 0xF297; + iVar5++; + } + + (a2 + a1 * 0x20)[iVar5] = 0xF693; + break; + } } \ No newline at end of file