diff --git a/asm/pokegear_app_phone.s b/asm/pokegear_app_phone.s index 50b41fc15..c490b49ed 100644 --- a/asm/pokegear_app_phone.s +++ b/asm/pokegear_app_phone.s @@ -25,88 +25,6 @@ .extern ov101_021F09B0 .extern ov101_021F0ACC - thumb_func_start ov101_021F0EB0 -ov101_021F0EB0: ; 0x021F0EB0 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r0, #0xc4 - ldr r0, [r0] - mov r3, #0 - add r0, #0x84 - ldr r2, [r0] - add r0, r6, #0 - add r0, #0xcd - ldrb r0, [r0] - sub r4, r0, #1 - cmp r4, #0 - ble _021F0F10 - add r2, r2, r1 -_021F0ECC: - cmp r4, r3 - ble _021F0F02 -_021F0ED0: - add r0, r6, #0 - add r0, #0xd0 - ldr r7, [r0] - mov r0, #0x14 - ldrb r5, [r7, r4] - ldrb r1, [r3, r7] - mul r0, r5 - mov ip, r5 - mov r5, #0x14 - mul r5, r1 - add r0, r2, r0 - add r5, r2, r5 - ldrb r0, [r0, #0x10] - ldrb r5, [r5, #0x10] - cmp r0, r5 - bhs _021F0EFC - mov r0, ip - strb r0, [r3, r7] - add r0, r6, #0 - add r0, #0xd0 - ldr r0, [r0] - strb r1, [r0, r4] -_021F0EFC: - sub r4, r4, #1 - cmp r4, r3 - bgt _021F0ED0 -_021F0F02: - add r0, r6, #0 - add r0, #0xcd - ldrb r0, [r0] - add r3, r3, #1 - sub r4, r0, #1 - cmp r3, r4 - blt _021F0ECC -_021F0F10: - add r0, r6, #0 - bl ov101_021F1840 - add r0, r6, #0 - bl ov101_021F11B0 - add r0, r6, #0 - add r2, r6, #0 - mov r1, #0 - add r0, #0xe1 - strb r1, [r0] - add r0, r6, #0 - add r0, #0xe1 - ldrb r1, [r0] - add r0, r6, #0 - add r0, #0xe3 - strb r1, [r0] - add r1, r6, #0 - add r0, r6, #0 - add r2, #0xe3 - add r6, #0xe1 - ldrb r2, [r2] - ldrb r3, [r6] - add r1, #0xe0 - bl ov101_021F11E0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov101_021F0EB0 - thumb_func_start ov101_021F0F48 ov101_021F0F48: ; 0x021F0F48 push {r3, r4, r5, r6, r7, lr} diff --git a/include/application/pokegear/phone/phone_internal.h b/include/application/pokegear/phone/phone_internal.h index 1d09506b5..9e1015de2 100644 --- a/include/application/pokegear/phone/phone_internal.h +++ b/include/application/pokegear/phone/phone_internal.h @@ -72,7 +72,39 @@ typedef struct PokegearPhoneApp_Sub0C4Template { } PokegearPhoneApp_Sub0C4Template; typedef struct PokegearPhoneApp_Sub0C4 { -} PokegearPhoneApp_Sub0C4; + HeapID heapId; + PokegearPhoneAppData *unk_04; + BgConfig *unk_08; + Window *unk_0C; + Window *unk_10; + u8 filler_14[4]; + PaletteData *unk_18; + SaveData *unk_1C; + MomsSavings *unk_20; + PlayerProfile *unk_24; + SaveVarsFlags *unk_28; + SysInfo_RTC *unk_2C; + u16 unk_30; + u16 unk_32; + u8 unk_34; + u8 unk_35; + u8 unk_36; + u8 filler_37[0xD]; + MsgData *unk_44; + MsgData *unk_48; + u8 filler_4C[4]; + MessageFormat *unk_50; + String *unk_54; + String *unk_58; + String *unk_5C; + String *unk_60; + String *unk_64; + String *unk_68[3]; + String *unk_74[3]; + PhoneBook *unk_80; + PhoneBookEntry *unk_84; + u8 filler_88[0x54]; +} PokegearPhoneApp_Sub0C4; // size: 0xDC struct PokegearPhoneAppData { HeapID heapId; // 0x000 diff --git a/src/application/pokegear/phone/overlay_101_021F0880.c b/src/application/pokegear/phone/overlay_101_021F0880.c index 05df03c48..85bf3f075 100644 --- a/src/application/pokegear/phone/overlay_101_021F0880.c +++ b/src/application/pokegear/phone/overlay_101_021F0880.c @@ -268,3 +268,21 @@ void ov101_021F0E0C(PokegearPhoneAppData *phoneApp, PokegearPhoneApp_Sub0D8 *a1, } while (r4 != phoneApp->contactListHead); } } + +void ov101_021F0EB0(PokegearPhoneAppData *phoneApp, u8 a1) { + PhoneBookEntry *r2 = phoneApp->unk_0C4->unk_84; + for (int i = 0; i < phoneApp->numContacts - 1; ++i) { + for (int j = phoneApp->numContacts - 1; j > i; --j) { + if (r2[phoneApp->saveContacts[j].id].unk10[a1] < r2[phoneApp->saveContacts[i].id].unk10[a1]) { + u8 tmp = phoneApp->saveContacts[i].id; + phoneApp->saveContacts[i].id = phoneApp->saveContacts[j].id; + phoneApp->saveContacts[j].id = tmp; + } + } + } + ov101_021F1840(phoneApp); + ov101_021F11B0(phoneApp); + phoneApp->unk_0E0.unk_001 = 0; + phoneApp->unk_0E0.unk_003 = phoneApp->unk_0E0.unk_001; + ov101_021F11E0(phoneApp, &phoneApp->unk_0E0, phoneApp->unk_0E0.unk_003, phoneApp->unk_0E0.unk_001); +}