mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-05-31 20:43:00 -05:00
through ov101_021F0E0C
This commit is contained in:
parent
f8373fde34
commit
407670a45e
|
|
@ -25,164 +25,6 @@
|
|||
.extern ov101_021F09B0
|
||||
.extern ov101_021F0ACC
|
||||
|
||||
thumb_func_start ov101_021F0D90
|
||||
ov101_021F0D90: ; 0x021F0D90
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r0, #0
|
||||
add r1, r4, #0
|
||||
add r1, #0xd8
|
||||
ldr r1, [r1]
|
||||
mov r0, #0
|
||||
ldrb r2, [r1, #1]
|
||||
add r1, r4, #0
|
||||
add r1, #0xd0
|
||||
ldr r1, [r1]
|
||||
add r0, r0, #1
|
||||
strb r2, [r1]
|
||||
add r1, r4, #0
|
||||
add r1, #0xd8
|
||||
ldr r2, [r1]
|
||||
lsl r0, r0, #0x18
|
||||
ldr r1, [r2, #8]
|
||||
lsr r0, r0, #0x18
|
||||
cmp r1, r2
|
||||
beq _021F0DD6
|
||||
_021F0DB8:
|
||||
add r3, r4, #0
|
||||
add r3, #0xd0
|
||||
ldrb r5, [r1, #1]
|
||||
add r2, r0, #0
|
||||
ldr r3, [r3]
|
||||
add r0, r0, #1
|
||||
strb r5, [r3, r2]
|
||||
add r2, r4, #0
|
||||
add r2, #0xd8
|
||||
lsl r0, r0, #0x18
|
||||
ldr r1, [r1, #8]
|
||||
ldr r2, [r2]
|
||||
lsr r0, r0, #0x18
|
||||
cmp r1, r2
|
||||
bne _021F0DB8
|
||||
_021F0DD6:
|
||||
add r2, r4, #0
|
||||
ldr r0, [r4, #0xc]
|
||||
add r1, r4, #0
|
||||
add r2, #0xcd
|
||||
add r1, #0xd0
|
||||
ldrb r2, [r2]
|
||||
ldr r0, [r0, #0x28]
|
||||
ldr r1, [r1]
|
||||
bl GSPlayerMisc_SetPhonebookFromBuffer
|
||||
add r2, r4, #0
|
||||
add r2, #0xcd
|
||||
add r0, r4, #0
|
||||
ldrb r3, [r2]
|
||||
add r0, #0xd4
|
||||
mov r2, #0xc
|
||||
ldr r0, [r0]
|
||||
mov r1, #0
|
||||
mul r2, r3
|
||||
bl MI_CpuFill8
|
||||
add r4, #0xd4
|
||||
ldr r0, [r4]
|
||||
bl FreeToHeap
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end ov101_021F0D90
|
||||
|
||||
thumb_func_start ov101_021F0E0C
|
||||
ov101_021F0E0C: ; 0x021F0E0C
|
||||
push {r3, r4, r5, r6}
|
||||
ldr r5, [r1, #8]
|
||||
ldr r4, [r1, #4]
|
||||
mov r3, #0
|
||||
str r5, [r4, #8]
|
||||
ldr r5, [r1, #4]
|
||||
ldr r4, [r1, #8]
|
||||
str r5, [r4, #4]
|
||||
add r4, r0, #0
|
||||
add r4, #0xd8
|
||||
ldr r4, [r4]
|
||||
cmp r1, r4
|
||||
bne _021F0E2E
|
||||
add r4, r0, #0
|
||||
ldr r5, [r1, #8]
|
||||
add r4, #0xd8
|
||||
str r5, [r4]
|
||||
_021F0E2E:
|
||||
add r4, r0, #0
|
||||
add r4, #0xdc
|
||||
ldr r4, [r4]
|
||||
cmp r1, r4
|
||||
bne _021F0E40
|
||||
add r4, r0, #0
|
||||
ldr r5, [r1, #4]
|
||||
add r4, #0xdc
|
||||
str r5, [r4]
|
||||
_021F0E40:
|
||||
add r4, r0, #0
|
||||
add r4, #0xcd
|
||||
ldrb r4, [r4]
|
||||
sub r4, r4, #1
|
||||
cmp r2, r4
|
||||
bne _021F0E76
|
||||
add r2, r0, #0
|
||||
add r2, #0xdc
|
||||
ldr r2, [r2]
|
||||
str r2, [r1, #4]
|
||||
add r2, r0, #0
|
||||
add r2, #0xdc
|
||||
ldr r2, [r2]
|
||||
ldr r2, [r2, #8]
|
||||
str r2, [r1, #8]
|
||||
add r2, r0, #0
|
||||
add r2, #0xdc
|
||||
ldr r2, [r2]
|
||||
str r1, [r2, #8]
|
||||
add r2, r0, #0
|
||||
add r2, #0xd8
|
||||
ldr r2, [r2]
|
||||
add r0, #0xdc
|
||||
str r1, [r2, #4]
|
||||
str r1, [r0]
|
||||
pop {r3, r4, r5, r6}
|
||||
bx lr
|
||||
_021F0E76:
|
||||
add r4, r0, #0
|
||||
add r4, #0xd8
|
||||
ldr r6, [r4]
|
||||
add r4, r6, #0
|
||||
_021F0E7E:
|
||||
add r5, r3, #0
|
||||
add r3, r3, #1
|
||||
cmp r5, r2
|
||||
beq _021F0E8A
|
||||
ldr r4, [r4, #8]
|
||||
b _021F0EA6
|
||||
_021F0E8A:
|
||||
str r4, [r1, #8]
|
||||
ldr r2, [r4, #4]
|
||||
str r2, [r1, #4]
|
||||
str r1, [r2, #8]
|
||||
add r2, r0, #0
|
||||
str r1, [r4, #4]
|
||||
add r2, #0xd8
|
||||
ldr r2, [r2]
|
||||
cmp r4, r2
|
||||
bne _021F0EAA
|
||||
add r0, #0xd8
|
||||
str r1, [r0]
|
||||
pop {r3, r4, r5, r6}
|
||||
bx lr
|
||||
_021F0EA6:
|
||||
cmp r4, r6
|
||||
bne _021F0E7E
|
||||
_021F0EAA:
|
||||
pop {r3, r4, r5, r6}
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
thumb_func_end ov101_021F0E0C
|
||||
|
||||
thumb_func_start ov101_021F0EB0
|
||||
ov101_021F0EB0: ; 0x021F0EB0
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
|
|
|
|||
|
|
@ -17,9 +17,17 @@ typedef struct UnkStruct_ov101_021F8404 {
|
|||
|
||||
typedef struct PokegearPhoneAppData PokegearPhoneAppData;
|
||||
|
||||
typedef struct PokegearPhoneApp_Sub0D8 PokegearPhoneApp_Sub0D8;
|
||||
struct PokegearPhoneApp_Sub0D8 {
|
||||
u8 unk_00;
|
||||
PhoneContact contact;
|
||||
PokegearPhoneApp_Sub0D8 *prev;
|
||||
PokegearPhoneApp_Sub0D8 *next;
|
||||
};
|
||||
|
||||
typedef struct PokegearPhoneApp_Sub0E0_Sub00C {
|
||||
u8 filler_0[4];
|
||||
int unk_4;
|
||||
PokegearPhoneApp_Sub0D8 *unk_4;
|
||||
u8 unk_8;
|
||||
} PokegearPhoneApp_Sub0E0_Sub00C;
|
||||
|
||||
|
|
@ -67,38 +75,39 @@ typedef struct PokegearPhoneApp_Sub0C4 {
|
|||
} PokegearPhoneApp_Sub0C4;
|
||||
|
||||
struct PokegearPhoneAppData {
|
||||
HeapID heapId; // 0x000
|
||||
int unk_004; // 0x004
|
||||
int unk_008; // 0x008
|
||||
PokegearAppData *pokegear; // 0x00C
|
||||
u8 unk_010; // 0x010
|
||||
u8 unk_011; // 0x011
|
||||
u8 filler_012[2]; // 0x012
|
||||
MsgData *unk_014; // 0x014
|
||||
MessageFormat *unk_018; // 0x018
|
||||
String *unk_01C; // 0x01C
|
||||
String *unk_020; // 0x020
|
||||
String *unk_024[8]; // 0x024
|
||||
u8 unk_044; // 0x044
|
||||
Window unk_048[4]; // 0x048
|
||||
Sprite *unk_088[14]; // 0x088
|
||||
TouchscreenListMenuSpawner *unk_0C0; // 0x0C0
|
||||
PokegearPhoneApp_Sub0C4 *unk_0C4; // 0x0C4 type pending
|
||||
u8 unk_0C8; // 0x0C8
|
||||
u8 unk_0C9; // 0x0C9
|
||||
u8 unk_0CA; // 0x0CA
|
||||
u8 unk_0CB; // 0x0CB
|
||||
u8 unk_0CC; // 0x0CC
|
||||
u8 unk_0CD; // 0x0CD
|
||||
u8 filler_0CE[2]; // 0x0CE
|
||||
PhoneContact *unk_0D0; // 0x0D0
|
||||
PokegearPhoneApp_Sub0D4 *unk_0D4; // 0x0D4
|
||||
u8 filler_0D8[0x8]; // 0x0D4
|
||||
PokegearPhoneApp_Sub0E0 unk_0E0; // 0x0E0
|
||||
LISTMENUITEM *unk_4E8[7]; // 0x4E8
|
||||
TouchscreenListMenu *unk_504; // 0x504
|
||||
void *unk_508; // 0x508
|
||||
NNSG2dScreenData *unk_50C; // 0x50C
|
||||
HeapID heapId; // 0x000
|
||||
int unk_004; // 0x004
|
||||
int unk_008; // 0x008
|
||||
PokegearAppData *pokegear; // 0x00C
|
||||
u8 unk_010; // 0x010
|
||||
u8 unk_011; // 0x011
|
||||
u8 filler_012[2]; // 0x012
|
||||
MsgData *unk_014; // 0x014
|
||||
MessageFormat *unk_018; // 0x018
|
||||
String *unk_01C; // 0x01C
|
||||
String *unk_020; // 0x020
|
||||
String *unk_024[8]; // 0x024
|
||||
u8 unk_044; // 0x044
|
||||
Window unk_048[4]; // 0x048
|
||||
Sprite *unk_088[14]; // 0x088
|
||||
TouchscreenListMenuSpawner *unk_0C0; // 0x0C0
|
||||
PokegearPhoneApp_Sub0C4 *unk_0C4; // 0x0C4 type pending
|
||||
u8 unk_0C8; // 0x0C8
|
||||
u8 unk_0C9; // 0x0C9
|
||||
u8 unk_0CA; // 0x0CA
|
||||
u8 unk_0CB; // 0x0CB
|
||||
u8 unk_0CC; // 0x0CC
|
||||
u8 numContacts; // 0x0CD
|
||||
u8 filler_0CE[2]; // 0x0CE
|
||||
PhoneContact *saveContacts; // 0x0D0
|
||||
PokegearPhoneApp_Sub0D4 *unk_0D4; // 0x0D4
|
||||
PokegearPhoneApp_Sub0D8 *contactListHead; // 0x0D8
|
||||
PokegearPhoneApp_Sub0D8 *contactListTail; // 0x0DC
|
||||
PokegearPhoneApp_Sub0E0 unk_0E0; // 0x0E0
|
||||
LISTMENUITEM *unk_4E8[7]; // 0x4E8
|
||||
TouchscreenListMenu *unk_504; // 0x504
|
||||
void *unk_508; // 0x508
|
||||
NNSG2dScreenData *unk_50C; // 0x50C
|
||||
}; // size: 0x510
|
||||
|
||||
BOOL ov101_021EFD20(PokegearPhoneAppData *phoneApp);
|
||||
|
|
@ -144,7 +153,7 @@ int ov101_021F0C4C(PokegearPhoneAppData *phoneApp);
|
|||
BOOL ov101_021F0CE4(PokegearPhoneAppData *phoneApp);
|
||||
void ov101_021F0D6C(PokegearPhoneAppData *phoneApp);
|
||||
void ov101_021F0D90(PokegearPhoneAppData *phoneApp);
|
||||
void ov101_021F0E0C(PokegearPhoneAppData *phoneApp, int a1, u8 a2);
|
||||
void ov101_021F0E0C(PokegearPhoneAppData *phoneApp, PokegearPhoneApp_Sub0D8 *a1, u8 a2);
|
||||
void ov101_021F0EB0(PokegearPhoneAppData *phoneApp, u8 a1);
|
||||
|
||||
void ov101_021F0F48(PokegearPhoneAppData *phoneApp);
|
||||
|
|
|
|||
|
|
@ -213,6 +213,58 @@ BOOL ov101_021F0CE4(PokegearPhoneAppData *phoneApp) {
|
|||
}
|
||||
|
||||
void ov101_021F0D6C(PokegearPhoneAppData *phoneApp) {
|
||||
phoneApp->unk_0D4 = AllocFromHeap(phoneApp->heapId, phoneApp->unk_0CD * sizeof(PokegearPhoneApp_Sub0D4));
|
||||
phoneApp->unk_0D4 = AllocFromHeap(phoneApp->heapId, phoneApp->numContacts * sizeof(PokegearPhoneApp_Sub0D4));
|
||||
ov101_021F1840(phoneApp);
|
||||
}
|
||||
|
||||
void ov101_021F0D90(PokegearPhoneAppData *phoneApp) {
|
||||
u8 i = 0;
|
||||
PokegearPhoneApp_Sub0D8 *ptr;
|
||||
|
||||
phoneApp->saveContacts[i++].id = phoneApp->contactListHead->contact.id;
|
||||
ptr = phoneApp->contactListHead->next;
|
||||
while (ptr != phoneApp->contactListHead) {
|
||||
phoneApp->saveContacts[i++].id = ptr->contact.id;
|
||||
ptr = ptr->next;
|
||||
}
|
||||
GSPlayerMisc_SetPhonebookFromBuffer(phoneApp->pokegear->savePokegear, phoneApp->saveContacts, phoneApp->numContacts);
|
||||
MI_CpuClear8(phoneApp->unk_0D4, phoneApp->numContacts * sizeof(PokegearPhoneApp_Sub0D4));
|
||||
FreeToHeap(phoneApp->unk_0D4);
|
||||
}
|
||||
|
||||
void ov101_021F0E0C(PokegearPhoneAppData *phoneApp, PokegearPhoneApp_Sub0D8 *a1, u8 a2) {
|
||||
int i = 0;
|
||||
PokegearPhoneApp_Sub0D8 *r4;
|
||||
|
||||
a1->prev->next = a1->next;
|
||||
a1->next->prev = a1->prev;
|
||||
if (a1 == phoneApp->contactListHead) {
|
||||
phoneApp->contactListHead = a1->next;
|
||||
}
|
||||
if (a1 == phoneApp->contactListTail) {
|
||||
phoneApp->contactListTail = a1->prev;
|
||||
}
|
||||
if (a2 == phoneApp->numContacts - 1) {
|
||||
a1->prev = phoneApp->contactListTail;
|
||||
a1->next = phoneApp->contactListTail->next;
|
||||
phoneApp->contactListTail->next = a1;
|
||||
phoneApp->contactListHead->prev = a1;
|
||||
phoneApp->contactListTail = a1;
|
||||
} else {
|
||||
r4 = phoneApp->contactListHead;
|
||||
do {
|
||||
if (i++ != a2) {
|
||||
r4 = r4->next;
|
||||
} else {
|
||||
a1->next = r4;
|
||||
a1->prev = r4->prev;
|
||||
a1->prev->next = a1;
|
||||
r4->prev = a1;
|
||||
if (r4 == phoneApp->contactListHead) {
|
||||
phoneApp->contactListHead = a1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} while (r4 != phoneApp->contactListHead);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ void ov101_021EF96C(PokegearPhoneAppData *phoneApp) {
|
|||
phoneApp->pokegear->childAppdata = phoneApp;
|
||||
phoneApp->pokegear->unk_05C = ov101_021F0944;
|
||||
phoneApp->unk_011 = sub_0202EE7C(phoneApp->pokegear->savePokegear);
|
||||
phoneApp->unk_0D0 = GSPlayerMisc_AllocAndCopyPhonebook(phoneApp->pokegear->savePokegear, phoneApp->heapId);
|
||||
phoneApp->unk_0CD = GSPlayerMisc_FindEmptyGearPhonebookSlot(phoneApp->pokegear->savePokegear);
|
||||
phoneApp->saveContacts = GSPlayerMisc_AllocAndCopyPhonebook(phoneApp->pokegear->savePokegear, phoneApp->heapId);
|
||||
phoneApp->numContacts = GSPlayerMisc_FindEmptyGearPhonebookSlot(phoneApp->pokegear->savePokegear);
|
||||
ov101_021F0D6C(phoneApp);
|
||||
if (phoneApp->pokegear->args->kind == 1) {
|
||||
phoneApp->unk_0CB = 1;
|
||||
|
|
@ -124,7 +124,7 @@ void ov101_021EF96C(PokegearPhoneAppData *phoneApp) {
|
|||
|
||||
void ov101_021EFA04(PokegearPhoneAppData *phoneApp) {
|
||||
ov101_021F0D90(phoneApp);
|
||||
FreeToHeap(phoneApp->unk_0D0);
|
||||
FreeToHeap(phoneApp->saveContacts);
|
||||
phoneApp->pokegear->unk_05C = NULL;
|
||||
phoneApp->pokegear->unk_060 = NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user